diff --git a/.nojekyll b/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index 6bc7996..5ef02b2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ React-Materialize ------------------- -The documentation site. - -If build does not work, create a dist folder manually and re-run. +The documentation site. Please head over to https://github.com/react-materialize/react-materialize diff --git a/assets/bundle.js b/assets/bundle.js deleted file mode 100644 index eb5bacb..0000000 --- a/assets/bundle.js +++ /dev/null @@ -1,30 +0,0 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="/assets/",t(0)}([function(e,t,n){e.exports=n(156)},function(e,t,n){"use strict";e.exports=n(35)},function(e,t,n){"use strict";function r(e,t,n,r,o,a,i,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,a,i,l],c=0;u=new Error(t.replace(/%s/g,function(){return s[c++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}}e.exports=r},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),a=r(o),i=n(6),l=r(i),u=function(e){var t=e.children,n=e.className,r=e.node,o=void 0===r?"div":r;return a.default.createElement(o,{className:(0,l.default)("row",n)},t)};u.propTypes={children:o.PropTypes.node,className:o.PropTypes.string,node:o.PropTypes.node},t.default=u},function(e,t,n){"use strict";var r=n(19),o=r;e.exports=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t\n \n Lorem ipsum dolor sit amet.\n \n \n Lorem ipsum dolor sit amet.\n \n \n Lorem ipsum dolor sit amet.\n \n;\n",badgeCollections:"import React from 'react';\nimport Badge from '../src/Badge';\nimport Collection from '../src/Collection';\nimport CollectionItem from '../src/CollectionItem';\n\nexport default\n\n \n Alan 1\n \n \n Alan 4\n \n \n Alan\n \n \n Alan 14\n \n;\n",badgeDropdowns:"import React from 'react';\nimport Badge from '../src/Badge';\nimport Button from '../src/Button';\nimport Dropdown from '../src/Dropdown';\nimport Icon from '../src/Icon';\nimport NavItem from '../src/NavItem';\n\nexport default\nDropdownarrow_drop_down\n }>\n \n one\n 1\n \n\n \n two\n 1\n \n\n \n three\n \n;\n",badgeNavbar:"import React from 'react';\nimport Badge from '../src/Badge';\nimport Navbar from '../src/Navbar';\nimport NavItem from '../src/NavItem';\n\nexport default\n\n sass\n \n sass 4\n \n sass\n;\n",breadcrumb:"import React from 'react';\n\nimport Breadcrumb from '../src/Breadcrumb';\nimport MenuItem from '../src/MenuItem';\n\nexport default\n\n first\n second\n third\n;\n",cardImage:"import React from 'react';\nimport Card from '../src/Card';\nimport CardTitle from '../src/CardTitle';\n\nexport default\nCard Title}\n actions={[This is a Link]}>\n I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.\n;\n",cardPanel:"import React from 'react';\nimport CardPanel from '../src/CardPanel';\nimport Col from '../src/Col';\nimport Row from '../src/Row';\n\nexport default\n\n \n \n I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks.\n \n \n \n For a simpler card with less markup, try using a card panel which just has padding and a shadow effect\n \n;\n",cardReveal:"import React from 'react';\n\nimport Card from '../src/Card';\nimport CardTitle from '../src/CardTitle';\nimport Icon from '../src/Icon';\n\nexport default\n}\n title=\"Card Title\"\n reveal={

Here is some more information about this product that is only revealed once clicked on.

}>\n

This is a link

\n
;\n",cardSimple:"import React from 'react';\nimport Card from '../src/Card';\nimport Col from '../src/Col';\n\nexport default\n\n This is a link]}>\n I am a very simple card.\n \n;\n",chips:"import React from 'react';\nimport Row from '../src/Row';\nimport Col from '../src/Col';\nimport Chip from '../src/Chip';\nimport Tag from '../src/Tag';\n\nexport default\n\n \n \n Contact Person\n Jane Doe\n \n tag\n \n;\n",collapsible:"import React from 'react';\nimport Collapsible from '../src/Collapsible';\nimport CollapsibleItem from '../src/CollapsibleItem';\n\nexport default\n\n \n Lorem ipsum dolor sit amet.\n \n \n Lorem ipsum dolor sit amet.\n \n \n Lorem ipsum dolor sit amet.\n \n;\n",collectionBasic:"import React from 'react';\nimport Collection from '../src/Collection';\nimport CollectionItem from '../src/CollectionItem';\nexport default\n\n Alvin\n Alvin\n Alvin\n Alvin\n;\n",collectionWithHeader:"import React from 'react';\nimport Collection from '../src/Collection';\nimport CollectionItem from '../src/CollectionItem';\n\nexport default\n\n Alvin\n Alvin\n Alvin\n Alvin\n;\n",collectionWithHref:"import React from 'react';\nimport Collection from '../src/Collection';\nimport CollectionItem from '../src/CollectionItem';\n\nexport default\n\n Alvin\n Alvin\n Alvin\n Alvin\n;\n",disabledButton:"import React from 'react';\nimport Button from '../src/Button';\nimport Icon from '../src/Icon';\n\nexport default\n
\n \n \n \n \n
;\n",dropdown:"import React from 'react';\nimport Button from '../src/Button';\nimport Dropdown from '../src/Dropdown';\nimport NavItem from '../src/NavItem';\n\nexport default\nDrop me!\n }>\n one\n two\n \n three\n;\n",fixedActionButton:"import React from 'react';\nimport Button from '../src/Button';\n\nexport default\n ;\n",flatButton:"import React from 'react';\nimport Button from '../src/Button';\n\nexport default\n;\n",floatingButton:"import React from 'react';\nimport Button from '../src/Button';\n\nexport default\n;\n",iconLinksNavbar:"import React from 'react';\nimport Navbar from '../src/Navbar';\nimport NavItem from '../src/NavItem';\nimport Icon from '../src/Icon';\n\nexport default\n\n search\n view_module\n refresh\n more_vert\n;\n",iconPrefixesInput:"import React from 'react';\nimport Input from '../src/Input';\nimport Row from '../src/Row';\nimport Icon from '../src/Icon';\n\nexport default\n\n account_circle\n phone\n;\n",inputCheckbox:"import React from 'react';\nimport Input from '../src/Input';\nimport Row from '../src/Row';\n\nexport default\n\n \n \n \n \n;\n",inputFields:'import React from \'react\';\nimport Input from \'../src/Input\';\nimport Row from \'../src/Row\';\n\nexport default\n\n \n \n \n \n \n;\n',inputRadio:"import React from 'react';\nimport Input from '../src/Input';\n\nexport default\n
\n \n \n \n \n
;\n",inputSwitch:"import React from 'react';\nimport Input from '../src/Input';\nimport Row from '../src/Row';\n\nexport default\n\n \n;\n",largeButton:"import React from 'react';\nimport Button from '../src/Button';\nimport Icon from '../src/Icon';\n\nexport default\n
\n \n \n \n
;\n",leftAlignedNavbar:"import React from 'react';\nimport Navbar from '../src/Navbar';\nimport NavItem from '../src/NavItem';\n\nexport default\n\n Getting started\n Components\n;\n",mediaBox:'import React from \'react\';\nimport MediaBox from \'../src/MediaBox\';\n\nexport default\n;\n',modal:"import React from 'react';\nimport Modal from '../src/Modal';\nimport Button from '../src/Button';\n\nexport default\nMODAL\n }>\n

Lorem ipsum dolor sit amet, consectetur adipiscing 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

\n;\n",modalWithBottomSheet:"import React from 'react';\nimport Modal from '../src/Modal';\nimport Button from '../src/Button';\n\nexport default\nMODAL BUTTOM SHEET STYLE\n }>\n Lorem ipsum dolor sit amet, consectetur adipiscing 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\n;\n",modalWithFixedFooter:"import React from 'react';\nimport Modal from '../src/Modal';\nimport Button from '../src/Button';\n\nexport default\nMODAL WITH FIXED FOOTER\n }>\n Lorem ipsum dolor sit amet, consectetur adipiscing 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\n;\n",pagination:"import React from 'react';\nimport Pagination from '../src/Pagination';\n\nexport default ;\n",prefillingTextInput:"import React from 'react';\nimport Input from '../src/Input';\nimport Row from '../src/Row';\n\nexport default\n\n \n;\n",preloaderCircular:"import React from 'react';\nimport Row from '../src/Row';\nimport Col from '../src/Col';\nimport Preloader from '../src/Preloader';\n\nexport default\n\n \n \n \n \n \n \n \n \n \n;\n",progressBars:"import React from 'react';\nimport Row from '../src/Row';\nimport Col from '../src/Col';\nimport ProgressBar from '../src/ProgressBar';\n\nexport default\n\n \n \n \n \n \n \n;\n",raisedButton:"import React from 'react';\nimport Button from '../src/Button';\nimport Icon from '../src/Icon';\n\nexport default\n
\n \n \n \n
;\n",rightAlignedNavbar:"import React from 'react';\nimport Navbar from '../src/Navbar';\nimport NavItem from '../src/NavItem';\n\nexport default\n\n Getting started\n Components\n;\n",selectSimple:"import React from 'react';\nimport Input from '../src/Input';\nimport Row from '../src/Row';\n\nexport default\n\n \n \n \n \n \n;\n",sideNav:"import React from 'react';\nimport Button from '../src/Button';\nimport SideNavItem from '../src/SideNavItem';\nimport SideNav from '../src/SideNav';\n\nexport default\nSIDE NAV DEMO}\n options={{ closeOnClick: true }}\n >\n \n First Link With Icon\n Second Link\n \n Subheader\n Third Link With Waves\n;\n",sliders:'import React from \'react\';\n\nimport Slide from \'../src/Slide\';\nimport Slider from \'../src/Slider\';\n\nexport default\n\n \n Here\'s our small slogan.\n \n \n Here\'s our small slogan.\n \n \n Here\'s our small slogan.\n \n;\n',submitButton:"import React from 'react';\nimport Button from '../src/Button';\nimport Icon from '../src/Icon';\n\nexport default\n;\n",tab:"import React from 'react';\n\nimport Tabs from '../src/Tabs';\nimport Tab from '../src/Tab';\n\nexport default\n\n Test 1\n Test 2\n Test 3\n Test 4\n;\n",tableBorderless:'\nimport React from \'react\';\nimport Table from \'../src/Table\';\n\nexport default\n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameItem NameItem Price
AlvinEclair$0.87
AlanJellybean$3.76
JonathanLollipop$7.00
;\n',toast:"import React from 'react';\nimport Toast from '../src/Toast';\n\nexport default\n\nToast\n;\n"}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var n=0;n");case"enum":return this.renderEnum(n);case"custom":return p(o.type||r);default:return r}}},{key:"getDisplayTypeName",value:function(e){return"func"===e?"function":"bool"===e?"boolean":e}},{key:"renderEnum",value:function(e){var t=e.value||[],n=[];return t.forEach(function(e,t){t>0&&n.push(s.default.createElement("span",{key:t+"c"},", ")),n.push(s.default.createElement("code",{key:t},e))}),s.default.createElement("span",null,"one of: ",n)}}]),t}(s.default.Component);d.contextTypes={metadata:s.default.PropTypes.object},t.default=d},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n);/,n=e.match(t);return n?n[1]:"code no match"}}]),t}(c.default.Component));d.propTypes={code:c.default.PropTypes.string.isRequired},t.default=d},function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,n){"use strict";var r=function(e,t,n,r,o,a,i,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,a,i,l],c=0;u=new Error(t.replace(/%s/g,function(){return s[c++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}};e.exports=r},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t-1&&(y["waves-"+p]=!0);var b={flat:i,floating:l,large:s};return d.default.STYLES.forEach(function(e){y["btn-"+e]=b[e]}),a&&(y["modal-action"]=!0,y["modal-"+a]=!0),r?this.renderFab((0,h.default)(y,t)):f.default.createElement(v,u({},m,{disabled:!!c,onClick:this.props.onClick,className:(0,h.default)(y,t)}),this.renderIcon(),this.props.children)}},{key:"renderFab",value:function(e){return f.default.createElement("div",{className:"fixed-action-btn"},f.default.createElement("a",{className:e},this.renderIcon()),f.default.createElement("ul",null,f.default.Children.map(this.props.children,function(e){return f.default.createElement("li",{key:(0,g.default)()},e)})))}},{key:"renderIcon",value:function(){var e=this.props.icon;if(e)return f.default.createElement(y.default,null,e)}}]),t}(c.Component);_.propTypes={children:c.PropTypes.node,className:c.PropTypes.string,disabled:c.PropTypes.bool,flat:c.PropTypes.bool,large:c.PropTypes.bool,floating:c.PropTypes.bool,fab:c.PropTypes.oneOf(["vertical","horizontal"]),icon:c.PropTypes.string,modal:c.PropTypes.oneOf(["close","confirm"]),node:c.PropTypes.node,onClick:c.PropTypes.func,tooltip:c.PropTypes.string,waves:c.PropTypes.oneOf(d.default.WAVES)},_.defaultProps={node:"button"},t.default=_},function(e,t){"use strict";function n(e){return function(){return e}}var r=function(){};r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,n){"use strict";var r=null;e.exports={debugTool:r}},function(e,t,n){"use strict";function r(){x.ReactReconcileTransaction&&E?void 0:c("123")}function o(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=p.getPooled(),this.reconcileTransaction=x.ReactReconcileTransaction.getPooled(!0)}function a(e,t,n,o,a,i){return r(),E.batchedUpdates(e,t,n,o,a,i)}function i(e,t){return e._mountOrder-t._mountOrder}function l(e){var t=e.dirtyComponentsLength;t!==y.length?c("124",t,y.length):void 0,y.sort(i),b++;for(var n=0;n should not have a "'+t+'" prop')}t.__esModule=!0,t.falsy=r;var o=n(1),a=o.PropTypes.func,i=o.PropTypes.object,l=o.PropTypes.arrayOf,u=o.PropTypes.oneOfType,s=o.PropTypes.element,c=o.PropTypes.shape,f=o.PropTypes.string,p=c({listen:a.isRequired,pushState:a.isRequired,replaceState:a.isRequired,go:a.isRequired});t.history=p;var d=c({pathname:f.isRequired,search:f.isRequired,state:i,action:f.isRequired,key:f});t.location=d;var m=u([a,f]);t.component=m;var h=u([m,i]);t.components=h;var v=u([i,s]);t.route=v;var y=u([v,l(v)]);t.routes=y,t.default={falsy:r,history:p,location:d,component:m,components:h,route:v}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n1){for(var v=Array(h),y=0;y1){for(var g=Array(b),_=0;_0?void 0:d.default(!1),null!=c&&(a+=encodeURI(c))):"("===u?o+=1:")"===u?o-=1:":"===u.charAt(0)?(s=u.substring(1),c=t[s],null!=c||o>0?void 0:d.default(!1),null!=c&&(a+=encodeURIComponent(c))):a+=u;return a.replace(/\/+/g,"/")}t.__esModule=!0,t.compilePattern=l,t.matchPattern=u,t.getParamNames=s,t.getParams=c,t.formatPattern=f;var p=n(15),d=r(p),m={}},function(e,t){"use strict";function n(){o=0}function r(){var e=o;return o+=1,e}Object.defineProperty(t,"__esModule",{value:!0}),t.resetID=n,t.default=r;var o=0},function(e,t,n){"use strict";var r={};e.exports=r},function(e,t,n){"use strict";function r(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}function o(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(t));default:return!1}}var a=n(7),i=n(67),l=n(68),u=n(72),s=n(114),c=n(115),f=(n(2),{}),p=null,d=function(e,t){e&&(l.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},m=function(e){return d(e,!0)},h=function(e){return d(e,!1)},v=function(e){return"."+e._rootNodeID},y={injection:{injectEventPluginOrder:i.injectEventPluginOrder,injectEventPluginsByName:i.injectEventPluginsByName},putListener:function(e,t,n){"function"!=typeof n?a("94",t,typeof n):void 0;var r=v(e),o=f[t]||(f[t]={});o[r]=n;var l=i.registrationNameModules[t];l&&l.didPutListener&&l.didPutListener(e,t,n)},getListener:function(e,t){var n=f[t];if(o(t,e._currentElement.type,e._currentElement.props))return null;var r=v(e);return n&&n[r]},deleteListener:function(e,t){var n=i.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var r=f[t];if(r){var o=v(e);delete r[o]}},deleteAllListeners:function(e){var t=v(e);for(var n in f)if(f.hasOwnProperty(n)&&f[n][t]){var r=i.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(e,n),delete f[n][t]}},extractEvents:function(e,t,n,r){for(var o,a=i.plugins,l=0;l=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t]/;e.exports=r},function(e,t,n){"use strict";var r,o=n(14),a=n(66),i=/^[ \r\n\t\f]/,l=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,u=n(74),s=u(function(e,t){if(e.namespaceURI!==a.svg||"innerHTML"in e)e.innerHTML=t;else{r=r||document.createElement("div"),r.innerHTML=""+t+"";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(o.canUseDOM){var c=document.createElement("div");c.innerHTML=" ",""===c.innerHTML&&(s=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),i.test(t)||"<"===t[0]&&l.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=s},function(e,t){"use strict";function n(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function r(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)}function o(){return window.location.href.split("#")[1]||""}function a(e){window.location.replace(window.location.pathname+window.location.search+"#"+e)}function i(){return window.location.pathname+window.location.search+window.location.hash}function l(e){e&&window.history.go(e)}function u(e,t){t(window.confirm(e))}function s(){var e=navigator.userAgent;return(e.indexOf("Android 2.")===-1&&e.indexOf("Android 4.0")===-1||e.indexOf("Mobile Safari")===-1||e.indexOf("Chrome")!==-1||e.indexOf("Windows Phone")!==-1)&&e.indexOf("CriOS")===-1&&window.history&&"pushState"in window.history}function c(){var e=navigator.userAgent;return e.indexOf("Firefox")===-1}t.__esModule=!0,t.addEventListener=n,t.removeEventListener=r,t.getHashPath=o,t.replaceHashPath=a,t.getWindowPath=i,t.go=l,t.getUserConfirmation=u,t.supportsHistory=s,t.supportsGoWithoutReloadUsingHash=c},function(e,t){"use strict";function n(e){return e}t.__esModule=!0,t.default=n,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){var r=e(t,n);e.length<2&&n(r)}t.__esModule=!0;var a=n(16);r(a),t.default=o,e.exports=t.default},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function i(){h&&d&&(h=!1,d.length?m=d.concat(m):v=-1,m.length&&l())}function l(){if(!h){var e=o(i);h=!0;for(var t=m.length;t;){for(d=m,m=[];++v1)for(var n=1;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e){for(var t in e)if(e.hasOwnProperty(t))return!0;return!1}function i(e){return function(){function t(e,t){var n=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return v.default(e,t,n,C.location,C.routes,C.params)}function n(e){var t=e.pathname,n=e.query,r=e.state;return P.createLocation(P.createPath(t,n),r,s.REPLACE)}function r(e,t){T&&T.location===e?i(T,t):_.default(w,e,function(n,r){n?t(n):r?i(l({},r,{location:e}),t):t()})}function i(e,t){var r=d.default(C,e),o=r.leaveRoutes,a=r.enterRoutes;m.runLeaveHooks(o),m.runEnterHooks(a,e,function(r,o){r?t(r):o?t(null,n(o)):b.default(e,function(n,r){n?t(n):t(null,null,C=l({},e,{components:r}))})})}function u(e){return e.__id__||(e.__id__=x++)}function c(e){return e.reduce(function(e,t){return e.push.apply(e,N[u(t)]),e},[])}function p(e,t){_.default(w,e,function(n,r){if(null==r)return void t();T=l({},r,{location:e});for(var o=c(d.default(C,T).leaveRoutes),a=void 0,i=0,u=o.length;null==a&&i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t-1?void 0:i("96",e),!s.plugins[n]){t.extractEvents?void 0:i("97",e),s.plugins[n]=t;var r=t.eventTypes;for(var a in r)o(r[a],t,a)?void 0:i("98",a,e)}}}function o(e,t,n){s.eventNameDispatchConfigs.hasOwnProperty(n)?i("99",n):void 0,s.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var l=r[o];a(l,t,n)}return!0}return!!e.registrationName&&(a(e.registrationName,t,n),!0)}function a(e,t,n){s.registrationNameModules[e]?i("100",e):void 0,s.registrationNameModules[e]=t,s.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=n(7),l=(n(2),null),u={},s={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){l?i("101"):void 0,l=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];u.hasOwnProperty(n)&&u[n]===o||(u[n]?i("102",n):void 0,u[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return s.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=s.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){l=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];s.plugins.length=0;var t=s.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=s.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=s},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function a(e){return"topMouseDown"===e||"topTouchStart"===e}function i(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=y.getNodeFromInstance(r),t?h.invokeGuardedCallbackWithCatch(o,n,e):h.invokeGuardedCallback(o,n,e),e.currentTarget=null}function l(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function a(e,t){var n=l.get(e);return n?n:null}var i=n(7),l=(n(23),n(43)),u=(n(20),n(21)),s=(n(2),n(4),{isMounted:function(e){var t=l.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){s.validateCallback(t,n);var o=a(e);return o?(o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],void r(o)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],r(e)},enqueueForceUpdate:function(e){var t=a(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t){var n=a(e,"replaceState");n&&(n._pendingStateQueue=[t],n._pendingReplaceState=!0,r(n))},enqueueSetState:function(e,t){var n=a(e,"setState");if(n){var o=n._pendingStateQueue||(n._pendingStateQueue=[]);o.push(t),r(n)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!=typeof e?i("122",t,o(e)):void 0}});e.exports=s},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=o[e];return!!r&&!!n[r]}function r(e){return n}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";/** - * Checks if an event is supported in the current execution environment. - * - * NOTE: This will not work correctly for non-generic events such as `change`, - * `reset`, `load`, `error`, and `select`. - * - * Borrows from Modernizr. - * - * @param {string} eventNameSuffix Event name, e.g. "click". - * @param {?boolean} capture Check if the capture phase is supported. - * @return {boolean} True if the event is supported. - * @internal - * @license Modernizr 3.0.0pre (Custom Build) | MIT - */ -function r(e,t){if(!a.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var i=document.createElement("div");i.setAttribute(n,"return;"),r="function"==typeof i[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,a=n(14);a.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),e.exports=r},function(e,t){"use strict";function n(e,t){var n=null===e||e===!1,r=null===t||t===!1;if(n||r)return n===r;var o=typeof e,a=typeof t;return"string"===o||"number"===o?"string"===a||"number"===a:"object"===a&&e.type===t.type&&e.key===t.key}e.exports=n},function(e,t,n){"use strict";var r=(n(8),n(19)),o=(n(4),r);e.exports=o},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=i,this.updater=n||a}var o=n(37),a=n(82),i=(n(125),n(40));n(2),n(4),r.prototype.isReactComponent={},r.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e?o("85"):void 0,this.updater.enqueueSetState(this,e),t&&this.updater.enqueueCallback(this,t,"setState")},r.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")},e.exports=r},function(e,t,n){"use strict";function r(e,t){}var o=(n(4),{isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){r(e,"forceUpdate")},enqueueReplaceState:function(e,t){r(e,"replaceState")},enqueueSetState:function(e,t){r(e,"setState")}});e.exports=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return u+e}function a(e,t){try{window.sessionStorage.setItem(o(e),JSON.stringify(t))}catch(e){if(e.name===c)return;if(e.name===s&&0===window.sessionStorage.length)return;throw e}}function i(e){var t=void 0;try{t=window.sessionStorage.getItem(o(e))}catch(e){if(e.name===c)return null}if(t)try{return JSON.parse(t)}catch(e){}return null}t.__esModule=!0,t.saveState=a,t.readState=i;var l=n(16),u=(r(l),"@@History/"),s="QuotaExceededError",c="SecurityError"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(e){return u.canUseDOM?void 0:l.default(!1),n.listen(e)}var n=f.default(a({getUserConfirmation:s.getUserConfirmation},e,{go:s.go}));return a({},n,{listen:t})}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e){return 0===e.button}function u(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function s(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}t.__esModule=!0;var c=Object.assign||function(e){for(var t=1;t=0;r--){var o=e[r],a=o.path||"";if(n=a.replace(/\/*$/,"/")+n,0===a.indexOf("/"))break}return"/"+n},v.propTypes={path:m,from:m,to:m.isRequired,query:h,state:h,onEnter:p.falsy,children:p.falsy},t.default=v,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var i=Object.assign||function(e){for(var t=1;tReact Materialize\n \n \n \n \n \n \n '},t={__html:"window.PROP_DATA = "+JSON.stringify(c.propData)+";"};return a.default.createElement("html",null,a.default.createElement("head",{dangerouslySetInnerHTML:e}),a.default.createElement("body",null,a.default.createElement(l.default,{location:this.props.location.pathname}),a.default.createElement("main",null,a.default.createElement("div",{className:"container"},this.props.children)),a.default.createElement(s.default,null),a.default.createElement("script",{src:"node_modules/jquery/dist/jquery.js"}),a.default.createElement("script",{src:"node_modules/materialize-css/bin/materialize.js"}),a.default.createElement("script",{src:"node_modules/prismjs/prism.js"}),a.default.createElement("script",{type:"text/javascript",dangerouslySetInnerHTML:t}),a.default.createElement("script",{src:"assets/bundle.js",type:"text/javascript"})))}});t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":"");var i,l=v.createElement(B,{child:t});if(e){var u=w.get(e);i=u._processChildContext(u._context)}else i=x;var c=p(n);if(c){var f=c._currentElement,m=f.props.child;if(M(m,t)){var h=c._renderedComponent.getPublicInstance(),y=r&&function(){r.call(h)};return U._updateRootComponent(c,l,i,n,y),h}U.unmountComponentAtNode(n)}var b=o(n),g=b&&!!a(b),_=s(n),E=g&&!c&&!_,O=U._renderNewRootComponent(l,n,E,i)._renderedComponent.getPublicInstance();return r&&r.call(O),O},render:function(e,t,n){return U._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){c(e)?void 0:d("40");var t=p(e);return t?(delete D[t._instance.rootID],T.batchedUpdates(u,t,e,!1),!0):(s(e),1===e.nodeType&&e.hasAttribute(I),!1)},_mountImageIntoNode:function(e,t,n,a,i){if(c(t)?void 0:d("41"),a){var l=o(t);if(O.canReuseMarkup(e,l))return void b.precacheNode(n,l);var u=l.getAttribute(O.CHECKSUM_ATTR_NAME);l.removeAttribute(O.CHECKSUM_ATTR_NAME);var s=l.outerHTML;l.setAttribute(O.CHECKSUM_ATTR_NAME,u);var f=e,p=r(f,s),h=" (client) "+f.substring(p-20,p+20)+"\n (server) "+s.substring(p-20,p+20);t.nodeType===R?d("42",h):void 0}if(t.nodeType===R?d("43"):void 0,i.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);m.insertTreeBefore(t,e,null)}else k(t,e),b.precacheNode(n,t.firstChild)}};e.exports=U},function(e,t,n){"use strict";var r=n(7),o=n(35),a=(n(2),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||e===!1?a.EMPTY:o.isValidElement(e)?"function"==typeof e.type?a.COMPOSITE:a.HOST:void r("26",e)}});e.exports=a},function(e,t){"use strict";var n={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){n.currentScrollLeft=e.x,n.currentScrollTop=e.y}};e.exports=n},function(e,t,n){"use strict";function r(e,t){return null==t?o("30"):void 0,null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(7);n(2),e.exports=r},function(e,t){"use strict";function n(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=n},function(e,t,n){"use strict";function r(e){for(var t;(t=e._renderedNodeType)===o.COMPOSITE;)e=e._renderedComponent;return t===o.HOST?e._renderedComponent:t===o.EMPTY?null:void 0}var o=n(112);e.exports=r},function(e,t,n){"use strict";function r(){return!a&&o.canUseDOM&&(a="textContent"in document.documentElement?"textContent":"innerText"),a}var o=n(14),a=null;e.exports=r},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&"undefined"!=typeof e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function a(e,t){var n;if(null===e||e===!1)n=s.create(a);else if("object"==typeof e){var l=e,u=l.type;if("function"!=typeof u&&"string"!=typeof u){var p="";p+=r(l._owner),i("130",null==u?u:typeof u,p)}"string"==typeof l.type?n=c.createInternalComponent(l):o(l.type)?(n=new l.type(l),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(l)}else"string"==typeof e||"number"==typeof e?n=c.createInstanceForText(e):i("131",typeof e);return n._mountIndex=0,n._mountImage=null,n}var i=n(7),l=n(8),u=n(265),s=n(107),c=n(109),f=(n(312),n(2),n(4),function(e){this.construct(e)});l(f.prototype,u,{_instantiateReactComponent:a}),e.exports=a},function(e,t){"use strict";function n(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!r[e.type]:"textarea"===t}var r={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=n},function(e,t,n){"use strict";var r=n(14),o=n(52),a=n(53),i=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(i=function(e,t){return 3===e.nodeType?void(e.nodeValue=t):void a(e,o(t))})),e.exports=i},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?s.escape(e.key):t.toString(36)}function o(e,t,n,a){var p=typeof e;if("undefined"!==p&&"boolean"!==p||(e=null),null===e||"string"===p||"number"===p||"object"===p&&e.$$typeof===l)return n(a,e,""===t?c+r(e,0):t),1;var d,m,h=0,v=""===t?c:t+f;if(Array.isArray(e))for(var y=0;y0&&"number"!=typeof e[0])}function a(e,t,n){var a,c;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e))return!!u(t)&&(e=i.call(e),t=i.call(t),s(e,t,n));if(o(e)){if(!o(t))return!1;if(e.length!==t.length)return!1;for(a=0;a=0;a--)if(f[a]!=p[a])return!1;for(a=f.length-1;a>=0;a--)if(c=f[a],!s(e[c],t[c],n))return!1;return typeof e==typeof t}var i=Array.prototype.slice,l=n(129),u=n(128),s=e.exports=function(e,t,n){return n||(n={}),e===t||(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:a(e,t,n))}},function(e,t){function n(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();t=e.exports=o?n:r,t.supported=n,t.unsupported=r},function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}t=e.exports="function"==typeof Object.keys?Object.keys:n,t.shim=n},function(e,t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function o(e){return"number"==typeof e}function a(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!o(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,n,o,l,u,s;if(this._events||(this._events={}),"error"===e&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(n=this._events[e],i(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:l=Array.prototype.slice.call(arguments,1),n.apply(this,l)}else if(a(n))for(l=Array.prototype.slice.call(arguments,1),s=n.slice(),o=s.length,u=0;u0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function n(){this.removeListener(e,n),o||(o=!0,t.apply(this,arguments))}if(!r(t))throw TypeError("listener must be a function");var o=!1;return n.listener=t,this.on(e,n),this},n.prototype.removeListener=function(e,t){var n,o,i,l;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,o=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(n)){for(l=i;l-- >0;)if(n[l]===t||n[l].listener&&n[l].listener===t){o=l;break}if(o<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(o,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],r(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t){"use strict";function n(e,t,n){function r(){i=!0,n.apply(this,arguments)}function o(){i||(a=0&&t=0&&v=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e){return function(){function t(e){return _&&null==e.basename&&(0===e.pathname.indexOf(_)?(e.pathname=e.pathname.substring(_.length),e.basename=_,""===e.pathname&&(e.pathname="/")):e.basename=""),e}function n(e){if(!_)return e;"string"==typeof e&&(e=d.default(e));var t=e.pathname,n="/"===_.slice(-1)?_:_+"/",r="/"===t.charAt(0)?t.slice(1):t,o=n+r;return i({},e,{pathname:o})}function r(e){return w.listenBefore(function(n,r){s.default(e,t(n),r)})}function a(e){return w.listen(function(n){e(t(n))})}function u(e){w.push(n(e))}function c(e){w.replace(n(e))}function p(e){return w.createPath(n(e))}function m(e){return w.createHref(n(e))}function v(){return t(w.createLocation.apply(w,arguments))}function y(e,t){"string"==typeof t&&(t=d.default(t)),u(i({state:e},t))}function b(e,t){"string"==typeof t&&(t=d.default(t)),c(i({state:e},t))}var g=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],_=g.basename,E=o(g,["basename"]),w=e(E);if(null==_&&l.canUseDOM){var O=document.getElementsByTagName("base")[0];O&&(_=f.default(O.href))}return i({},w,{listenBefore:r,listen:a,push:u,replace:c,createPath:p,createHref:m,createLocation:v,pushState:h.default(y,"pushState is deprecated; use push instead"),replaceState:h.default(b,"replaceState is deprecated; use replace instead")})}}t.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e){return s.stringify(e).replace(/%20/g,"+")}function i(e){return function(){function t(e){if(null==e.query){var t=e.search;e.query=w(t.substring(1)),e[v]={search:t,searchBase:""}}return e}function n(e,t){var n,r=void 0;if(!t||""===(r=E(t)))return e;"string"==typeof e&&(e=d.default(e));var o=e[v],a=void 0;a=o&&e.search===o.search?o.searchBase:e.search||"";var i=a+(a?"&":"?")+r;return l({},e,(n={search:i},n[v]={search:i,searchBase:a},n))}function r(e){return P.listenBefore(function(n,r){f.default(e,t(n),r)})}function i(e){return P.listen(function(n){e(t(n))})}function u(e){P.push(n(e,e.query))}function s(e){P.replace(n(e,e.query))}function c(e,t){return P.createPath(n(e,t||e.query))}function p(e,t){return P.createHref(n(e,t||e.query)); -}function m(){return t(P.createLocation.apply(P,arguments))}function b(e,t,n){"string"==typeof t&&(t=d.default(t)),u(l({state:e},t,{query:n}))}function g(e,t,n){"string"==typeof t&&(t=d.default(t)),s(l({state:e},t,{query:n}))}var _=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],E=_.stringifyQuery,w=_.parseQueryString,O=o(_,["stringifyQuery","parseQueryString"]),P=e(O);return"function"!=typeof E&&(E=a),"function"!=typeof w&&(w=y),l({},P,{listenBefore:r,listen:i,push:u,replace:s,createPath:c,createHref:p,createLocation:m,pushState:h.default(b,"pushState is deprecated; use push instead"),replaceState:h.default(g,"replaceState is deprecated; use replace instead")})}}t.__esModule=!0;var l=Object.assign||function(e){for(var t=1;t=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!o;a--){var i=a>=0?arguments[a]:e.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(t=i+"/"+t,o="/"===i.charAt(0))}return t=n(r(t.split("/"),function(e){return!!e}),!o).join("/"),(o?"/":"")+t||"."},t.normalize=function(e){var o=t.isAbsolute(e),a="/"===i(e,-1);return e=n(r(e.split("/"),function(e){return!!e}),!o).join("/"),e||o||(e="."),e&&a&&(e+="/"),(o?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var o=r(e.split("/")),a=r(n.split("/")),i=Math.min(o.length,a.length),l=i,u=0;u=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var l=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){ -if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t0&&r<=i?r:1},n.renderButtons=n.renderButtons.bind(n),n._onClick=n._onClick.bind(n),n}return i(t,e),l(t,[{key:"_onClick",value:function(e){var t=this,n=this.props,r=n.items,o=n.onSelect;return function(){e>0&&e<=r&&(o&&o(e),t.setState({activePage:e}))}}},{key:"renderButtons",value:function(){var e=this.props,t=e.items,n=e.children,r=e.maxButtons,o=void 0===r?t:r,a=this.state.activePage;if(n)return n;var i=Math.min(o,t),l=t-i,u=parseInt(i/2,10),c=a-u;c>l&&(c=l+1);for(var f=Math.max(c,1),p=Math.min(t,f+o-1),m=[s.default.createElement(h.default,{disabled:1===a,key:"pagination-0",onSelect:this._onClick(a-1)},s.default.createElement(d.default,null,"chevron_left"))],v=f;v<=p;v++)m.push(s.default.createElement(h.default,{active:v===a,key:"pagination-"+v,onSelect:this._onClick(v)},v));return m.push(s.default.createElement(h.default,{key:"pagination-"+(t+1),disabled:a===t,onSelect:this._onClick(a+1)},s.default.createElement(d.default,null,"chevron_right"))),m}},{key:"render",value:function(){return s.default.createElement("ul",{className:(0,f.default)("pagination",this.props.className)},this.renderButtons())}}]),t}(u.Component);v.propTypes={items:u.PropTypes.number.isRequired,activePage:u.PropTypes.number,children:u.PropTypes.node,className:u.PropTypes.string,maxButtons:u.PropTypes.number,onSelect:u.PropTypes.func},v.defaultProps={activePage:1,items:10},t.default=v},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),a=r(o),i=n(6),l=r(i),u=function(e){var t=e.active,n=void 0!==t&&t,r=e.children,o=e.className,i=e.disabled,u=void 0!==i&&i,s=e.href,c=void 0===s?"#":s,f=e.onSelect,p={"waves-effect":!0,disabled:u,active:n};return a.default.createElement("li",{className:(0,l.default)(p,o),onClick:f},a.default.createElement("a",{href:c},r))};u.propTypes={active:o.PropTypes.bool,children:o.PropTypes.node,className:o.PropTypes.string,disabled:o.PropTypes.bool,href:o.PropTypes.string,onSelect:o.PropTypes.func},t.default=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t":i.innerHTML="<"+e+">",l[e]=!i.firstChild),l[e]?p[e]:null}var o=n(14),a=n(2),i=o.canUseDOM?document.createElement("div"):null,l={},u=[1,'"],s=[1,"","
"],c=[3,"","
"],f=[1,'',""],p={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:u,option:u,caption:s,colgroup:s,tbody:s,tfoot:s,thead:s,td:c,th:c},d=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];d.forEach(function(e){p[e]=f,l[e]=!0}),e.exports=r},function(e,t){"use strict";function n(e){return e===window?{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=n},function(e,t){"use strict";function n(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;e.exports=n},function(e,t,n){"use strict";function r(e){return o(e).replace(a,"-ms-")}var o=n(248),a=/^ms-/;e.exports=r},function(e,t){"use strict";function n(e){return!(!e||!("function"==typeof Node?e instanceof Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}e.exports=n},function(e,t,n){"use strict";function r(e){return o(e)&&3==e.nodeType}var o=n(250);e.exports=r},function(e,t){"use strict";function n(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=n},function(e,t){"use strict";var n={Properties:{"aria-current":0,"aria-details":0,"aria-disabled":0,"aria-hidden":0,"aria-invalid":0,"aria-keyshortcuts":0,"aria-label":0,"aria-roledescription":0,"aria-autocomplete":0,"aria-checked":0,"aria-expanded":0,"aria-haspopup":0,"aria-level":0,"aria-modal":0,"aria-multiline":0,"aria-multiselectable":0,"aria-orientation":0,"aria-placeholder":0,"aria-pressed":0,"aria-readonly":0,"aria-required":0,"aria-selected":0,"aria-sort":0,"aria-valuemax":0,"aria-valuemin":0,"aria-valuenow":0,"aria-valuetext":0,"aria-atomic":0,"aria-busy":0,"aria-live":0,"aria-relevant":0,"aria-dropeffect":0,"aria-grabbed":0,"aria-activedescendant":0,"aria-colcount":0,"aria-colindex":0,"aria-colspan":0,"aria-controls":0,"aria-describedby":0,"aria-errormessage":0,"aria-flowto":0,"aria-labelledby":0,"aria-owns":0,"aria-posinset":0,"aria-rowcount":0,"aria-rowindex":0,"aria-rowspan":0,"aria-setsize":0},DOMAttributeNames:{},DOMPropertyNames:{}};e.exports=n},function(e,t,n){"use strict";var r=n(10),o=n(100),a={focusDOMComponent:function(){o(r.getNodeFromInstance(this))}};e.exports=a},function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function a(e){switch(e){case"topCompositionStart":return T.compositionStart;case"topCompositionEnd":return T.compositionEnd;case"topCompositionUpdate":return T.compositionUpdate}}function i(e,t){return"topKeyDown"===e&&t.keyCode===g; -}function l(e,t){switch(e){case"topKeyUp":return b.indexOf(t.keyCode)!==-1;case"topKeyDown":return t.keyCode!==g;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function u(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function s(e,t,n,r){var o,s;if(_?o=a(e):N?l(e,n)&&(o=T.compositionEnd):i(e,n)&&(o=T.compositionStart),!o)return null;O&&(N||o!==T.compositionStart?o===T.compositionEnd&&N&&(s=N.getData()):N=h.getPooled(r));var c=v.getPooled(o,t,n,r);if(s)c.data=s;else{var f=u(n);null!==f&&(c.data=f)}return d.accumulateTwoPhaseDispatches(c),c}function c(e,t){switch(e){case"topCompositionEnd":return u(t);case"topKeyPress":var n=t.which;return n!==P?null:(x=!0,C);case"topTextInput":var r=t.data;return r===C&&x?null:r;default:return null}}function f(e,t){if(N){if("topCompositionEnd"===e||!_&&l(e,t)){var n=N.getData();return h.release(N),N=null,n}return null}switch(e){case"topPaste":return null;case"topKeyPress":return t.which&&!o(t)?String.fromCharCode(t.which):null;case"topCompositionEnd":return O?null:t.data;default:return null}}function p(e,t,n,r){var o;if(o=w?c(e,n):f(e,n),!o)return null;var a=y.getPooled(T.beforeInput,t,n,r);return a.data=o,d.accumulateTwoPhaseDispatches(a),a}var d=n(42),m=n(14),h=n(261),v=n(298),y=n(301),b=[9,13,27,32],g=229,_=m.canUseDOM&&"CompositionEvent"in window,E=null;m.canUseDOM&&"documentMode"in document&&(E=document.documentMode);var w=m.canUseDOM&&"TextEvent"in window&&!E&&!r(),O=m.canUseDOM&&(!_||E&&E>8&&E<=11),P=32,C=String.fromCharCode(P),T={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},x=!1,N=null,k={eventTypes:T,extractEvents:function(e,t,n,r){return[s(e,t,n,r),p(e,t,n,r)]}};e.exports=k},function(e,t,n){"use strict";var r=n(102),o=n(14),a=(n(20),n(242),n(307)),i=n(249),l=n(252),u=(n(4),l(function(e){return i(e)})),s=!1,c="cssFloat";if(o.canUseDOM){var f=document.createElement("div").style;try{f.font=""}catch(e){s=!0}void 0===document.documentElement.style.cssFloat&&(c="styleFloat")}var p={createMarkupForStyles:function(e,t){var n="";for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];null!=o&&(n+=u(r)+":",n+=a(r,o,t)+";")}return n||null},setValueForStyles:function(e,t,n){var o=e.style;for(var i in t)if(t.hasOwnProperty(i)){var l=a(i,t[i],n);if("float"!==i&&"cssFloat"!==i||(i=c),l)o[i]=l;else{var u=s&&r.shorthandPropertyExpansions[i];if(u)for(var f in u)o[f]="";else o[i]=""}}}};e.exports=p},function(e,t,n){"use strict";function r(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function o(e){var t=O.getPooled(x.change,k,e,P(e));g.accumulateTwoPhaseDispatches(t),w.batchedUpdates(a,t)}function a(e){b.enqueueEvents(e),b.processEventQueue(!1)}function i(e,t){N=e,k=t,N.attachEvent("onchange",o)}function l(){N&&(N.detachEvent("onchange",o),N=null,k=null)}function u(e,t){if("topChange"===e)return t}function s(e,t,n){"topFocus"===e?(l(),i(t,n)):"topBlur"===e&&l()}function c(e,t){N=e,k=t,M=e.value,j=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(N,"value",R),N.attachEvent?N.attachEvent("onpropertychange",p):N.addEventListener("propertychange",p,!1)}function f(){N&&(delete N.value,N.detachEvent?N.detachEvent("onpropertychange",p):N.removeEventListener("propertychange",p,!1),N=null,k=null,M=null,j=null)}function p(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==M&&(M=t,o(e))}}function d(e,t){if("topInput"===e)return t}function m(e,t,n){"topFocus"===e?(f(),c(t,n)):"topBlur"===e&&f()}function h(e,t){if(("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)&&N&&N.value!==M)return M=N.value,k}function v(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function y(e,t){if("topClick"===e)return t}var b=n(41),g=n(42),_=n(14),E=n(10),w=n(21),O=n(22),P=n(77),C=n(78),T=n(119),x={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},N=null,k=null,M=null,j=null,I=!1;_.canUseDOM&&(I=C("change")&&(!document.documentMode||document.documentMode>8));var S=!1;_.canUseDOM&&(S=C("input")&&(!document.documentMode||document.documentMode>11));var R={get:function(){return j.get.call(this)},set:function(e){M=""+e,j.set.call(this,e)}},A={eventTypes:x,extractEvents:function(e,t,n,o){var a,i,l=t?E.getNodeFromInstance(t):window;if(r(l)?I?a=u:i=s:T(l)?S?a=d:(a=h,i=m):v(l)&&(a=y),a){var c=a(e,t);if(c){var f=O.getPooled(x.change,c,n,o);return f.type="change",g.accumulateTwoPhaseDispatches(f),f}}i&&i(e,l,t)}};e.exports=A},function(e,t,n){"use strict";var r=n(7),o=n(32),a=n(14),i=n(245),l=n(19),u=(n(2),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(a.canUseDOM?void 0:r("56"),t?void 0:r("57"),"HTML"===e.nodeName?r("58"):void 0,"string"==typeof t){var n=i(t,l)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=u},function(e,t){"use strict";var n=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=n},function(e,t,n){"use strict";var r=n(42),o=n(10),a=n(50),i={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},l={eventTypes:i,extractEvents:function(e,t,n,l){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var u;if(l.window===l)u=l;else{var s=l.ownerDocument;u=s?s.defaultView||s.parentWindow:window}var c,f;if("topMouseOut"===e){c=t;var p=n.relatedTarget||n.toElement;f=p?o.getClosestInstanceFromNode(p):null}else c=null,f=t;if(c===f)return null;var d=null==c?u:o.getNodeFromInstance(c),m=null==f?u:o.getNodeFromInstance(f),h=a.getPooled(i.mouseLeave,c,n,l);h.type="mouseleave",h.target=d,h.relatedTarget=m;var v=a.getPooled(i.mouseEnter,f,n,l);return v.type="mouseenter",v.target=m,v.relatedTarget=d,r.accumulateEnterLeaveDispatches(h,v,c,f),[h,v]}};e.exports=l},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=n(8),a=n(28),i=n(117);o(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[i()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),a=o.length;for(e=0;e1?1-t:void 0;return this._fallbackText=o.slice(e,l),this._fallbackText}}),a.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";var r=n(33),o=r.injection.MUST_USE_PROPERTY,a=r.injection.HAS_BOOLEAN_VALUE,i=r.injection.HAS_NUMERIC_VALUE,l=r.injection.HAS_POSITIVE_NUMERIC_VALUE,u=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,s={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:a,allowTransparency:0,alt:0,as:0,async:a,autoComplete:0,autoPlay:a,capture:a,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|a,cite:0,classID:0,className:0,cols:l,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:a,coords:0,crossOrigin:0,data:0,dateTime:0,default:a,defer:a,dir:0,disabled:a,download:u,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:a,formTarget:0,frameBorder:0,headers:0,height:0,hidden:a,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:a,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|a,muted:o|a,name:0,nonce:0,noValidate:a,open:a,optimum:0,pattern:0,placeholder:0,playsInline:a,poster:0,preload:0,profile:0,radioGroup:0,readOnly:a,referrerPolicy:0,rel:0,required:a,reversed:a,role:0,rows:l,rowSpan:i,sandbox:0,scope:0,scoped:a,scrolling:0,seamless:a,selected:o|a,shape:0,size:l,sizes:0,span:l,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:i,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:a,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{}};e.exports=s},function(e,t,n){(function(t){"use strict";function r(e,t,n,r){var o=void 0===e[n];null!=t&&o&&(e[n]=a(t,!0))}var o=n(34),a=n(118),i=(n(69),n(79)),l=n(121),u=(n(4),{instantiateChildren:function(e,t,n,o){if(null==e)return null;var a={};return l(e,r,a),a},updateChildren:function(e,t,n,r,l,u,s,c,f){if(t||e){var p,d;for(p in t)if(t.hasOwnProperty(p)){d=e&&e[p];var m=d&&d._currentElement,h=t[p];if(null!=d&&i(m,h))o.receiveComponent(d,h,l,c),t[p]=d;else{d&&(r[p]=o.getHostNode(d),o.unmountComponent(d,!1));var v=a(h,!0);t[p]=v;var y=o.mountComponent(v,l,u,s,c,f);n.push(y)}}for(p in e)!e.hasOwnProperty(p)||t&&t.hasOwnProperty(p)||(d=e[p],r[p]=o.getHostNode(d),o.unmountComponent(d,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];o.unmountComponent(r,t)}}});e.exports=u}).call(t,n(57))},function(e,t,n){"use strict";var r=n(65),o=n(271),a={processChildrenUpdates:o.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=a},function(e,t,n){"use strict";function r(e){}function o(e,t){}function a(e){return!(!e.prototype||!e.prototype.isReactComponent)}function i(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}var l=n(7),u=n(8),s=n(35),c=n(71),f=n(23),p=n(72),d=n(43),m=(n(20),n(112)),h=n(34),v=n(40),y=(n(2),n(63)),b=n(79),g=(n(4),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var e=d.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return o(e,t),t};var _=1,E={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(e,t,n,u){this._context=u,this._mountOrder=_++,this._hostParent=t,this._hostContainerInfo=n;var c,f=this._currentElement.props,p=this._processContext(u),m=this._currentElement.type,h=e.getUpdateQueue(),y=a(m),b=this._constructComponent(y,f,p,h);y||null!=b&&null!=b.render?i(m)?this._compositeType=g.PureClass:this._compositeType=g.ImpureClass:(c=b,o(m,c),null===b||b===!1||s.isValidElement(b)?void 0:l("105",m.displayName||m.name||"Component"),b=new r(m),this._compositeType=g.StatelessFunctional),b.props=f,b.context=p,b.refs=v,b.updater=h,this._instance=b,d.set(b,this);var E=b.state;void 0===E&&(b.state=E=null),"object"!=typeof E||Array.isArray(E)?l("106",this.getName()||"ReactCompositeComponent"):void 0,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var w;return w=b.unstable_handleError?this.performInitialMountWithErrorHandling(c,t,n,e,u):this.performInitialMount(c,t,n,e,u),b.componentDidMount&&e.getReactMountReady().enqueue(b.componentDidMount,b),w},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var a,i=r.checkpoint();try{a=this.performInitialMount(e,t,n,r,o)}catch(l){r.rollback(i),this._instance.unstable_handleError(l),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),i=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(i),a=this.performInitialMount(e,t,n,r,o)}return a},performInitialMount:function(e,t,n,r,o){var a=this._instance,i=0;a.componentWillMount&&(a.componentWillMount(),this._pendingStateQueue&&(a.state=this._processPendingState(a.props,a.context))),void 0===e&&(e=this._renderValidatedComponent());var l=m.getType(e);this._renderedNodeType=l;var u=this._instantiateReactComponent(e,l!==m.EMPTY);this._renderedComponent=u;var s=h.mountComponent(u,r,t,n,this._processChildContext(o),i);return s},getHostNode:function(){return h.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var t=this._instance;if(t.componentWillUnmount&&!t._calledComponentWillUnmount)if(t._calledComponentWillUnmount=!0,e){var n=this.getName()+".componentWillUnmount()";p.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))}else t.componentWillUnmount();this._renderedComponent&&(h.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,d.remove(t)}},_maskContext:function(e){var t=this._currentElement.type,n=t.contextTypes;if(!n)return v;var r={};for(var o in n)r[o]=e[o];return r},_processContext:function(e){var t=this._maskContext(e);return t},_processChildContext:function(e){var t,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(t=r.getChildContext()),t){"object"!=typeof n.childContextTypes?l("107",this.getName()||"ReactCompositeComponent"):void 0;for(var o in t)o in n.childContextTypes?void 0:l("108",this.getName()||"ReactCompositeComponent",o);return u({},e,t)}return e},_checkContextTypes:function(e,t,n){},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?h.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,r,o){var a=this._instance;null==a?l("136",this.getName()||"ReactCompositeComponent"):void 0;var i,u=!1;this._context===o?i=a.context:(i=this._processContext(o),u=!0);var s=t.props,c=n.props;t!==n&&(u=!0),u&&a.componentWillReceiveProps&&a.componentWillReceiveProps(c,i);var f=this._processPendingState(c,i),p=!0;this._pendingForceUpdate||(a.shouldComponentUpdate?p=a.shouldComponentUpdate(c,f,i):this._compositeType===g.PureClass&&(p=!y(s,c)||!y(a.state,f))),this._updateBatchNumber=null,p?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,f,i,e,o)):(this._currentElement=n,this._context=o,a.props=c,a.state=f,a.context=i)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var a=u({},o?r[0]:n.state),i=o?1:0;i=0||null!=t.is}function m(e){var t=e.type;p(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var h=n(7),v=n(8),y=n(254),b=n(256),g=n(32),_=n(66),E=n(33),w=n(104),O=n(41),P=n(67),C=n(49),T=n(105),x=n(10),N=n(272),k=n(273),M=n(106),j=n(276),I=(n(20),n(285)),S=n(290),R=(n(19),n(52)),A=(n(2),n(78),n(63),n(80),n(4),T),D=O.deleteListener,L=x.getNodeFromInstance,B=C.listenTo,U=P.registrationNameModules,F={string:!0,number:!0},H="style",V="__html",q={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},W=11,z={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},K={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Y={listing:!0,pre:!0,textarea:!0},$=v({menuitem:!0},K),G=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Q={},X={}.hasOwnProperty,J=1;m.displayName="ReactDOMComponent",m.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=J++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var a=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(c,this);break;case"input":N.mountWrapper(this,a,t),a=N.getHostProps(this,a),e.getReactMountReady().enqueue(c,this);break;case"option":k.mountWrapper(this,a,t),a=k.getHostProps(this,a);break;case"select":M.mountWrapper(this,a,t),a=M.getHostProps(this,a),e.getReactMountReady().enqueue(c,this);break;case"textarea":j.mountWrapper(this,a,t),a=j.getHostProps(this,a),e.getReactMountReady().enqueue(c,this)}o(this,a);var i,f;null!=t?(i=t._namespaceURI,f=t._tag):n._tag&&(i=n._namespaceURI,f=n._tag),(null==i||i===_.svg&&"foreignobject"===f)&&(i=_.html),i===_.html&&("svg"===this._tag?i=_.svg:"math"===this._tag&&(i=_.mathml)),this._namespaceURI=i;var p;if(e.useCreateElement){var d,m=n._ownerDocument;if(i===_.html)if("script"===this._tag){var h=m.createElement("div"),v=this._currentElement.type;h.innerHTML="<"+v+">",d=h.removeChild(h.firstChild)}else d=a.is?m.createElement(this._currentElement.type,a.is):m.createElement(this._currentElement.type);else d=m.createElementNS(i,this._currentElement.type);x.precacheNode(this,d),this._flags|=A.hasCachedChildNodes,this._hostParent||w.setAttributeForRoot(d),this._updateDOMProperties(null,a,e);var b=g(d);this._createInitialChildren(e,a,r,b),p=b}else{var E=this._createOpenTagMarkupAndPutListeners(e,a),O=this._createContentMarkup(e,a,r);p=!O&&K[this._tag]?E+"/>":E+">"+O+""}switch(this._tag){case"input":e.getReactMountReady().enqueue(l,this),a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(u,this),a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"select":a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"button":a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(s,this)}return p},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(null!=o)if(U.hasOwnProperty(r))o&&a(this,r,o,e);else{r===H&&(o&&(o=this._previousStyleCopy=v({},t.style)),o=b.createMarkupForStyles(o,this));var i=null;null!=this._tag&&d(this._tag,t)?q.hasOwnProperty(r)||(i=w.createMarkupForCustomAttribute(r,o)):i=w.createMarkupForProperty(r,o),i&&(n+=" "+i)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+w.createMarkupForRoot()),n+=" "+w.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var a=F[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)r=R(a);else if(null!=i){var l=this.mountChildren(i,e,n);r=l.join("")}}return Y[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&g.queueHTML(r,o.__html);else{var a=F[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)""!==a&&g.queueText(r,a);else if(null!=i)for(var l=this.mountChildren(i,e,n),u=0;u"},receiveComponent:function(){},getHostNode:function(){return a.getNodeFromInstance(this)},unmountComponent:function(){a.uncacheNode(this)}}),e.exports=i},function(e,t){"use strict";var n={useCreateElement:!0,useFiber:!1};e.exports=n},function(e,t,n){"use strict";var r=n(65),o=n(10),a={dangerouslyProcessChildrenUpdates:function(e,t){var n=o.getNodeFromInstance(e);r.processUpdates(n,t)}};e.exports=a},function(e,t,n){"use strict";function r(){this._rootNodeID&&f.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=u.executeOnChange(t,e);c.asap(r,this);var o=t.name;if("radio"===t.type&&null!=o){for(var i=s.getNodeFromInstance(this),l=i;l.parentNode;)l=l.parentNode;for(var f=l.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),p=0;pt.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function l(e,t){if(window.getSelection){var n=window.getSelection(),r=e[c()].length,o=Math.min(t.start,r),a=void 0===t.end?o:Math.min(t.end,r);if(!n.extend&&o>a){var i=a;a=o,o=i}var l=s(e,o),u=s(e,a);if(l&&u){var f=document.createRange();f.setStart(l.node,l.offset),n.removeAllRanges(),o>a?(n.addRange(f),n.extend(u.node,u.offset)):(f.setEnd(u.node,u.offset),n.addRange(f))}}}var u=n(14),s=n(313),c=n(117),f=u.canUseDOM&&"selection"in document&&!("getSelection"in window),p={getOffsets:f?o:a,setOffsets:f?i:l};e.exports=p},function(e,t,n){"use strict";var r=n(7),o=n(8),a=n(65),i=n(32),l=n(10),u=n(52),s=(n(2),n(80),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(s.prototype,{mountComponent:function(e,t,n,r){var o=n._idCounter++,a=" react-text: "+o+" ",s=" /react-text ";if(this._domID=o,this._hostParent=t,e.useCreateElement){var c=n._ownerDocument,f=c.createComment(a),p=c.createComment(s),d=i(c.createDocumentFragment());return i.queueChild(d,i(f)),this._stringText&&i.queueChild(d,i(c.createTextNode(this._stringText))),i.queueChild(d,i(p)),l.precacheNode(this,f),this._closingComment=p,d}var m=u(this._stringText);return e.renderToStaticMarkup?m:""+m+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();a.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var e=this._commentNodes;if(e)return e;if(!this._closingComment)for(var t=l.getNodeFromInstance(this),n=t.nextSibling;;){if(null==n?r("67",this._domID):void 0,8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return e=[this._hostNode,this._closingComment],this._commentNodes=e,e},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,l.uncacheNode(this)}}),e.exports=s},function(e,t,n){"use strict";function r(){this._rootNodeID&&c.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=l.executeOnChange(t,e);return s.asap(r,this),n}var a=n(7),i=n(8),l=n(70),u=n(10),s=n(21),c=(n(2),n(4),{getHostProps:function(e,t){null!=t.dangerouslySetInnerHTML?a("91"):void 0;var n=i({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange});return n},mountWrapper:function(e,t){var n=l.getValue(t),r=n;if(null==n){var i=t.defaultValue,u=t.children;null!=u&&(null!=i?a("92"):void 0,Array.isArray(u)&&(u.length<=1?void 0:a("93"),u=u[0]),i=""+u),null==i&&(i=""),r=i}e._wrapperState={initialValue:""+r,listeners:null,onChange:o.bind(e)}},updateWrapper:function(e){var t=e._currentElement.props,n=u.getNodeFromInstance(e),r=l.getValue(t);if(null!=r){var o=""+r;o!==n.value&&(n.value=o),null==t.defaultValue&&(n.defaultValue=o)}null!=t.defaultValue&&(n.defaultValue=t.defaultValue)},postMountWrapper:function(e){var t=u.getNodeFromInstance(e),n=t.textContent;n===e._wrapperState.initialValue&&(t.value=n)}});e.exports=c},function(e,t,n){"use strict";function r(e,t){"_hostNode"in e?void 0:u("33"),"_hostNode"in t?void 0:u("33");for(var n=0,r=e;r;r=r._hostParent)n++;for(var o=0,a=t;a;a=a._hostParent)o++;for(;n-o>0;)e=e._hostParent,n--;for(;o-n>0;)t=t._hostParent,o--;for(var i=n;i--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}function o(e,t){"_hostNode"in e?void 0:u("35"),"_hostNode"in t?void 0:u("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1}function a(e){return"_hostNode"in e?void 0:u("36"),e._hostParent}function i(e,t,n){for(var r=[];e;)r.push(e),e=e._hostParent;var o;for(o=r.length;o-- >0;)t(r[o],"captured",n);for(o=0;o0;)n(u[s],"captured",a)}var u=n(7);n(2),e.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:a,traverseTwoPhase:i,traverseEnterLeave:l}},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=n(8),a=n(21),i=n(51),l=n(19),u={initialize:l,close:function(){p.isBatchingUpdates=!1}},s={initialize:l,close:a.flushBatchedUpdates.bind(a)},c=[s,u];o(r.prototype,i,{getTransactionWrappers:function(){return c}});var f=new r,p={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o,a){var i=p.isBatchingUpdates;return p.isBatchingUpdates=!0,i?e(t,n,r,o,a):f.perform(e,null,t,n,r,o,a)}};e.exports=p},function(e,t,n){"use strict";function r(){O||(O=!0,b.EventEmitter.injectReactEventListener(y),b.EventPluginHub.injectEventPluginOrder(l),b.EventPluginUtils.injectComponentTree(p),b.EventPluginUtils.injectTreeTraversal(m),b.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:w,EnterLeaveEventPlugin:u,ChangeEventPlugin:i,SelectEventPlugin:E,BeforeInputEventPlugin:a}),b.HostComponent.injectGenericComponentClass(f),b.HostComponent.injectTextComponentClass(h),b.DOMProperty.injectDOMPropertyConfig(o),b.DOMProperty.injectDOMPropertyConfig(s),b.DOMProperty.injectDOMPropertyConfig(_),b.EmptyComponent.injectEmptyComponentFactory(function(e){return new d(e)}),b.Updates.injectReconcileTransaction(g),b.Updates.injectBatchingStrategy(v),b.Component.injectEnvironment(c))}var o=n(253),a=n(255),i=n(257),l=n(259),u=n(260),s=n(262),c=n(264),f=n(267),p=n(10),d=n(269),m=n(277),h=n(275),v=n(278),y=n(282),b=n(283),g=n(288),_=n(293),E=n(294),w=n(295),O=!1;e.exports={inject:r}},function(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=n},function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue(!1)}var o=n(41),a={handleTopLevel:function(e,t,n,a){var i=o.extractEvents(e,t,n,a);r(i)}};e.exports=a},function(e,t,n){"use strict";function r(e){for(;e._hostParent;)e=e._hostParent;var t=f.getNodeFromInstance(e),n=t.parentNode;return f.getClosestInstanceFromNode(n)}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function a(e){var t=d(e.nativeEvent),n=f.getClosestInstanceFromNode(t),o=n;do e.ancestors.push(o),o=o&&r(o);while(o);for(var a=0;a/,a=/^<\!\-\-/,i={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return a.test(e)?e:e.replace(o," "+i.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(i.CHECKSUM_ATTR_NAME);n=n&&parseInt(n,10);var o=r(e);return o===n}};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}function o(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:p.getHostNode(e),toIndex:n,afterNode:t}}function a(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}function i(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function l(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(e,t){return t&&(e=e||[],e.push(t)),e}function s(e,t){f.processChildrenUpdates(e,t)}var c=n(7),f=n(71),p=(n(43),n(20),n(23),n(34)),d=n(263),m=(n(19),n(309)),h=(n(2),{Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return d.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,a){var i,l=0;return i=m(t,l),d.updateChildren(e,i,n,r,o,this,this._hostContainerInfo,a,l),i},mountChildren:function(e,t,n){var r=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=r;var o=[],a=0;for(var i in r)if(r.hasOwnProperty(i)){var l=r[i],u=0,s=p.mountComponent(l,t,this,this._hostContainerInfo,n,u);l._mountIndex=a++,o.push(s)}return o},updateTextContent:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");var r=[l(e)];s(this,r)},updateMarkup:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");var r=[i(e)];s(this,r)},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r=this._renderedChildren,o={},a=[],i=this._reconcilerUpdateChildren(r,e,a,o,t,n);if(i||r){var l,c=null,f=0,d=0,m=0,h=null;for(l in i)if(i.hasOwnProperty(l)){var v=r&&r[l],y=i[l];v===y?(c=u(c,this.moveChild(v,h,f,d)),d=Math.max(v._mountIndex,d),v._mountIndex=f):(v&&(d=Math.max(v._mountIndex,d)),c=u(c,this._mountChildAtIndex(y,a[m],h,f,t,n)),m++),f++,h=p.getHostNode(y)}for(l in o)o.hasOwnProperty(l)&&(c=u(c,this._unmountChild(r[l],o[l])));c&&s(this,c),this._renderedChildren=i}},unmountChildren:function(e){var t=this._renderedChildren;d.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex=t)return{node:o,offset:t-a};a=i}o=n(r(o))}}e.exports=o},function(e,t,n){"use strict";function r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function o(e){if(l[e])return l[e];if(!i[e])return e;var t=i[e];for(var n in t)if(t.hasOwnProperty(n)&&n in u)return l[e]=t[n];return""}var a=n(14),i={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},l={},u={};a.canUseDOM&&(u=document.createElement("div").style,"AnimationEvent"in window||(delete i.animationend.animation,delete i.animationiteration.animation,delete i.animationstart.animation),"TransitionEvent"in window||delete i.transitionend.transition),e.exports=o},function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=n(52);e.exports=r},function(e,t,n){"use strict";var r=n(111);e.exports=r.renderSubtreeIntoContainer},function(e,t){"use strict";function n(e){var t=/[=:]/g,n={"=":"=0",":":"=2"},r=(""+e).replace(t,function(e){return n[e]});return"$"+r}function r(e){var t=/(=0|=2)/g,n={"=0":"=","=2":":"},r="."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1);return(""+r).replace(t,function(e){return n[e]})}var o={escape:n,unescape:r};e.exports=o},function(e,t,n){"use strict";var r=n(37),o=(n(2),function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)}),a=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop(); -return n.call(r,e,t),r}return new n(e,t)},i=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},l=function(e,t,n,r){var o=this;if(o.instancePool.length){var a=o.instancePool.pop();return o.call(a,e,t,n,r),a}return new o(e,t,n,r)},u=function(e){var t=this;e instanceof t?void 0:r("25"),e.destructor(),t.instancePool.length>"),x={array:i("array"),bool:i("boolean"),func:i("function"),number:i("number"),object:i("object"),string:i("string"),symbol:i("symbol"),any:l(),arrayOf:u,element:s(),instanceOf:c,node:m(),objectOf:p,oneOf:f,oneOfType:d,shape:h};o.prototype=Error.prototype,e.exports=x},function(e,t){"use strict";var n="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";e.exports=n},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=u,this.updater=n||l}function o(){}var a=n(8),i=n(81),l=n(82),u=n(40);o.prototype=i.prototype,r.prototype=new o,r.prototype.constructor=r,a(r.prototype,i.prototype),r.prototype.isPureReactComponent=!0,e.exports=r},function(e,t){"use strict";e.exports="15.4.2"},function(e,t,n){"use strict";function r(e){return a.isValidElement(e)?void 0:o("143"),e}var o=n(37),a=n(36);n(2),e.exports=r},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?s.escape(e.key):t.toString(36)}function o(e,t,n,a){var p=typeof e;if("undefined"!==p&&"boolean"!==p||(e=null),null===e||"string"===p||"number"===p||"object"===p&&e.$$typeof===l)return n(a,e,""===t?c+r(e,0):t),1;var d,m,h=0,v=""===t?c:t+f;if(Array.isArray(e))for(var y=0;y - - - - - - - - - - - - - - - - - - - - diff --git a/assets/sample-1.jpg b/assets/sample-1.jpg deleted file mode 100644 index 71d14ed..0000000 Binary files a/assets/sample-1.jpg and /dev/null differ diff --git a/assets/test.css b/assets/test.css deleted file mode 100644 index fd95986..0000000 --- a/assets/test.css +++ /dev/null @@ -1,3 +0,0 @@ -.container { - background-color: red; -} diff --git a/assets/yuna.jpg b/assets/yuna.jpg deleted file mode 100644 index ce4eea2..0000000 Binary files a/assets/yuna.jpg and /dev/null differ diff --git a/badges.html b/badges.html deleted file mode 100644 index cf8790f..0000000 --- a/badges.html +++ /dev/null @@ -1,45 +0,0 @@ -React Materialize - - - - - - -

Badges can notify you that there are new or unread messages or notifications. Add the new class to the badge to give it the background.

Collection

<Collection>
-  <CollectionItem href="#!">
-    Alan <Badge>1</Badge>
-  </CollectionItem>
-  <CollectionItem href="#!">
-    Alan <Badge newIcon>4</Badge>
-  </CollectionItem>
-  <CollectionItem href="#!">
-    Alan
-  </CollectionItem>
-  <CollectionItem href="#!">
-    Alan <Badge>14</Badge>
-  </CollectionItem>
-</Collection>

Badges in Dropdown

<Dropdown
-  trigger={
-    <Button>Dropdown<Icon right>arrow_drop_down</Icon></Button>
-  }>
-  <NavItem>
-    one
-    <Badge>1</Badge>
-  </NavItem>
-
-  <NavItem>
-    two
-    <Badge newIcon>1</Badge>
-  </NavItem>
-
-  <NavItem>
-    three
-  </NavItem>
-</Dropdown>

Badges in Navbar

<Navbar brand='logo' right>
-  <NavItem href='#!'>sass</NavItem>
-  <NavItem href='#!'>
-    sass <Badge newIcon>4</Badge>
-  </NavItem>
-  <NavItem href='#!'>sass</NavItem>
-</Navbar>
NameTypeDefaultDescription
children
node
className
string
newIcon
boolean

Add the new class name

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/breadcrumbs.html b/breadcrumbs.html deleted file mode 100644 index 198d11f..0000000 --- a/breadcrumbs.html +++ /dev/null @@ -1,12 +0,0 @@ -React Materialize - - - - - - -

Breadcrumbs are a good way to display your current location. This is usually used when you have multiple layers of content.

Basic

<Breadcrumb>
-  <MenuItem>first</MenuItem>
-  <MenuItem>second</MenuItem>
-  <MenuItem>third</MenuItem>
-</Breadcrumb>
NameTypeDefaultDescription
children
node
cols
number
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/buttons.html b/buttons.html deleted file mode 100644 index 5aa5dec..0000000 --- a/buttons.html +++ /dev/null @@ -1,27 +0,0 @@ -React Materialize - - - - - - -

There are 3 main button types described in material design. The raised button is a standard button that signify actions and seek to give depth to a mostly flat page. The floating circular action button is meant for very important functions. Flat buttons are usually used within elements that already have depth like cards or modals.

Raised

<div>
-    <Button waves='light'>button</Button>
-    <Button waves='light'>button<Icon left>cloud</Icon></Button>
-    <Button waves='light'>button<Icon right>cloud</Icon></Button>
-</div>

Floating

<Button floating large className='red' waves='light' icon='add' />

Fixed Action Button

<Button floating fab='vertical' faicon='fa fa-plus' className='red' large style={{bottom: '45px', right: '24px'}}>
-  <Button floating icon='insert_chart' className='red'/>
-  <Button floating icon='format_quote' className='yellow darken-1'/>
-  <Button floating icon='publish' className='green'/>
-  <Button floating icon='attach_file' className='blue'/>
-</Button>

Horizontal FAB

mode_edit
<Button floating fab='horizontal' icon='mode_edit' className='red' large style={{bottom: '45px', right: '24px'}}>
-  <Button floating icon='insert_chart' className='red'/>
-  <Button floating icon='format_quote' className='yellow darken-1'/>
-  <Button floating icon='publish' className='green'/>
-  <Button floating icon='attach_file' className='blue'/>
-</Button>
NameTypeDefaultDescription
children
node
className
string
disabled
boolean
fab
one of: 'vertical', 'horizontal'

Fixed action button -If enabled, any children button will be rendered as actions, remember to provide an icon.

-
flat
boolean

Enable other styles

-
floating
boolean
icon
string

The icon to display, if specified it will create a button with the material icon

-
large
boolean
modal
one of: 'close', 'confirm'
node
node
'button'
onClick
function

Tooltip to show when mouse hovered

-
tooltip
string
waves
one of:
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/cards.html b/cards.html deleted file mode 100644 index a14ec88..0000000 --- a/cards.html +++ /dev/null @@ -1,29 +0,0 @@ -React Materialize - - - - - - -

Cards are a convenient means of displaying content composed of different types of objects. They’re also well-suited for presenting similar objects whose size or supported actions can vary considerably, like photos with captions of variable length.

Basic Card

Card title
I am a very simple card.
Card titleclose
<Col m={6} s={12}>
-    <Card className='blue-grey darken-1' textClassName='white-text' title='Card title' actions={[<a href='#'>This is a link</a>]}>
-    I am a very simple card.
-    </Card>
-</Col>

Image Card

Card Title
I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.
close
<Card className='small'
-  header={<CardTitle image='assets/sample-1.jpg'>Card Title</CardTitle>}
-  actions={[<a href='#'>This is a Link</a>]}>
-  I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.
-</Card>

Card Reveal

Card Titlemore_vert
Card Titleclose

Here is some more information about this product that is only revealed once clicked on.

<Card header={<CardTitle reveal image={"assets/office.jpg"} waves='light'/>}
-    title="Card Title"
-    reveal={<p>Here is some more information about this product that is only revealed once clicked on.</p>}>
-    <p><a href="#">This is a link</a></p>
-</Card>

Card Panel

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks.
For a simpler card with less markup, try using a card panel which just has padding and a shadow effect
<Row>
-    <Col s={12} m={5}>
-        <CardPanel className="teal lighten-4 black-text">
-            <span>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks.</span>
-        </CardPanel>
-    </Col>
-    <Col s={12} m={7}>
-        For a simpler card with less markup, try using a card panel which just has padding and a shadow effect
-    </Col>
-</Row>
NameTypeDefaultDescription
actions
array<element>
children
node
className
string
header
element
reveal
element
textClassName
string
title
string
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/chips.html b/chips.html deleted file mode 100644 index a94c75f..0000000 --- a/chips.html +++ /dev/null @@ -1,17 +0,0 @@ -React Materialize - - - - - - -

Chips can be used to represent small blocks of information. They are most commonly used either for contacts or for tags.

Contact PersonJane Doe
tagclose
<Row>
-  <Col s={12}>
-    <Chip>
-      <image src='assets/yuna.jpg' alt='Contact Person' />
-      Jane Doe
-    </Chip>
-    <Tag>tag</Tag>
-  </Col>
-</Row>
NameTypeDefaultDescription
children
node
close
boolean

If show a close icon

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/collapsible.html b/collapsible.html deleted file mode 100644 index 0c48401..0000000 --- a/collapsible.html +++ /dev/null @@ -1,27 +0,0 @@ -React Materialize - - - - - - -

Collapsibles are accordion elements that expand when clicked on. They allow you to hide content that is not immediately relevant to the user.

<Collapsible popout>
-  <CollapsibleItem header='First' icon='filter_drama'>
-    Lorem ipsum dolor sit amet.
-  </CollapsibleItem>
-  <CollapsibleItem header='Second' icon='place'>
-    Lorem ipsum dolor sit amet.
-  </CollapsibleItem>
-  <CollapsibleItem header='Third' icon='whatshot'>
-    Lorem ipsum dolor sit amet.
-  </CollapsibleItem>
-</Collapsible>
NameTypeDefaultDescription
accordion
boolean
false

There are two ways a collapsible can behave. It can either allow multiple sections to stay open, -or it can only allow one section to stay open at a time, which is called an accordion.

-
children
node
className
string
defaultActiveKey
any

The default CollapsibleItem that should be expanded. This value should match the specified -item's eventKey value. Ignored if accordion is false.

-
onSelect
function
popout
boolean

Enable popout style

-
NameTypeDefaultDescription
children
node
className
string
eventKey
any

The value to pass to the onSelect callback.

-
expanded
boolean
false

If the item is expanded by default. Overridden if the parent Collapsible is an accordion.

-
header
string
icon
string
iconClassName
string
node
node
'a'

The node type of the header

-
onSelect
function
scroll
one of: 'auto', 'instant', 'smooth'

The scroll behavior for scrollIntoView

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/collections.html b/collections.html deleted file mode 100644 index ba14d74..0000000 --- a/collections.html +++ /dev/null @@ -1,23 +0,0 @@ -React Materialize - - - - - - -

Collections allow you to group list objects together.

Basic

  • Alvin
  • Alvin
  • Alvin
  • Alvin
<Collection>
-  <CollectionItem>Alvin</CollectionItem>
-  <CollectionItem>Alvin</CollectionItem>
-  <CollectionItem>Alvin</CollectionItem>
-  <CollectionItem>Alvin</CollectionItem>
-</Collection>

Links

<Collection>
-  <CollectionItem href='#'>Alvin</CollectionItem>
-  <CollectionItem href='#' active>Alvin</CollectionItem>
-  <CollectionItem href='#'>Alvin</CollectionItem>
-  <CollectionItem href='#'>Alvin</CollectionItem>
-</Collection>

Headers

  • First Names

  • Alvin
  • Alvin
  • Alvin
  • Alvin
<Collection header='First Names'>
-  <CollectionItem>Alvin</CollectionItem>
-  <CollectionItem>Alvin</CollectionItem>
-  <CollectionItem>Alvin</CollectionItem>
-  <CollectionItem>Alvin</CollectionItem>
-</Collection>

Collection Props

NameTypeDefaultDescription
children
node
header
node

CollectionItem Props

NameTypeDefaultDescription
active
boolean
children
node
className
string
href
string
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/components.html b/components.html deleted file mode 100644 index f508149..0000000 --- a/components.html +++ /dev/null @@ -1 +0,0 @@ -React Materialize
\ No newline at end of file diff --git a/dropdown.html b/dropdown.html deleted file mode 100644 index 4ecf626..0000000 --- a/dropdown.html +++ /dev/null @@ -1,18 +0,0 @@ -React Materialize - - - - - - -

Add a dropdown list to any button.

<Dropdown trigger={
-    <Button>Drop me!</Button>
-  }>
-  <NavItem>one</NavItem>
-  <NavItem>two</NavItem>
-  <NavItem divider />
-  <NavItem>three</NavItem>
-</Dropdown>
NameTypeDefaultDescription
children
node
className
string
options
object

Options hash for the dropdown -more info: http://materializecss.com/dropdown.html#options

-
trigger
node

The node to trigger the dropdown

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/footer.html b/footer.html deleted file mode 100644 index 3555fd7..0000000 --- a/footer.html +++ /dev/null @@ -1,24 +0,0 @@ -React Materialize - - - - - - -

Footers are a great way to organize a lot of site navigation and information at the end of a page. This is where the user will look once hes finished scrolling through the current page or is looking for additional information about your website.

<Footer copyrights="&copy; 2015 Copyright Text"
-  moreLinks={
-    <a className="grey-text text-lighten-4 right" href="#!">More Links</a>
-  }
-  links={
-    <ul>
-      <li><a className="grey-text text-lighten-3" href="#!">Link 1</a></li>
-      <li><a className="grey-text text-lighten-3" href="#!">Link 2</a></li>
-      <li><a className="grey-text text-lighten-3" href="#!">Link 3</a></li>
-      <li><a className="grey-text text-lighten-3" href="#!">Link 4</a></li>
-    </ul>
-  }
-  className='example'
->
-    <h5 className="white-text">Footer Content</h5>
-    <p className="grey-text text-lighten-4">You can use rows and columns here to organize your footer content.</p>
-</Footer>
NameTypeDefaultDescription
children
node
className
string
copyrights
string
links
node
moreLinks
node
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/forms.html b/forms.html deleted file mode 100644 index 30f35e4..0000000 --- a/forms.html +++ /dev/null @@ -1,38 +0,0 @@ -React Materialize - - - - - - -

Forms are the standard way to receive user inputted data. The transitions and smoothness of these elements are very important because of the inherent user interaction associated with forms.

Input Fields

<Row>
-    <Input placeholder="Placeholder" s={6} label="First Name" />
-    <Input s={6} label="Last Name" />
-    <Input s={12} label="disabled" defaultValue="I am not editable" disabled />
-    <Input type="password" label="password" s={12} />
-    <Input type="email" label="Email" s={12} />
-</Row>

Prefilling Text Inputs

<Row>
-  <Input s={6} label="First Name" validate defaultValue='Alvin' />
-</Row>

Icon Prefixes

You can add an Icon tag to the children of Input tag, it will be shown as icon prefix

account_circle
phone
<Row>
-  <Input s={6} label="First Name" validate><Icon>account_circle</Icon></Input>
-  <Input s={6} label="Telephone" validate type='tel'><Icon>phone</Icon></Input>
-</Row>

Select

<Row>
-  <Input s={12} type='select' label="Materialize Select" defaultValue='2'>
-    <option value='1'>Option 1</option>
-    <option value='2'>Option 2</option>
-    <option value='3'>Option 3</option>
-  </Input>
-</Row>

Radio

<div>
-    <Input name='group1' type='radio' value='red' label='Red' />
-    <Input name='group1' type='radio' value='yellow' label='Yellow' />
-    <Input name='group1' type='radio' value='green' label='Green' className='with-gap' />
-    <Input name='group1' type='radio' value='brown' label='Brown' disabled='disabled' />
-</div>

Checkbox

<Row>
-    <Input name='group1' type='checkbox' value='red' label='Red' />
-    <Input name='group1' type='checkbox' value='yellow' label='Yellow' defaultValue='checked' />
-    <Input name='group1' type='checkbox' value='green' label='Green' className='filled-in' defaultChecked='checked' />
-    <Input name='group1' type='checkbox' value='brown' label='Brown' disabled='disabled' />
-</Row>

Switch

<Row>
-  <Input name='on' type='switch' value='1' />
-</Row>
NameTypeDefaultDescription
browserDefault
boolean
children
node
className
string
defaultValue
any
error
string
icon
string
id
string
l
number
label
node
m
number
multiple
boolean
name
string
offLabel
string
onChange
function
onLabel
string
placeholder
string
s
number
success
string
type
string
'text'

Input field type, e.g. select, checkbox, radio, text, tel, email

-
validate
boolean
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/get-started.html b/get-started.html deleted file mode 100644 index 5a37b06..0000000 --- a/get-started.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/getting-started.html b/getting-started.html deleted file mode 100644 index 01d7f89..0000000 --- a/getting-started.html +++ /dev/null @@ -1,36 +0,0 @@ -React Materialize - - - - - - -

Installation

$ npm install react-materialize

HTML Setup

<!DOCTYPE html>
-<html>
-  <head>
-    <link rel="stylesheet" href="http://fonts.googleapis.com/icon?family=Material+Icons">
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css">
-  </head>
-  <body>
-    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script>
-    <script src="path/to/your/bundle.js"></script>
-  </body>
-</html>
-

Usage


-import React from 'react';
-import { Button, Row, Col, Icon } from './react-materialize';
-
-export default () => {
-  return (
-    <Row>
-      <Col s={6}>
-        <Button waves='light'>Add<Icon right>add</Icon></Button>
-      </Col>
-      <Col s={6}>
-        <Button waves='light'>Remove<Icon right>remove</Icon></Button>
-      </Col>
-    </Row>
-  );
-};
-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/grid.html b/grid.html deleted file mode 100644 index 6c5cee5..0000000 --- a/grid.html +++ /dev/null @@ -1,28 +0,0 @@ -React Materialize - - - - - - -

We are using a standard 12 column fluid responsive grid system. The grid helps you layout your page in an ordered, easy fashion.

12 Columns

1
2
3
4
5
6
7
8
9
10
11
12
<Row>
-    <Col s={1} className='grid-example'>1</Col>
-    <Col s={1} className='grid-example'>2</Col>
-    <Col s={1} className='grid-example'>3</Col>
-    <Col s={1} className='grid-example'>4</Col>
-    <Col s={1} className='grid-example'>5</Col>
-    <Col s={1} className='grid-example'>6</Col>
-    <Col s={1} className='grid-example'>7</Col>
-    <Col s={1} className='grid-example'>8</Col>
-    <Col s={1} className='grid-example'>9</Col>
-    <Col s={1} className='grid-example'>10</Col>
-    <Col s={1} className='grid-example'>11</Col>
-    <Col s={1} className='grid-example'>12</Col>
-</Row>
NameTypeDefaultDescription
children
node
className
string
node
node
NameTypeDefaultDescription
children
node
className
string
l
number

Columns for large size screens

-
m
number

Columns for middle size screens

-
node
node

The node to be used for the column

-
offset
string

To offset, simply add s2 to the class where s signifies the screen -class-prefix (s = small, m = medium, l = large) and the number after -is the number of columns you want to offset by.

-
s
number

Columns for small size screens

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/index.html b/index.html index 01d7f89..ebc2030 100644 --- a/index.html +++ b/index.html @@ -1,36 +1,7 @@ -React Materialize - - - - - - -

Installation

$ npm install react-materialize

HTML Setup

<!DOCTYPE html>
-<html>
-  <head>
-    <link rel="stylesheet" href="http://fonts.googleapis.com/icon?family=Material+Icons">
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css">
-  </head>
-  <body>
-    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script>
-    <script src="path/to/your/bundle.js"></script>
-  </body>
-</html>
-

Usage


-import React from 'react';
-import { Button, Row, Col, Icon } from './react-materialize';
-
-export default () => {
-  return (
-    <Row>
-      <Col s={6}>
-        <Button waves='light'>Add<Icon right>add</Icon></Button>
-      </Col>
-      <Col s={6}>
-        <Button waves='light'>Remove<Icon right>remove</Icon></Button>
-      </Col>
-    </Row>
-  );
-};
-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file + + + + React Materialize + + + diff --git a/media.html b/media.html deleted file mode 100644 index a8b829c..0000000 --- a/media.html +++ /dev/null @@ -1,34 +0,0 @@ -React Materialize - - - - - - -

Media components include things that have to do with large media objects like Images, Video, Audio, etc.

Media Box

<MediaBox src="assets/sample-1.jpg" caption="A demo media box1" width="650"/>

Slider

  • This is our big Tagline!

    Here's our small slogan.
  • Left aligned Caption

    Here's our small slogan.
  • Right aligned Caption

    Here's our small slogan.
<Slider>
-  <Slide
-    src="http://lorempixel.com/580/250/nature/1"
-    title="This is our big Tagline!">
-    Here's our small slogan.
-  </Slide>
-  <Slide
-    src="http://lorempixel.com/580/250/nature/2"
-    title="Left aligned Caption"
-    placement="left">
-    Here's our small slogan.
-  </Slide>
-  <Slide
-    src="http://lorempixel.com/580/250/nature/3"
-    title="Right aligned Caption"
-    placement="right">
-    Here's our small slogan.
-  </Slide>
-</Slider>
NameTypeDefaultDescription
caption
string

The caption shown below the image when opened

-
className
string
src
string

The path to the image

-
NameTypeDefaultDescription
children
node
className
string
fullscreen
boolean
false
indicators
boolean
true

Set to false to hide slide indicators

-
interval
number
6000

The interval between transitions in ms

-
transition
number

The duration of the transation animation in ms

-
NameTypeDefaultDescription
alignment
one of:

Aliment of the caption

-
children
node
className
string
src
string

The path of the background image

-
title
string

The tagline of the caption

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/modals.html b/modals.html deleted file mode 100644 index 1ac9fd3..0000000 --- a/modals.html +++ /dev/null @@ -1,34 +0,0 @@ -React Materialize - - - - - - -

Use a modal for dialog boxes, confirmation messages, or other content that can be called up.

<Modal
-  header='Modal Header'
-  trigger={
-    <Button waves='light'>MODAL</Button>
-  }>
-  <p>Lorem ipsum dolor sit amet, consectetur adipiscing 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</p>
-</Modal>
<Modal
-  header='Modal Header'
-  bottomSheet
-  trigger={
-    <Button waves='light'>MODAL BUTTOM SHEET STYLE</Button>
-  }>
-  Lorem ipsum dolor sit amet, consectetur adipiscing 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
-</Modal>
<Modal
-  header='Modal Header'
-  fixedFooter
-  trigger={
-    <Button waves='light'>MODAL WITH FIXED FOOTER</Button>
-  }>
-  Lorem ipsum dolor sit amet, consectetur adipiscing 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
-</Modal>
NameTypeDefaultDescription
actions
node
[<Button waves='light' modal='close' flat>Close</Button>]

The buttons to show in the footer of the modal

-
bottomSheet
boolean
false

BottomSheet styled modal

-
children
node

Component children

-
fixedFooter
boolean
false

FixedFooter styled modal

-
header
string

Text to shown in the header of the modal

-
modalOptions
object
trigger
node

The button to trigger the display of the modal

-
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/navbar.html b/navbar.html deleted file mode 100644 index 3e4c340..0000000 --- a/navbar.html +++ /dev/null @@ -1,19 +0,0 @@ -React Materialize - - - - - - -

The navbar is fully contained by an HTML5 Nav tag. Inside a recommended container div, there are 2 main parts of the navbar. A logo or brand link, and the navigations links. You can align these links to the left or right.

Right Aligned Links

<Navbar brand='logo' right>
-  <NavItem href='get-started.html'>Getting started</NavItem>
-  <NavItem href='components.html'>Components</NavItem>
-</Navbar>

Left Aligned Links

<Navbar brand='logo' left>
-  <NavItem href='get-started.html'>Getting started</NavItem>
-  <NavItem href='components.html'>Components</NavItem>
-</Navbar>

Icon Links

<Navbar brand='logo' right>
-    <NavItem href='get-started.html'><Icon>search</Icon></NavItem>
-    <NavItem href='get-started.html'><Icon>view_module</Icon></NavItem>
-    <NavItem href='get-started.html'><Icon>refresh</Icon></NavItem>
-    <NavItem href='get-started.html'><Icon>more_vert</Icon></NavItem>
-</Navbar>
NameTypeDefaultDescription
brand
node
children
node
className
string
href
string
'/'
left
boolean
right
boolean
Join the Discussion

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

Join the chat at https://gitter.im/react-materialize/react-materialize
\ No newline at end of file diff --git a/node_modules/.bin/brfs b/node_modules/.bin/brfs deleted file mode 100755 index 3b4a94c..0000000 --- a/node_modules/.bin/brfs +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -var fs = require('fs'); -var path = require('path'); -var brfs = require('../'); -var file = process.argv[2]; - -if (file === '-h' || file === '--help') { - return fs.createReadStream(path.join(__dirname, 'usage.txt')) - .pipe(process.stdout) - ; -} - -var fromFile = file && file !== '-'; -var rs = fromFile - ? fs.createReadStream(file) - : process.stdin -; - -var fpath = fromFile ? file : path.join(process.cwd(), '-'); -rs.pipe(brfs(fpath)).pipe(process.stdout); diff --git a/node_modules/brfs/.travis.yml b/node_modules/brfs/.travis.yml deleted file mode 100644 index 9672e12..0000000 --- a/node_modules/brfs/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" -before_install: - - npm install -g npm@~1.4.6 diff --git a/node_modules/brfs/LICENSE b/node_modules/brfs/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/brfs/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -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/node_modules/brfs/bin/cmd.js b/node_modules/brfs/bin/cmd.js deleted file mode 100755 index 3b4a94c..0000000 --- a/node_modules/brfs/bin/cmd.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -var fs = require('fs'); -var path = require('path'); -var brfs = require('../'); -var file = process.argv[2]; - -if (file === '-h' || file === '--help') { - return fs.createReadStream(path.join(__dirname, 'usage.txt')) - .pipe(process.stdout) - ; -} - -var fromFile = file && file !== '-'; -var rs = fromFile - ? fs.createReadStream(file) - : process.stdin -; - -var fpath = fromFile ? file : path.join(process.cwd(), '-'); -rs.pipe(brfs(fpath)).pipe(process.stdout); diff --git a/node_modules/brfs/bin/usage.txt b/node_modules/brfs/bin/usage.txt deleted file mode 100644 index 152b433..0000000 --- a/node_modules/brfs/bin/usage.txt +++ /dev/null @@ -1,13 +0,0 @@ -usage: - - brfs file - - Inline `fs.readFileSync()` calls from `file`, printing the transformed file - contents to stdout. - - brfs - brfs - - - Inline `fs.readFileSync()` calls from stdin, printing the transformed file - contents to stdout. - diff --git a/node_modules/brfs/example/async.js b/node_modules/brfs/example/async.js deleted file mode 100644 index d04cb5b..0000000 --- a/node_modules/brfs/example/async.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -fs.readFile(__dirname + '/robot.html', 'utf8', function (err, html) { - console.log(html); -}); diff --git a/node_modules/brfs/example/main.js b/node_modules/brfs/example/main.js deleted file mode 100644 index 23a86b7..0000000 --- a/node_modules/brfs/example/main.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var html = fs.readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/example/robot.html b/node_modules/brfs/example/robot.html deleted file mode 100644 index 9e6d2ab..0000000 --- a/node_modules/brfs/example/robot.html +++ /dev/null @@ -1 +0,0 @@ -beep boop diff --git a/node_modules/brfs/index.js b/node_modules/brfs/index.js deleted file mode 100644 index 3814aa0..0000000 --- a/node_modules/brfs/index.js +++ /dev/null @@ -1,139 +0,0 @@ -var staticModule = require('static-module'); -var quote = require('quote-stream'); -var through = require('through2'); -var fs = require('fs'); -var path = require('path'); - -module.exports = function (file, opts) { - if (/\.json$/.test(file)) return through(); - var vars = { - __filename: file, - __dirname: path.dirname(file) - }; - if (!opts) opts = {}; - if (opts.vars) Object.keys(opts.vars).forEach(function (key) { - vars[key] = opts.vars[key]; - }); - - var sm = staticModule( - { - fs: { - readFileSync: readFileSync, - readFile: readFile, - readdirSync: readdirSync, - readdir: readdir - } - }, - { vars: vars } - ); - return sm; - - function readFile (file, enc, cb) { - if (typeof enc === 'function') { - cb = enc; - enc = null; - } - if (enc && typeof enc === 'object' && enc.encoding) { - enc = enc.encoding; - } - var isBuffer = false; - if (enc === null || enc === undefined) { - isBuffer = true; - enc = 'base64'; - } - - var stream = through(write, end); - stream.push('process.nextTick(function(){(' + cb + ')(null,'); - if (isBuffer) stream.push('Buffer('); - - var s = fs.createReadStream(file, { encoding: enc }); - s.on('error', function (err) { sm.emit('error', err) }); - return s.pipe(quote()).pipe(stream); - - function write (buf, enc, next) { - this.push(buf); - next(); - } - function end (next) { - if (isBuffer) this.push(',"base64")'); - this.push(')})'); - this.push(null); - sm.emit('file', file); - next() - } - } - - function readFileSync (file, enc) { - var isBuffer = false; - if (enc === null || enc === undefined) { - isBuffer = true; - enc = 'base64'; - } - if (enc && typeof enc === 'object' && enc.encoding) { - enc = enc.encoding; - } - var stream = fs.createReadStream(file, { encoding: enc }) - .pipe(quote()).pipe(through(write, end)) - ; - if (isBuffer) { - stream.push('Buffer('); - } - return stream; - - function write (buf, enc, next) { - this.push(buf); - next(); - } - function end (next) { - if (isBuffer) this.push(',"base64")'); - this.push(null); - sm.emit('file', file); - next(); - } - } - - function readdir(path, cb) { - var stream = through(write, end); - - stream.push('process.nextTick(function(){(' + cb + ')(null,'); - fs.readdir(path, function (err, src) { - if (err) { - stream.emit('error', err); - return; - } - stream.push(JSON.stringify(src)); - stream.end(')})'); - }); - return stream; - - function write (buf, enc, next) { - this.push(buf); - next(); - } - function end (next) { - this.push(null); - next(); - } - } - - function readdirSync (path) { - var stream = through(write, end); - fs.readdir(path, function (err, src) { - if (err) { - stream.emit('error', err); - return; - } - stream.end(JSON.stringify(src)); - }); - return stream; - - function write (buf, enc, next) { - this.push(buf); - next(); - } - function end (next) { - this.push(null); - next(); - } - } -}; diff --git a/node_modules/brfs/node_modules/quote-stream/.travis.yml b/node_modules/brfs/node_modules/quote-stream/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/quote-stream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/quote-stream/LICENSE b/node_modules/brfs/node_modules/quote-stream/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/brfs/node_modules/quote-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -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/node_modules/brfs/node_modules/quote-stream/bin/cmd.js b/node_modules/brfs/node_modules/quote-stream/bin/cmd.js deleted file mode 100755 index 5ad4000..0000000 --- a/node_modules/brfs/node_modules/quote-stream/bin/cmd.js +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node - -var quote = require('../'); -var minimist = require('minimist'); -var fs = require('fs'); - -var argv = minimist(process.argv.slice(2), { alias: { h: 'help' } }); -if (argv.help) { - var s = fs.createReadStream(__dirname + '/usage.txt'); - return s.pipe(process.stdout); -} - -process.stdin.pipe(quote()).pipe(process.stdout); diff --git a/node_modules/brfs/node_modules/quote-stream/bin/usage.txt b/node_modules/brfs/node_modules/quote-stream/bin/usage.txt deleted file mode 100644 index fb88cc7..0000000 --- a/node_modules/brfs/node_modules/quote-stream/bin/usage.txt +++ /dev/null @@ -1,4 +0,0 @@ -usage: quote-stream - - Transform stdin to a quoted string on stdout. - diff --git a/node_modules/brfs/node_modules/quote-stream/example/stream.js b/node_modules/brfs/node_modules/quote-stream/example/stream.js deleted file mode 100644 index 59e3381..0000000 --- a/node_modules/brfs/node_modules/quote-stream/example/stream.js +++ /dev/null @@ -1,2 +0,0 @@ -var quote = require('../'); -process.stdin.pipe(quote()).pipe(process.stdout); diff --git a/node_modules/brfs/node_modules/quote-stream/index.js b/node_modules/brfs/node_modules/quote-stream/index.js deleted file mode 100644 index db01abb..0000000 --- a/node_modules/brfs/node_modules/quote-stream/index.js +++ /dev/null @@ -1,66 +0,0 @@ -var through = require('through2'); -var buffers = { - quote: Buffer('"'), - escapeQuote: Buffer('\\"'), - escapeEscape: Buffer('\\\\'), - escapeB: Buffer('\\b'), - escapeF: Buffer('\\f'), - escapeN: Buffer('\\n'), - escapeR: Buffer('\\r'), - escapeT: Buffer('\\t') -}; - -for (var i = 0; i < 32; i++) { - var s = i.toString(16); - buffers[i] = Buffer('\\u' + Array(5-s.length).join('0') + s); -} - -var codes = { - quote: '"'.charCodeAt(0), - escape: '\\'.charCodeAt(0), - b: '\b'.charCodeAt(0), - f: '\f'.charCodeAt(0), - n: '\n'.charCodeAt(0), - r: '\r'.charCodeAt(0), - t: '\t'.charCodeAt(0) -}; - -var map = {}; -map[codes.quote] = buffers.escapeQuote; -map[codes.escape] = buffers.escapeEscape; -map[codes.b] = buffers.escapeB; -map[codes.f] = buffers.escapeF; -map[codes.n] = buffers.escapeN; -map[codes.r] = buffers.escapeR; -map[codes.t] = buffers.escapeT; - -module.exports = function () { - var stream = through(write, end); - stream.push(buffers.quote); - return stream; - - function write (buf, enc, next) { - var offset = 0; - for (var i = 0; i < buf.length; i++) { - var c = buf[i]; - var m = map[c]; - if (m) { - var bufs = [ buf.slice(offset, i), m ]; - this.push(Buffer.concat(bufs)); - offset = i + 1; - } - else if (c < 32) { - var bufs = [ buf.slice(offset, i), buffers[c] ]; - this.push(Buffer.concat(bufs)); - offset = i + 1; - } - } - if (offset === 0) this.push(buf) - else this.push(buf.slice(offset)); - next(); - } - function end (next) { - this.push(buffers.quote); - this.push(null); - } -}; diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/.travis.yml b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/LICENSE b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -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/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/example/parse.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/example/parse.js deleted file mode 100644 index abff3e8..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/example/parse.js +++ /dev/null @@ -1,2 +0,0 @@ -var argv = require('../')(process.argv.slice(2)); -console.dir(argv); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/index.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/index.js deleted file mode 100644 index 584f551..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/index.js +++ /dev/null @@ -1,187 +0,0 @@ -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {} }; - - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - }); - - var aliases = {}; - Object.keys(opts.alias || {}).forEach(function (key) { - aliases[key] = [].concat(opts.alias[key]); - aliases[key].forEach(function (x) { - aliases[x] = [key].concat(aliases[key].filter(function (y) { - return x !== y; - })); - }); - }); - - var defaults = opts['default'] || {}; - - var argv = { _ : [] }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] === undefined ? false : defaults[key]); - }); - - var notFlags = []; - - if (args.indexOf('--') !== -1) { - notFlags = args.slice(args.indexOf('--')+1); - args = args.slice(0, args.indexOf('--')); - } - - function setArg (key, val) { - var value = !flags.strings[key] && isNumber(val) - ? Number(val) : val - ; - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), value); - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (/^--.+=/.test(arg)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - setArg(m[1], m[2]); - } - else if (/^--no-.+/.test(arg)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); - } - else if (/^--.+/.test(arg)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !/^-/.test(next) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, next); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true'); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true); - } - } - else if (/^-[^-]+/.test(arg)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - var next = arg.slice(j+2); - - if (next === '-') { - setArg(letters[j], next) - continue; - } - - if (/[A-Za-z]/.test(letters[j]) - && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next); - broken = true; - break; - } - - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); - broken = true; - break; - } - else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true); - } - } - - var key = arg.slice(-1)[0]; - if (!broken && key !== '-') { - if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, args[i+1]); - i++; - } - else if (args[i+1] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true); - } - } - } - else { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); - } - } - - Object.keys(defaults).forEach(function (key) { - if (!hasKey(argv, key.split('.'))) { - setKey(argv, key.split('.'), defaults[key]); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), defaults[key]); - }); - } - }); - - notFlags.forEach(function(key) { - argv._.push(key); - }); - - return argv; -}; - -function hasKey (obj, keys) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - o = (o[key] || {}); - }); - - var key = keys[keys.length - 1]; - return key in o; -} - -function setKey (obj, keys, value) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - if (o[key] === undefined) o[key] = {}; - o = o[key]; - }); - - var key = keys[keys.length - 1]; - if (o[key] === undefined || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } -} - -function isNumber (x) { - if (typeof x === 'number') return true; - if (/^0x[0-9a-f]+$/i.test(x)) return true; - return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} - -function longest (xs) { - return Math.max.apply(null, xs.map(function (x) { return x.length })); -} diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/package.json b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/package.json deleted file mode 100644 index d181aaf..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "minimist", - "version": "0.0.8", - "description": "parse argument options", - "main": "index.js", - "devDependencies": { - "tape": "~1.0.4", - "tap": "~0.4.0" - }, - "scripts": { - "test": "tap test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "ff/5", - "firefox/latest", - "chrome/10", - "chrome/latest", - "safari/5.1", - "safari/latest", - "opera/12" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/minimist.git" - }, - "homepage": "https://github.com/substack/minimist", - "keywords": [ - "argv", - "getopt", - "parser", - "optimist" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/substack/minimist/issues" - }, - "_id": "minimist@0.0.8", - "dist": { - "shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", - "tarball": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "_from": "minimist@0.0.8", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "directories": {}, - "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown" -} diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/readme.markdown b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/readme.markdown deleted file mode 100644 index c256353..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/readme.markdown +++ /dev/null @@ -1,73 +0,0 @@ -# minimist - -parse argument options - -This module is the guts of optimist's argument parser without all the -fanciful decoration. - -[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) - -[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) - -# example - -``` js -var argv = require('minimist')(process.argv.slice(2)); -console.dir(argv); -``` - -``` -$ node example/parse.js -a beep -b boop -{ _: [], a: 'beep', b: 'boop' } -``` - -``` -$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz -{ _: [ 'foo', 'bar', 'baz' ], - x: 3, - y: 4, - n: 5, - a: true, - b: true, - c: true, - beep: 'boop' } -``` - -# methods - -``` js -var parseArgs = require('minimist') -``` - -## var argv = parseArgs(args, opts={}) - -Return an argument object `argv` populated with the array arguments from `args`. - -`argv._` contains all the arguments that didn't have an option associated with -them. - -Numeric-looking arguments will be returned as numbers unless `opts.string` or -`opts.boolean` is set for that argument name. - -Any arguments after `'--'` will not be parsed and will end up in `argv._`. - -options can be: - -* `opts.string` - a string or array of strings argument names to always treat as -strings -* `opts.boolean` - a string or array of strings to always treat as booleans -* `opts.alias` - an object mapping string names to strings or arrays of string -argument names to use as aliases -* `opts.default` - an object mapping string argument names to default values - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install minimist -``` - -# license - -MIT diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/dash.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/dash.js deleted file mode 100644 index 8b034b9..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/dash.js +++ /dev/null @@ -1,24 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('-', function (t) { - t.plan(5); - t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] }); - t.deepEqual(parse([ '-' ]), { _: [ '-' ] }); - t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] }); - t.deepEqual( - parse([ '-b', '-' ], { boolean: 'b' }), - { b: true, _: [ '-' ] } - ); - t.deepEqual( - parse([ '-s', '-' ], { string: 's' }), - { s: '-', _: [] } - ); -}); - -test('-a -- b', function (t) { - t.plan(3); - t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] }); - t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); - t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/default_bool.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/default_bool.js deleted file mode 100644 index f0041ee..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/default_bool.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require('tape'); -var parse = require('../'); - -test('boolean default true', function (t) { - var argv = parse([], { - boolean: 'sometrue', - default: { sometrue: true } - }); - t.equal(argv.sometrue, true); - t.end(); -}); - -test('boolean default false', function (t) { - var argv = parse([], { - boolean: 'somefalse', - default: { somefalse: false } - }); - t.equal(argv.somefalse, false); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/dotted.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/dotted.js deleted file mode 100644 index ef0ae34..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/dotted.js +++ /dev/null @@ -1,16 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('dotted alias', function (t) { - var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); - t.equal(argv.a.b, 22); - t.equal(argv.aa.bb, 22); - t.end(); -}); - -test('dotted default', function (t) { - var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); - t.equal(argv.a.b, 11); - t.equal(argv.aa.bb, 11); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/long.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/long.js deleted file mode 100644 index 5d3a1e0..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/long.js +++ /dev/null @@ -1,31 +0,0 @@ -var test = require('tape'); -var parse = require('../'); - -test('long opts', function (t) { - t.deepEqual( - parse([ '--bool' ]), - { bool : true, _ : [] }, - 'long boolean' - ); - t.deepEqual( - parse([ '--pow', 'xixxle' ]), - { pow : 'xixxle', _ : [] }, - 'long capture sp' - ); - t.deepEqual( - parse([ '--pow=xixxle' ]), - { pow : 'xixxle', _ : [] }, - 'long capture eq' - ); - t.deepEqual( - parse([ '--host', 'localhost', '--port', '555' ]), - { host : 'localhost', port : 555, _ : [] }, - 'long captures sp' - ); - t.deepEqual( - parse([ '--host=localhost', '--port=555' ]), - { host : 'localhost', port : 555, _ : [] }, - 'long captures eq' - ); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/parse.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/parse.js deleted file mode 100644 index 8a90646..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/parse.js +++ /dev/null @@ -1,318 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('parse args', function (t) { - t.deepEqual( - parse([ '--no-moo' ]), - { moo : false, _ : [] }, - 'no' - ); - t.deepEqual( - parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [] }, - 'multi' - ); - t.end(); -}); - -test('comprehensive', function (t) { - t.deepEqual( - parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ] - } - ); - t.end(); -}); - -test('nums', function (t) { - var argv = parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789' - ]); - t.deepEqual(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ] - }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv.y, 'number'); - t.deepEqual(typeof argv.z, 'number'); - t.deepEqual(typeof argv.w, 'string'); - t.deepEqual(typeof argv.hex, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); - -test('flag boolean', function (t) { - var argv = parse([ '-t', 'moo' ], { boolean: 't' }); - t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); - -test('flag boolean value', function (t) { - var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { - boolean: [ 't', 'verbose' ], - default: { verbose: true } - }); - - t.deepEqual(argv, { - verbose: false, - t: true, - _: ['moo'] - }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); - -test('flag boolean default false', function (t) { - var argv = parse(['moo'], { - boolean: ['t', 'verbose'], - default: { verbose: false, t: false } - }); - - t.deepEqual(argv, { - verbose: false, - t: false, - _: ['moo'] - }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); - -}); - -test('boolean groups', function (t) { - var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { - boolean: ['x','y','z'] - }); - - t.deepEqual(argv, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ] - }); - - t.deepEqual(typeof argv.x, 'boolean'); - t.deepEqual(typeof argv.y, 'boolean'); - t.deepEqual(typeof argv.z, 'boolean'); - t.end(); -}); - -test('newlines in params' , function (t) { - var args = parse([ '-s', "X\nX" ]) - t.deepEqual(args, { _ : [], s : "X\nX" }); - - // reproduce in bash: - // VALUE="new - // line" - // node program.js --s="$VALUE" - args = parse([ "--s=X\nX" ]) - t.deepEqual(args, { _ : [], s : "X\nX" }); - t.end(); -}); - -test('strings' , function (t) { - var s = parse([ '-s', '0001234' ], { string: 's' }).s; - t.equal(s, '0001234'); - t.equal(typeof s, 'string'); - - var x = parse([ '-x', '56' ], { string: 'x' }).x; - t.equal(x, '56'); - t.equal(typeof x, 'string'); - t.end(); -}); - -test('stringArgs', function (t) { - var s = parse([ ' ', ' ' ], { string: '_' })._; - t.same(s.length, 2); - t.same(typeof s[0], 'string'); - t.same(s[0], ' '); - t.same(typeof s[1], 'string'); - t.same(s[1], ' '); - t.end(); -}); - -test('empty strings', function(t) { - var s = parse([ '-s' ], { string: 's' }).s; - t.equal(s, ''); - t.equal(typeof s, 'string'); - - var str = parse([ '--str' ], { string: 'str' }).str; - t.equal(str, ''); - t.equal(typeof str, 'string'); - - var letters = parse([ '-art' ], { - string: [ 'a', 't' ] - }); - - t.equal(letters.a, ''); - t.equal(letters.r, true); - t.equal(letters.t, ''); - - t.end(); -}); - - -test('slashBreak', function (t) { - t.same( - parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [] } - ); - t.same( - parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [] } - ); - t.end(); -}); - -test('alias', function (t) { - var argv = parse([ '-f', '11', '--zoom', '55' ], { - alias: { z: 'zoom' } - }); - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.f, 11); - t.end(); -}); - -test('multiAlias', function (t) { - var argv = parse([ '-f', '11', '--zoom', '55' ], { - alias: { z: [ 'zm', 'zoom' ] } - }); - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.z, argv.zm); - t.equal(argv.f, 11); - t.end(); -}); - -test('nested dotted objects', function (t) { - var argv = parse([ - '--foo.bar', '3', '--foo.baz', '4', - '--foo.quux.quibble', '5', '--foo.quux.o_O', - '--beep.boop' - ]); - - t.same(argv.foo, { - bar : 3, - baz : 4, - quux : { - quibble : 5, - o_O : true - } - }); - t.same(argv.beep, { boop : true }); - t.end(); -}); - -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = parse(aliased, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var propertyArgv = parse(regular, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - alias: { 'h': 'herp' }, - boolean: 'herp' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - alias: { h: 'herp' }, - boolean: 'h' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -// regression, see https://github.com/substack/node-optimist/issues/71 -test('boolean and --x=true', function(t) { - var parsed = parse(['--boool', '--other=true'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'true'); - - parsed = parse(['--boool', '--other=false'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'false'); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/parse_modified.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/parse_modified.js deleted file mode 100644 index 21851b0..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/parse_modified.js +++ /dev/null @@ -1,9 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('parse with modifier functions' , function (t) { - t.plan(1); - - var argv = parse([ '-b', '123' ], { boolean: 'b' }); - t.deepEqual(argv, { b: true, _: ['123'] }); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/short.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/short.js deleted file mode 100644 index d513a1c..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/short.js +++ /dev/null @@ -1,67 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('numeric short args', function (t) { - t.plan(2); - t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] }); - t.deepEqual( - parse([ '-123', '456' ]), - { 1: true, 2: true, 3: 456, _: [] } - ); -}); - -test('short', function (t) { - t.deepEqual( - parse([ '-b' ]), - { b : true, _ : [] }, - 'short boolean' - ); - t.deepEqual( - parse([ 'foo', 'bar', 'baz' ]), - { _ : [ 'foo', 'bar', 'baz' ] }, - 'bare' - ); - t.deepEqual( - parse([ '-cats' ]), - { c : true, a : true, t : true, s : true, _ : [] }, - 'group' - ); - t.deepEqual( - parse([ '-cats', 'meow' ]), - { c : true, a : true, t : true, s : 'meow', _ : [] }, - 'short group next' - ); - t.deepEqual( - parse([ '-h', 'localhost' ]), - { h : 'localhost', _ : [] }, - 'short capture' - ); - t.deepEqual( - parse([ '-h', 'localhost', '-p', '555' ]), - { h : 'localhost', p : 555, _ : [] }, - 'short captures' - ); - t.end(); -}); - -test('mixed short bool and capture', function (t) { - t.same( - parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ] - } - ); - t.end(); -}); - -test('short and long', function (t) { - t.deepEqual( - parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ] - } - ); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/whitespace.js b/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/whitespace.js deleted file mode 100644 index 8a52a58..0000000 --- a/node_modules/brfs/node_modules/quote-stream/node_modules/minimist/test/whitespace.js +++ /dev/null @@ -1,8 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('whitespace should be whitespace' , function (t) { - t.plan(1); - var x = parse([ '-x', '\t' ]).x; - t.equal(x, '\t'); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/package.json b/node_modules/brfs/node_modules/quote-stream/package.json deleted file mode 100644 index 8961f17..0000000 --- a/node_modules/brfs/node_modules/quote-stream/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "quote-stream", - "version": "0.0.0", - "description": "transform a stream into a quoted string", - "main": "index.js", - "dependencies": { - "through2": "~0.4.1", - "minimist": "0.0.8" - }, - "devDependencies": { - "concat-stream": "~1.4.5", - "tape": "~2.12.1" - }, - "scripts": { - "test": "tape test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/quote-stream.git" - }, - "homepage": "https://github.com/substack/quote-stream", - "keywords": [ - "quote", - "transform", - "stream" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "firefox/15", - "firefox/latest", - "firefox/nightly", - "chrome/15", - "chrome/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" - ] - }, - "bugs": { - "url": "https://github.com/substack/quote-stream/issues" - }, - "_id": "quote-stream@0.0.0", - "dist": { - "shasum": "cde29e94c409b16e19dc7098b89b6658f9721d3b", - "tarball": "http://registry.npmjs.org/quote-stream/-/quote-stream-0.0.0.tgz" - }, - "_from": "quote-stream@>=0.0.0 <0.1.0", - "_npmVersion": "1.4.6", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "directories": {}, - "_shasum": "cde29e94c409b16e19dc7098b89b6658f9721d3b", - "_resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-0.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/quote-stream/readme.markdown b/node_modules/brfs/node_modules/quote-stream/readme.markdown deleted file mode 100644 index a7046ec..0000000 --- a/node_modules/brfs/node_modules/quote-stream/readme.markdown +++ /dev/null @@ -1,53 +0,0 @@ -# quote-stream - -transform a stream into a quoted string - -[![testling badge](https://ci.testling.com/substack/quote-stream.png)](https://ci.testling.com/substack/quote-stream) - -[![build status](https://secure.travis-ci.org/substack/quote-stream.png)](http://travis-ci.org/substack/quote-stream) - -# example - -``` js -var quote = require('quote-stream'); -process.stdin.pipe(quote()).pipe(process.stdout); -``` - -output: - -``` -$ echo beep boop | node example/stream.js -"beep boop\n" -``` - -# methods - -``` js -var quote = require('quote-stream') -``` - -## var q = quote() - -Return a transform stream `q` that wraps input in double quotes and adds escape -characters to the chunks. - -# usage - -``` -usage: quote-stream - - Transform stdin to a quoted string on stdout. - -``` - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install quote-stream -``` - -# license - -MIT diff --git a/node_modules/brfs/node_modules/quote-stream/test/simple.js b/node_modules/brfs/node_modules/quote-stream/test/simple.js deleted file mode 100644 index 8f5c653..0000000 --- a/node_modules/brfs/node_modules/quote-stream/test/simple.js +++ /dev/null @@ -1,13 +0,0 @@ -var quote = require('../'); -var concat = require('concat-stream'); -var test = require('tape'); - -test('simple', function (t) { - t.plan(1); - var q = quote(); - q.end('abc'); - - q.pipe(concat(function (body) { - t.equal(body.toString('utf8'), '"abc"'); - })); -}); diff --git a/node_modules/brfs/node_modules/quote-stream/test/whitespace.js b/node_modules/brfs/node_modules/quote-stream/test/whitespace.js deleted file mode 100644 index d576620..0000000 --- a/node_modules/brfs/node_modules/quote-stream/test/whitespace.js +++ /dev/null @@ -1,13 +0,0 @@ -var quote = require('../'); -var concat = require('concat-stream'); -var test = require('tape'); - -test('whitespace', function (t) { - t.plan(1); - var q = quote(); - q.end('abc\ndef\tghi\r\n'); - - q.pipe(concat(function (body) { - t.equal(body.toString('utf8'), '"abc\\ndef\\tghi\\r\\n"'); - })); -}); diff --git a/node_modules/brfs/node_modules/static-module/.travis.yml b/node_modules/brfs/node_modules/static-module/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/static-module/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/static-module/example/brfs.js b/node_modules/brfs/node_modules/static-module/example/brfs.js deleted file mode 100644 index 7bc5fa8..0000000 --- a/node_modules/brfs/node_modules/static-module/example/brfs.js +++ /dev/null @@ -1,12 +0,0 @@ -var staticModule = require('../'); -var quote = require('quote-stream'); -var fs = require('fs'); - -var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - } -}, { vars: { __dirname: __dirname + '/brfs' } }); -process.stdin.pipe(sm).pipe(process.stdout); diff --git a/node_modules/brfs/node_modules/static-module/example/brfs/source.js b/node_modules/brfs/node_modules/static-module/example/brfs/source.js deleted file mode 100644 index 240dcc8..0000000 --- a/node_modules/brfs/node_modules/static-module/example/brfs/source.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/x.txt'); -console.log(src); diff --git a/node_modules/brfs/node_modules/static-module/example/brfs/x.txt b/node_modules/brfs/node_modules/static-module/example/brfs/x.txt deleted file mode 100644 index fae06e3..0000000 --- a/node_modules/brfs/node_modules/static-module/example/brfs/x.txt +++ /dev/null @@ -1 +0,0 @@ -beep boop diff --git a/node_modules/brfs/node_modules/static-module/example/fs.js b/node_modules/brfs/node_modules/static-module/example/fs.js deleted file mode 100644 index e824261..0000000 --- a/node_modules/brfs/node_modules/static-module/example/fs.js +++ /dev/null @@ -1,21 +0,0 @@ -var staticModule = require('../'); -var quote = require('quote-stream'); -var through = require('through2'); -var fs = require('fs'); - -var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - }, - readFile: function (file, cb) { - var stream = through(write, end); - stream.push('process.nextTick(function(){(' + cb + ')(null,'); - return fs.createReadStream(file).pipe(quote()).pipe(stream); - - function write (buf, enc, next) { this.push(buf); next() } - function end (next) { this.push(')})'); this.push(null); next() } - } - } -}, { vars: { __dirname: __dirname + '/fs' } }); -process.stdin.pipe(sm).pipe(process.stdout); diff --git a/node_modules/brfs/node_modules/static-module/example/fs/source.js b/node_modules/brfs/node_modules/static-module/example/fs/source.js deleted file mode 100644 index 5307e4f..0000000 --- a/node_modules/brfs/node_modules/static-module/example/fs/source.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs') -fs.readFile(__dirname + '/x.txt', function (err, src) { - console.log(src); -}); diff --git a/node_modules/brfs/node_modules/static-module/example/fs/x.txt b/node_modules/brfs/node_modules/static-module/example/fs/x.txt deleted file mode 100644 index fae06e3..0000000 --- a/node_modules/brfs/node_modules/static-module/example/fs/x.txt +++ /dev/null @@ -1 +0,0 @@ -beep boop diff --git a/node_modules/brfs/node_modules/static-module/index.js b/node_modules/brfs/node_modules/static-module/index.js deleted file mode 100644 index 269271f..0000000 --- a/node_modules/brfs/node_modules/static-module/index.js +++ /dev/null @@ -1,315 +0,0 @@ -var fs = require('fs'); -var path = require('path'); - -var through = require('through2'); -var Readable = require('readable-stream').Readable; - -var concat = require('concat-stream'); -var duplexer = require('duplexer2'); -var falafel = require('falafel'); -var unparse = require('escodegen').generate; -var inspect = require('object-inspect'); -var evaluate = require('static-eval'); -var copy = require('shallow-copy'); - -module.exports = function parse (modules, opts) { - if (!opts) opts = {}; - var vars = opts.vars || {}; - var varNames = opts.varNames || {}; - var skip = opts.skip || {}; - var skipOffset = opts.skipOffset || 0; - var updates = []; - - function pushUpdate (node, s) { - var rep = String(s); - var prev = node.range[1] - node.range[0]; - updates.push({ offset: prev - rep.length }); - node.update(rep); - } - - var output = through(); - var body; - return duplexer(concat(function (buf) { - try { - body = buf.toString('utf8'); - var src = falafel(body, walk) - } - catch (err) { return error(err) } - finish(src); - }), output); - - function finish (src) { - var offset = 0, pos = 0; - src = String(src); - - (function next () { - if (updates.length === 0) return done(); - - var s = updates.shift(); - if (!s.stream) { - offset += s.offset; - return next(); - } - - output.push(src.slice(pos, s.range[0] - offset)); - pos = s.range[0] - offset; - offset += s.range[1] - s.range[0]; - - s.stream.on('end', next); - s.stream.pipe(output, { end: false }); - })(); - - function done () { - output.push(src.slice(pos)); - output.push(null); - } - } - - function error (msg) { - var err = typeof msg === 'string' ? new Error(msg) : msg; - output.emit('error', err); - } - - function walk (node) { - var isreq = false, reqid; - if (isRequire(node)) { - reqid = node.arguments[0].value; - isreq = has(modules, reqid); - } - - if (isreq && node.parent.type === 'VariableDeclarator' - && node.parent.id.type === 'Identifier') { - varNames[node.parent.id.name] = reqid; - var decs = node.parent.parent.declarations; - var ix = decs.indexOf(node.parent); - var dec; - if (ix >= 0) { - dec = decs[ix]; - decs.splice(ix, 1); - } - - var rep; - if (decs.length === 0) { - rep = ''; - } - else { - var src = unparse(node.parent.parent); - updates.push({ - range: [ 0, src.length ], - stream: st('var ') - }); - decs.forEach(function (d, i) { - var key = (d.range[0] + skipOffset) - + ',' + (d.range[1] + skipOffset) - ; - skip[key] = true; - - var s = parse(modules, { - skip: skip, - skipOffset: skipOffset + d.init.range[0], - vars: vars, - varNames: varNames - }); - updates.push({ - range: [ - d.init.range[0], - d.init.range[1] - ], - stream: s - }); - if (i < decs.length - 1) { - var comma; - if (i === ix - 1) { - comma = body.slice(d.range[1], dec.range[0]); - } - else comma = body.slice(d.range[1], decs[i+1].range[0]); - updates.push({ - range: [ - d.range[1], d.range[1] + comma.length - ], - stream: st(comma) - }); - } - s.end(unparse(d)); - }); - rep = ''; - } - pushUpdate(node.parent.parent, rep); - } - else if (isreq && node.parent.type === 'AssignmentExpression' - && node.parent.left.type === 'Identifier') { - varNames[node.parent.left.name] = reqid; - var cur = node.parent.parent; - if (cur.type === 'SequenceExpression') { - var ex = cur.expressions; - var ix = ex.indexOf(node.parent); - if (ix >= 0) ex.splice(ix, 1); - pushUpdate( - node.parent.parent, - unparse(node.parent.parent) - ); - } - else pushUpdate(cur, ''); - } - else if (isreq && node.parent.type === 'MemberExpression' - && node.parent.property.type === 'Identifier' - && node.parent.parent.type === 'VariableDeclarator' - && node.parent.parent.id.type === 'Identifier') { - varNames[node.parent.parent.id.name] = [ - reqid, node.parent.property.name - ]; - var decs = node.parent.parent.parent.declarations; - var ix = decs.indexOf(node.parent.parent); - if (ix >= 0) decs.splice(ix, 1); - - if (decs.length === 0) { - pushUpdate(node.parent.parent.parent, ''); - } - else { - pushUpdate( - node.parent.parent.parent, - unparse(node.parent.parent.parent) - ); - } - } - else if (isreq && node.parent.type === 'MemberExpression' - && node.parent.property.type === 'Identifier') { - var name = node.parent.property.name; - var cur = copy(node.parent.parent); - cur.callee = copy(node.parent.property); - cur.callee.parent = cur; - traverse(cur.callee, modules[reqid][name]); - } - else if (isreq && node.parent.type === 'CallExpression') { - var cur = copy(node.parent); - var iname = Math.pow(16,8) * Math.random(); - cur.callee = { - type: 'Identifier', - name: '_' + Math.floor(iname).toString(16), - parent: cur - }; - traverse(cur.callee, modules[reqid]); - } - - if (node.type === 'Identifier' && has(varNames, node.name)) { - var vn = varNames[node.name]; - if (Array.isArray(vn)) { - traverse(node, modules[vn[0]][vn[1]]); - } - else traverse(node, modules[vn]); - } - } - - function traverse (node, val) { - for (var p = node; p; p = p.parent) { - if (!p.range) continue; - var key = (p.range[0] + skipOffset) - + ',' + (p.range[1] + skipOffset) - ; - if (skip[key]) { - skip[key] = false; - return; - } - } - - if (skip[key]) { - skip[key] = false; - return; - } - - if (node.parent.type === 'CallExpression') { - if (typeof val !== 'function') { - return error( - 'tried to statically call ' + inspect(val) - + ' as a function' - ); - } - var xvars = copy(vars); - xvars[node.name] = val; - var res = evaluate(node.parent, xvars); - - if (isStream(res)) { - updates.push({ - range: node.parent.range, - stream: wrapStream(res) - }); - pushUpdate(node.parent, ''); - } - else if (res !== undefined) pushUpdate(node.parent, res); - } - else if (node.parent.type === 'MemberExpression') { - if (node.parent.property.type !== 'Identifier') { - return error( - 'dynamic property in member expression: ' - + node.parent.source() - ); - } - - var cur = node.parent.parent; - - if (cur.type === 'MemberExpression') { - cur = cur.parent; - if (cur.type !== 'CallExpression' - && cur.parent.type === 'CallExpression') { - cur = cur.parent; - } - } - if (node.parent.type === 'MemberExpression' - && (cur.type !== 'CallExpression' - && cur.type !== 'MemberExpression')) { - cur = node.parent; - } - - var xvars = copy(vars); - xvars[node.name] = val; - - var res = evaluate(cur, xvars); - if (isStream(res)) { - updates.push({ - range: cur.range, - stream: wrapStream(res) - }); - cur.update(''); - } - else if (res !== undefined) { - pushUpdate(cur, res); - } - } - else { - output.emit('error', new Error( - 'unsupported type for static module: ' + node.parent.type - + '\nat expression:\n\n ' + unparse(node.parent) + '\n' - )); - } - } -} - -function isRequire (node) { - var c = node.callee; - return c - && node.type === 'CallExpression' - && c.type === 'Identifier' - && c.name === 'require' - ; -} - -function has (obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -function isStream (s) { - return s && typeof s === 'object' && typeof s.pipe === 'function'; -} - -function wrapStream (s) { - if (typeof s.read === 'function') return s - else return (new Readable).wrap(s) -} - -function st (msg) { - var r = new Readable; - r._read = function () {}; - r.push(msg); - r.push(null); - return r; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/.bin/escodegen b/node_modules/brfs/node_modules/static-module/node_modules/.bin/escodegen deleted file mode 100755 index 783fb93..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/.bin/escodegen +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' escodegen file.js'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(esprima.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/.bin/esgenerate b/node_modules/brfs/node_modules/static-module/node_modules/.bin/esgenerate deleted file mode 100755 index b27daa7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/.bin/esgenerate +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' esgenerate file.json'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(JSON.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/.npmignore deleted file mode 100644 index b512c09..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/LICENSE deleted file mode 100644 index 99c130e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2013 Max Ogden - -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. \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/index.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/index.js deleted file mode 100644 index 7511eed..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/index.js +++ /dev/null @@ -1,132 +0,0 @@ -var Writable = require('readable-stream').Writable -var inherits = require('inherits') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -function ConcatStream(opts, cb) { - if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb) - - if (typeof opts === 'function') { - cb = opts - opts = {} - } - if (!opts) opts = {} - - var encoding = opts.encoding - var shouldInferEncoding = false - - if (!encoding) { - shouldInferEncoding = true - } else { - encoding = String(encoding).toLowerCase() - if (encoding === 'u8' || encoding === 'uint8') { - encoding = 'uint8array' - } - } - - Writable.call(this, { objectMode: true }) - - this.encoding = encoding - this.shouldInferEncoding = shouldInferEncoding - - if (cb) this.on('finish', function () { cb(this.getBody()) }) - this.body = [] -} - -module.exports = ConcatStream -inherits(ConcatStream, Writable) - -ConcatStream.prototype._write = function(chunk, enc, next) { - this.body.push(chunk) - next() -} - -ConcatStream.prototype.inferEncoding = function (buff) { - var firstBuffer = buff === undefined ? this.body[0] : buff; - if (Buffer.isBuffer(firstBuffer)) return 'buffer' - if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' - if (Array.isArray(firstBuffer)) return 'array' - if (typeof firstBuffer === 'string') return 'string' - if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' - return 'buffer' -} - -ConcatStream.prototype.getBody = function () { - if (!this.encoding && this.body.length === 0) return [] - if (this.shouldInferEncoding) this.encoding = this.inferEncoding() - if (this.encoding === 'array') return arrayConcat(this.body) - if (this.encoding === 'string') return stringConcat(this.body) - if (this.encoding === 'buffer') return bufferConcat(this.body) - if (this.encoding === 'uint8array') return u8Concat(this.body) - return this.body -} - -var isArray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]' -} - -function isArrayish (arr) { - return /Array\]$/.test(Object.prototype.toString.call(arr)) -} - -function stringConcat (parts) { - var strings = [] - var needsToString = false - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (typeof p === 'string') { - strings.push(p) - } else if (Buffer.isBuffer(p)) { - strings.push(p) - } else { - strings.push(Buffer(p)) - } - } - if (Buffer.isBuffer(parts[0])) { - strings = Buffer.concat(strings) - strings = strings.toString('utf8') - } else { - strings = strings.join('') - } - return strings -} - -function bufferConcat (parts) { - var bufs = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (Buffer.isBuffer(p)) { - bufs.push(p) - } else if (typeof p === 'string' || isArrayish(p) - || (p && typeof p.subarray === 'function')) { - bufs.push(Buffer(p)) - } else bufs.push(Buffer(String(p))) - } - return Buffer.concat(bufs) -} - -function arrayConcat (parts) { - var res = [] - for (var i = 0; i < parts.length; i++) { - res.push.apply(res, parts[i]) - } - return res -} - -function u8Concat (parts) { - var len = 0 - for (var i = 0; i < parts.length; i++) { - if (typeof parts[i] === 'string') { - parts[i] = Buffer(parts[i]) - } - len += parts[i].length - } - var u8 = new U8(len) - for (var i = 0, offset = 0; i < parts.length; i++) { - var part = parts[i] - for (var j = 0; j < part.length; j++) { - u8[offset++] = part[j] - } - } - return u8 -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/README.md b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/inherits.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/inherits_browser.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/package.json deleted file mode 100644 index 9013262..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +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" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@>=2.0.1 <2.1.0" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/test.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e69..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/README.md b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/README.md deleted file mode 100644 index e46b823..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -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. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/duplex.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/float.patch b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/float.patch deleted file mode 100644 index b984607..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/float.patch +++ /dev/null @@ -1,923 +0,0 @@ -diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js -index c5a741c..a2e0d8e 100644 ---- a/lib/_stream_duplex.js -+++ b/lib/_stream_duplex.js -@@ -26,8 +26,8 @@ - - module.exports = Duplex; - var util = require('util'); --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('./_stream_readable'); -+var Writable = require('./_stream_writable'); - - util.inherits(Duplex, Readable); - -diff --git a/lib/_stream_passthrough.js b/lib/_stream_passthrough.js -index a5e9864..330c247 100644 ---- a/lib/_stream_passthrough.js -+++ b/lib/_stream_passthrough.js -@@ -25,7 +25,7 @@ - - module.exports = PassThrough; - --var Transform = require('_stream_transform'); -+var Transform = require('./_stream_transform'); - var util = require('util'); - util.inherits(PassThrough, Transform); - -diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js -index 0c3fe3e..90a8298 100644 ---- a/lib/_stream_readable.js -+++ b/lib/_stream_readable.js -@@ -23,10 +23,34 @@ module.exports = Readable; - Readable.ReadableState = ReadableState; - - var EE = require('events').EventEmitter; -+if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { -+ return emitter.listeners(type).length; -+}; -+ -+if (!global.setImmediate) global.setImmediate = function setImmediate(fn) { -+ return setTimeout(fn, 0); -+}; -+if (!global.clearImmediate) global.clearImmediate = function clearImmediate(i) { -+ return clearTimeout(i); -+}; -+ - var Stream = require('stream'); - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - var StringDecoder; --var debug = util.debuglog('stream'); -+var debug; -+if (util.debuglog) -+ debug = util.debuglog('stream'); -+else try { -+ debug = require('debuglog')('stream'); -+} catch (er) { -+ debug = function() {}; -+} - - util.inherits(Readable, Stream); - -@@ -380,7 +404,7 @@ function chunkInvalid(state, chunk) { - - - function onEofChunk(stream, state) { -- if (state.decoder && !state.ended) { -+ if (state.decoder && !state.ended && state.decoder.end) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); -diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js -index b1f9fcc..b0caf57 100644 ---- a/lib/_stream_transform.js -+++ b/lib/_stream_transform.js -@@ -64,8 +64,14 @@ - - module.exports = Transform; - --var Duplex = require('_stream_duplex'); -+var Duplex = require('./_stream_duplex'); - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - util.inherits(Transform, Duplex); - - -diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js -index ba2e920..f49288b 100644 ---- a/lib/_stream_writable.js -+++ b/lib/_stream_writable.js -@@ -27,6 +27,12 @@ module.exports = Writable; - Writable.WritableState = WritableState; - - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - var Stream = require('stream'); - - util.inherits(Writable, Stream); -@@ -119,7 +125,7 @@ function WritableState(options, stream) { - function Writable(options) { - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. -- if (!(this instanceof Writable) && !(this instanceof Stream.Duplex)) -+ if (!(this instanceof Writable) && !(this instanceof require('./_stream_duplex'))) - return new Writable(options); - - this._writableState = new WritableState(options, this); -diff --git a/test/simple/test-stream-big-push.js b/test/simple/test-stream-big-push.js -index e3787e4..8cd2127 100644 ---- a/test/simple/test-stream-big-push.js -+++ b/test/simple/test-stream-big-push.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - var str = 'asdfasdfasdfasdfasdf'; - - var r = new stream.Readable({ -diff --git a/test/simple/test-stream-end-paused.js b/test/simple/test-stream-end-paused.js -index bb73777..d40efc7 100644 ---- a/test/simple/test-stream-end-paused.js -+++ b/test/simple/test-stream-end-paused.js -@@ -25,7 +25,7 @@ var gotEnd = false; - - // Make sure we don't miss the end event for paused 0-length streams - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var stream = new Readable(); - var calledRead = false; - stream._read = function() { -diff --git a/test/simple/test-stream-pipe-after-end.js b/test/simple/test-stream-pipe-after-end.js -index b46ee90..0be8366 100644 ---- a/test/simple/test-stream-pipe-after-end.js -+++ b/test/simple/test-stream-pipe-after-end.js -@@ -22,8 +22,8 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var util = require('util'); - - util.inherits(TestReadable, Readable); -diff --git a/test/simple/test-stream-pipe-cleanup.js b/test/simple/test-stream-pipe-cleanup.js -deleted file mode 100644 -index f689358..0000000 ---- a/test/simple/test-stream-pipe-cleanup.js -+++ /dev/null -@@ -1,122 +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. -- --// This test asserts that Stream.prototype.pipe does not leave listeners --// hanging on the source or dest. -- --var common = require('../common'); --var stream = require('stream'); --var assert = require('assert'); --var util = require('util'); -- --function Writable() { -- this.writable = true; -- this.endCalls = 0; -- stream.Stream.call(this); --} --util.inherits(Writable, stream.Stream); --Writable.prototype.end = function() { -- this.endCalls++; --}; -- --Writable.prototype.destroy = function() { -- this.endCalls++; --}; -- --function Readable() { -- this.readable = true; -- stream.Stream.call(this); --} --util.inherits(Readable, stream.Stream); -- --function Duplex() { -- this.readable = true; -- Writable.call(this); --} --util.inherits(Duplex, Writable); -- --var i = 0; --var limit = 100; -- --var w = new Writable(); -- --var r; -- --for (i = 0; i < limit; i++) { -- r = new Readable(); -- r.pipe(w); -- r.emit('end'); --} --assert.equal(0, r.listeners('end').length); --assert.equal(limit, w.endCalls); -- --w.endCalls = 0; -- --for (i = 0; i < limit; i++) { -- r = new Readable(); -- r.pipe(w); -- r.emit('close'); --} --assert.equal(0, r.listeners('close').length); --assert.equal(limit, w.endCalls); -- --w.endCalls = 0; -- --r = new Readable(); -- --for (i = 0; i < limit; i++) { -- w = new Writable(); -- r.pipe(w); -- w.emit('close'); --} --assert.equal(0, w.listeners('close').length); -- --r = new Readable(); --w = new Writable(); --var d = new Duplex(); --r.pipe(d); // pipeline A --d.pipe(w); // pipeline B --assert.equal(r.listeners('end').length, 2); // A.onend, A.cleanup --assert.equal(r.listeners('close').length, 2); // A.onclose, A.cleanup --assert.equal(d.listeners('end').length, 2); // B.onend, B.cleanup --assert.equal(d.listeners('close').length, 3); // A.cleanup, B.onclose, B.cleanup --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 1); // B.cleanup -- --r.emit('end'); --assert.equal(d.endCalls, 1); --assert.equal(w.endCalls, 0); --assert.equal(r.listeners('end').length, 0); --assert.equal(r.listeners('close').length, 0); --assert.equal(d.listeners('end').length, 2); // B.onend, B.cleanup --assert.equal(d.listeners('close').length, 2); // B.onclose, B.cleanup --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 1); // B.cleanup -- --d.emit('end'); --assert.equal(d.endCalls, 1); --assert.equal(w.endCalls, 1); --assert.equal(r.listeners('end').length, 0); --assert.equal(r.listeners('close').length, 0); --assert.equal(d.listeners('end').length, 0); --assert.equal(d.listeners('close').length, 0); --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 0); -diff --git a/test/simple/test-stream-pipe-error-handling.js b/test/simple/test-stream-pipe-error-handling.js -index c5d724b..c7d6b7d 100644 ---- a/test/simple/test-stream-pipe-error-handling.js -+++ b/test/simple/test-stream-pipe-error-handling.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var Stream = require('stream').Stream; -+var Stream = require('../../').Stream; - - (function testErrorListenerCatches() { - var source = new Stream(); -diff --git a/test/simple/test-stream-pipe-event.js b/test/simple/test-stream-pipe-event.js -index cb9d5fe..56f8d61 100644 ---- a/test/simple/test-stream-pipe-event.js -+++ b/test/simple/test-stream-pipe-event.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common'); --var stream = require('stream'); -+var stream = require('../../'); - var assert = require('assert'); - var util = require('util'); - -diff --git a/test/simple/test-stream-push-order.js b/test/simple/test-stream-push-order.js -index f2e6ec2..a5c9bf9 100644 ---- a/test/simple/test-stream-push-order.js -+++ b/test/simple/test-stream-push-order.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var assert = require('assert'); - - var s = new Readable({ -diff --git a/test/simple/test-stream-push-strings.js b/test/simple/test-stream-push-strings.js -index 06f43dc..1701a9a 100644 ---- a/test/simple/test-stream-push-strings.js -+++ b/test/simple/test-stream-push-strings.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var util = require('util'); - - util.inherits(MyStream, Readable); -diff --git a/test/simple/test-stream-readable-event.js b/test/simple/test-stream-readable-event.js -index ba6a577..a8e6f7b 100644 ---- a/test/simple/test-stream-readable-event.js -+++ b/test/simple/test-stream-readable-event.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - (function first() { - // First test, not reading when the readable is added. -diff --git a/test/simple/test-stream-readable-flow-recursion.js b/test/simple/test-stream-readable-flow-recursion.js -index 2891ad6..11689ba 100644 ---- a/test/simple/test-stream-readable-flow-recursion.js -+++ b/test/simple/test-stream-readable-flow-recursion.js -@@ -27,7 +27,7 @@ var assert = require('assert'); - // more data continuously, but without triggering a nextTick - // warning or RangeError. - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - // throw an error if we trigger a nextTick warning. - process.throwDeprecation = true; -diff --git a/test/simple/test-stream-unshift-empty-chunk.js b/test/simple/test-stream-unshift-empty-chunk.js -index 0c96476..7827538 100644 ---- a/test/simple/test-stream-unshift-empty-chunk.js -+++ b/test/simple/test-stream-unshift-empty-chunk.js -@@ -24,7 +24,7 @@ var assert = require('assert'); - - // This test verifies that stream.unshift(Buffer(0)) or - // stream.unshift('') does not set state.reading=false. --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - var r = new Readable(); - var nChunks = 10; -diff --git a/test/simple/test-stream-unshift-read-race.js b/test/simple/test-stream-unshift-read-race.js -index 83fd9fa..17c18aa 100644 ---- a/test/simple/test-stream-unshift-read-race.js -+++ b/test/simple/test-stream-unshift-read-race.js -@@ -29,7 +29,7 @@ var assert = require('assert'); - // 3. push() after the EOF signaling null is an error. - // 4. _read() is not called after pushing the EOF null chunk. - --var stream = require('stream'); -+var stream = require('../../'); - var hwm = 10; - var r = stream.Readable({ highWaterMark: hwm }); - var chunks = 10; -@@ -51,7 +51,14 @@ r._read = function(n) { - - function push(fast) { - assert(!pushedNull, 'push() after null push'); -- var c = pos >= data.length ? null : data.slice(pos, pos + n); -+ var c; -+ if (pos >= data.length) -+ c = null; -+ else { -+ if (n + pos > data.length) -+ n = data.length - pos; -+ c = data.slice(pos, pos + n); -+ } - pushedNull = c === null; - if (fast) { - pos += n; -diff --git a/test/simple/test-stream-writev.js b/test/simple/test-stream-writev.js -index 5b49e6e..b5321f3 100644 ---- a/test/simple/test-stream-writev.js -+++ b/test/simple/test-stream-writev.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var stream = require('stream'); -+var stream = require('../../'); - - var queue = []; - for (var decode = 0; decode < 2; decode++) { -diff --git a/test/simple/test-stream2-basic.js b/test/simple/test-stream2-basic.js -index 3814bf0..248c1be 100644 ---- a/test/simple/test-stream2-basic.js -+++ b/test/simple/test-stream2-basic.js -@@ -21,7 +21,7 @@ - - - var common = require('../common.js'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-compatibility.js b/test/simple/test-stream2-compatibility.js -index 6cdd4e9..f0fa84b 100644 ---- a/test/simple/test-stream2-compatibility.js -+++ b/test/simple/test-stream2-compatibility.js -@@ -21,7 +21,7 @@ - - - var common = require('../common.js'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-finish-pipe.js b/test/simple/test-stream2-finish-pipe.js -index 39b274f..006a19b 100644 ---- a/test/simple/test-stream2-finish-pipe.js -+++ b/test/simple/test-stream2-finish-pipe.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var stream = require('stream'); -+var stream = require('../../'); - var Buffer = require('buffer').Buffer; - - var r = new stream.Readable(); -diff --git a/test/simple/test-stream2-fs.js b/test/simple/test-stream2-fs.js -deleted file mode 100644 -index e162406..0000000 ---- a/test/simple/test-stream2-fs.js -+++ /dev/null -@@ -1,72 +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 common = require('../common.js'); --var R = require('_stream_readable'); --var assert = require('assert'); -- --var fs = require('fs'); --var FSReadable = fs.ReadStream; -- --var path = require('path'); --var file = path.resolve(common.fixturesDir, 'x1024.txt'); -- --var size = fs.statSync(file).size; -- --var expectLengths = [1024]; -- --var util = require('util'); --var Stream = require('stream'); -- --util.inherits(TestWriter, Stream); -- --function TestWriter() { -- Stream.apply(this); -- this.buffer = []; -- this.length = 0; --} -- --TestWriter.prototype.write = function(c) { -- this.buffer.push(c.toString()); -- this.length += c.length; -- return true; --}; -- --TestWriter.prototype.end = function(c) { -- if (c) this.buffer.push(c.toString()); -- this.emit('results', this.buffer); --} -- --var r = new FSReadable(file); --var w = new TestWriter(); -- --w.on('results', function(res) { -- console.error(res, w.length); -- assert.equal(w.length, size); -- var l = 0; -- assert.deepEqual(res.map(function (c) { -- return c.length; -- }), expectLengths); -- console.log('ok'); --}); -- --r.pipe(w); -diff --git a/test/simple/test-stream2-httpclient-response-end.js b/test/simple/test-stream2-httpclient-response-end.js -deleted file mode 100644 -index 15cffc2..0000000 ---- a/test/simple/test-stream2-httpclient-response-end.js -+++ /dev/null -@@ -1,52 +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 common = require('../common.js'); --var assert = require('assert'); --var http = require('http'); --var msg = 'Hello'; --var readable_event = false; --var end_event = false; --var server = http.createServer(function(req, res) { -- res.writeHead(200, {'Content-Type': 'text/plain'}); -- res.end(msg); --}).listen(common.PORT, function() { -- http.get({port: common.PORT}, function(res) { -- var data = ''; -- res.on('readable', function() { -- console.log('readable event'); -- readable_event = true; -- data += res.read(); -- }); -- res.on('end', function() { -- console.log('end event'); -- end_event = true; -- assert.strictEqual(msg, data); -- server.close(); -- }); -- }); --}); -- --process.on('exit', function() { -- assert(readable_event); -- assert(end_event); --}); -- -diff --git a/test/simple/test-stream2-large-read-stall.js b/test/simple/test-stream2-large-read-stall.js -index 2fbfbca..667985b 100644 ---- a/test/simple/test-stream2-large-read-stall.js -+++ b/test/simple/test-stream2-large-read-stall.js -@@ -30,7 +30,7 @@ var PUSHSIZE = 20; - var PUSHCOUNT = 1000; - var HWM = 50; - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var r = new Readable({ - highWaterMark: HWM - }); -@@ -39,23 +39,23 @@ var rs = r._readableState; - r._read = push; - - r.on('readable', function() { -- console.error('>> readable'); -+ //console.error('>> readable'); - do { -- console.error(' > read(%d)', READSIZE); -+ //console.error(' > read(%d)', READSIZE); - var ret = r.read(READSIZE); -- console.error(' < %j (%d remain)', ret && ret.length, rs.length); -+ //console.error(' < %j (%d remain)', ret && ret.length, rs.length); - } while (ret && ret.length === READSIZE); - -- console.error('<< after read()', -- ret && ret.length, -- rs.needReadable, -- rs.length); -+ //console.error('<< after read()', -+ // ret && ret.length, -+ // rs.needReadable, -+ // rs.length); - }); - - var endEmitted = false; - r.on('end', function() { - endEmitted = true; -- console.error('end'); -+ //console.error('end'); - }); - - var pushes = 0; -@@ -64,11 +64,11 @@ function push() { - return; - - if (pushes++ === PUSHCOUNT) { -- console.error(' push(EOF)'); -+ //console.error(' push(EOF)'); - return r.push(null); - } - -- console.error(' push #%d', pushes); -+ //console.error(' push #%d', pushes); - if (r.push(new Buffer(PUSHSIZE))) - setTimeout(push); - } -diff --git a/test/simple/test-stream2-objects.js b/test/simple/test-stream2-objects.js -index 3e6931d..ff47d89 100644 ---- a/test/simple/test-stream2-objects.js -+++ b/test/simple/test-stream2-objects.js -@@ -21,8 +21,8 @@ - - - var common = require('../common.js'); --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var assert = require('assert'); - - // tiny node-tap lookalike. -diff --git a/test/simple/test-stream2-pipe-error-handling.js b/test/simple/test-stream2-pipe-error-handling.js -index cf7531c..e3f3e4e 100644 ---- a/test/simple/test-stream2-pipe-error-handling.js -+++ b/test/simple/test-stream2-pipe-error-handling.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - - (function testErrorListenerCatches() { - var count = 1000; -diff --git a/test/simple/test-stream2-pipe-error-once-listener.js b/test/simple/test-stream2-pipe-error-once-listener.js -index 5e8e3cb..53b2616 100755 ---- a/test/simple/test-stream2-pipe-error-once-listener.js -+++ b/test/simple/test-stream2-pipe-error-once-listener.js -@@ -24,7 +24,7 @@ var common = require('../common.js'); - var assert = require('assert'); - - var util = require('util'); --var stream = require('stream'); -+var stream = require('../../'); - - - var Read = function() { -diff --git a/test/simple/test-stream2-push.js b/test/simple/test-stream2-push.js -index b63edc3..eb2b0e9 100644 ---- a/test/simple/test-stream2-push.js -+++ b/test/simple/test-stream2-push.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var stream = require('stream'); -+var stream = require('../../'); - var Readable = stream.Readable; - var Writable = stream.Writable; - var assert = require('assert'); -diff --git a/test/simple/test-stream2-read-sync-stack.js b/test/simple/test-stream2-read-sync-stack.js -index e8a7305..9740a47 100644 ---- a/test/simple/test-stream2-read-sync-stack.js -+++ b/test/simple/test-stream2-read-sync-stack.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var r = new Readable(); - var N = 256 * 1024; - -diff --git a/test/simple/test-stream2-readable-empty-buffer-no-eof.js b/test/simple/test-stream2-readable-empty-buffer-no-eof.js -index cd30178..4b1659d 100644 ---- a/test/simple/test-stream2-readable-empty-buffer-no-eof.js -+++ b/test/simple/test-stream2-readable-empty-buffer-no-eof.js -@@ -22,10 +22,9 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - test1(); --test2(); - - function test1() { - var r = new Readable(); -@@ -88,31 +87,3 @@ function test1() { - console.log('ok'); - }); - } -- --function test2() { -- var r = new Readable({ encoding: 'base64' }); -- var reads = 5; -- r._read = function(n) { -- if (!reads--) -- return r.push(null); // EOF -- else -- return r.push(new Buffer('x')); -- }; -- -- var results = []; -- function flow() { -- var chunk; -- while (null !== (chunk = r.read())) -- results.push(chunk + ''); -- } -- r.on('readable', flow); -- r.on('end', function() { -- results.push('EOF'); -- }); -- flow(); -- -- process.on('exit', function() { -- assert.deepEqual(results, [ 'eHh4', 'eHg=', 'EOF' ]); -- console.log('ok'); -- }); --} -diff --git a/test/simple/test-stream2-readable-from-list.js b/test/simple/test-stream2-readable-from-list.js -index 7c96ffe..04a96f5 100644 ---- a/test/simple/test-stream2-readable-from-list.js -+++ b/test/simple/test-stream2-readable-from-list.js -@@ -21,7 +21,7 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var fromList = require('_stream_readable')._fromList; -+var fromList = require('../../lib/_stream_readable')._fromList; - - // tiny node-tap lookalike. - var tests = []; -diff --git a/test/simple/test-stream2-readable-legacy-drain.js b/test/simple/test-stream2-readable-legacy-drain.js -index 675da8e..51fd3d5 100644 ---- a/test/simple/test-stream2-readable-legacy-drain.js -+++ b/test/simple/test-stream2-readable-legacy-drain.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Stream = require('stream'); -+var Stream = require('../../'); - var Readable = Stream.Readable; - - var r = new Readable(); -diff --git a/test/simple/test-stream2-readable-non-empty-end.js b/test/simple/test-stream2-readable-non-empty-end.js -index 7314ae7..c971898 100644 ---- a/test/simple/test-stream2-readable-non-empty-end.js -+++ b/test/simple/test-stream2-readable-non-empty-end.js -@@ -21,7 +21,7 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var Readable = require('_stream_readable'); -+var Readable = require('../../lib/_stream_readable'); - - var len = 0; - var chunks = new Array(10); -diff --git a/test/simple/test-stream2-readable-wrap-empty.js b/test/simple/test-stream2-readable-wrap-empty.js -index 2e5cf25..fd8a3dc 100644 ---- a/test/simple/test-stream2-readable-wrap-empty.js -+++ b/test/simple/test-stream2-readable-wrap-empty.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); -+var Readable = require('../../lib/_stream_readable'); - var EE = require('events').EventEmitter; - - var oldStream = new EE(); -diff --git a/test/simple/test-stream2-readable-wrap.js b/test/simple/test-stream2-readable-wrap.js -index 90eea01..6b177f7 100644 ---- a/test/simple/test-stream2-readable-wrap.js -+++ b/test/simple/test-stream2-readable-wrap.js -@@ -22,8 +22,8 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var EE = require('events').EventEmitter; - - var testRuns = 0, completedRuns = 0; -diff --git a/test/simple/test-stream2-set-encoding.js b/test/simple/test-stream2-set-encoding.js -index 5d2c32a..685531b 100644 ---- a/test/simple/test-stream2-set-encoding.js -+++ b/test/simple/test-stream2-set-encoding.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var util = require('util'); - - // tiny node-tap lookalike. -diff --git a/test/simple/test-stream2-transform.js b/test/simple/test-stream2-transform.js -index 9c9ddd8..a0cacc6 100644 ---- a/test/simple/test-stream2-transform.js -+++ b/test/simple/test-stream2-transform.js -@@ -21,8 +21,8 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var PassThrough = require('_stream_passthrough'); --var Transform = require('_stream_transform'); -+var PassThrough = require('../../').PassThrough; -+var Transform = require('../../').Transform; - - // tiny node-tap lookalike. - var tests = []; -diff --git a/test/simple/test-stream2-unpipe-drain.js b/test/simple/test-stream2-unpipe-drain.js -index d66dc3c..365b327 100644 ---- a/test/simple/test-stream2-unpipe-drain.js -+++ b/test/simple/test-stream2-unpipe-drain.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - var crypto = require('crypto'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-unpipe-leak.js b/test/simple/test-stream2-unpipe-leak.js -index 99f8746..17c92ae 100644 ---- a/test/simple/test-stream2-unpipe-leak.js -+++ b/test/simple/test-stream2-unpipe-leak.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - - var chunk = new Buffer('hallo'); - -diff --git a/test/simple/test-stream2-writable.js b/test/simple/test-stream2-writable.js -index 704100c..209c3a6 100644 ---- a/test/simple/test-stream2-writable.js -+++ b/test/simple/test-stream2-writable.js -@@ -20,8 +20,8 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var W = require('_stream_writable'); --var D = require('_stream_duplex'); -+var W = require('../../').Writable; -+var D = require('../../').Duplex; - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream3-pause-then-read.js b/test/simple/test-stream3-pause-then-read.js -index b91bde3..2f72c15 100644 ---- a/test/simple/test-stream3-pause-then-read.js -+++ b/test/simple/test-stream3-pause-then-read.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var stream = require('stream'); -+var stream = require('../../'); - var Readable = stream.Readable; - var Writable = stream.Writable; - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +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. - -// 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. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - 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. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -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); -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 19ab358..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,951 +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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - - -/**/ -var debug = require('util'); -if (debug && debug.debuglog) { - debug = debug.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // 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 = options.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; - - - // 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; - - // 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; - } -} - -function Readable(options) { - var Duplex = require('./_stream_duplex'); - - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - 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 (util.isString(chunk) && !state.objectMode) { - 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); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (util.isNullOrUndefined(chunk)) { - state.reading = false; - if (!state.ended) - 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 { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - if (!addToFront) - state.reading = false; - - // 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 > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || util.isNull(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 = roundUpToNextPowerOf2(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 (!util.isNumber(n) || 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 (util.isNull(ret)) { - 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 (!util.isNull(ret)) - this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - 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) - process.nextTick(function() { - 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; - process.nextTick(function() { - 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) - process.nextTick(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); - - 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); - - // 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) { - 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 (EE.listenerCount(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 && EE.listenerCount(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.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - var self = this; - process.nextTick(function() { - debug('readable nexttick read 0'); - self.read(0); - }); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// 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; - if (!state.reading) { - debug('resume read 0'); - this.read(0); - } - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(function() { - resume_(stream, state); - }); - } -} - -function resume_(stream, state) { - 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); - if (!chunk || !state.objectMode && !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 (util.isFunction(stream[i]) && util.isUndefined(this[i])) { - 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 - 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; - process.nextTick(function() { - // 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; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 905c5e4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,209 +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. - - -// 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. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = 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 (!util.isNullOrUndefined(data)) - stream.push(data); - - if (cb) - 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(options, 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; - - this.once('prefinish', function() { - if (util.isFunction(this._flush)) - 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 (!util.isNull(ts.writechunk) && 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); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index db8539c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,477 +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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // 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 = options.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // 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; - - // 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.buffer = []; - - // 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; -} - -function Writable(options) { - var 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; - - 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, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - 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 (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (util.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (!util.isFunction(cb)) - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, 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.buffer.length) - clearBuffer(this, state); - } -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - util.isString(chunk)) { - 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 (util.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) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - 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) { - if (sync) - process.nextTick(function() { - state.pendingcb--; - cb(er); - }); - else { - state.pendingcb--; - 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(stream, state); - - if (!finished && - !state.corked && - !state.bufferProcessing && - state.buffer.length) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(function() { - 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; - - if (stream._writev && state.buffer.length > 1) { - // Fast case, write everything using _writev() - var cbs = []; - for (var c = 0; c < state.buffer.length; c++) - cbs.push(state.buffer[c].callback); - - // count the one we are adding, as well. - // TODO(isaacs) clean this up - state.pendingcb++; - doWrite(stream, state, true, state.length, state.buffer, '', function(err) { - for (var i = 0; i < cbs.length; i++) { - state.pendingcb--; - cbs[i](err); - } - }); - - // Clear buffer - state.buffer = []; - } else { - // Slow case, write chunks one-by-one - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - 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); - - // 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) { - c++; - break; - } - } - - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; - } - - 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 (util.isFunction(chunk)) { - cb = chunk; - chunk = null; - encoding = null; - } else if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (!util.isNullOrUndefined(chunk)) - 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(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, 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) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b41..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (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; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 9aaf597..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "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" - }, - "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" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "_from": "core-util-is@>=1.0.0 <1.1.0", - "scripts": {} -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa10..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object 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; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## 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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/build/build.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/build/build.js deleted file mode 100644 index ec58596..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/build/build.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (require.modules.hasOwnProperty(path)) return path; - } - - if (require.aliases.hasOwnProperty(index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!require.modules.hasOwnProperty(from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return require.modules.hasOwnProperty(localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("isarray/index.js", function(exports, require, module){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -}); -require.alias("isarray/index.js", "isarray/index.js"); - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index fc7904b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa00..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 0364d54..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/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.0 <0.11.0", - "_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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/package.json deleted file mode 100644 index 295adce..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.1.13", - "description": "Streams3, a user-land copy of the stream library from Node.js v0.11.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "gitHead": "3b672fd7ae92acf5b4ffdbabf74b372a0a56b051", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.1.13", - "_shasum": "f6eef764f514c89e2b9e23146a75ba106756d23e", - "_from": "readable-stream@>=1.1.9 <1.2.0", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "f6eef764f514c89e2b9e23146a75ba106756d23e", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/passthrough.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/readable.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/readable.js deleted file mode 100644 index 09b8bf5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,7 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = require('stream'); -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/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/transform.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/writable.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efd..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/LICENSE deleted file mode 100644 index 11adfae..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/LICENSE +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (c) 2010, Linden Research, Inc. - Copyright (c) 2012, Joshua Bell - - 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. - $/LicenseInfo$ - */ - -// Original can be found at: -// https://bitbucket.org/lindenlab/llsd -// Modifications by Joshua Bell inexorabletash@gmail.com -// https://github.com/inexorabletash/polyfill - -// ES3/ES5 implementation of the Krhonos Typed Array Specification -// Ref: http://www.khronos.org/registry/typedarray/specs/latest/ -// Date: 2011-02-01 -// -// Variations: -// * Allows typed_array.get/set() as alias for subscripts (typed_array[]) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/example/tarray.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/example/tarray.js deleted file mode 100644 index 8423d7c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/example/tarray.js +++ /dev/null @@ -1,4 +0,0 @@ -var Uint8Array = require('../').Uint8Array; -var ua = new Uint8Array(5); -ua[1] = 256 + 55; -console.log(ua[1]); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/index.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/index.js deleted file mode 100644 index 5e54084..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/index.js +++ /dev/null @@ -1,630 +0,0 @@ -var undefined = (void 0); // Paranoia - -// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to -// create, and consume so much memory, that the browser appears frozen. -var MAX_ARRAY_LENGTH = 1e5; - -// Approximations of internal ECMAScript conversion functions -var ECMAScript = (function() { - // Stash a copy in case other scripts modify these - var opts = Object.prototype.toString, - ophop = Object.prototype.hasOwnProperty; - - return { - // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: - Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, - HasProperty: function(o, p) { return p in o; }, - HasOwnProperty: function(o, p) { return ophop.call(o, p); }, - IsCallable: function(o) { return typeof o === 'function'; }, - ToInt32: function(v) { return v >> 0; }, - ToUint32: function(v) { return v >>> 0; } - }; -}()); - -// Snapshot intrinsics -var LN2 = Math.LN2, - abs = Math.abs, - floor = Math.floor, - log = Math.log, - min = Math.min, - pow = Math.pow, - round = Math.round; - -// ES5: lock down object properties -function configureProperties(obj) { - if (getOwnPropNames && defineProp) { - var props = getOwnPropNames(obj), i; - for (i = 0; i < props.length; i += 1) { - defineProp(obj, props[i], { - value: obj[props[i]], - writable: false, - enumerable: false, - configurable: false - }); - } - } -} - -// emulate ES5 getter/setter API using legacy APIs -// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx -// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but -// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) -var defineProp -if (Object.defineProperty && (function() { - try { - Object.defineProperty({}, 'x', {}); - return true; - } catch (e) { - return false; - } - })()) { - defineProp = Object.defineProperty; -} else { - defineProp = function(o, p, desc) { - if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); - if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } - if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } - if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } - return o; - }; -} - -var getOwnPropNames = Object.getOwnPropertyNames || function (o) { - if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); - var props = [], p; - for (p in o) { - if (ECMAScript.HasOwnProperty(o, p)) { - props.push(p); - } - } - return props; -}; - -// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) -// for index in 0 ... obj.length -function makeArrayAccessors(obj) { - if (!defineProp) { return; } - - if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); - - function makeArrayAccessor(index) { - defineProp(obj, index, { - 'get': function() { return obj._getter(index); }, - 'set': function(v) { obj._setter(index, v); }, - enumerable: true, - configurable: false - }); - } - - var i; - for (i = 0; i < obj.length; i += 1) { - makeArrayAccessor(i); - } -} - -// Internal conversion functions: -// pack() - take a number (interpreted as Type), output a byte array -// unpack() - take a byte array, output a Type-like number - -function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } -function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } - -function packI8(n) { return [n & 0xff]; } -function unpackI8(bytes) { return as_signed(bytes[0], 8); } - -function packU8(n) { return [n & 0xff]; } -function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } - -function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } - -function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } - -function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } - -function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packIEEE754(v, ebits, fbits) { - - var bias = (1 << (ebits - 1)) - 1, - s, e, f, ln, - i, bits, str, bytes; - - function roundToEven(n) { - var w = floor(n), f = n - w; - if (f < 0.5) - return w; - if (f > 0.5) - return w + 1; - return w % 2 ? w + 1 : w; - } - - // Compute sign, exponent, fraction - if (v !== v) { - // NaN - // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping - e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; - } else if (v === Infinity || v === -Infinity) { - e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; - } else if (v === 0) { - e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; - } else { - s = v < 0; - v = abs(v); - - if (v >= pow(2, 1 - bias)) { - e = min(floor(log(v) / LN2), 1023); - f = roundToEven(v / pow(2, e) * pow(2, fbits)); - if (f / pow(2, fbits) >= 2) { - e = e + 1; - f = 1; - } - if (e > bias) { - // Overflow - e = (1 << ebits) - 1; - f = 0; - } else { - // Normalized - e = e + bias; - f = f - pow(2, fbits); - } - } else { - // Denormalized - e = 0; - f = roundToEven(v / pow(2, 1 - bias - fbits)); - } - } - - // Pack sign, exponent, fraction - bits = []; - for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } - for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } - bits.push(s ? 1 : 0); - bits.reverse(); - str = bits.join(''); - - // Bits to bytes - bytes = []; - while (str.length) { - bytes.push(parseInt(str.substring(0, 8), 2)); - str = str.substring(8); - } - return bytes; -} - -function unpackIEEE754(bytes, ebits, fbits) { - - // Bytes to bits - var bits = [], i, j, b, str, - bias, s, e, f; - - for (i = bytes.length; i; i -= 1) { - b = bytes[i - 1]; - for (j = 8; j; j -= 1) { - bits.push(b % 2 ? 1 : 0); b = b >> 1; - } - } - bits.reverse(); - str = bits.join(''); - - // Unpack sign, exponent, fraction - bias = (1 << (ebits - 1)) - 1; - s = parseInt(str.substring(0, 1), 2) ? -1 : 1; - e = parseInt(str.substring(1, 1 + ebits), 2); - f = parseInt(str.substring(1 + ebits), 2); - - // Produce number - if (e === (1 << ebits) - 1) { - return f !== 0 ? NaN : s * Infinity; - } else if (e > 0) { - // Normalized - return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); - } else if (f !== 0) { - // Denormalized - return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); - } else { - return s < 0 ? -0 : 0; - } -} - -function unpackF64(b) { return unpackIEEE754(b, 11, 52); } -function packF64(v) { return packIEEE754(v, 11, 52); } -function unpackF32(b) { return unpackIEEE754(b, 8, 23); } -function packF32(v) { return packIEEE754(v, 8, 23); } - - -// -// 3 The ArrayBuffer Type -// - -(function() { - - /** @constructor */ - var ArrayBuffer = function ArrayBuffer(length) { - length = ECMAScript.ToInt32(length); - if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); - - this.byteLength = length; - this._bytes = []; - this._bytes.length = length; - - var i; - for (i = 0; i < this.byteLength; i += 1) { - this._bytes[i] = 0; - } - - configureProperties(this); - }; - - exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; - - // - // 4 The ArrayBufferView Type - // - - // NOTE: this constructor is not exported - /** @constructor */ - var ArrayBufferView = function ArrayBufferView() { - //this.buffer = null; - //this.byteOffset = 0; - //this.byteLength = 0; - }; - - // - // 5 The Typed Array View Types - // - - function makeConstructor(bytesPerElement, pack, unpack) { - // Each TypedArray type requires a distinct constructor instance with - // identical logic, which this produces. - - var ctor; - ctor = function(buffer, byteOffset, length) { - var array, sequence, i, s; - - if (!arguments.length || typeof arguments[0] === 'number') { - // Constructor(unsigned long length) - this.length = ECMAScript.ToInt32(arguments[0]); - if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); - - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { - // Constructor(TypedArray array) - array = arguments[0]; - - this.length = array.length; - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - this._setter(i, array._getter(i)); - } - } else if (typeof arguments[0] === 'object' && - !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(sequence array) - sequence = arguments[0]; - - this.length = ECMAScript.ToUint32(sequence.length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - s = sequence[i]; - this._setter(i, Number(s)); - } - } else if (typeof arguments[0] === 'object' && - (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, optional unsigned long length) - this.buffer = buffer; - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (this.byteOffset % this.BYTES_PER_ELEMENT) { - // The given byteOffset must be a multiple of the element - // size of the specific type, otherwise an exception is raised. - throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - - if (this.byteLength % this.BYTES_PER_ELEMENT) { - throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); - } - this.length = this.byteLength / this.BYTES_PER_ELEMENT; - } else { - this.length = ECMAScript.ToUint32(length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - - this.constructor = ctor; - - configureProperties(this); - makeArrayAccessors(this); - }; - - ctor.prototype = new ArrayBufferView(); - ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; - ctor.prototype._pack = pack; - ctor.prototype._unpack = unpack; - ctor.BYTES_PER_ELEMENT = bytesPerElement; - - // getter type (unsigned long index); - ctor.prototype._getter = function(index) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = [], i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - bytes.push(this.buffer._bytes[o]); - } - return this._unpack(bytes); - }; - - // NONSTANDARD: convenience alias for getter: type get(unsigned long index); - ctor.prototype.get = ctor.prototype._getter; - - // setter void (unsigned long index, type value); - ctor.prototype._setter = function(index, value) { - if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = this._pack(value), i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - this.buffer._bytes[o] = bytes[i]; - } - }; - - // void set(TypedArray array, optional unsigned long offset); - // void set(sequence array, optional unsigned long offset); - ctor.prototype.set = function(index, value) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - var array, sequence, offset, len, - i, s, d, - byteOffset, byteLength, tmp; - - if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { - // void set(TypedArray array, optional unsigned long offset); - array = arguments[0]; - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + array.length > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; - byteLength = array.length * this.BYTES_PER_ELEMENT; - - if (array.buffer === this.buffer) { - tmp = []; - for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { - tmp[i] = array.buffer._bytes[s]; - } - for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { - this.buffer._bytes[d] = tmp[i]; - } - } else { - for (i = 0, s = array.byteOffset, d = byteOffset; - i < byteLength; i += 1, s += 1, d += 1) { - this.buffer._bytes[d] = array.buffer._bytes[s]; - } - } - } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { - // void set(sequence array, optional unsigned long offset); - sequence = arguments[0]; - len = ECMAScript.ToUint32(sequence.length); - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + len > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - for (i = 0; i < len; i += 1) { - s = sequence[i]; - this._setter(offset + i, Number(s)); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - }; - - // TypedArray subarray(long begin, optional long end); - ctor.prototype.subarray = function(start, end) { - function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } - - start = ECMAScript.ToInt32(start); - end = ECMAScript.ToInt32(end); - - if (arguments.length < 1) { start = 0; } - if (arguments.length < 2) { end = this.length; } - - if (start < 0) { start = this.length + start; } - if (end < 0) { end = this.length + end; } - - start = clamp(start, 0, this.length); - end = clamp(end, 0, this.length); - - var len = end - start; - if (len < 0) { - len = 0; - } - - return new this.constructor( - this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); - }; - - return ctor; - } - - var Int8Array = makeConstructor(1, packI8, unpackI8); - var Uint8Array = makeConstructor(1, packU8, unpackU8); - var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); - var Int16Array = makeConstructor(2, packI16, unpackI16); - var Uint16Array = makeConstructor(2, packU16, unpackU16); - var Int32Array = makeConstructor(4, packI32, unpackI32); - var Uint32Array = makeConstructor(4, packU32, unpackU32); - var Float32Array = makeConstructor(4, packF32, unpackF32); - var Float64Array = makeConstructor(8, packF64, unpackF64); - - exports.Int8Array = exports.Int8Array || Int8Array; - exports.Uint8Array = exports.Uint8Array || Uint8Array; - exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; - exports.Int16Array = exports.Int16Array || Int16Array; - exports.Uint16Array = exports.Uint16Array || Uint16Array; - exports.Int32Array = exports.Int32Array || Int32Array; - exports.Uint32Array = exports.Uint32Array || Uint32Array; - exports.Float32Array = exports.Float32Array || Float32Array; - exports.Float64Array = exports.Float64Array || Float64Array; -}()); - -// -// 6 The DataView View Type -// - -(function() { - function r(array, index) { - return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; - } - - var IS_BIG_ENDIAN = (function() { - var u16array = new(exports.Uint16Array)([0x1234]), - u8array = new(exports.Uint8Array)(u16array.buffer); - return r(u8array, 0) === 0x12; - }()); - - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, - // optional unsigned long byteLength) - /** @constructor */ - var DataView = function DataView(buffer, byteOffset, byteLength) { - if (arguments.length === 0) { - buffer = new exports.ArrayBuffer(0); - } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { - throw new TypeError("TypeError"); - } - - this.buffer = buffer || new exports.ArrayBuffer(0); - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - } else { - this.byteLength = ECMAScript.ToUint32(byteLength); - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - - configureProperties(this); - }; - - function makeGetter(arrayType) { - return function(byteOffset, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - byteOffset += this.byteOffset; - - var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), - bytes = [], i; - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(uint8Array, i)); - } - - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); - }; - } - - DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); - DataView.prototype.getInt8 = makeGetter(exports.Int8Array); - DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); - DataView.prototype.getInt16 = makeGetter(exports.Int16Array); - DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); - DataView.prototype.getInt32 = makeGetter(exports.Int32Array); - DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); - DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); - - function makeSetter(arrayType) { - return function(byteOffset, value, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - - // Get bytes - var typeArray = new arrayType([value]), - byteArray = new exports.Uint8Array(typeArray.buffer), - bytes = [], i, byteView; - - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(byteArray, i)); - } - - // Flip if necessary - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - // Write them - byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); - byteView.set(bytes); - }; - } - - DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); - DataView.prototype.setInt8 = makeSetter(exports.Int8Array); - DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); - DataView.prototype.setInt16 = makeSetter(exports.Int16Array); - DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); - DataView.prototype.setInt32 = makeSetter(exports.Int32Array); - DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); - DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); - - exports.DataView = exports.DataView || DataView; - -}()); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/package.json deleted file mode 100644 index b8b59f5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "typedarray", - "version": "0.0.6", - "description": "TypedArray polyfill for old browsers", - "main": "index.js", - "devDependencies": { - "tape": "~2.3.2" - }, - "scripts": { - "test": "tape test/*.js test/server/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/typedarray.git" - }, - "homepage": "https://github.com/substack/typedarray", - "keywords": [ - "ArrayBuffer", - "DataView", - "Float32Array", - "Float64Array", - "Int8Array", - "Int16Array", - "Int32Array", - "Uint8Array", - "Uint8ClampedArray", - "Uint16Array", - "Uint32Array", - "typed", - "array", - "polyfill" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "firefox/16..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" - ] - }, - "bugs": { - "url": "https://github.com/substack/typedarray/issues" - }, - "_id": "typedarray@0.0.6", - "dist": { - "shasum": "867ac74e3864187b1d3d47d996a78ec5c8830777", - "tarball": "http://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, - "_from": "typedarray@>=0.0.5 <0.1.0", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "directories": {}, - "_shasum": "867ac74e3864187b1d3d47d996a78ec5c8830777", - "_resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/readme.markdown b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/readme.markdown deleted file mode 100644 index d18f6f7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/readme.markdown +++ /dev/null @@ -1,61 +0,0 @@ -# typedarray - -TypedArray polyfill ripped from [this -module](https://raw.github.com/inexorabletash/polyfill). - -[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray) - -[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray) - -# example - -``` js -var Uint8Array = require('typedarray').Uint8Array; -var ua = new Uint8Array(5); -ua[1] = 256 + 55; -console.log(ua[1]); -``` - -output: - -``` -55 -``` - -# methods - -``` js -var TA = require('typedarray') -``` - -The `TA` object has the following constructors: - -* TA.ArrayBuffer -* TA.DataView -* TA.Float32Array -* TA.Float64Array -* TA.Int8Array -* TA.Int16Array -* TA.Int32Array -* TA.Uint8Array -* TA.Uint8ClampedArray -* TA.Uint16Array -* TA.Uint32Array - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install typedarray -``` - -To use this module in the browser, compile with -[browserify](http://browserify.org) -or download a UMD build from browserify CDN: - -http://wzrd.in/standalone/typedarray@latest - -# license - -MIT diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js deleted file mode 100644 index 425950f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js +++ /dev/null @@ -1,19 +0,0 @@ -var test = require('tape'); -var vm = require('vm'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/../../index.js', 'utf8'); - -test('u8a without globals', function (t) { - var c = { - module: { exports: {} }, - }; - c.exports = c.module.exports; - vm.runInNewContext(src, c); - var TA = c.module.exports; - var ua = new(TA.Uint8Array)(5); - - t.equal(ua.length, 5); - ua[1] = 256 + 55; - t.equal(ua[1], 55); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/test/tarray.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/test/tarray.js deleted file mode 100644 index df596a3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/node_modules/typedarray/test/tarray.js +++ /dev/null @@ -1,10 +0,0 @@ -var TA = require('../'); -var test = require('tape'); - -test('tiny u8a test', function (t) { - var ua = new(TA.Uint8Array)(5); - t.equal(ua.length, 5); - ua[1] = 256 + 55; - t.equal(ua[1], 55); - t.end(); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/package.json b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/package.json deleted file mode 100644 index 1fcc7f9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "concat-stream", - "version": "1.4.7", - "description": "writable stream that concatenates strings or binary data and calls a callback with the result", - "tags": [ - "stream", - "simple", - "util", - "utility" - ], - "author": { - "name": "Max Ogden", - "email": "max@maxogden.com" - }, - "repository": { - "type": "git", - "url": "http://github.com/maxogden/concat-stream.git" - }, - "bugs": { - "url": "http://github.com/maxogden/concat-stream/issues" - }, - "engines": [ - "node >= 0.8" - ], - "main": "index.js", - "scripts": { - "test": "tape test/*.js test/server/*.js" - }, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.1", - "typedarray": "~0.0.5", - "readable-stream": "~1.1.9" - }, - "devDependencies": { - "tape": "~2.3.2" - }, - "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" - ] - }, - "gitHead": "41edc57536490dce9f015131c29a6470c9412b27", - "homepage": "https://github.com/maxogden/concat-stream", - "_id": "concat-stream@1.4.7", - "_shasum": "0ceaa47b87a581d2a7a782b92b81d5020c3f9925", - "_from": "concat-stream@>=1.4.5 <1.5.0", - "_npmVersion": "2.1.8", - "_nodeVersion": "0.10.28", - "_npmUser": { - "name": "maxogden", - "email": "max@maxogden.com" - }, - "maintainers": [ - { - "name": "maxogden", - "email": "max@maxogden.com" - } - ], - "dist": { - "shasum": "0ceaa47b87a581d2a7a782b92b81d5020c3f9925", - "tarball": "http://registry.npmjs.org/concat-stream/-/concat-stream-1.4.7.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.7.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/readme.md b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/readme.md deleted file mode 100644 index e6dda4e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/readme.md +++ /dev/null @@ -1,84 +0,0 @@ -# concat-stream - -Writable stream that concatenates strings or binary data and calls a callback with the result. Not a transform stream -- more of a stream sink. - -[![NPM](https://nodei.co/npm/concat-stream.png)](https://nodei.co/npm/concat-stream/) - -### examples - -#### Buffers - -```js -var fs = require('fs') -var concat = require('concat-stream') - -var readStream = fs.createReadStream('cat.png') -var concatStream = concat(gotPicture) - -readStream.on('error', handleError) -readStream.pipe(concatStream) - -function gotPicture(imageBuffer) { - // imageBuffer is all of `cat.png` as a node.js Buffer -} - -function handleError(err) { - // handle your error appropriately here, e.g.: - console.error(err) // print the error to STDERR - process.exit(1) // exit program with non-zero exit code -} - -``` - -#### Arrays - -```js -var write = concat(function(data) {}) -write.write([1,2,3]) -write.write([4,5,6]) -write.end() -// data will be [1,2,3,4,5,6] in the above callback -``` - -#### Uint8Arrays - -```js -var write = concat(function(data) {}) -var a = new Uint8Array(3) -a[0] = 97; a[1] = 98; a[2] = 99 -write.write(a) -write.write('!') -write.end(Buffer('!!1')) -``` - -See `test/` for more examples - -# methods - -```js -var concat = require('concat-stream') -``` - -## var writable = concat(opts={}, cb) - -Return a `writable` stream that will fire `cb(data)` with all of the data that -was written to the stream. Data can be written to `writable` as strings, -Buffers, arrays of byte integers, and Uint8Arrays. - -By default `concat-stream` will give you back the same data type as the type of the first buffer written to the stream. Use `opts.encoding` to set what format `data` should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason. - -* `string` - get a string -* `buffer` - get back a Buffer -* `array` - get an array of byte integers -* `uint8array`, `u8`, `uint8` - get back a Uint8Array -* `object`, get back an array of Objects - -If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't int he list above), it will try to convert concat them into a `Buffer`. - -# error handling - -`concat-stream` does not handle errors for you, so you must handle errors on whatever streams you pipe into `concat-stream`. This is a general rule when programming with node.js streams: always handle errors on each and every stream. Since `concat-stream` is not itself a stream it does not emit errors. - -# license - -MIT LICENSE diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/array.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/array.js deleted file mode 100644 index 86e7dd4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/array.js +++ /dev/null @@ -1,12 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('array stream', function (t) { - t.plan(1) - var arrays = concat({ encoding: 'array' }, function(out) { - t.deepEqual(out, [1,2,3,4,5,6]) - }) - arrays.write([1,2,3]) - arrays.write([4,5,6]) - arrays.end() -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/buffer.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/buffer.js deleted file mode 100644 index d28f5f9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/buffer.js +++ /dev/null @@ -1,31 +0,0 @@ -var concat = require('../') -var test = require('tape') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -test('buffer stream', function (t) { - t.plan(2) - var buffers = concat(function(out) { - t.ok(Buffer.isBuffer(out)) - t.equal(out.toString('utf8'), 'pizza Array is not a stringy cat') - }) - buffers.write(new Buffer('pizza Array is not a ', 'utf8')) - buffers.write(new Buffer('stringy cat')) - buffers.end() -}) - -test('buffer mixed writes', function (t) { - t.plan(2) - var buffers = concat(function(out) { - t.ok(Buffer.isBuffer(out)) - t.equal(out.toString('utf8'), 'pizza Array is not a stringy cat555') - }) - buffers.write(new Buffer('pizza')) - buffers.write(' Array is not a ') - buffers.write([ 115, 116, 114, 105, 110, 103, 121 ]) - var u8 = new U8(4) - u8[0] = 32; u8[1] = 99; u8[2] = 97; u8[3] = 116 - buffers.write(u8) - buffers.write(555) - buffers.end() -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/infer.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/infer.js deleted file mode 100644 index 91ab933..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/infer.js +++ /dev/null @@ -1,15 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('type inference works as expected', function(t) { - var stream = concat() - t.equal(stream.inferEncoding(['hello']), 'array', 'array') - t.equal(stream.inferEncoding(new Buffer('hello')), 'buffer', 'buffer') - t.equal(stream.inferEncoding(undefined), 'buffer', 'buffer') - t.equal(stream.inferEncoding(new Uint8Array(1)), 'uint8array', 'uint8array') - t.equal(stream.inferEncoding('hello'), 'string', 'string') - t.equal(stream.inferEncoding(''), 'string', 'string') - t.equal(stream.inferEncoding({hello: "world"}), 'object', 'object') - t.equal(stream.inferEncoding(1), 'buffer', 'buffer') - t.end() -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/nothing.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/nothing.js deleted file mode 100644 index 6ac6049..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/nothing.js +++ /dev/null @@ -1,25 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('no callback stream', function (t) { - var stream = concat() - stream.write('space') - stream.end(' cats') - t.end() -}) - -test('no encoding set, no data', function (t) { - var stream = concat(function(data) { - t.deepEqual(data, []) - t.end() - }) - stream.end() -}) - -test('encoding set to string, no data', function (t) { - var stream = concat({ encoding: 'string' }, function(data) { - t.deepEqual(data, '') - t.end() - }) - stream.end() -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/objects.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/objects.js deleted file mode 100644 index ad921ed..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/objects.js +++ /dev/null @@ -1,29 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('writing objects', function (t) { - var stream = concat({encoding: "objects"}, concatted) - function concatted(objs) { - t.equal(objs.length, 2) - t.deepEqual(objs[0], {"foo": "bar"}) - t.deepEqual(objs[1], {"baz": "taco"}) - } - stream.write({"foo": "bar"}) - stream.write({"baz": "taco"}) - stream.end() - t.end() -}) - - -test('switch to objects encoding if no encoding specified and objects are written', function (t) { - var stream = concat(concatted) - function concatted(objs) { - t.equal(objs.length, 2) - t.deepEqual(objs[0], {"foo": "bar"}) - t.deepEqual(objs[1], {"baz": "taco"}) - } - stream.write({"foo": "bar"}) - stream.write({"baz": "taco"}) - stream.end() - t.end() -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/server/ls.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/server/ls.js deleted file mode 100644 index 3258d8d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/server/ls.js +++ /dev/null @@ -1,16 +0,0 @@ -var concat = require('../../') -var spawn = require('child_process').spawn -var exec = require('child_process').exec -var test = require('tape') - -test('ls command', function (t) { - t.plan(1) - var cmd = spawn('ls', [ __dirname ]) - cmd.stdout.pipe( - concat(function(out) { - exec('ls ' + __dirname, function (err, body) { - t.equal(out.toString('utf8'), body.toString('utf8')) - }) - }) - ) -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/string.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/string.js deleted file mode 100644 index 218c522..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/string.js +++ /dev/null @@ -1,76 +0,0 @@ -var concat = require('../') -var test = require('tape') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -test('string -> buffer stream', function (t) { - t.plan(2) - var strings = concat({ encoding: 'buffer'}, function(out) { - t.ok(Buffer.isBuffer(out)) - t.equal(out.toString('utf8'), 'nacho dogs') - }) - strings.write("nacho ") - strings.write("dogs") - strings.end() -}) - -test('string stream', function (t) { - t.plan(2) - var strings = concat({ encoding: 'string' }, function(out) { - t.equal(typeof out, 'string') - t.equal(out, 'nacho dogs') - }) - strings.write("nacho ") - strings.write("dogs") - strings.end() -}) - -test('end chunk', function (t) { - t.plan(1) - var endchunk = concat({ encoding: 'string' }, function(out) { - t.equal(out, 'this is the end') - }) - endchunk.write("this ") - endchunk.write("is the ") - endchunk.end("end") -}) - -test('string from mixed write encodings', function (t) { - t.plan(2) - var strings = concat({ encoding: 'string' }, function(out) { - t.equal(typeof out, 'string') - t.equal(out, 'nacho dogs') - }) - strings.write('na') - strings.write(Buffer('cho')) - strings.write([ 32, 100 ]) - var u8 = new U8(3) - u8[0] = 111; u8[1] = 103; u8[2] = 115; - strings.end(u8) -}) - -test('string from buffers with multibyte characters', function (t) { - t.plan(2) - var strings = concat({ encoding: 'string' }, function(out) { - t.equal(typeof out, 'string') - t.equal(out, '☃☃☃☃☃☃☃☃') - }) - var snowman = new Buffer('☃') - for (var i = 0; i < 8; i++) { - strings.write(snowman.slice(0, 1)) - strings.write(snowman.slice(1)) - } - strings.end() -}) - -test('string infer encoding with empty string chunk', function (t) { - t.plan(2) - var strings = concat(function(out) { - t.equal(typeof out, 'string') - t.equal(out, 'nacho dogs') - }) - strings.write("") - strings.write("nacho ") - strings.write("dogs") - strings.end() -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/typedarray.js b/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/typedarray.js deleted file mode 100644 index ee07110..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/concat-stream/test/typedarray.js +++ /dev/null @@ -1,33 +0,0 @@ -var concat = require('../') -var test = require('tape') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -test('typed array stream', function (t) { - t.plan(2) - var a = new U8(5) - a[0] = 97; a[1] = 98; a[2] = 99; a[3] = 100; a[4] = 101; - var b = new U8(3) - b[0] = 32; b[1] = 102; b[2] = 103; - var c = new U8(4) - c[0] = 32; c[1] = 120; c[2] = 121; c[3] = 122; - - var arrays = concat({ encoding: 'Uint8Array' }, function(out) { - t.equal(typeof out.subarray, 'function') - t.deepEqual(Buffer(out).toString('utf8'), 'abcde fg xyz') - }) - arrays.write(a) - arrays.write(b) - arrays.end(c) -}) - -test('typed array from strings, buffers, and arrays', function (t) { - t.plan(2) - var arrays = concat({ encoding: 'Uint8Array' }, function(out) { - t.equal(typeof out.subarray, 'function') - t.deepEqual(Buffer(out).toString('utf8'), 'abcde fg xyz') - }) - arrays.write('abcde') - arrays.write(Buffer(' fg ')) - arrays.end([ 120, 121, 122 ]) -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/.npmignore deleted file mode 100644 index 07e6e47..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/.travis.yml deleted file mode 100644 index 6e5919d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/LICENSE.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/LICENSE.md deleted file mode 100644 index 547189a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/LICENSE.md +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2013, Deoxxa Development -====================================== -All rights reserved. --------------------- - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of Deoxxa Development nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY DEOXXA DEVELOPMENT ''AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL DEOXXA DEVELOPMENT BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/README.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/README.md deleted file mode 100644 index e39e1e9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/README.md +++ /dev/null @@ -1,129 +0,0 @@ -duplexer2 [![build status](https://travis-ci.org/deoxxa/duplexer2.png)](https://travis-ci.org/deoxxa/fork) -========= - -Like duplexer (http://npm.im/duplexer) but using streams2. - -Overview --------- - -duplexer2 is a reimplementation of [duplexer](http://npm.im/duplexer) using the -readable-stream API which is standard in node as of v0.10. Everything largely -works the same. - -Installation ------------- - -Available via [npm](http://npmjs.org/): - -> $ npm install duplexer2 - -Or via git: - -> $ git clone git://github.com/deoxxa/duplexer2.git node_modules/duplexer2 - -API ---- - -**duplexer2** - -Creates a new `DuplexWrapper` object, which is the actual class that implements -most of the fun stuff. All that fun stuff is hidden. DON'T LOOK. - -```javascript -duplexer2([options], writable, readable) -``` - -```javascript -var duplex = duplexer2(new stream.Writable(), new stream.Readable()); -``` - -Arguments - -* __options__ - an object specifying the regular `stream.Duplex` options, as - well as the properties described below. -* __writable__ - a writable stream -* __readable__ - a readable stream - -Options - -* __bubbleErrors__ - a boolean value that specifies whether to bubble errors - from the underlying readable/writable streams. Default is `true`. - -Example -------- - -Also see [example.js](https://github.com/deoxxa/duplexer2/blob/master/example.js). - -Code: - -```javascript -var stream = require("stream"); - -var duplexer2 = require("duplexer2"); - -var writable = new stream.Writable({objectMode: true}), - readable = new stream.Readable({objectMode: true}); - -writable._write = function _write(input, encoding, done) { - if (readable.push(input)) { - return done(); - } else { - readable.once("drain", done); - } -}; - -readable._read = function _read(n) { - // no-op -}; - -// simulate the readable thing closing after a bit -writable.once("finish", function() { - setTimeout(function() { - readable.push(null); - }, 500); -}); - -var duplex = duplexer2(writable, readable); - -duplex.on("data", function(e) { - console.log("got data", JSON.stringify(e)); -}); - -duplex.on("finish", function() { - console.log("got finish event"); -}); - -duplex.on("end", function() { - console.log("got end event"); -}); - -duplex.write("oh, hi there", function() { - console.log("finished writing"); -}); - -duplex.end(function() { - console.log("finished ending"); -}); -``` - -Output: - -``` -got data "oh, hi there" -finished writing -got finish event -finished ending -got end event -``` - -License -------- - -3-clause BSD. A copy is included with the source. - -Contact -------- - -* GitHub ([deoxxa](http://github.com/deoxxa)) -* Twitter ([@deoxxa](http://twitter.com/deoxxa)) -* Email ([deoxxa@fknsrs.biz](mailto:deoxxa@fknsrs.biz)) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/example.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/example.js deleted file mode 100755 index 90416e9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/example.js +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env node - -var stream = require("readable-stream"); - -var duplexer2 = require("./"); - -var writable = new stream.Writable({objectMode: true}), - readable = new stream.Readable({objectMode: true}); - -writable._write = function _write(input, encoding, done) { - if (readable.push(input)) { - return done(); - } else { - readable.once("drain", done); - } -}; - -readable._read = function _read(n) { - // no-op -}; - -// simulate the readable thing closing after a bit -writable.once("finish", function() { - setTimeout(function() { - readable.push(null); - }, 500); -}); - -var duplex = duplexer2(writable, readable); - -duplex.on("data", function(e) { - console.log("got data", JSON.stringify(e)); -}); - -duplex.on("finish", function() { - console.log("got finish event"); -}); - -duplex.on("end", function() { - console.log("got end event"); -}); - -duplex.write("oh, hi there", function() { - console.log("finished writing"); -}); - -duplex.end(function() { - console.log("finished ending"); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/index.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/index.js deleted file mode 100644 index b8fafcb..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/index.js +++ /dev/null @@ -1,62 +0,0 @@ -var stream = require("readable-stream"); - -var duplex2 = module.exports = function duplex2(options, writable, readable) { - return new DuplexWrapper(options, writable, readable); -}; - -var DuplexWrapper = exports.DuplexWrapper = function DuplexWrapper(options, writable, readable) { - if (typeof readable === "undefined") { - readable = writable; - writable = options; - options = null; - } - - options = options || {}; - options.objectMode = true; - - stream.Duplex.call(this, options); - - this._bubbleErrors = (typeof options.bubbleErrors === "undefined") || !!options.bubbleErrors; - - this._writable = writable; - this._readable = readable; - - var self = this; - - writable.once("finish", function() { - self.end(); - }); - - this.once("finish", function() { - writable.end(); - }); - - readable.on("data", function(e) { - if (!self.push(e)) { - readable.pause(); - } - }); - - readable.once("end", function() { - return self.push(null); - }); - - if (this._bubbleErrors) { - writable.on("error", function(err) { - return self.emit("error", err); - }); - - readable.on("error", function(err) { - return self.emit("error", err); - }); - } -}; -DuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}}); - -DuplexWrapper.prototype._write = function _write(input, encoding, done) { - this._writable.write(input, encoding, done); -}; - -DuplexWrapper.prototype._read = function _read(n) { - this._readable.resume(); -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e69..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/README.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/README.md deleted file mode 100644 index e46b823..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -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. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/duplex.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/float.patch b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/float.patch deleted file mode 100644 index b984607..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/float.patch +++ /dev/null @@ -1,923 +0,0 @@ -diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js -index c5a741c..a2e0d8e 100644 ---- a/lib/_stream_duplex.js -+++ b/lib/_stream_duplex.js -@@ -26,8 +26,8 @@ - - module.exports = Duplex; - var util = require('util'); --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('./_stream_readable'); -+var Writable = require('./_stream_writable'); - - util.inherits(Duplex, Readable); - -diff --git a/lib/_stream_passthrough.js b/lib/_stream_passthrough.js -index a5e9864..330c247 100644 ---- a/lib/_stream_passthrough.js -+++ b/lib/_stream_passthrough.js -@@ -25,7 +25,7 @@ - - module.exports = PassThrough; - --var Transform = require('_stream_transform'); -+var Transform = require('./_stream_transform'); - var util = require('util'); - util.inherits(PassThrough, Transform); - -diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js -index 0c3fe3e..90a8298 100644 ---- a/lib/_stream_readable.js -+++ b/lib/_stream_readable.js -@@ -23,10 +23,34 @@ module.exports = Readable; - Readable.ReadableState = ReadableState; - - var EE = require('events').EventEmitter; -+if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { -+ return emitter.listeners(type).length; -+}; -+ -+if (!global.setImmediate) global.setImmediate = function setImmediate(fn) { -+ return setTimeout(fn, 0); -+}; -+if (!global.clearImmediate) global.clearImmediate = function clearImmediate(i) { -+ return clearTimeout(i); -+}; -+ - var Stream = require('stream'); - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - var StringDecoder; --var debug = util.debuglog('stream'); -+var debug; -+if (util.debuglog) -+ debug = util.debuglog('stream'); -+else try { -+ debug = require('debuglog')('stream'); -+} catch (er) { -+ debug = function() {}; -+} - - util.inherits(Readable, Stream); - -@@ -380,7 +404,7 @@ function chunkInvalid(state, chunk) { - - - function onEofChunk(stream, state) { -- if (state.decoder && !state.ended) { -+ if (state.decoder && !state.ended && state.decoder.end) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); -diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js -index b1f9fcc..b0caf57 100644 ---- a/lib/_stream_transform.js -+++ b/lib/_stream_transform.js -@@ -64,8 +64,14 @@ - - module.exports = Transform; - --var Duplex = require('_stream_duplex'); -+var Duplex = require('./_stream_duplex'); - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - util.inherits(Transform, Duplex); - - -diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js -index ba2e920..f49288b 100644 ---- a/lib/_stream_writable.js -+++ b/lib/_stream_writable.js -@@ -27,6 +27,12 @@ module.exports = Writable; - Writable.WritableState = WritableState; - - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - var Stream = require('stream'); - - util.inherits(Writable, Stream); -@@ -119,7 +125,7 @@ function WritableState(options, stream) { - function Writable(options) { - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. -- if (!(this instanceof Writable) && !(this instanceof Stream.Duplex)) -+ if (!(this instanceof Writable) && !(this instanceof require('./_stream_duplex'))) - return new Writable(options); - - this._writableState = new WritableState(options, this); -diff --git a/test/simple/test-stream-big-push.js b/test/simple/test-stream-big-push.js -index e3787e4..8cd2127 100644 ---- a/test/simple/test-stream-big-push.js -+++ b/test/simple/test-stream-big-push.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - var str = 'asdfasdfasdfasdfasdf'; - - var r = new stream.Readable({ -diff --git a/test/simple/test-stream-end-paused.js b/test/simple/test-stream-end-paused.js -index bb73777..d40efc7 100644 ---- a/test/simple/test-stream-end-paused.js -+++ b/test/simple/test-stream-end-paused.js -@@ -25,7 +25,7 @@ var gotEnd = false; - - // Make sure we don't miss the end event for paused 0-length streams - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var stream = new Readable(); - var calledRead = false; - stream._read = function() { -diff --git a/test/simple/test-stream-pipe-after-end.js b/test/simple/test-stream-pipe-after-end.js -index b46ee90..0be8366 100644 ---- a/test/simple/test-stream-pipe-after-end.js -+++ b/test/simple/test-stream-pipe-after-end.js -@@ -22,8 +22,8 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var util = require('util'); - - util.inherits(TestReadable, Readable); -diff --git a/test/simple/test-stream-pipe-cleanup.js b/test/simple/test-stream-pipe-cleanup.js -deleted file mode 100644 -index f689358..0000000 ---- a/test/simple/test-stream-pipe-cleanup.js -+++ /dev/null -@@ -1,122 +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. -- --// This test asserts that Stream.prototype.pipe does not leave listeners --// hanging on the source or dest. -- --var common = require('../common'); --var stream = require('stream'); --var assert = require('assert'); --var util = require('util'); -- --function Writable() { -- this.writable = true; -- this.endCalls = 0; -- stream.Stream.call(this); --} --util.inherits(Writable, stream.Stream); --Writable.prototype.end = function() { -- this.endCalls++; --}; -- --Writable.prototype.destroy = function() { -- this.endCalls++; --}; -- --function Readable() { -- this.readable = true; -- stream.Stream.call(this); --} --util.inherits(Readable, stream.Stream); -- --function Duplex() { -- this.readable = true; -- Writable.call(this); --} --util.inherits(Duplex, Writable); -- --var i = 0; --var limit = 100; -- --var w = new Writable(); -- --var r; -- --for (i = 0; i < limit; i++) { -- r = new Readable(); -- r.pipe(w); -- r.emit('end'); --} --assert.equal(0, r.listeners('end').length); --assert.equal(limit, w.endCalls); -- --w.endCalls = 0; -- --for (i = 0; i < limit; i++) { -- r = new Readable(); -- r.pipe(w); -- r.emit('close'); --} --assert.equal(0, r.listeners('close').length); --assert.equal(limit, w.endCalls); -- --w.endCalls = 0; -- --r = new Readable(); -- --for (i = 0; i < limit; i++) { -- w = new Writable(); -- r.pipe(w); -- w.emit('close'); --} --assert.equal(0, w.listeners('close').length); -- --r = new Readable(); --w = new Writable(); --var d = new Duplex(); --r.pipe(d); // pipeline A --d.pipe(w); // pipeline B --assert.equal(r.listeners('end').length, 2); // A.onend, A.cleanup --assert.equal(r.listeners('close').length, 2); // A.onclose, A.cleanup --assert.equal(d.listeners('end').length, 2); // B.onend, B.cleanup --assert.equal(d.listeners('close').length, 3); // A.cleanup, B.onclose, B.cleanup --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 1); // B.cleanup -- --r.emit('end'); --assert.equal(d.endCalls, 1); --assert.equal(w.endCalls, 0); --assert.equal(r.listeners('end').length, 0); --assert.equal(r.listeners('close').length, 0); --assert.equal(d.listeners('end').length, 2); // B.onend, B.cleanup --assert.equal(d.listeners('close').length, 2); // B.onclose, B.cleanup --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 1); // B.cleanup -- --d.emit('end'); --assert.equal(d.endCalls, 1); --assert.equal(w.endCalls, 1); --assert.equal(r.listeners('end').length, 0); --assert.equal(r.listeners('close').length, 0); --assert.equal(d.listeners('end').length, 0); --assert.equal(d.listeners('close').length, 0); --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 0); -diff --git a/test/simple/test-stream-pipe-error-handling.js b/test/simple/test-stream-pipe-error-handling.js -index c5d724b..c7d6b7d 100644 ---- a/test/simple/test-stream-pipe-error-handling.js -+++ b/test/simple/test-stream-pipe-error-handling.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var Stream = require('stream').Stream; -+var Stream = require('../../').Stream; - - (function testErrorListenerCatches() { - var source = new Stream(); -diff --git a/test/simple/test-stream-pipe-event.js b/test/simple/test-stream-pipe-event.js -index cb9d5fe..56f8d61 100644 ---- a/test/simple/test-stream-pipe-event.js -+++ b/test/simple/test-stream-pipe-event.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common'); --var stream = require('stream'); -+var stream = require('../../'); - var assert = require('assert'); - var util = require('util'); - -diff --git a/test/simple/test-stream-push-order.js b/test/simple/test-stream-push-order.js -index f2e6ec2..a5c9bf9 100644 ---- a/test/simple/test-stream-push-order.js -+++ b/test/simple/test-stream-push-order.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var assert = require('assert'); - - var s = new Readable({ -diff --git a/test/simple/test-stream-push-strings.js b/test/simple/test-stream-push-strings.js -index 06f43dc..1701a9a 100644 ---- a/test/simple/test-stream-push-strings.js -+++ b/test/simple/test-stream-push-strings.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var util = require('util'); - - util.inherits(MyStream, Readable); -diff --git a/test/simple/test-stream-readable-event.js b/test/simple/test-stream-readable-event.js -index ba6a577..a8e6f7b 100644 ---- a/test/simple/test-stream-readable-event.js -+++ b/test/simple/test-stream-readable-event.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - (function first() { - // First test, not reading when the readable is added. -diff --git a/test/simple/test-stream-readable-flow-recursion.js b/test/simple/test-stream-readable-flow-recursion.js -index 2891ad6..11689ba 100644 ---- a/test/simple/test-stream-readable-flow-recursion.js -+++ b/test/simple/test-stream-readable-flow-recursion.js -@@ -27,7 +27,7 @@ var assert = require('assert'); - // more data continuously, but without triggering a nextTick - // warning or RangeError. - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - // throw an error if we trigger a nextTick warning. - process.throwDeprecation = true; -diff --git a/test/simple/test-stream-unshift-empty-chunk.js b/test/simple/test-stream-unshift-empty-chunk.js -index 0c96476..7827538 100644 ---- a/test/simple/test-stream-unshift-empty-chunk.js -+++ b/test/simple/test-stream-unshift-empty-chunk.js -@@ -24,7 +24,7 @@ var assert = require('assert'); - - // This test verifies that stream.unshift(Buffer(0)) or - // stream.unshift('') does not set state.reading=false. --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - var r = new Readable(); - var nChunks = 10; -diff --git a/test/simple/test-stream-unshift-read-race.js b/test/simple/test-stream-unshift-read-race.js -index 83fd9fa..17c18aa 100644 ---- a/test/simple/test-stream-unshift-read-race.js -+++ b/test/simple/test-stream-unshift-read-race.js -@@ -29,7 +29,7 @@ var assert = require('assert'); - // 3. push() after the EOF signaling null is an error. - // 4. _read() is not called after pushing the EOF null chunk. - --var stream = require('stream'); -+var stream = require('../../'); - var hwm = 10; - var r = stream.Readable({ highWaterMark: hwm }); - var chunks = 10; -@@ -51,7 +51,14 @@ r._read = function(n) { - - function push(fast) { - assert(!pushedNull, 'push() after null push'); -- var c = pos >= data.length ? null : data.slice(pos, pos + n); -+ var c; -+ if (pos >= data.length) -+ c = null; -+ else { -+ if (n + pos > data.length) -+ n = data.length - pos; -+ c = data.slice(pos, pos + n); -+ } - pushedNull = c === null; - if (fast) { - pos += n; -diff --git a/test/simple/test-stream-writev.js b/test/simple/test-stream-writev.js -index 5b49e6e..b5321f3 100644 ---- a/test/simple/test-stream-writev.js -+++ b/test/simple/test-stream-writev.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var stream = require('stream'); -+var stream = require('../../'); - - var queue = []; - for (var decode = 0; decode < 2; decode++) { -diff --git a/test/simple/test-stream2-basic.js b/test/simple/test-stream2-basic.js -index 3814bf0..248c1be 100644 ---- a/test/simple/test-stream2-basic.js -+++ b/test/simple/test-stream2-basic.js -@@ -21,7 +21,7 @@ - - - var common = require('../common.js'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-compatibility.js b/test/simple/test-stream2-compatibility.js -index 6cdd4e9..f0fa84b 100644 ---- a/test/simple/test-stream2-compatibility.js -+++ b/test/simple/test-stream2-compatibility.js -@@ -21,7 +21,7 @@ - - - var common = require('../common.js'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-finish-pipe.js b/test/simple/test-stream2-finish-pipe.js -index 39b274f..006a19b 100644 ---- a/test/simple/test-stream2-finish-pipe.js -+++ b/test/simple/test-stream2-finish-pipe.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var stream = require('stream'); -+var stream = require('../../'); - var Buffer = require('buffer').Buffer; - - var r = new stream.Readable(); -diff --git a/test/simple/test-stream2-fs.js b/test/simple/test-stream2-fs.js -deleted file mode 100644 -index e162406..0000000 ---- a/test/simple/test-stream2-fs.js -+++ /dev/null -@@ -1,72 +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 common = require('../common.js'); --var R = require('_stream_readable'); --var assert = require('assert'); -- --var fs = require('fs'); --var FSReadable = fs.ReadStream; -- --var path = require('path'); --var file = path.resolve(common.fixturesDir, 'x1024.txt'); -- --var size = fs.statSync(file).size; -- --var expectLengths = [1024]; -- --var util = require('util'); --var Stream = require('stream'); -- --util.inherits(TestWriter, Stream); -- --function TestWriter() { -- Stream.apply(this); -- this.buffer = []; -- this.length = 0; --} -- --TestWriter.prototype.write = function(c) { -- this.buffer.push(c.toString()); -- this.length += c.length; -- return true; --}; -- --TestWriter.prototype.end = function(c) { -- if (c) this.buffer.push(c.toString()); -- this.emit('results', this.buffer); --} -- --var r = new FSReadable(file); --var w = new TestWriter(); -- --w.on('results', function(res) { -- console.error(res, w.length); -- assert.equal(w.length, size); -- var l = 0; -- assert.deepEqual(res.map(function (c) { -- return c.length; -- }), expectLengths); -- console.log('ok'); --}); -- --r.pipe(w); -diff --git a/test/simple/test-stream2-httpclient-response-end.js b/test/simple/test-stream2-httpclient-response-end.js -deleted file mode 100644 -index 15cffc2..0000000 ---- a/test/simple/test-stream2-httpclient-response-end.js -+++ /dev/null -@@ -1,52 +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 common = require('../common.js'); --var assert = require('assert'); --var http = require('http'); --var msg = 'Hello'; --var readable_event = false; --var end_event = false; --var server = http.createServer(function(req, res) { -- res.writeHead(200, {'Content-Type': 'text/plain'}); -- res.end(msg); --}).listen(common.PORT, function() { -- http.get({port: common.PORT}, function(res) { -- var data = ''; -- res.on('readable', function() { -- console.log('readable event'); -- readable_event = true; -- data += res.read(); -- }); -- res.on('end', function() { -- console.log('end event'); -- end_event = true; -- assert.strictEqual(msg, data); -- server.close(); -- }); -- }); --}); -- --process.on('exit', function() { -- assert(readable_event); -- assert(end_event); --}); -- -diff --git a/test/simple/test-stream2-large-read-stall.js b/test/simple/test-stream2-large-read-stall.js -index 2fbfbca..667985b 100644 ---- a/test/simple/test-stream2-large-read-stall.js -+++ b/test/simple/test-stream2-large-read-stall.js -@@ -30,7 +30,7 @@ var PUSHSIZE = 20; - var PUSHCOUNT = 1000; - var HWM = 50; - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var r = new Readable({ - highWaterMark: HWM - }); -@@ -39,23 +39,23 @@ var rs = r._readableState; - r._read = push; - - r.on('readable', function() { -- console.error('>> readable'); -+ //console.error('>> readable'); - do { -- console.error(' > read(%d)', READSIZE); -+ //console.error(' > read(%d)', READSIZE); - var ret = r.read(READSIZE); -- console.error(' < %j (%d remain)', ret && ret.length, rs.length); -+ //console.error(' < %j (%d remain)', ret && ret.length, rs.length); - } while (ret && ret.length === READSIZE); - -- console.error('<< after read()', -- ret && ret.length, -- rs.needReadable, -- rs.length); -+ //console.error('<< after read()', -+ // ret && ret.length, -+ // rs.needReadable, -+ // rs.length); - }); - - var endEmitted = false; - r.on('end', function() { - endEmitted = true; -- console.error('end'); -+ //console.error('end'); - }); - - var pushes = 0; -@@ -64,11 +64,11 @@ function push() { - return; - - if (pushes++ === PUSHCOUNT) { -- console.error(' push(EOF)'); -+ //console.error(' push(EOF)'); - return r.push(null); - } - -- console.error(' push #%d', pushes); -+ //console.error(' push #%d', pushes); - if (r.push(new Buffer(PUSHSIZE))) - setTimeout(push); - } -diff --git a/test/simple/test-stream2-objects.js b/test/simple/test-stream2-objects.js -index 3e6931d..ff47d89 100644 ---- a/test/simple/test-stream2-objects.js -+++ b/test/simple/test-stream2-objects.js -@@ -21,8 +21,8 @@ - - - var common = require('../common.js'); --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var assert = require('assert'); - - // tiny node-tap lookalike. -diff --git a/test/simple/test-stream2-pipe-error-handling.js b/test/simple/test-stream2-pipe-error-handling.js -index cf7531c..e3f3e4e 100644 ---- a/test/simple/test-stream2-pipe-error-handling.js -+++ b/test/simple/test-stream2-pipe-error-handling.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - - (function testErrorListenerCatches() { - var count = 1000; -diff --git a/test/simple/test-stream2-pipe-error-once-listener.js b/test/simple/test-stream2-pipe-error-once-listener.js -index 5e8e3cb..53b2616 100755 ---- a/test/simple/test-stream2-pipe-error-once-listener.js -+++ b/test/simple/test-stream2-pipe-error-once-listener.js -@@ -24,7 +24,7 @@ var common = require('../common.js'); - var assert = require('assert'); - - var util = require('util'); --var stream = require('stream'); -+var stream = require('../../'); - - - var Read = function() { -diff --git a/test/simple/test-stream2-push.js b/test/simple/test-stream2-push.js -index b63edc3..eb2b0e9 100644 ---- a/test/simple/test-stream2-push.js -+++ b/test/simple/test-stream2-push.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var stream = require('stream'); -+var stream = require('../../'); - var Readable = stream.Readable; - var Writable = stream.Writable; - var assert = require('assert'); -diff --git a/test/simple/test-stream2-read-sync-stack.js b/test/simple/test-stream2-read-sync-stack.js -index e8a7305..9740a47 100644 ---- a/test/simple/test-stream2-read-sync-stack.js -+++ b/test/simple/test-stream2-read-sync-stack.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var r = new Readable(); - var N = 256 * 1024; - -diff --git a/test/simple/test-stream2-readable-empty-buffer-no-eof.js b/test/simple/test-stream2-readable-empty-buffer-no-eof.js -index cd30178..4b1659d 100644 ---- a/test/simple/test-stream2-readable-empty-buffer-no-eof.js -+++ b/test/simple/test-stream2-readable-empty-buffer-no-eof.js -@@ -22,10 +22,9 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - test1(); --test2(); - - function test1() { - var r = new Readable(); -@@ -88,31 +87,3 @@ function test1() { - console.log('ok'); - }); - } -- --function test2() { -- var r = new Readable({ encoding: 'base64' }); -- var reads = 5; -- r._read = function(n) { -- if (!reads--) -- return r.push(null); // EOF -- else -- return r.push(new Buffer('x')); -- }; -- -- var results = []; -- function flow() { -- var chunk; -- while (null !== (chunk = r.read())) -- results.push(chunk + ''); -- } -- r.on('readable', flow); -- r.on('end', function() { -- results.push('EOF'); -- }); -- flow(); -- -- process.on('exit', function() { -- assert.deepEqual(results, [ 'eHh4', 'eHg=', 'EOF' ]); -- console.log('ok'); -- }); --} -diff --git a/test/simple/test-stream2-readable-from-list.js b/test/simple/test-stream2-readable-from-list.js -index 7c96ffe..04a96f5 100644 ---- a/test/simple/test-stream2-readable-from-list.js -+++ b/test/simple/test-stream2-readable-from-list.js -@@ -21,7 +21,7 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var fromList = require('_stream_readable')._fromList; -+var fromList = require('../../lib/_stream_readable')._fromList; - - // tiny node-tap lookalike. - var tests = []; -diff --git a/test/simple/test-stream2-readable-legacy-drain.js b/test/simple/test-stream2-readable-legacy-drain.js -index 675da8e..51fd3d5 100644 ---- a/test/simple/test-stream2-readable-legacy-drain.js -+++ b/test/simple/test-stream2-readable-legacy-drain.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Stream = require('stream'); -+var Stream = require('../../'); - var Readable = Stream.Readable; - - var r = new Readable(); -diff --git a/test/simple/test-stream2-readable-non-empty-end.js b/test/simple/test-stream2-readable-non-empty-end.js -index 7314ae7..c971898 100644 ---- a/test/simple/test-stream2-readable-non-empty-end.js -+++ b/test/simple/test-stream2-readable-non-empty-end.js -@@ -21,7 +21,7 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var Readable = require('_stream_readable'); -+var Readable = require('../../lib/_stream_readable'); - - var len = 0; - var chunks = new Array(10); -diff --git a/test/simple/test-stream2-readable-wrap-empty.js b/test/simple/test-stream2-readable-wrap-empty.js -index 2e5cf25..fd8a3dc 100644 ---- a/test/simple/test-stream2-readable-wrap-empty.js -+++ b/test/simple/test-stream2-readable-wrap-empty.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); -+var Readable = require('../../lib/_stream_readable'); - var EE = require('events').EventEmitter; - - var oldStream = new EE(); -diff --git a/test/simple/test-stream2-readable-wrap.js b/test/simple/test-stream2-readable-wrap.js -index 90eea01..6b177f7 100644 ---- a/test/simple/test-stream2-readable-wrap.js -+++ b/test/simple/test-stream2-readable-wrap.js -@@ -22,8 +22,8 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var EE = require('events').EventEmitter; - - var testRuns = 0, completedRuns = 0; -diff --git a/test/simple/test-stream2-set-encoding.js b/test/simple/test-stream2-set-encoding.js -index 5d2c32a..685531b 100644 ---- a/test/simple/test-stream2-set-encoding.js -+++ b/test/simple/test-stream2-set-encoding.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var util = require('util'); - - // tiny node-tap lookalike. -diff --git a/test/simple/test-stream2-transform.js b/test/simple/test-stream2-transform.js -index 9c9ddd8..a0cacc6 100644 ---- a/test/simple/test-stream2-transform.js -+++ b/test/simple/test-stream2-transform.js -@@ -21,8 +21,8 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var PassThrough = require('_stream_passthrough'); --var Transform = require('_stream_transform'); -+var PassThrough = require('../../').PassThrough; -+var Transform = require('../../').Transform; - - // tiny node-tap lookalike. - var tests = []; -diff --git a/test/simple/test-stream2-unpipe-drain.js b/test/simple/test-stream2-unpipe-drain.js -index d66dc3c..365b327 100644 ---- a/test/simple/test-stream2-unpipe-drain.js -+++ b/test/simple/test-stream2-unpipe-drain.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - var crypto = require('crypto'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-unpipe-leak.js b/test/simple/test-stream2-unpipe-leak.js -index 99f8746..17c92ae 100644 ---- a/test/simple/test-stream2-unpipe-leak.js -+++ b/test/simple/test-stream2-unpipe-leak.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - - var chunk = new Buffer('hallo'); - -diff --git a/test/simple/test-stream2-writable.js b/test/simple/test-stream2-writable.js -index 704100c..209c3a6 100644 ---- a/test/simple/test-stream2-writable.js -+++ b/test/simple/test-stream2-writable.js -@@ -20,8 +20,8 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var W = require('_stream_writable'); --var D = require('_stream_duplex'); -+var W = require('../../').Writable; -+var D = require('../../').Duplex; - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream3-pause-then-read.js b/test/simple/test-stream3-pause-then-read.js -index b91bde3..2f72c15 100644 ---- a/test/simple/test-stream3-pause-then-read.js -+++ b/test/simple/test-stream3-pause-then-read.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var stream = require('stream'); -+var stream = require('../../'); - var Readable = stream.Readable; - var Writable = stream.Writable; - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +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. - -// 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. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - 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. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -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); -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 19ab358..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,951 +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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - - -/**/ -var debug = require('util'); -if (debug && debug.debuglog) { - debug = debug.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // 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 = options.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; - - - // 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; - - // 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; - } -} - -function Readable(options) { - var Duplex = require('./_stream_duplex'); - - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - 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 (util.isString(chunk) && !state.objectMode) { - 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); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (util.isNullOrUndefined(chunk)) { - state.reading = false; - if (!state.ended) - 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 { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - if (!addToFront) - state.reading = false; - - // 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 > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || util.isNull(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 = roundUpToNextPowerOf2(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 (!util.isNumber(n) || 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 (util.isNull(ret)) { - 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 (!util.isNull(ret)) - this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - 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) - process.nextTick(function() { - 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; - process.nextTick(function() { - 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) - process.nextTick(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); - - 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); - - // 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) { - 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 (EE.listenerCount(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 && EE.listenerCount(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.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - var self = this; - process.nextTick(function() { - debug('readable nexttick read 0'); - self.read(0); - }); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// 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; - if (!state.reading) { - debug('resume read 0'); - this.read(0); - } - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(function() { - resume_(stream, state); - }); - } -} - -function resume_(stream, state) { - 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); - if (!chunk || !state.objectMode && !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 (util.isFunction(stream[i]) && util.isUndefined(this[i])) { - 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 - 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; - process.nextTick(function() { - // 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; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 905c5e4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,209 +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. - - -// 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. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = 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 (!util.isNullOrUndefined(data)) - stream.push(data); - - if (cb) - 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(options, 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; - - this.once('prefinish', function() { - if (util.isFunction(this._flush)) - 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 (!util.isNull(ts.writechunk) && 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); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index db8539c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,477 +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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // 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 = options.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // 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; - - // 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.buffer = []; - - // 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; -} - -function Writable(options) { - var 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; - - 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, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - 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 (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (util.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (!util.isFunction(cb)) - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, 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.buffer.length) - clearBuffer(this, state); - } -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - util.isString(chunk)) { - 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 (util.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) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - 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) { - if (sync) - process.nextTick(function() { - state.pendingcb--; - cb(er); - }); - else { - state.pendingcb--; - 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(stream, state); - - if (!finished && - !state.corked && - !state.bufferProcessing && - state.buffer.length) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(function() { - 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; - - if (stream._writev && state.buffer.length > 1) { - // Fast case, write everything using _writev() - var cbs = []; - for (var c = 0; c < state.buffer.length; c++) - cbs.push(state.buffer[c].callback); - - // count the one we are adding, as well. - // TODO(isaacs) clean this up - state.pendingcb++; - doWrite(stream, state, true, state.length, state.buffer, '', function(err) { - for (var i = 0; i < cbs.length; i++) { - state.pendingcb--; - cbs[i](err); - } - }); - - // Clear buffer - state.buffer = []; - } else { - // Slow case, write chunks one-by-one - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - 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); - - // 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) { - c++; - break; - } - } - - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; - } - - 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 (util.isFunction(chunk)) { - cb = chunk; - chunk = null; - encoding = null; - } else if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (!util.isNullOrUndefined(chunk)) - 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(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, 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) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b41..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (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; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 9aaf597..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "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" - }, - "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" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "_from": "core-util-is@>=1.0.0 <1.1.0", - "scripts": {} -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa10..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object 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; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/README.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/inherits.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/package.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index 9013262..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +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" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@>=2.0.1 <2.1.0" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/test.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## 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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/build/build.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/build/build.js deleted file mode 100644 index ec58596..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/build/build.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (require.modules.hasOwnProperty(path)) return path; - } - - if (require.aliases.hasOwnProperty(index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!require.modules.hasOwnProperty(from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return require.modules.hasOwnProperty(localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("isarray/index.js", function(exports, require, module){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -}); -require.alias("isarray/index.js", "isarray/index.js"); - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index fc7904b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa00..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 0364d54..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/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.0 <0.11.0", - "_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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/package.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/package.json deleted file mode 100644 index 295adce..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.1.13", - "description": "Streams3, a user-land copy of the stream library from Node.js v0.11.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "gitHead": "3b672fd7ae92acf5b4ffdbabf74b372a0a56b051", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.1.13", - "_shasum": "f6eef764f514c89e2b9e23146a75ba106756d23e", - "_from": "readable-stream@>=1.1.9 <1.2.0", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "f6eef764f514c89e2b9e23146a75ba106756d23e", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/passthrough.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/readable.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/readable.js deleted file mode 100644 index 09b8bf5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,7 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = require('stream'); -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/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/transform.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/writable.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efd..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/package.json b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/package.json deleted file mode 100644 index 9015cb8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "duplexer2", - "version": "0.0.2", - "description": "Like duplexer (http://npm.im/duplexer) but using streams2", - "main": "index.js", - "scripts": { - "test": "mocha -R tap" - }, - "repository": { - "type": "git", - "url": "git://github.com/deoxxa/duplexer2.git" - }, - "keywords": [ - "duplex", - "stream", - "join", - "combine" - ], - "author": { - "name": "Conrad Pankoff", - "email": "deoxxa@fknsrs.biz", - "url": "http://www.fknsrs.biz/" - }, - "license": "BSD", - "bugs": { - "url": "https://github.com/deoxxa/duplexer2/issues" - }, - "devDependencies": { - "chai": "~1.7.2", - "mocha": "~1.12.1" - }, - "dependencies": { - "readable-stream": "~1.1.9" - }, - "readme": "duplexer2 [![build status](https://travis-ci.org/deoxxa/duplexer2.png)](https://travis-ci.org/deoxxa/fork)\n=========\n\nLike duplexer (http://npm.im/duplexer) but using streams2.\n\nOverview\n--------\n\nduplexer2 is a reimplementation of [duplexer](http://npm.im/duplexer) using the\nreadable-stream API which is standard in node as of v0.10. Everything largely\nworks the same.\n\nInstallation\n------------\n\nAvailable via [npm](http://npmjs.org/):\n\n> $ npm install duplexer2\n\nOr via git:\n\n> $ git clone git://github.com/deoxxa/duplexer2.git node_modules/duplexer2\n\nAPI\n---\n\n**duplexer2**\n\nCreates a new `DuplexWrapper` object, which is the actual class that implements\nmost of the fun stuff. All that fun stuff is hidden. DON'T LOOK.\n\n```javascript\nduplexer2([options], writable, readable)\n```\n\n```javascript\nvar duplex = duplexer2(new stream.Writable(), new stream.Readable());\n```\n\nArguments\n\n* __options__ - an object specifying the regular `stream.Duplex` options, as\n well as the properties described below.\n* __writable__ - a writable stream\n* __readable__ - a readable stream\n\nOptions\n\n* __bubbleErrors__ - a boolean value that specifies whether to bubble errors\n from the underlying readable/writable streams. Default is `true`.\n\nExample\n-------\n\nAlso see [example.js](https://github.com/deoxxa/duplexer2/blob/master/example.js).\n\nCode:\n\n```javascript\nvar stream = require(\"stream\");\n\nvar duplexer2 = require(\"duplexer2\");\n\nvar writable = new stream.Writable({objectMode: true}),\n readable = new stream.Readable({objectMode: true});\n\nwritable._write = function _write(input, encoding, done) {\n if (readable.push(input)) {\n return done();\n } else {\n readable.once(\"drain\", done);\n }\n};\n\nreadable._read = function _read(n) {\n // no-op\n};\n\n// simulate the readable thing closing after a bit\nwritable.once(\"finish\", function() {\n setTimeout(function() {\n readable.push(null);\n }, 500);\n});\n\nvar duplex = duplexer2(writable, readable);\n\nduplex.on(\"data\", function(e) {\n console.log(\"got data\", JSON.stringify(e));\n});\n\nduplex.on(\"finish\", function() {\n console.log(\"got finish event\");\n});\n\nduplex.on(\"end\", function() {\n console.log(\"got end event\");\n});\n\nduplex.write(\"oh, hi there\", function() {\n console.log(\"finished writing\");\n});\n\nduplex.end(function() {\n console.log(\"finished ending\");\n});\n```\n\nOutput:\n\n```\ngot data \"oh, hi there\"\nfinished writing\ngot finish event\nfinished ending\ngot end event\n```\n\nLicense\n-------\n\n3-clause BSD. A copy is included with the source.\n\nContact\n-------\n\n* GitHub ([deoxxa](http://github.com/deoxxa))\n* Twitter ([@deoxxa](http://twitter.com/deoxxa))\n* Email ([deoxxa@fknsrs.biz](mailto:deoxxa@fknsrs.biz))\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/deoxxa/duplexer2", - "_id": "duplexer2@0.0.2", - "_shasum": "c614dcf67e2fb14995a91711e5a617e8a60a31db", - "_from": "duplexer2@>=0.0.2 <0.1.0", - "_resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/test/tests.js b/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/test/tests.js deleted file mode 100644 index c3cf76f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/duplexer2/test/tests.js +++ /dev/null @@ -1,161 +0,0 @@ -var assert = require("chai").assert; - -var stream = require("readable-stream"); - -var duplexer2 = require("../"); - -describe("duplexer2", function() { - var writable, readable; - - beforeEach(function() { - writable = new stream.Writable({objectMode: true}); - readable = new stream.Readable({objectMode: true}); - - writable._write = function _write(input, encoding, done) { - return done(); - }; - - readable._read = function _read(n) { - }; - }); - - it("should interact with the writable stream properly for writing", function(done) { - var duplex = duplexer2(writable, readable); - - writable._write = function _write(input, encoding, _done) { - assert.strictEqual(input, "well hello there"); - - return done(); - }; - - duplex.write("well hello there"); - }); - - it("should interact with the readable stream properly for reading", function(done) { - var duplex = duplexer2(writable, readable); - - duplex.on("data", function(e) { - assert.strictEqual(e, "well hello there"); - - return done(); - }); - - readable.push("well hello there"); - }); - - it("should end the writable stream, causing it to finish", function(done) { - var duplex = duplexer2(writable, readable); - - writable.once("finish", done); - - duplex.end(); - }); - - it("should finish when the writable stream finishes", function(done) { - var duplex = duplexer2(writable, readable); - - duplex.once("finish", done); - - writable.end(); - }); - - it("should end when the readable stream ends", function(done) { - var duplex = duplexer2(writable, readable); - - // required to let "end" fire without reading - duplex.resume(); - duplex.once("end", done); - - readable.push(null); - }); - - it("should bubble errors from the writable stream when no behaviour is specified", function(done) { - var duplex = duplexer2(writable, readable); - - var originalErr = Error("testing"); - - duplex.on("error", function(err) { - assert.strictEqual(err, originalErr); - - return done(); - }); - - writable.emit("error", originalErr); - }); - - it("should bubble errors from the readable stream when no behaviour is specified", function(done) { - var duplex = duplexer2(writable, readable); - - var originalErr = Error("testing"); - - duplex.on("error", function(err) { - assert.strictEqual(err, originalErr); - - return done(); - }); - - readable.emit("error", originalErr); - }); - - it("should bubble errors from the writable stream when bubbleErrors is true", function(done) { - var duplex = duplexer2({bubbleErrors: true}, writable, readable); - - var originalErr = Error("testing"); - - duplex.on("error", function(err) { - assert.strictEqual(err, originalErr); - - return done(); - }); - - writable.emit("error", originalErr); - }); - - it("should bubble errors from the readable stream when bubbleErrors is true", function(done) { - var duplex = duplexer2({bubbleErrors: true}, writable, readable); - - var originalErr = Error("testing"); - - duplex.on("error", function(err) { - assert.strictEqual(err, originalErr); - - return done(); - }); - - readable.emit("error", originalErr); - }); - - it("should not bubble errors from the writable stream when bubbleErrors is false", function(done) { - var duplex = duplexer2({bubbleErrors: false}, writable, readable); - - var timeout = setTimeout(done, 25); - - duplex.on("error", function(err) { - clearTimeout(timeout); - - return done(Error("shouldn't bubble error")); - }); - - // prevent uncaught error exception - writable.on("error", function() {}); - - writable.emit("error", Error("testing")); - }); - - it("should not bubble errors from the readable stream when bubbleErrors is false", function(done) { - var duplex = duplexer2({bubbleErrors: false}, writable, readable); - - var timeout = setTimeout(done, 25); - - duplex.on("error", function(err) { - clearTimeout(timeout); - - return done(Error("shouldn't bubble error")); - }); - - // prevent uncaught error exception - readable.on("error", function() {}); - - readable.emit("error", Error("testing")); - }); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/.jshintrc b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/.jshintrc deleted file mode 100644 index 71a3a9a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/.jshintrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "indent": 4, - "eqnull": true, - "latedef": true, - "noarg": true, - "noempty": true, - "quotmark": "single", - "undef": true, - "unused": "vars", - "strict": true, - "trailing": true, - "validthis": true, - - "onevar": true, - - "node": true -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/LICENSE.BSD b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/LICENSE.BSD deleted file mode 100644 index 3e580c3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/LICENSE.BSD +++ /dev/null @@ -1,19 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/LICENSE.source-map b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/LICENSE.source-map deleted file mode 100644 index 259c59f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/LICENSE.source-map +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/README.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/README.md deleted file mode 100644 index ff98a42..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/README.md +++ /dev/null @@ -1,111 +0,0 @@ -### Escodegen [![Build Status](https://secure.travis-ci.org/Constellation/escodegen.svg)](http://travis-ci.org/Constellation/escodegen) [![Build Status](https://drone.io/github.com/Constellation/escodegen/status.png)](https://drone.io/github.com/Constellation/escodegen/latest) - -Escodegen ([escodegen](http://github.com/Constellation/escodegen)) is -[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -(also popularly known as [JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)) -code generator from [Parser API](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) AST. -See [online generator demo](http://constellation.github.com/escodegen/demo/index.html). - - -### Install - -Escodegen can be used in a web browser: - - - -escodegen.browser.js is found in tagged-revision. See Tags on GitHub. - -Or in a Node.js application via the package manager: - - npm install escodegen - -### Usage - -A simple example: the program - - escodegen.generate({ - type: 'BinaryExpression', - operator: '+', - left: { type: 'Literal', value: 40 }, - right: { type: 'Literal', value: 2 } - }); - -produces the string `'40 + 2'` - -See the [API page](https://github.com/Constellation/escodegen/wiki/API) for -options. To run the tests, execute `npm test` in the root directory. - -### Building browser bundle / minified browser bundle - -At first, executing `npm install` to install the all dev dependencies. -After that, - - npm run-script build - -will generate `escodegen.browser.js`, it is used on the browser environment. - -And, - - npm run-script build-min - -will generate minified `escodegen.browser.min.js`. - -### License - -#### Escodegen - -Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation) - (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#### source-map - -SourceNodeMocks has a limited interface of mozilla/source-map SourceNode implementations. - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/bin/escodegen.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/bin/escodegen.js deleted file mode 100755 index 783fb93..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/bin/escodegen.js +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' escodegen file.js'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(esprima.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/bin/esgenerate.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/bin/esgenerate.js deleted file mode 100755 index b27daa7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/bin/esgenerate.js +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' esgenerate file.json'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(JSON.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/component.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/component.json deleted file mode 100644 index 66e2262..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/component.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "escodegen", - "description": "ECMAScript code generator", - "homepage": "http://github.com/Constellation/escodegen", - "main": "escodegen.js", - "bin": { - "esgenerate": "./bin/esgenerate.js", - "escodegen": "./bin/escodegen.js" - }, - "version": "1.3.3", - "engines": { - "node": ">=0.10.0" - }, - "maintainers": [ - { - "name": "Yusuke Suzuki", - "email": "utatane.tea@gmail.com", - "web": "http://github.com/Constellation" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/Constellation/escodegen.git" - }, - "dependencies": { - "esutils": "~1.0.0", - "estraverse": "~1.5.0", - "esprima": "~1.1.1" - }, - "optionalDependencies": {}, - "devDependencies": { - "esprima-moz": "*", - "semver": "*", - "chai": "~1.7.2", - "gulp": "~3.5.0", - "gulp-mocha": "~0.4.1", - "gulp-eslint": "~0.1.2", - "jshint-stylish": "~0.1.5", - "gulp-jshint": "~1.4.0", - "commonjs-everywhere": "~0.9.6", - "bluebird": "~1.2.0", - "bower-registry-client": "~0.2.0" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "gulp travis", - "unit-test": "gulp test", - "lint": "gulp lint", - "release": "node tools/release.js", - "build-min": "./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js", - "build": "./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js" - } -} \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/escodegen.browser.min.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/escodegen.browser.min.js deleted file mode 100644 index 6868d15..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/escodegen.browser.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){function a(b,d){if({}.hasOwnProperty.call(a.cache,b))return a.cache[b];var e=a.resolve(b);if(!e)throw new Error('Failed to resolve module '+b);var c={id:b,require:a,filename:b,exports:{},loaded:!1,parent:d,children:[]};d&&d.children.push(c);var f=b.slice(0,b.lastIndexOf('/')+1);return a.cache[b]=c.exports,e.call(c.exports,c,c.exports,f,b),c.loaded=!0,a.cache[b]=c.exports}a.modules={},a.cache={},a.resolve=function(b){return{}.hasOwnProperty.call(a.modules,b)?a.modules[b]:void 0},a.define=function(b,c){a.modules[b]=c};var c=function(a){return a='/',{title:'browser',version:'v0.10.26',browser:!0,env:{},argv:[],nextTick:b.setImmediate||function(a){setTimeout(a,0)},cwd:function(){return a},chdir:function(b){a=b}}}();a.define('/tools/entry-point.js',function(c,d,e,f){!function(){'use strict';b.escodegen=a('/escodegen.js',c),escodegen.browser=!0}()}),a.define('/escodegen.js',function(d,c,e,f){!function(e,f,Z,C,W,q,A,m,x,v,K,S,G,M,k,h,J,O,D,N,n,I,w,U,_){'use strict';function Q(){return{indent:null,base:null,parse:null,comment:!1,format:{indent:{style:' ',base:0,adjustMultilineComment:!1},newline:'\n',space:' ',json:!1,renumber:!1,hexadecimal:!1,quotes:'single',escapeless:!1,compact:!1,parentheses:!0,semicolons:!0,safeConcatenation:!1},moz:{comprehensionExpressionStartsWithAssignment:!1,starlessGenerator:!1,parenthesizedComprehensionBlock:!1},sourceMap:null,sourceMapRoot:null,sourceMapWithCode:!1,directive:!1,raw:!0,verbatim:null}}function H(b,a){var c='';for(a|=0;a>0;a>>>=1,b+=b)a&1&&(c+=b);return c}function a9(a){return/[\r\n]/g.test(a)}function r(b){var a=b.length;return a&&q.code.isLineTerminator(b.charCodeAt(a-1))}function F(b,d){function e(a){return typeof a==='object'&&a instanceof Object&&!(a instanceof RegExp)}var a,c;for(a in d)d.hasOwnProperty(a)&&(c=d[a],e(c)?e(b[a])?F(b[a],c):b[a]=F({},c):b[a]=c);return b}function $(c){var b,e,a,f,d;if(c!==c)throw new Error('Numeric literal whose value is NaN');if(c<0||c===0&&1/c<0)throw new Error('Numeric literal whose value is negative');if(c===1/0)return v?'null':K?'1e400':'1e+400';if(b=''+c,!K||b.length<3)return b;e=b.indexOf('.'),!v&&b.charCodeAt(0)===48&&e===1&&(e=0,b=b.slice(1)),a=b,b=b.replace('e+','e'),f=0,(d=a.indexOf('e'))>0&&(f=+a.slice(d+1),a=a.slice(0,d)),e>=0&&(f-=a.length-e-1,a=+(a.slice(0,e)+a.slice(e+1))+''),d=0;while(a.charCodeAt(a.length+d-1)===48)--d;return d!==0&&(f-=d,a=a.slice(0,d)),f!==0&&(a+='e'+f),(a.length1e12&&Math.floor(c)===c&&(a='0x'+c.toString(16)).length255?a+='u'+'0000'.slice(c.length)+c:b===0&&!q.code.isDecimalDigit(d)?a+='0':b===11?a+='x0B':a+='x'+'00'.slice(c.length)+c;break}return a}function a4(b){var a='\\';switch(b){case 92:a+='\\';break;case 10:a+='n';break;case 13:a+='r';break;case 8232:a+='u2028';break;case 8233:a+='u2029';break;default:throw new Error('Incorrectly classified character')}return a}function a7(d){var a,e,c,b;for(b=G==='double'?'"':"'",a=0,e=d.length;a=32&&a<=126)){b+=a3(a,d.charCodeAt(c+1));continue}b+=String.fromCharCode(a)}if(e=!(G==='double'||G==='auto'&&i=0;--a)if(q.code.isLineTerminator(b.charCodeAt(a)))break;return b.length-1-a}function a6(k,i){var b,a,e,g,d,c,f,h;for(b=k.split(/\r\n|[\r\n]/),c=Number.MAX_VALUE,a=1,e=b.length;ad&&(c=d)}for(i!==void 0?(f=m,b[1][c]==='*'&&(i+=' '),m=i):(c&1&&--c,f=m),a=1,e=b.length;a0){for(i=a,d=b.leadingComments[0],a=[],D&&b.type===e.Program&&b.body.length===0&&a.push('\n'),a.push(E(d)),r(j(a).toString())||a.push('\n'),c=1,f=b.leadingComments.length;c')),b.expression?(a.push(h),d=g(b.body,{precedence:f.Assignment,allowIn:!0,allowCall:!0}),d.toString().charAt(0)==='{'&&(d=['(',d,')']),a.push(d)):a.push(s(b.body,!1,!0)),a}function X(c,b,d){var a=['for'+h+'('];return o(function(){b.left.type===e.VariableDeclaration?o(function(){a.push(b.left.kind+p()),a.push(l(b.left.declarations[0],{allowIn:!1}))}):a.push(g(b.left,{precedence:f.Call,allowIn:!0,allowCall:!0})),a=i(a,c),a=[i(a,g(b.right,{precedence:f.Sequence,allowIn:!0,allowCall:!0})),')']}),a.push(s(b.body,d)),a}function L(a){var b;if(a.hasOwnProperty('raw')&&I&&n.raw)try{if(b=I(a.raw).body[0].expression,b.type===e.Literal&&b.value===a.value)return a.raw}catch(a){}return a.value===null?'null':typeof a.value==='string'?a8(a.value):typeof a.value==='number'?$(a.value):typeof a.value==='boolean'?a.value?'true':'false':a1(a.value)}function g(b,x){var a,u,D,A,d,s,c,v,C,y,G,w,E,H,F,I;if(u=x.precedence,w=x.allowIn,E=x.allowCall,D=b.type||x.type,n.verbatim&&b.hasOwnProperty(n.verbatim))return a2(b,x);switch(D){case e.SequenceExpression:a=[];w|=f.Sequence0){for(a.push('('),d=0;d=2&&c.charCodeAt(0)===48)&&a.push('.')),a.push('.'),a.push(B(b.property)));a=t(a,f.Member,u);break;case e.UnaryExpression:c=g(b.argument,{precedence:f.Unary,allowIn:!0,allowCall:!0});h===''?a=i(b.operator,c):(a=[b.operator],b.operator.length>2?a=i(a,c):(y=j(a).toString(),C=y.charCodeAt(y.length-1),G=c.toString().charCodeAt(0),(C===43||C===45)&&C===G||q.code.isIdentifierPart(C)&&q.code.isIdentifierPart(G)?(a.push(p()),a.push(c)):a.push(c)));a=t(a,f.Unary,u);break;case e.YieldExpression:b.delegate?a='yield*':a='yield';b.argument&&(a=i(a,g(b.argument,{precedence:f.Yield,allowIn:!0,allowCall:!0})));a=t(a,f.Yield,u);break;case e.UpdateExpression:b.prefix?a=t([b.operator,g(b.argument,{precedence:f.Unary,allowIn:!0,allowCall:!0})],f.Unary,u):a=t([g(b.argument,{precedence:f.Postfix,allowIn:!0,allowCall:!0}),b.operator],f.Postfix,u);break;case e.FunctionExpression:I=b.generator&&!n.moz.starlessGenerator;a=I?'function*':'function';b.id?a=[a,I?h:p(),B(b.id),z(b)]:a=[a+h,z(b)];break;case e.ArrayPattern:case e.ArrayExpression:if(!b.elements.length){a='[]';break}v=b.elements.length>1;a=['[',v?k:''];o(function(c){for(d=0,s=b.elements.length;d1;o(function(){c=g(b.properties[0],{precedence:f.Sequence,allowIn:!0,allowCall:!0,type:e.Property})});if(!(v||a9(j(c).toString()))){a=['{',h,c,h,'}'];break}o(function(h){if(a=['{',k,h,c],v)for(a.push(','+k),d=1,s=b.properties.length;d0||n.moz.comprehensionExpressionStartsWithAssignment?a=i(a,c):a.push(c)});b.filter&&(a=i(a,'if'+h),c=g(b.filter,{precedence:f.Sequence,allowIn:!0,allowCall:!0}),n.moz.parenthesizedComprehensionBlock?a=i(a,['(',c,')']):a=i(a,c));n.moz.comprehensionExpressionStartsWithAssignment||(c=g(b.body,{precedence:f.Assignment,allowIn:!0,allowCall:!0}),a=i(a,c));a.push(D===e.GeneratorExpression?')':']');break;case e.ComprehensionBlock:b.left.type===e.VariableDeclaration?c=[b.left.kind,p(),l(b.left.declarations[0],{allowIn:!1})]:c=g(b.left,{precedence:f.Call,allowIn:!0,allowCall:!0});c=i(c,b.of?'of':'in');c=i(c,g(b.right,{precedence:f.Sequence,allowIn:!0,allowCall:!0}));n.moz.parenthesizedComprehensionBlock?a=['for'+h+'(',c,')']:a=i('for'+h,c);break;default:throw new Error('Unknown expression type: '+b.type)}return n.comment&&(a=P(b,a)),j(a,b)}function l(b,E){var c,d,a,C,x,v,H,F,t,q,G;v=!0,q=';',H=!1,F=!1,E&&(v=E.allowIn===undefined||E.allowIn,!O&&E.semicolonOptional===!0&&(q=''),H=E.functionBody,F=E.directiveContext);switch(b.type){case e.BlockStatement:a=['{',k];o(function(){for(c=0,d=b.body.length;c=0||N&&F&&b.expression.type===e.Literal&&typeof b.expression.value==='string'?a=['(',a,')'+q]:a.push(q);break;case e.ImportDeclaration:b.specifiers.length===0?a=['import',h,L(b.source)]:(b.kind==='default'?a=['import',p(),b.specifiers[0].id.name,p()]:(a=['import',h,'{'],b.specifiers.length===1?(x=b.specifiers[0],a.push(h+x.id.name),x.name&&a.push(p()+'as'+p()+x.name.name),a.push(h+'}'+h)):(o(function(e){var c,d;for(a.push(k),c=0,d=b.specifiers.length;c0?'\n':''];for(c=0;c':f.Relational,'<=':f.Relational,'>=':f.Relational,'in':f.Relational,'instanceof':f.Relational,'<<':f.BitwiseSHIFT,'>>':f.BitwiseSHIFT,'>>>':f.BitwiseSHIFT,'+':f.Additive,'-':f.Additive,'*':f.Multiplicative,'%':f.Multiplicative,'/':f.Multiplicative},A=Array.isArray,A||(A=function a(b){return Object.prototype.toString.call(b)==='[object Array]'}),U={indent:{style:'',base:0},renumber:!0,hexadecimal:!0,quotes:'auto',escapeless:!0,compact:!0,parentheses:!1,semicolons:!1},_=Q().format,c.version=a('/package.json',d).version,c.generate=a0,c.attachComments=W.attachComments,c.Precedence=F({},f),c.browser=!1,c.FORMAT_MINIFY=U,c.FORMAT_DEFAULTS=_}()}),a.define('/package.json',function(a,b,c,d){a.exports={name:'escodegen',description:'ECMAScript code generator',homepage:'http://github.com/Constellation/escodegen',main:'escodegen.js',bin:{esgenerate:'./bin/esgenerate.js',escodegen:'./bin/escodegen.js'},version:'1.3.3',engines:{node:'>=0.10.0'},maintainers:[{name:'Yusuke Suzuki',email:'utatane.tea@gmail.com',web:'http://github.com/Constellation'}],repository:{type:'git',url:'http://github.com/Constellation/escodegen.git'},dependencies:{esutils:'~1.0.0',estraverse:'~1.5.0',esprima:'~1.1.1'},optionalDependencies:{'source-map':'~0.1.33'},devDependencies:{'esprima-moz':'*',semver:'*',chai:'~1.7.2',gulp:'~3.5.0','gulp-mocha':'~0.4.1','gulp-eslint':'~0.1.2','jshint-stylish':'~0.1.5','gulp-jshint':'~1.4.0','commonjs-everywhere':'~0.9.6',bluebird:'~1.2.0','bower-registry-client':'~0.2.0'},licenses:[{type:'BSD',url:'http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD'}],scripts:{test:'gulp travis','unit-test':'gulp test',lint:'gulp lint',release:'node tools/release.js','build-min':'./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js',build:'./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js'}}}),a.define('/node_modules/source-map/lib/source-map.js',function(b,c,d,e){c.SourceMapGenerator=a('/node_modules/source-map/lib/source-map/source-map-generator.js',b).SourceMapGenerator,c.SourceMapConsumer=a('/node_modules/source-map/lib/source-map/source-map-consumer.js',b).SourceMapConsumer,c.SourceNode=a('/node_modules/source-map/lib/source-map/source-node.js',b).SourceNode}),a.define('/node_modules/source-map/lib/source-map/source-node.js',function(c,d,e,f){if(typeof b!=='function')var b=a('/node_modules/source-map/node_modules/amdefine/amdefine.js',c)(c,a);b(function(c,f,d){function a(a,b,c,d,e){this.children=[],this.sourceContents={},this.line=a===undefined?null:a,this.column=b===undefined?null:b,this.source=c===undefined?null:c,this.name=e===undefined?null:e,d!=null&&this.add(d)}var e=c('/node_modules/source-map/lib/source-map/source-map-generator.js',d).SourceMapGenerator,b=c('/node_modules/source-map/lib/source-map/util.js',d);a.fromStringWithSourceMap=function b(k,h){function i(b,c){b===null||b.source===undefined?d.add(c):d.add(new a(b.originalLine,b.originalColumn,b.source,c,b.name))}var d=new a,c=k.split('\n'),g=1,f=0,e=null;if(h.eachMapping(function(a){if(e!==null)if(g0){if(e){var j=c.shift();c.length>0&&(j+='\n'),i(e,j)}d.add(c.join('\n'))}return h.sources.forEach(function(b){var a=h.sourceContentFor(b);a&&d.setSourceContent(b,a)}),d},a.prototype.add=function b(c){if(Array.isArray(c))c.forEach(function(a){this.add(a)},this);else if(c instanceof a||typeof c==='string')c&&this.children.push(c);else throw new TypeError('Expected a SourceNode, string, or an array of SourceNodes and strings. Got '+c);return this},a.prototype.prepend=function b(c){if(Array.isArray(c))for(var d=c.length-1;d>=0;d--)this.prepend(c[d]);else if(c instanceof a||typeof c==='string')this.children.unshift(c);else throw new TypeError('Expected a SourceNode, string, or an array of SourceNodes and strings. Got '+c);return this},a.prototype.walk=function b(e){var c;for(var d=0,f=this.children.length;d0){for(b=[],c=0;c=0;f--)h=e[f],h==='.'?e.splice(f,1):h==='..'?g++:g>0&&(h===''?(e.splice(f+1,g),g=0):(e.splice(f,2),g--));return a=e.join('/'),a===''&&(a=j?'/':'.'),d?(d.path=a,c(d)):a}function h(h,d){var f=b(d),a=b(h);if(a&&(h=a.path||'/'),f&&!f.scheme)return a&&(f.scheme=a.scheme),c(f);if(f||d.match(e))return d;if(a&&!a.host&&!a.path)return a.host=d,c(a);var i=d.charAt(0)==='/'?d:g(h.replace(/\/+$/,'')+'/'+d);return a?(a.path=i,c(a)):i}function j(a){return'$'+a}function k(a){return a.substr(1)}function l(a,c){a=a.replace(/\/$/,'');var d=b(a);return c.charAt(0)=='/'&&d&&d.path=='/'?c.slice(1):c.indexOf(a+'/')===0?c.substr(a.length+1):c}function d(c,d){var a=c||'',b=d||'';return(a>b)-(a0&&(b.splice(a-1,2),a-=2)}function j(b,c){var a;return b&&b.charAt(0)==='.'&&c&&(a=c.split('/'),a=a.slice(0,a.length-1),a=a.concat(b.split('/')),q(a),b=a.join('/')),b}function p(a){return function(b){return j(b,a)}}function o(c){function a(a){b[c]=a}return a.fromText=function(a,b){throw new Error('amdefine does not implement load.fromText')},a}function m(c,h,l){var m,f,a,j;if(c)f=b[c]={},a={id:c,uri:d,exports:f},m=g(i,f,a,c);else{if(k)throw new Error('amdefine with no module ID cannot be called more than once per file.');k=!0,f=e.exports,a=e,m=g(i,f,a,e.id)}h&&(h=h.map(function(a){return m(a)})),typeof l==='function'?j=l.apply(a.exports,h):j=l,j!==undefined&&(a.exports=j,c&&(b[c]=a.exports))}function l(b,a,c){Array.isArray(b)?(c=a,a=b,b=undefined):typeof b!=='string'&&(c=b,b=a=undefined),a&&!Array.isArray(a)&&(c=a,a=undefined),a||(a=['require','exports','module']),b?f[b]=[b,a,c]:m(b,a,c)}var f={},b={},k=!1,n=a('path',e),g,h;return g=function(b,d,a,e){function f(f,g){if(typeof f==='string')return h(b,d,a,f,e);f=f.map(function(c){return h(b,d,a,c,e)}),c.nextTick(function(){g.apply(null,f)})}return f.toUrl=function(b){return b.indexOf('.')===0?j(b,n.dirname(a.filename)):b},f},i=i||function a(){return e.require.apply(e,arguments)},h=function(d,e,i,a,c){var k=a.indexOf('!'),n=a,q,l;if(k===-1)if(a=j(a,c),a==='require')return g(d,e,i,c);else if(a==='exports')return e;else if(a==='module')return i;else if(b.hasOwnProperty(a))return b[a];else if(f[a])return m.apply(null,f[a]),b[a];else if(d)return d(n);else throw new Error('No module with ID: '+a);else return q=a.substring(0,k),a=a.substring(k+1,a.length),l=h(d,e,i,q,c),l.normalize?a=l.normalize(a,p(c)):a=j(a,c),b[a]?b[a]:(l.load(a,g(d,e,i,c),o(a),{}),b[a])},l.require=function(a){return b[a]?b[a]:f[a]?(m.apply(null,f[a]),b[a]):void 0},l.amd={},l}b.exports=e}),a.define('/node_modules/source-map/lib/source-map/source-map-generator.js',function(c,d,e,f){if(typeof b!=='function')var b=a('/node_modules/source-map/node_modules/amdefine/amdefine.js',c)(c,a);b(function(e,g,f){function b(b){b||(b={}),this._file=a.getArg(b,'file',null),this._sourceRoot=a.getArg(b,'sourceRoot',null),this._sources=new d,this._names=new d,this._mappings=[],this._sourcesContents=null}var c=e('/node_modules/source-map/lib/source-map/base64-vlq.js',f),a=e('/node_modules/source-map/lib/source-map/util.js',f),d=e('/node_modules/source-map/lib/source-map/array-set.js',f).ArraySet;b.prototype._version=3,b.fromSourceMap=function c(d){var e=d.sourceRoot,f=new b({file:d.file,sourceRoot:e});return d.eachMapping(function(b){var c={generated:{line:b.generatedLine,column:b.generatedColumn}};b.source&&(c.source=b.source,e&&(c.source=a.relative(e,c.source)),c.original={line:b.originalLine,column:b.originalColumn},b.name&&(c.name=b.name)),f.addMapping(c)}),d.sources.forEach(function(b){var a=d.sourceContentFor(b);a&&f.setSourceContent(b,a)}),f},b.prototype.addMapping=function b(f){var g=a.getArg(f,'generated'),c=a.getArg(f,'original',null),d=a.getArg(f,'source',null),e=a.getArg(f,'name',null);this._validateMapping(g,c,d,e),d&&!this._sources.has(d)&&this._sources.add(d),e&&!this._names.has(e)&&this._names.add(e),this._mappings.push({generatedLine:g.line,generatedColumn:g.column,originalLine:c!=null&&c.line,originalColumn:c!=null&&c.column,source:d,name:e})},b.prototype.setSourceContent=function b(e,d){var c=e;this._sourceRoot&&(c=a.relative(this._sourceRoot,c)),d!==null?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[a.toSetString(c)]=d):(delete this._sourcesContents[a.toSetString(c)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))},b.prototype.applySourceMap=function b(e,f,i){if(!f){if(!e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');f=e.file}var c=this._sourceRoot;c&&(f=a.relative(c,f));var g=new d,h=new d;this._mappings.forEach(function(b){if(b.source===f&&b.originalLine){var d=e.originalPositionFor({line:b.originalLine,column:b.originalColumn});d.source!==null&&(b.source=d.source,i&&(b.source=a.join(i,b.source)),c&&(b.source=a.relative(c,b.source)),b.originalLine=d.line,b.originalColumn=d.column,d.name!==null&&b.name!==null&&(b.name=d.name))}var j=b.source;j&&!g.has(j)&&g.add(j);var k=b.name;k&&!h.has(k)&&h.add(k)},this),this._sources=g,this._names=h,e.sources.forEach(function(b){var d=e.sourceContentFor(b);d&&(c&&(b=a.relative(c,b)),this.setSourceContent(b,d))},this)},b.prototype._validateMapping=function a(b,c,d,e){if(b&&'line'in b&&'column'in b&&b.line>0&&b.column>=0&&!c&&!d&&!e)return;else if(b&&'line'in b&&'column'in b&&c&&'line'in c&&'column'in c&&b.line>0&&b.column>=0&&c.line>0&&c.column>=0&&d)return;else throw new Error('Invalid mapping: '+JSON.stringify({generated:b,source:d,original:c,name:e}))},b.prototype._serializeMappings=function b(){var h=0,g=1,j=0,k=0,i=0,l=0,e='',d;this._mappings.sort(a.compareByGeneratedPositions);for(var f=0,m=this._mappings.length;f0){if(!a.compareByGeneratedPositions(d,this._mappings[f-1]))continue;e+=','}e+=c.encode(d.generatedColumn-h),h=d.generatedColumn,d.source&&(e+=c.encode(this._sources.indexOf(d.source)-l),l=this._sources.indexOf(d.source),e+=c.encode(d.originalLine-1-k),k=d.originalLine-1,e+=c.encode(d.originalColumn-j),j=d.originalColumn,d.name&&(e+=c.encode(this._names.indexOf(d.name)-i),i=this._names.indexOf(d.name)))}return e},b.prototype._generateSourcesContent=function b(d,c){return d.map(function(b){if(!this._sourcesContents)return null;c&&(b=a.relative(c,b));var d=a.toSetString(b);return Object.prototype.hasOwnProperty.call(this._sourcesContents,d)?this._sourcesContents[d]:null},this)},b.prototype.toJSON=function a(){var b={version:this._version,file:this._file,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._sourceRoot&&(b.sourceRoot=this._sourceRoot),this._sourcesContents&&(b.sourcesContent=this._generateSourcesContent(b.sources,b.sourceRoot)),b},b.prototype.toString=function a(){return JSON.stringify(this)},g.SourceMapGenerator=b})}),a.define('/node_modules/source-map/lib/source-map/array-set.js',function(c,d,e,f){if(typeof b!=='function')var b=a('/node_modules/source-map/node_modules/amdefine/amdefine.js',c)(c,a);b(function(c,d,e){function a(){this._array=[],this._set={}}var b=c('/node_modules/source-map/lib/source-map/util.js',e);a.fromArray=function b(e,g){var d=new a;for(var c=0,f=e.length;c=0&&b>1;return c?-a:a}var c=j('/node_modules/source-map/lib/source-map/base64.js',h),a=5,d=1<>>=a,f>0&&(h|=b),g+=c.encode(h);while(f>0);return g},f.decode=function d(i){var f=0,l=i.length,j=0,k=0,m,h;do{if(f>=l)throw new Error('Expected more digits in base 64 VLQ value.');h=c.decode(i.charAt(f++)),m=!!(h&b),h&=e,j+=h<0)if(d.charAt(0)===';')j++,d=d.slice(1),h=0;else if(d.charAt(0)===',')d=d.slice(1);else{if(f={},f.generatedLine=j,e=c.decode(d),f.generatedColumn=h+e.value,h=f.generatedColumn,d=e.rest,d.length>0&&!g.test(d.charAt(0))){if(e=c.decode(d),f.source=this._sources.at(k+e.value),k+=e.value,d=e.rest,d.length===0||g.test(d.charAt(0)))throw new Error('Found a source, but no line and column');if(e=c.decode(d),f.originalLine=i+e.value,i=f.originalLine,f.originalLine+=1,d=e.rest,d.length===0||g.test(d.charAt(0)))throw new Error('Found a source and line, but no column');e=c.decode(d),f.originalColumn=m+e.value,m=f.originalColumn,d=e.rest,d.length>0&&!g.test(d.charAt(0))&&(e=c.decode(d),f.name=this._names.at(l+e.value),l+=e.value,d=e.rest)}this.__generatedMappings.push(f),typeof f.originalLine==='number'&&this.__originalMappings.push(f)}this.__generatedMappings.sort(a.compareByGeneratedPositions),this.__originalMappings.sort(a.compareByOriginalPositions)},b.prototype._findMapping=function a(b,e,c,d,f){if(b[c]<=0)throw new TypeError('Line must be greater than or equal to 1, got '+b[c]);if(b[d]<0)throw new TypeError('Column must be greater than or equal to 0, got '+b[d]);return g.search(b,e,f)},b.prototype.originalPositionFor=function b(f){var e={generatedLine:a.getArg(f,'line'),generatedColumn:a.getArg(f,'column')},c=this._findMapping(e,this._generatedMappings,'generatedLine','generatedColumn',a.compareByGeneratedPositions);if(c&&c.generatedLine===e.generatedLine){var d=a.getArg(c,'source',null);return d&&this.sourceRoot&&(d=a.join(this.sourceRoot,d)),{source:d,line:a.getArg(c,'originalLine',null),column:a.getArg(c,'originalColumn',null),name:a.getArg(c,'name',null)}}return{source:null,line:null,column:null,name:null}},b.prototype.sourceContentFor=function b(c){if(!this.sourcesContent)return null;if(this.sourceRoot&&(c=a.relative(this.sourceRoot,c)),this._sources.has(c))return this.sourcesContent[this._sources.indexOf(c)];var d;if(this.sourceRoot&&(d=a.urlParse(this.sourceRoot))){var e=c.replace(/^file:\/\//,'');if(d.scheme=='file'&&this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];if((!d.path||d.path=='/')&&this._sources.has('/'+c))return this.sourcesContent[this._sources.indexOf('/'+c)]}throw new Error('"'+c+'" is not in the SourceMap.')},b.prototype.generatedPositionFor=function b(e){var c={source:a.getArg(e,'source'),originalLine:a.getArg(e,'line'),originalColumn:a.getArg(e,'column')};this.sourceRoot&&(c.source=a.relative(this.sourceRoot,c.source));var d=this._findMapping(c,this._originalMappings,'originalLine','originalColumn',a.compareByOriginalPositions);return d?{line:a.getArg(d,'generatedLine',null),column:a.getArg(d,'generatedColumn',null)}:{line:null,column:null}},b.GENERATED_ORDER=1,b.ORIGINAL_ORDER=2,b.prototype.eachMapping=function c(h,i,j){var f=i||null,g=j||b.GENERATED_ORDER,d;switch(g){case b.GENERATED_ORDER:d=this._generatedMappings;break;case b.ORIGINAL_ORDER:d=this._originalMappings;break;default:throw new Error('Unknown order of iteration.')}var e=this.sourceRoot;d.map(function(b){var c=b.source;return c&&e&&(c=a.join(e,c)),{source:c,generatedLine:b.generatedLine,generatedColumn:b.generatedColumn,originalLine:b.originalLine,originalColumn:b.originalColumn,name:b.name}}).forEach(h,f)},h.SourceMapConsumer=b})}),a.define('/node_modules/source-map/lib/source-map/binary-search.js',function(c,d,e,f){if(typeof b!=='function')var b=a('/node_modules/source-map/node_modules/amdefine/amdefine.js',c)(c,a);b(function(c,b,d){function a(c,e,f,d,g){var b=Math.floor((e-c)/2)+c,h=g(f,d[b],!0);return h===0?d[b]:h>0?e-b>1?a(b,e,f,d,g):d[b]:b-c>1?a(c,b,f,d,g):c<0?null:d[c]}b.search=function b(d,c,e){return c.length>0?a(-1,c.length,d,c,e):null}})}),a.define('/node_modules/esutils/lib/utils.js',function(b,c,d,e){!function(){'use strict';c.code=a('/node_modules/esutils/lib/code.js',b),c.keyword=a('/node_modules/esutils/lib/keyword.js',b)}()}),a.define('/node_modules/esutils/lib/keyword.js',function(b,c,d,e){!function(c){'use strict';function e(a){switch(a){case'implements':case'interface':case'package':case'private':case'protected':case'public':case'static':case'let':return!0;default:return!1}}function f(a,b){return!b&&a==='yield'?!1:d(a,b)}function d(a,b){if(b&&e(a))return!0;switch(a.length){case 2:return a==='if'||a==='in'||a==='do';case 3:return a==='var'||a==='for'||a==='new'||a==='try';case 4:return a==='this'||a==='else'||a==='case'||a==='void'||a==='with'||a==='enum';case 5:return a==='while'||a==='break'||a==='catch'||a==='throw'||a==='const'||a==='yield'||a==='class'||a==='super';case 6:return a==='return'||a==='typeof'||a==='delete'||a==='switch'||a==='export'||a==='import';case 7:return a==='default'||a==='finally'||a==='extends';case 8:return a==='function'||a==='continue'||a==='debugger';case 10:return a==='instanceof';default:return!1}}function g(a){return a==='eval'||a==='arguments'}function h(b){var d,e,a;if(b.length===0)return!1;if(a=b.charCodeAt(0),!c.isIdentifierStart(a)||a===92)return!1;for(d=1,e=b.length;d=48&&a<=57}function d(a){return c(a)||97<=a&&a<=102||65<=a&&a<=70}function e(a){return a>=48&&a<=55}function f(a){return a===32||a===9||a===11||a===12||a===160||a>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(a)>=0}function g(a){return a===10||a===13||a===8232||a===8233}function h(a){return a===36||a===95||a>=65&&a<=90||a>=97&&a<=122||a===92||a>=128&&b.NonAsciiIdentifierStart.test(String.fromCharCode(a))}function i(a){return a===36||a===95||a>=65&&a<=90||a>=97&&a<=122||a>=48&&a<=57||a===92||a>=128&&b.NonAsciiIdentifierPart.test(String.fromCharCode(a))}b={NonAsciiIdentifierStart:new RegExp('[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]'),NonAsciiIdentifierPart:new RegExp('[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]')},a.exports={isDecimalDigit:c,isHexDigit:d,isOctalDigit:e,isWhiteSpace:f,isLineTerminator:g,isIdentifierStart:h,isIdentifierPart:i}}()}),a.define('/node_modules/estraverse/estraverse.js',function(b,a,c,d){!function(c,b){'use strict';typeof define==='function'&&define.amd?define(['exports'],b):a!==void 0?b(a):b(c.estraverse={})}(this,function(e){'use strict';function m(){}function l(d){var c={},a,b;for(a in d)d.hasOwnProperty(a)&&(b=d[a],typeof b==='object'&&b!==null?c[a]=l(b):c[a]=b);return c}function s(b){var c={},a;for(a in b)b.hasOwnProperty(a)&&(c[a]=b[a]);return c}function r(e,f){var b,a,c,d;a=e.length,c=0;while(a)b=a>>>1,d=c+b,f(e[d])?a=b:(c=d+1,a-=b+1);return c}function q(e,f){var b,a,c,d;a=e.length,c=0;while(a)b=a>>>1,d=c+b,f(e[d])?(c=d+1,a-=b+1):a=b;return c}function h(a,b){this.parent=a,this.key=b}function d(a,b,c,d){this.node=a,this.path=b,this.wrap=c,this.ref=d}function b(){}function k(c,d){var a=new b;return a.traverse(c,d)}function p(c,d){var a=new b;return a.replace(c,d)}function n(a,c){var b;return b=r(c,function b(c){return c.range[0]>a.range[0]}),a.extendedRange=[a.range[0],a.range[1]],b!==c.length&&(a.extendedRange[1]=c[b].range[0]),b-=1,b>=0&&(a.extendedRange[0]=c[b].range[1]),a}function o(d,e,i){var a=[],h,g,c,b;if(!d.range)throw new Error('attachComments needs range information');if(!i.length){if(e.length){for(c=0,g=e.length;cc.range[0])break;d.extendedRange[1]===c.range[0]?(c.leadingComments||(c.leadingComments=[]),c.leadingComments.push(d),a.splice(b,1)):b+=1}return b===a.length?f.Break:a[b].extendedRange[0]>c.range[1]?f.Skip:void 0}}),b=0,k(d,{leave:function(c){var d;while(bc.range[1]?f.Skip:void 0}}),d}var i,g,f,j,a,c;i={AssignmentExpression:'AssignmentExpression',ArrayExpression:'ArrayExpression',ArrayPattern:'ArrayPattern',ArrowFunctionExpression:'ArrowFunctionExpression',BlockStatement:'BlockStatement',BinaryExpression:'BinaryExpression',BreakStatement:'BreakStatement',CallExpression:'CallExpression',CatchClause:'CatchClause',ClassBody:'ClassBody',ClassDeclaration:'ClassDeclaration',ClassExpression:'ClassExpression',ConditionalExpression:'ConditionalExpression',ContinueStatement:'ContinueStatement',DebuggerStatement:'DebuggerStatement',DirectiveStatement:'DirectiveStatement',DoWhileStatement:'DoWhileStatement',EmptyStatement:'EmptyStatement',ExpressionStatement:'ExpressionStatement',ForStatement:'ForStatement',ForInStatement:'ForInStatement',FunctionDeclaration:'FunctionDeclaration',FunctionExpression:'FunctionExpression',Identifier:'Identifier',IfStatement:'IfStatement',Literal:'Literal',LabeledStatement:'LabeledStatement',LogicalExpression:'LogicalExpression',MemberExpression:'MemberExpression',MethodDefinition:'MethodDefinition',NewExpression:'NewExpression',ObjectExpression:'ObjectExpression',ObjectPattern:'ObjectPattern',Program:'Program',Property:'Property',ReturnStatement:'ReturnStatement',SequenceExpression:'SequenceExpression',SwitchStatement:'SwitchStatement',SwitchCase:'SwitchCase',ThisExpression:'ThisExpression',ThrowStatement:'ThrowStatement',TryStatement:'TryStatement',UnaryExpression:'UnaryExpression',UpdateExpression:'UpdateExpression',VariableDeclaration:'VariableDeclaration',VariableDeclarator:'VariableDeclarator',WhileStatement:'WhileStatement',WithStatement:'WithStatement',YieldExpression:'YieldExpression'},g=Array.isArray,g||(g=function a(b){return Object.prototype.toString.call(b)==='[object Array]'}),m(s),m(q),j={AssignmentExpression:['left','right'],ArrayExpression:['elements'],ArrayPattern:['elements'],ArrowFunctionExpression:['params','defaults','rest','body'],BlockStatement:['body'],BinaryExpression:['left','right'],BreakStatement:['label'],CallExpression:['callee','arguments'],CatchClause:['param','body'],ClassBody:['body'],ClassDeclaration:['id','body','superClass'],ClassExpression:['id','body','superClass'],ConditionalExpression:['test','consequent','alternate'],ContinueStatement:['label'],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:['body','test'],EmptyStatement:[],ExpressionStatement:['expression'],ForStatement:['init','test','update','body'],ForInStatement:['left','right','body'],FunctionDeclaration:['id','params','defaults','rest','body'],FunctionExpression:['id','params','defaults','rest','body'],Identifier:[],IfStatement:['test','consequent','alternate'],Literal:[],LabeledStatement:['label','body'],LogicalExpression:['left','right'],MemberExpression:['object','property'],MethodDefinition:['key','value'],NewExpression:['callee','arguments'],ObjectExpression:['properties'],ObjectPattern:['properties'],Program:['body'],Property:['key','value'],ReturnStatement:['argument'],SequenceExpression:['expressions'],SwitchStatement:['discriminant','cases'],SwitchCase:['test','consequent'],ThisExpression:[],ThrowStatement:['argument'],TryStatement:['block','handlers','handler','guardedHandlers','finalizer'],UnaryExpression:['argument'],UpdateExpression:['argument'],VariableDeclaration:['declarations'],VariableDeclarator:['id','init'],WhileStatement:['test','body'],WithStatement:['object','body'],YieldExpression:['argument']},a={},c={},f={Break:a,Skip:c},h.prototype.replace=function a(b){this.parent[this.key]=b},b.prototype.path=function a(){function e(b,a){if(g(a))for(c=0,h=a.length;c=0){if(m=q[p],f=t[m],!f)continue;if(!g(f)){h.push(new d(f,m,null,null));continue}k=f.length;while((k-=1)>=0){if(!f[k])continue;(n===i.ObjectExpression||n===i.ObjectPattern)&&'properties'===q[p]?e=new d(f[k],[m,k],'Property',null):e=new d(f[k],[m,k],null,null),h.push(e)}}}}},b.prototype.replace=function b(u,v){var m,r,o,t,f,e,q,l,s,k,w,p,n;this.__initialize(u,v),w={},m=this.__worklist,r=this.__leavelist,p={root:u},e=new d(u,null,null,new h(p,'root')),m.push(e),r.push(e);while(m.length){if(e=m.pop(),e===w){if(e=r.pop(),f=this.__execute(v.leave,e),f!==undefined&&f!==a&&f!==c&&e.ref.replace(f),this.__state===a||f===a)return p.root;continue}if(f=this.__execute(v.enter,e),f!==undefined&&f!==a&&f!==c&&(e.ref.replace(f),e.node=f),this.__state===a||f===a)return p.root;if(o=e.node,!o)continue;if(m.push(w),r.push(e),this.__state===c||f===c)continue;t=e.wrap||o.type,s=j[t],q=s.length;while((q-=1)>=0){if(n=s[q],k=o[n],!k)continue;if(!g(k)){m.push(new d(k,n,null,new h(o,n)));continue}l=k.length;while((l-=1)>=0){if(!k[l])continue;t===i.ObjectExpression&&'properties'===s[q]?e=new d(k[l],[n,l],'Property',new h(k,l)):e=new d(k[l],[n,l],null,new h(k,l)),m.push(e)}}}return p.root},e.version='1.3.3-dev',e.Syntax=i,e.traverse=k,e.replace=p,e.attachComments=o,e.VisitorKeys=j,e.VisitorOption=f,e.Controller=b})}),a('/tools/entry-point.js')}.call(this,this)) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/escodegen.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/escodegen.js deleted file mode 100644 index b95e1e6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/escodegen.js +++ /dev/null @@ -1,2283 +0,0 @@ -/* - Copyright (C) 2012-2013 Yusuke Suzuki - Copyright (C) 2012-2013 Michael Ficarra - Copyright (C) 2012-2013 Mathias Bynens - Copyright (C) 2013 Irakli Gozalishvili - Copyright (C) 2012 Robert Gust-Bardon - Copyright (C) 2012 John Freeman - Copyright (C) 2011-2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*global exports:true, generateStatement:true, generateExpression:true, require:true, global:true*/ -(function () { - 'use strict'; - - var Syntax, - Precedence, - BinaryPrecedence, - SourceNode, - estraverse, - esutils, - isArray, - base, - indent, - json, - renumber, - hexadecimal, - quotes, - escapeless, - newline, - space, - parentheses, - semicolons, - safeConcatenation, - directive, - extra, - parse, - sourceMap, - FORMAT_MINIFY, - FORMAT_DEFAULTS; - - estraverse = require('estraverse'); - esutils = require('esutils'); - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - ArrayPattern: 'ArrayPattern', - ArrowFunctionExpression: 'ArrowFunctionExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ComprehensionBlock: 'ComprehensionBlock', - ComprehensionExpression: 'ComprehensionExpression', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DirectiveStatement: 'DirectiveStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExportDeclaration: 'ExportDeclaration', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - ForOfStatement: 'ForOfStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - GeneratorExpression: 'GeneratorExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - ImportDeclaration: 'ImportDeclaration', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - ObjectPattern: 'ObjectPattern', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement', - YieldExpression: 'YieldExpression' - }; - - Precedence = { - Sequence: 0, - Yield: 1, - Assignment: 1, - Conditional: 2, - ArrowFunction: 2, - LogicalOR: 3, - LogicalAND: 4, - BitwiseOR: 5, - BitwiseXOR: 6, - BitwiseAND: 7, - Equality: 8, - Relational: 9, - BitwiseSHIFT: 10, - Additive: 11, - Multiplicative: 12, - Unary: 13, - Postfix: 14, - Call: 15, - New: 16, - Member: 17, - Primary: 18 - }; - - BinaryPrecedence = { - '||': Precedence.LogicalOR, - '&&': Precedence.LogicalAND, - '|': Precedence.BitwiseOR, - '^': Precedence.BitwiseXOR, - '&': Precedence.BitwiseAND, - '==': Precedence.Equality, - '!=': Precedence.Equality, - '===': Precedence.Equality, - '!==': Precedence.Equality, - 'is': Precedence.Equality, - 'isnt': Precedence.Equality, - '<': Precedence.Relational, - '>': Precedence.Relational, - '<=': Precedence.Relational, - '>=': Precedence.Relational, - 'in': Precedence.Relational, - 'instanceof': Precedence.Relational, - '<<': Precedence.BitwiseSHIFT, - '>>': Precedence.BitwiseSHIFT, - '>>>': Precedence.BitwiseSHIFT, - '+': Precedence.Additive, - '-': Precedence.Additive, - '*': Precedence.Multiplicative, - '%': Precedence.Multiplicative, - '/': Precedence.Multiplicative - }; - - function getDefaultOptions() { - // default options - return { - indent: null, - base: null, - parse: null, - comment: false, - format: { - indent: { - style: ' ', - base: 0, - adjustMultilineComment: false - }, - newline: '\n', - space: ' ', - json: false, - renumber: false, - hexadecimal: false, - quotes: 'single', - escapeless: false, - compact: false, - parentheses: true, - semicolons: true, - safeConcatenation: false - }, - moz: { - comprehensionExpressionStartsWithAssignment: false, - starlessGenerator: false, - parenthesizedComprehensionBlock: false - }, - sourceMap: null, - sourceMapRoot: null, - sourceMapWithCode: false, - directive: false, - raw: true, - verbatim: null - }; - } - - function stringRepeat(str, num) { - var result = ''; - - for (num |= 0; num > 0; num >>>= 1, str += str) { - if (num & 1) { - result += str; - } - } - - return result; - } - - isArray = Array.isArray; - if (!isArray) { - isArray = function isArray(array) { - return Object.prototype.toString.call(array) === '[object Array]'; - }; - } - - function hasLineTerminator(str) { - return (/[\r\n]/g).test(str); - } - - function endsWithLineTerminator(str) { - var len = str.length; - return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1)); - } - - function updateDeeply(target, override) { - var key, val; - - function isHashObject(target) { - return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp); - } - - for (key in override) { - if (override.hasOwnProperty(key)) { - val = override[key]; - if (isHashObject(val)) { - if (isHashObject(target[key])) { - updateDeeply(target[key], val); - } else { - target[key] = updateDeeply({}, val); - } - } else { - target[key] = val; - } - } - } - return target; - } - - function generateNumber(value) { - var result, point, temp, exponent, pos; - - if (value !== value) { - throw new Error('Numeric literal whose value is NaN'); - } - if (value < 0 || (value === 0 && 1 / value < 0)) { - throw new Error('Numeric literal whose value is negative'); - } - - if (value === 1 / 0) { - return json ? 'null' : renumber ? '1e400' : '1e+400'; - } - - result = '' + value; - if (!renumber || result.length < 3) { - return result; - } - - point = result.indexOf('.'); - if (!json && result.charCodeAt(0) === 0x30 /* 0 */ && point === 1) { - point = 0; - result = result.slice(1); - } - temp = result; - result = result.replace('e+', 'e'); - exponent = 0; - if ((pos = temp.indexOf('e')) > 0) { - exponent = +temp.slice(pos + 1); - temp = temp.slice(0, pos); - } - if (point >= 0) { - exponent -= temp.length - point - 1; - temp = +(temp.slice(0, point) + temp.slice(point + 1)) + ''; - } - pos = 0; - while (temp.charCodeAt(temp.length + pos - 1) === 0x30 /* 0 */) { - --pos; - } - if (pos !== 0) { - exponent -= pos; - temp = temp.slice(0, pos); - } - if (exponent !== 0) { - temp += 'e' + exponent; - } - if ((temp.length < result.length || - (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) && - +temp === value) { - result = temp; - } - - return result; - } - - // Generate valid RegExp expression. - // This function is based on https://github.com/Constellation/iv Engine - - function escapeRegExpCharacter(ch, previousIsBackslash) { - // not handling '\' and handling \u2028 or \u2029 to unicode escape sequence - if ((ch & ~1) === 0x2028) { - return (previousIsBackslash ? 'u' : '\\u') + ((ch === 0x2028) ? '2028' : '2029'); - } else if (ch === 10 || ch === 13) { // \n, \r - return (previousIsBackslash ? '' : '\\') + ((ch === 10) ? 'n' : 'r'); - } - return String.fromCharCode(ch); - } - - function generateRegExp(reg) { - var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash; - - result = reg.toString(); - - if (reg.source) { - // extract flag from toString result - match = result.match(/\/([^/]*)$/); - if (!match) { - return result; - } - - flags = match[1]; - result = ''; - - characterInBrack = false; - previousIsBackslash = false; - for (i = 0, iz = reg.source.length; i < iz; ++i) { - ch = reg.source.charCodeAt(i); - - if (!previousIsBackslash) { - if (characterInBrack) { - if (ch === 93) { // ] - characterInBrack = false; - } - } else { - if (ch === 47) { // / - result += '\\'; - } else if (ch === 91) { // [ - characterInBrack = true; - } - } - result += escapeRegExpCharacter(ch, previousIsBackslash); - previousIsBackslash = ch === 92; // \ - } else { - // if new RegExp("\\\n') is provided, create /\n/ - result += escapeRegExpCharacter(ch, previousIsBackslash); - // prevent like /\\[/]/ - previousIsBackslash = false; - } - } - - return '/' + result + '/' + flags; - } - - return result; - } - - function escapeAllowedCharacter(code, next) { - var hex, result = '\\'; - - switch (code) { - case 0x08 /* \b */: - result += 'b'; - break; - case 0x0C /* \f */: - result += 'f'; - break; - case 0x09 /* \t */: - result += 't'; - break; - default: - hex = code.toString(16).toUpperCase(); - if (json || code > 0xFF) { - result += 'u' + '0000'.slice(hex.length) + hex; - } else if (code === 0x0000 && !esutils.code.isDecimalDigit(next)) { - result += '0'; - } else if (code === 0x000B /* \v */) { // '\v' - result += 'x0B'; - } else { - result += 'x' + '00'.slice(hex.length) + hex; - } - break; - } - - return result; - } - - function escapeDisallowedCharacter(code) { - var result = '\\'; - switch (code) { - case 0x5C /* \ */: - result += '\\'; - break; - case 0x0A /* \n */: - result += 'n'; - break; - case 0x0D /* \r */: - result += 'r'; - break; - case 0x2028: - result += 'u2028'; - break; - case 0x2029: - result += 'u2029'; - break; - default: - throw new Error('Incorrectly classified character'); - } - - return result; - } - - function escapeDirective(str) { - var i, iz, code, quote; - - quote = quotes === 'double' ? '"' : '\''; - for (i = 0, iz = str.length; i < iz; ++i) { - code = str.charCodeAt(i); - if (code === 0x27 /* ' */) { - quote = '"'; - break; - } else if (code === 0x22 /* " */) { - quote = '\''; - break; - } else if (code === 0x5C /* \ */) { - ++i; - } - } - - return quote + str + quote; - } - - function escapeString(str) { - var result = '', i, len, code, singleQuotes = 0, doubleQuotes = 0, single, quote; - - for (i = 0, len = str.length; i < len; ++i) { - code = str.charCodeAt(i); - if (code === 0x27 /* ' */) { - ++singleQuotes; - } else if (code === 0x22 /* " */) { - ++doubleQuotes; - } else if (code === 0x2F /* / */ && json) { - result += '\\'; - } else if (esutils.code.isLineTerminator(code) || code === 0x5C /* \ */) { - result += escapeDisallowedCharacter(code); - continue; - } else if ((json && code < 0x20 /* SP */) || !(json || escapeless || (code >= 0x20 /* SP */ && code <= 0x7E /* ~ */))) { - result += escapeAllowedCharacter(code, str.charCodeAt(i + 1)); - continue; - } - result += String.fromCharCode(code); - } - - single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes)); - quote = single ? '\'' : '"'; - - if (!(single ? singleQuotes : doubleQuotes)) { - return quote + result + quote; - } - - str = result; - result = quote; - - for (i = 0, len = str.length; i < len; ++i) { - code = str.charCodeAt(i); - if ((code === 0x27 /* ' */ && single) || (code === 0x22 /* " */ && !single)) { - result += '\\'; - } - result += String.fromCharCode(code); - } - - return result + quote; - } - - /** - * flatten an array to a string, where the array can contain - * either strings or nested arrays - */ - function flattenToString(arr) { - var i, iz, elem, result = ''; - for (i = 0, iz = arr.length; i < iz; ++i) { - elem = arr[i]; - result += isArray(elem) ? flattenToString(elem) : elem; - } - return result; - } - - /** - * convert generated to a SourceNode when source maps are enabled. - */ - function toSourceNodeWhenNeeded(generated, node) { - if (!sourceMap) { - // with no source maps, generated is either an - // array or a string. if an array, flatten it. - // if a string, just return it - if (isArray(generated)) { - return flattenToString(generated); - } else { - return generated; - } - } - if (node == null) { - if (generated instanceof SourceNode) { - return generated; - } else { - node = {}; - } - } - if (node.loc == null) { - return new SourceNode(null, null, sourceMap, generated, node.name || null); - } - return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null); - } - - function noEmptySpace() { - return (space) ? space : ' '; - } - - function join(left, right) { - var leftSource = toSourceNodeWhenNeeded(left).toString(), - rightSource = toSourceNodeWhenNeeded(right).toString(), - leftCharCode = leftSource.charCodeAt(leftSource.length - 1), - rightCharCode = rightSource.charCodeAt(0); - - if ((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode || - esutils.code.isIdentifierPart(leftCharCode) && esutils.code.isIdentifierPart(rightCharCode) || - leftCharCode === 0x2F /* / */ && rightCharCode === 0x69 /* i */) { // infix word operators all start with `i` - return [left, noEmptySpace(), right]; - } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) || - esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) { - return [left, right]; - } - return [left, space, right]; - } - - function addIndent(stmt) { - return [base, stmt]; - } - - function withIndent(fn) { - var previousBase, result; - previousBase = base; - base += indent; - result = fn.call(this, base); - base = previousBase; - return result; - } - - function calculateSpaces(str) { - var i; - for (i = str.length - 1; i >= 0; --i) { - if (esutils.code.isLineTerminator(str.charCodeAt(i))) { - break; - } - } - return (str.length - 1) - i; - } - - function adjustMultilineComment(value, specialBase) { - var array, i, len, line, j, spaces, previousBase, sn; - - array = value.split(/\r\n|[\r\n]/); - spaces = Number.MAX_VALUE; - - // first line doesn't have indentation - for (i = 1, len = array.length; i < len; ++i) { - line = array[i]; - j = 0; - while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) { - ++j; - } - if (spaces > j) { - spaces = j; - } - } - - if (typeof specialBase !== 'undefined') { - // pattern like - // { - // var t = 20; /* - // * this is comment - // */ - // } - previousBase = base; - if (array[1][spaces] === '*') { - specialBase += ' '; - } - base = specialBase; - } else { - if (spaces & 1) { - // /* - // * - // */ - // If spaces are odd number, above pattern is considered. - // We waste 1 space. - --spaces; - } - previousBase = base; - } - - for (i = 1, len = array.length; i < len; ++i) { - sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces))); - array[i] = sourceMap ? sn.join('') : sn; - } - - base = previousBase; - - return array.join('\n'); - } - - function generateComment(comment, specialBase) { - if (comment.type === 'Line') { - if (endsWithLineTerminator(comment.value)) { - return '//' + comment.value; - } else { - // Always use LineTerminator - return '//' + comment.value + '\n'; - } - } - if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) { - return adjustMultilineComment('/*' + comment.value + '*/', specialBase); - } - return '/*' + comment.value + '*/'; - } - - function addComments(stmt, result) { - var i, len, comment, save, tailingToStatement, specialBase, fragment; - - if (stmt.leadingComments && stmt.leadingComments.length > 0) { - save = result; - - comment = stmt.leadingComments[0]; - result = []; - if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) { - result.push('\n'); - } - result.push(generateComment(comment)); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push('\n'); - } - - for (i = 1, len = stmt.leadingComments.length; i < len; ++i) { - comment = stmt.leadingComments[i]; - fragment = [generateComment(comment)]; - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - fragment.push('\n'); - } - result.push(addIndent(fragment)); - } - - result.push(addIndent(save)); - } - - if (stmt.trailingComments) { - tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); - specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString())); - for (i = 0, len = stmt.trailingComments.length; i < len; ++i) { - comment = stmt.trailingComments[i]; - if (tailingToStatement) { - // We assume target like following script - // - // var t = 20; /** - // * This is comment of t - // */ - if (i === 0) { - // first case - result = [result, indent]; - } else { - result = [result, specialBase]; - } - result.push(generateComment(comment, specialBase)); - } else { - result = [result, addIndent(generateComment(comment))]; - } - if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result = [result, '\n']; - } - } - } - - return result; - } - - function parenthesize(text, current, should) { - if (current < should) { - return ['(', text, ')']; - } - return text; - } - - function maybeBlock(stmt, semicolonOptional, functionBody) { - var result, noLeadingComment; - - noLeadingComment = !extra.comment || !stmt.leadingComments; - - if (stmt.type === Syntax.BlockStatement && noLeadingComment) { - return [space, generateStatement(stmt, { functionBody: functionBody })]; - } - - if (stmt.type === Syntax.EmptyStatement && noLeadingComment) { - return ';'; - } - - withIndent(function () { - result = [newline, addIndent(generateStatement(stmt, { semicolonOptional: semicolonOptional, functionBody: functionBody }))]; - }); - - return result; - } - - function maybeBlockSuffix(stmt, result) { - var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); - if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) { - return [result, space]; - } - if (ends) { - return [result, base]; - } - return [result, newline, base]; - } - - function generateVerbatimString(string) { - var i, iz, result; - result = string.split(/\r\n|\n/); - for (i = 1, iz = result.length; i < iz; i++) { - result[i] = newline + base + result[i]; - } - return result; - } - - function generateVerbatim(expr, option) { - var verbatim, result, prec; - verbatim = expr[extra.verbatim]; - - if (typeof verbatim === 'string') { - result = parenthesize(generateVerbatimString(verbatim), Precedence.Sequence, option.precedence); - } else { - // verbatim is object - result = generateVerbatimString(verbatim.content); - prec = (verbatim.precedence != null) ? verbatim.precedence : Precedence.Sequence; - result = parenthesize(result, prec, option.precedence); - } - - return toSourceNodeWhenNeeded(result, expr); - } - - function generateIdentifier(node) { - return toSourceNodeWhenNeeded(node.name, node); - } - - function generatePattern(node, options) { - var result; - - if (node.type === Syntax.Identifier) { - result = generateIdentifier(node); - } else { - result = generateExpression(node, { - precedence: options.precedence, - allowIn: options.allowIn, - allowCall: true - }); - } - - return result; - } - - function generateFunctionBody(node) { - var result, i, len, expr, arrow; - - arrow = node.type === Syntax.ArrowFunctionExpression; - - if (arrow && node.params.length === 1 && node.params[0].type === Syntax.Identifier) { - // arg => { } case - result = [generateIdentifier(node.params[0])]; - } else { - result = ['(']; - for (i = 0, len = node.params.length; i < len; ++i) { - result.push(generatePattern(node.params[i], { - precedence: Precedence.Assignment, - allowIn: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result.push(')'); - } - - if (arrow) { - result.push(space); - result.push('=>'); - } - - if (node.expression) { - result.push(space); - expr = generateExpression(node.body, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }); - if (expr.toString().charAt(0) === '{') { - expr = ['(', expr, ')']; - } - result.push(expr); - } else { - result.push(maybeBlock(node.body, false, true)); - } - return result; - } - - function generateIterationForStatement(operator, stmt, semicolonIsNotNeeded) { - var result = ['for' + space + '(']; - withIndent(function () { - if (stmt.left.type === Syntax.VariableDeclaration) { - withIndent(function () { - result.push(stmt.left.kind + noEmptySpace()); - result.push(generateStatement(stmt.left.declarations[0], { - allowIn: false - })); - }); - } else { - result.push(generateExpression(stmt.left, { - precedence: Precedence.Call, - allowIn: true, - allowCall: true - })); - } - - result = join(result, operator); - result = [join( - result, - generateExpression(stmt.right, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }) - ), ')']; - }); - result.push(maybeBlock(stmt.body, semicolonIsNotNeeded)); - return result; - } - - function generateLiteral(expr) { - var raw; - if (expr.hasOwnProperty('raw') && parse && extra.raw) { - try { - raw = parse(expr.raw).body[0].expression; - if (raw.type === Syntax.Literal) { - if (raw.value === expr.value) { - return expr.raw; - } - } - } catch (e) { - // not use raw property - } - } - - if (expr.value === null) { - return 'null'; - } - - if (typeof expr.value === 'string') { - return escapeString(expr.value); - } - - if (typeof expr.value === 'number') { - return generateNumber(expr.value); - } - - if (typeof expr.value === 'boolean') { - return expr.value ? 'true' : 'false'; - } - - return generateRegExp(expr.value); - } - - function generateExpression(expr, option) { - var result, - precedence, - type, - currentPrecedence, - i, - len, - fragment, - multiline, - leftCharCode, - leftSource, - rightCharCode, - allowIn, - allowCall, - allowUnparenthesizedNew, - property, - isGenerator; - - precedence = option.precedence; - allowIn = option.allowIn; - allowCall = option.allowCall; - type = expr.type || option.type; - - if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) { - return generateVerbatim(expr, option); - } - - switch (type) { - case Syntax.SequenceExpression: - result = []; - allowIn |= (Precedence.Sequence < precedence); - for (i = 0, len = expr.expressions.length; i < len; ++i) { - result.push(generateExpression(expr.expressions[i], { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result = parenthesize(result, Precedence.Sequence, precedence); - break; - - case Syntax.AssignmentExpression: - allowIn |= (Precedence.Assignment < precedence); - result = parenthesize( - [ - generateExpression(expr.left, { - precedence: Precedence.Call, - allowIn: allowIn, - allowCall: true - }), - space + expr.operator + space, - generateExpression(expr.right, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }) - ], - Precedence.Assignment, - precedence - ); - break; - - case Syntax.ArrowFunctionExpression: - allowIn |= (Precedence.ArrowFunction < precedence); - result = parenthesize(generateFunctionBody(expr), Precedence.ArrowFunction, precedence); - break; - - case Syntax.ConditionalExpression: - allowIn |= (Precedence.Conditional < precedence); - result = parenthesize( - [ - generateExpression(expr.test, { - precedence: Precedence.LogicalOR, - allowIn: allowIn, - allowCall: true - }), - space + '?' + space, - generateExpression(expr.consequent, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }), - space + ':' + space, - generateExpression(expr.alternate, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }) - ], - Precedence.Conditional, - precedence - ); - break; - - case Syntax.LogicalExpression: - case Syntax.BinaryExpression: - currentPrecedence = BinaryPrecedence[expr.operator]; - - allowIn |= (currentPrecedence < precedence); - - fragment = generateExpression(expr.left, { - precedence: currentPrecedence, - allowIn: allowIn, - allowCall: true - }); - - leftSource = fragment.toString(); - - if (leftSource.charCodeAt(leftSource.length - 1) === 0x2F /* / */ && esutils.code.isIdentifierPart(expr.operator.charCodeAt(0))) { - result = [fragment, noEmptySpace(), expr.operator]; - } else { - result = join(fragment, expr.operator); - } - - fragment = generateExpression(expr.right, { - precedence: currentPrecedence + 1, - allowIn: allowIn, - allowCall: true - }); - - if (expr.operator === '/' && fragment.toString().charAt(0) === '/' || - expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') { - // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start - result.push(noEmptySpace()); - result.push(fragment); - } else { - result = join(result, fragment); - } - - if (expr.operator === 'in' && !allowIn) { - result = ['(', result, ')']; - } else { - result = parenthesize(result, currentPrecedence, precedence); - } - - break; - - case Syntax.CallExpression: - result = [generateExpression(expr.callee, { - precedence: Precedence.Call, - allowIn: true, - allowCall: true, - allowUnparenthesizedNew: false - })]; - - result.push('('); - for (i = 0, len = expr['arguments'].length; i < len; ++i) { - result.push(generateExpression(expr['arguments'][i], { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result.push(')'); - - if (!allowCall) { - result = ['(', result, ')']; - } else { - result = parenthesize(result, Precedence.Call, precedence); - } - break; - - case Syntax.NewExpression: - len = expr['arguments'].length; - allowUnparenthesizedNew = option.allowUnparenthesizedNew === undefined || option.allowUnparenthesizedNew; - - result = join( - 'new', - generateExpression(expr.callee, { - precedence: Precedence.New, - allowIn: true, - allowCall: false, - allowUnparenthesizedNew: allowUnparenthesizedNew && !parentheses && len === 0 - }) - ); - - if (!allowUnparenthesizedNew || parentheses || len > 0) { - result.push('('); - for (i = 0; i < len; ++i) { - result.push(generateExpression(expr['arguments'][i], { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result.push(')'); - } - - result = parenthesize(result, Precedence.New, precedence); - break; - - case Syntax.MemberExpression: - result = [generateExpression(expr.object, { - precedence: Precedence.Call, - allowIn: true, - allowCall: allowCall, - allowUnparenthesizedNew: false - })]; - - if (expr.computed) { - result.push('['); - result.push(generateExpression(expr.property, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: allowCall - })); - result.push(']'); - } else { - if (expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') { - fragment = toSourceNodeWhenNeeded(result).toString(); - // When the following conditions are all true, - // 1. No floating point - // 2. Don't have exponents - // 3. The last character is a decimal digit - // 4. Not hexadecimal OR octal number literal - // we should add a floating point. - if ( - fragment.indexOf('.') < 0 && - !/[eExX]/.test(fragment) && - esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) && - !(fragment.length >= 2 && fragment.charCodeAt(0) === 48) // '0' - ) { - result.push('.'); - } - } - result.push('.'); - result.push(generateIdentifier(expr.property)); - } - - result = parenthesize(result, Precedence.Member, precedence); - break; - - case Syntax.UnaryExpression: - fragment = generateExpression(expr.argument, { - precedence: Precedence.Unary, - allowIn: true, - allowCall: true - }); - - if (space === '') { - result = join(expr.operator, fragment); - } else { - result = [expr.operator]; - if (expr.operator.length > 2) { - // delete, void, typeof - // get `typeof []`, not `typeof[]` - result = join(result, fragment); - } else { - // Prevent inserting spaces between operator and argument if it is unnecessary - // like, `!cond` - leftSource = toSourceNodeWhenNeeded(result).toString(); - leftCharCode = leftSource.charCodeAt(leftSource.length - 1); - rightCharCode = fragment.toString().charCodeAt(0); - - if (((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode) || - (esutils.code.isIdentifierPart(leftCharCode) && esutils.code.isIdentifierPart(rightCharCode))) { - result.push(noEmptySpace()); - result.push(fragment); - } else { - result.push(fragment); - } - } - } - result = parenthesize(result, Precedence.Unary, precedence); - break; - - case Syntax.YieldExpression: - if (expr.delegate) { - result = 'yield*'; - } else { - result = 'yield'; - } - if (expr.argument) { - result = join( - result, - generateExpression(expr.argument, { - precedence: Precedence.Yield, - allowIn: true, - allowCall: true - }) - ); - } - result = parenthesize(result, Precedence.Yield, precedence); - break; - - case Syntax.UpdateExpression: - if (expr.prefix) { - result = parenthesize( - [ - expr.operator, - generateExpression(expr.argument, { - precedence: Precedence.Unary, - allowIn: true, - allowCall: true - }) - ], - Precedence.Unary, - precedence - ); - } else { - result = parenthesize( - [ - generateExpression(expr.argument, { - precedence: Precedence.Postfix, - allowIn: true, - allowCall: true - }), - expr.operator - ], - Precedence.Postfix, - precedence - ); - } - break; - - case Syntax.FunctionExpression: - isGenerator = expr.generator && !extra.moz.starlessGenerator; - result = isGenerator ? 'function*' : 'function'; - - if (expr.id) { - result = [result, (isGenerator) ? space : noEmptySpace(), - generateIdentifier(expr.id), - generateFunctionBody(expr)]; - } else { - result = [result + space, generateFunctionBody(expr)]; - } - - break; - - case Syntax.ArrayPattern: - case Syntax.ArrayExpression: - if (!expr.elements.length) { - result = '[]'; - break; - } - multiline = expr.elements.length > 1; - result = ['[', multiline ? newline : '']; - withIndent(function (indent) { - for (i = 0, len = expr.elements.length; i < len; ++i) { - if (!expr.elements[i]) { - if (multiline) { - result.push(indent); - } - if (i + 1 === len) { - result.push(','); - } - } else { - result.push(multiline ? indent : ''); - result.push(generateExpression(expr.elements[i], { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - })); - } - if (i + 1 < len) { - result.push(',' + (multiline ? newline : space)); - } - } - }); - if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(multiline ? base : ''); - result.push(']'); - break; - - case Syntax.Property: - if (expr.kind === 'get' || expr.kind === 'set') { - result = [ - expr.kind, noEmptySpace(), - generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - generateFunctionBody(expr.value) - ]; - } else { - if (expr.shorthand) { - result = generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - } else if (expr.method) { - result = []; - if (expr.value.generator) { - result.push('*'); - } - result.push(generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - result.push(generateFunctionBody(expr.value)); - } else { - result = [ - generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ':' + space, - generateExpression(expr.value, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }) - ]; - } - } - break; - - case Syntax.ObjectExpression: - if (!expr.properties.length) { - result = '{}'; - break; - } - multiline = expr.properties.length > 1; - - withIndent(function () { - fragment = generateExpression(expr.properties[0], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true, - type: Syntax.Property - }); - }); - - if (!multiline) { - // issues 4 - // Do not transform from - // dejavu.Class.declare({ - // method2: function () {} - // }); - // to - // dejavu.Class.declare({method2: function () { - // }}); - if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result = [ '{', space, fragment, space, '}' ]; - break; - } - } - - withIndent(function (indent) { - result = [ '{', newline, indent, fragment ]; - - if (multiline) { - result.push(',' + newline); - for (i = 1, len = expr.properties.length; i < len; ++i) { - result.push(indent); - result.push(generateExpression(expr.properties[i], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true, - type: Syntax.Property - })); - if (i + 1 < len) { - result.push(',' + newline); - } - } - } - }); - - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(base); - result.push('}'); - break; - - case Syntax.ObjectPattern: - if (!expr.properties.length) { - result = '{}'; - break; - } - - multiline = false; - if (expr.properties.length === 1) { - property = expr.properties[0]; - if (property.value.type !== Syntax.Identifier) { - multiline = true; - } - } else { - for (i = 0, len = expr.properties.length; i < len; ++i) { - property = expr.properties[i]; - if (!property.shorthand) { - multiline = true; - break; - } - } - } - result = ['{', multiline ? newline : '' ]; - - withIndent(function (indent) { - for (i = 0, len = expr.properties.length; i < len; ++i) { - result.push(multiline ? indent : ''); - result.push(generateExpression(expr.properties[i], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + (multiline ? newline : space)); - } - } - }); - - if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(multiline ? base : ''); - result.push('}'); - break; - - case Syntax.ThisExpression: - result = 'this'; - break; - - case Syntax.Identifier: - result = generateIdentifier(expr); - break; - - case Syntax.Literal: - result = generateLiteral(expr); - break; - - case Syntax.GeneratorExpression: - case Syntax.ComprehensionExpression: - // GeneratorExpression should be parenthesized with (...), ComprehensionExpression with [...] - // Due to https://bugzilla.mozilla.org/show_bug.cgi?id=883468 position of expr.body can differ in Spidermonkey and ES6 - result = (type === Syntax.GeneratorExpression) ? ['('] : ['[']; - - if (extra.moz.comprehensionExpressionStartsWithAssignment) { - fragment = generateExpression(expr.body, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }); - - result.push(fragment); - } - - if (expr.blocks) { - withIndent(function () { - for (i = 0, len = expr.blocks.length; i < len; ++i) { - fragment = generateExpression(expr.blocks[i], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - - if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) { - result = join(result, fragment); - } else { - result.push(fragment); - } - } - }); - } - - if (expr.filter) { - result = join(result, 'if' + space); - fragment = generateExpression(expr.filter, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - if (extra.moz.parenthesizedComprehensionBlock) { - result = join(result, [ '(', fragment, ')' ]); - } else { - result = join(result, fragment); - } - } - - if (!extra.moz.comprehensionExpressionStartsWithAssignment) { - fragment = generateExpression(expr.body, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }); - - result = join(result, fragment); - } - - result.push((type === Syntax.GeneratorExpression) ? ')' : ']'); - break; - - case Syntax.ComprehensionBlock: - if (expr.left.type === Syntax.VariableDeclaration) { - fragment = [ - expr.left.kind, noEmptySpace(), - generateStatement(expr.left.declarations[0], { - allowIn: false - }) - ]; - } else { - fragment = generateExpression(expr.left, { - precedence: Precedence.Call, - allowIn: true, - allowCall: true - }); - } - - fragment = join(fragment, expr.of ? 'of' : 'in'); - fragment = join(fragment, generateExpression(expr.right, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - - if (extra.moz.parenthesizedComprehensionBlock) { - result = [ 'for' + space + '(', fragment, ')' ]; - } else { - result = join('for' + space, fragment); - } - break; - - default: - throw new Error('Unknown expression type: ' + expr.type); - } - - if (extra.comment) { - result = addComments(expr,result); - } - return toSourceNodeWhenNeeded(result, expr); - } - - function generateStatement(stmt, option) { - var i, - len, - result, - node, - specifier, - allowIn, - functionBody, - directiveContext, - fragment, - semicolon, - isGenerator; - - allowIn = true; - semicolon = ';'; - functionBody = false; - directiveContext = false; - if (option) { - allowIn = option.allowIn === undefined || option.allowIn; - if (!semicolons && option.semicolonOptional === true) { - semicolon = ''; - } - functionBody = option.functionBody; - directiveContext = option.directiveContext; - } - - switch (stmt.type) { - case Syntax.BlockStatement: - result = ['{', newline]; - - withIndent(function () { - for (i = 0, len = stmt.body.length; i < len; ++i) { - fragment = addIndent(generateStatement(stmt.body[i], { - semicolonOptional: i === len - 1, - directiveContext: functionBody - })); - result.push(fragment); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result.push(newline); - } - } - }); - - result.push(addIndent('}')); - break; - - case Syntax.BreakStatement: - if (stmt.label) { - result = 'break ' + stmt.label.name + semicolon; - } else { - result = 'break' + semicolon; - } - break; - - case Syntax.ContinueStatement: - if (stmt.label) { - result = 'continue ' + stmt.label.name + semicolon; - } else { - result = 'continue' + semicolon; - } - break; - - case Syntax.DirectiveStatement: - if (extra.raw && stmt.raw) { - result = stmt.raw + semicolon; - } else { - result = escapeDirective(stmt.directive) + semicolon; - } - break; - - case Syntax.DoWhileStatement: - // Because `do 42 while (cond)` is Syntax Error. We need semicolon. - result = join('do', maybeBlock(stmt.body)); - result = maybeBlockSuffix(stmt.body, result); - result = join(result, [ - 'while' + space + '(', - generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' + semicolon - ]); - break; - - case Syntax.CatchClause: - withIndent(function () { - var guard; - - result = [ - 'catch' + space + '(', - generateExpression(stmt.param, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - - if (stmt.guard) { - guard = generateExpression(stmt.guard, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - - result.splice(2, 0, ' if ', guard); - } - }); - result.push(maybeBlock(stmt.body)); - break; - - case Syntax.DebuggerStatement: - result = 'debugger' + semicolon; - break; - - case Syntax.EmptyStatement: - result = ';'; - break; - - case Syntax.ExportDeclaration: - result = 'export '; - if (stmt.declaration) { - // FunctionDeclaration or VariableDeclaration - result = [result, generateStatement(stmt.declaration, { semicolonOptional: semicolon === '' })]; - break; - } - break; - - case Syntax.ExpressionStatement: - result = [generateExpression(stmt.expression, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })]; - // 12.4 '{', 'function' is not allowed in this position. - // wrap expression with parentheses - fragment = toSourceNodeWhenNeeded(result).toString(); - if (fragment.charAt(0) === '{' || // ObjectExpression - (fragment.slice(0, 8) === 'function' && '* ('.indexOf(fragment.charAt(8)) >= 0) || // function or generator - (directive && directiveContext && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) { - result = ['(', result, ')' + semicolon]; - } else { - result.push(semicolon); - } - break; - - case Syntax.ImportDeclaration: - // ES6: 15.2.1 valid import declarations: - // - import ImportClause FromClause ; - // - import ModuleSpecifier ; - // If no ImportClause is present, - // this should be `import ModuleSpecifier` so skip `from` - // - // ModuleSpecifier is StringLiteral. - if (stmt.specifiers.length === 0) { - // import ModuleSpecifier ; - result = [ - 'import', - space, - generateLiteral(stmt.source) - ]; - } else { - // import ImportClause FromClause ; - if (stmt.kind === 'default') { - // import ... from "..."; - result = [ - 'import', - noEmptySpace(), - stmt.specifiers[0].id.name, - noEmptySpace() - ]; - } else { - // stmt.kind === 'named' - result = [ - 'import', - space, - '{', - ]; - - if (stmt.specifiers.length === 1) { - // import { ... } from "..."; - specifier = stmt.specifiers[0]; - result.push(space + specifier.id.name); - if (specifier.name) { - result.push(noEmptySpace() + 'as' + noEmptySpace() + specifier.name.name); - } - result.push(space + '}' + space); - } else { - // import { - // ..., - // ..., - // } from "..."; - withIndent(function (indent) { - var i, iz; - result.push(newline); - for (i = 0, iz = stmt.specifiers.length; i < iz; ++i) { - specifier = stmt.specifiers[i]; - result.push(indent + specifier.id.name); - if (specifier.name) { - result.push(noEmptySpace() + 'as' + noEmptySpace() + specifier.name.name); - } - - if (i + 1 < iz) { - result.push(',' + newline); - } - } - }); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(base + '}' + space); - } - } - - result.push('from' + space); - result.push(generateLiteral(stmt.source)); - } - result.push(semicolon); - break; - - case Syntax.VariableDeclarator: - if (stmt.init) { - result = [ - generateExpression(stmt.id, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }), - space, - '=', - space, - generateExpression(stmt.init, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }) - ]; - } else { - result = generatePattern(stmt.id, { - precedence: Precedence.Assignment, - allowIn: allowIn - }); - } - break; - - case Syntax.VariableDeclaration: - result = [stmt.kind]; - // special path for - // var x = function () { - // }; - if (stmt.declarations.length === 1 && stmt.declarations[0].init && - stmt.declarations[0].init.type === Syntax.FunctionExpression) { - result.push(noEmptySpace()); - result.push(generateStatement(stmt.declarations[0], { - allowIn: allowIn - })); - } else { - // VariableDeclarator is typed as Statement, - // but joined with comma (not LineTerminator). - // So if comment is attached to target node, we should specialize. - withIndent(function () { - node = stmt.declarations[0]; - if (extra.comment && node.leadingComments) { - result.push('\n'); - result.push(addIndent(generateStatement(node, { - allowIn: allowIn - }))); - } else { - result.push(noEmptySpace()); - result.push(generateStatement(node, { - allowIn: allowIn - })); - } - - for (i = 1, len = stmt.declarations.length; i < len; ++i) { - node = stmt.declarations[i]; - if (extra.comment && node.leadingComments) { - result.push(',' + newline); - result.push(addIndent(generateStatement(node, { - allowIn: allowIn - }))); - } else { - result.push(',' + space); - result.push(generateStatement(node, { - allowIn: allowIn - })); - } - } - }); - } - result.push(semicolon); - break; - - case Syntax.ThrowStatement: - result = [join( - 'throw', - generateExpression(stmt.argument, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }) - ), semicolon]; - break; - - case Syntax.TryStatement: - result = ['try', maybeBlock(stmt.block)]; - result = maybeBlockSuffix(stmt.block, result); - - if (stmt.handlers) { - // old interface - for (i = 0, len = stmt.handlers.length; i < len; ++i) { - result = join(result, generateStatement(stmt.handlers[i])); - if (stmt.finalizer || i + 1 !== len) { - result = maybeBlockSuffix(stmt.handlers[i].body, result); - } - } - } else { - stmt.guardedHandlers = stmt.guardedHandlers || []; - - for (i = 0, len = stmt.guardedHandlers.length; i < len; ++i) { - result = join(result, generateStatement(stmt.guardedHandlers[i])); - if (stmt.finalizer || i + 1 !== len) { - result = maybeBlockSuffix(stmt.guardedHandlers[i].body, result); - } - } - - // new interface - if (stmt.handler) { - if (isArray(stmt.handler)) { - for (i = 0, len = stmt.handler.length; i < len; ++i) { - result = join(result, generateStatement(stmt.handler[i])); - if (stmt.finalizer || i + 1 !== len) { - result = maybeBlockSuffix(stmt.handler[i].body, result); - } - } - } else { - result = join(result, generateStatement(stmt.handler)); - if (stmt.finalizer) { - result = maybeBlockSuffix(stmt.handler.body, result); - } - } - } - } - if (stmt.finalizer) { - result = join(result, ['finally', maybeBlock(stmt.finalizer)]); - } - break; - - case Syntax.SwitchStatement: - withIndent(function () { - result = [ - 'switch' + space + '(', - generateExpression(stmt.discriminant, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' + space + '{' + newline - ]; - }); - if (stmt.cases) { - for (i = 0, len = stmt.cases.length; i < len; ++i) { - fragment = addIndent(generateStatement(stmt.cases[i], {semicolonOptional: i === len - 1})); - result.push(fragment); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result.push(newline); - } - } - } - result.push(addIndent('}')); - break; - - case Syntax.SwitchCase: - withIndent(function () { - if (stmt.test) { - result = [ - join('case', generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })), - ':' - ]; - } else { - result = ['default:']; - } - - i = 0; - len = stmt.consequent.length; - if (len && stmt.consequent[0].type === Syntax.BlockStatement) { - fragment = maybeBlock(stmt.consequent[0]); - result.push(fragment); - i = 1; - } - - if (i !== len && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - - for (; i < len; ++i) { - fragment = addIndent(generateStatement(stmt.consequent[i], {semicolonOptional: i === len - 1 && semicolon === ''})); - result.push(fragment); - if (i + 1 !== len && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result.push(newline); - } - } - }); - break; - - case Syntax.IfStatement: - withIndent(function () { - result = [ - 'if' + space + '(', - generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - if (stmt.alternate) { - result.push(maybeBlock(stmt.consequent)); - result = maybeBlockSuffix(stmt.consequent, result); - if (stmt.alternate.type === Syntax.IfStatement) { - result = join(result, ['else ', generateStatement(stmt.alternate, {semicolonOptional: semicolon === ''})]); - } else { - result = join(result, join('else', maybeBlock(stmt.alternate, semicolon === ''))); - } - } else { - result.push(maybeBlock(stmt.consequent, semicolon === '')); - } - break; - - case Syntax.ForStatement: - withIndent(function () { - result = ['for' + space + '(']; - if (stmt.init) { - if (stmt.init.type === Syntax.VariableDeclaration) { - result.push(generateStatement(stmt.init, {allowIn: false})); - } else { - result.push(generateExpression(stmt.init, { - precedence: Precedence.Sequence, - allowIn: false, - allowCall: true - })); - result.push(';'); - } - } else { - result.push(';'); - } - - if (stmt.test) { - result.push(space); - result.push(generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - result.push(';'); - } else { - result.push(';'); - } - - if (stmt.update) { - result.push(space); - result.push(generateExpression(stmt.update, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - result.push(')'); - } else { - result.push(')'); - } - }); - - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - case Syntax.ForInStatement: - result = generateIterationForStatement('in', stmt, semicolon === ''); - break; - - case Syntax.ForOfStatement: - result = generateIterationForStatement('of', stmt, semicolon === ''); - break; - - case Syntax.LabeledStatement: - result = [stmt.label.name + ':', maybeBlock(stmt.body, semicolon === '')]; - break; - - case Syntax.Program: - len = stmt.body.length; - result = [safeConcatenation && len > 0 ? '\n' : '']; - for (i = 0; i < len; ++i) { - fragment = addIndent( - generateStatement(stmt.body[i], { - semicolonOptional: !safeConcatenation && i === len - 1, - directiveContext: true - }) - ); - result.push(fragment); - if (i + 1 < len && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result.push(newline); - } - } - break; - - case Syntax.FunctionDeclaration: - isGenerator = stmt.generator && !extra.moz.starlessGenerator; - result = [ - (isGenerator ? 'function*' : 'function'), - (isGenerator ? space : noEmptySpace()), - generateIdentifier(stmt.id), - generateFunctionBody(stmt) - ]; - break; - - case Syntax.ReturnStatement: - if (stmt.argument) { - result = [join( - 'return', - generateExpression(stmt.argument, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }) - ), semicolon]; - } else { - result = ['return' + semicolon]; - } - break; - - case Syntax.WhileStatement: - withIndent(function () { - result = [ - 'while' + space + '(', - generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - case Syntax.WithStatement: - withIndent(function () { - result = [ - 'with' + space + '(', - generateExpression(stmt.object, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - default: - throw new Error('Unknown statement type: ' + stmt.type); - } - - // Attach comments - - if (extra.comment) { - result = addComments(stmt, result); - } - - fragment = toSourceNodeWhenNeeded(result).toString(); - if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' && fragment.charAt(fragment.length - 1) === '\n') { - result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\s+$/, '') : fragment.replace(/\s+$/, ''); - } - - return toSourceNodeWhenNeeded(result, stmt); - } - - function generate(node, options) { - var defaultOptions = getDefaultOptions(), result, pair; - - if (options != null) { - // Obsolete options - // - // `options.indent` - // `options.base` - // - // Instead of them, we can use `option.format.indent`. - if (typeof options.indent === 'string') { - defaultOptions.format.indent.style = options.indent; - } - if (typeof options.base === 'number') { - defaultOptions.format.indent.base = options.base; - } - options = updateDeeply(defaultOptions, options); - indent = options.format.indent.style; - if (typeof options.base === 'string') { - base = options.base; - } else { - base = stringRepeat(indent, options.format.indent.base); - } - } else { - options = defaultOptions; - indent = options.format.indent.style; - base = stringRepeat(indent, options.format.indent.base); - } - json = options.format.json; - renumber = options.format.renumber; - hexadecimal = json ? false : options.format.hexadecimal; - quotes = json ? 'double' : options.format.quotes; - escapeless = options.format.escapeless; - newline = options.format.newline; - space = options.format.space; - if (options.format.compact) { - newline = space = indent = base = ''; - } - parentheses = options.format.parentheses; - semicolons = options.format.semicolons; - safeConcatenation = options.format.safeConcatenation; - directive = options.directive; - parse = json ? null : options.parse; - sourceMap = options.sourceMap; - extra = options; - - if (sourceMap) { - if (!exports.browser) { - // We assume environment is node.js - // And prevent from including source-map by browserify - SourceNode = require('source-map').SourceNode; - } else { - SourceNode = global.sourceMap.SourceNode; - } - } - - switch (node.type) { - case Syntax.BlockStatement: - case Syntax.BreakStatement: - case Syntax.CatchClause: - case Syntax.ContinueStatement: - case Syntax.DirectiveStatement: - case Syntax.DoWhileStatement: - case Syntax.DebuggerStatement: - case Syntax.EmptyStatement: - case Syntax.ExpressionStatement: - case Syntax.ForStatement: - case Syntax.ForInStatement: - case Syntax.ForOfStatement: - case Syntax.FunctionDeclaration: - case Syntax.IfStatement: - case Syntax.LabeledStatement: - case Syntax.Program: - case Syntax.ReturnStatement: - case Syntax.SwitchStatement: - case Syntax.SwitchCase: - case Syntax.ThrowStatement: - case Syntax.TryStatement: - case Syntax.VariableDeclaration: - case Syntax.VariableDeclarator: - case Syntax.WhileStatement: - case Syntax.WithStatement: - result = generateStatement(node); - break; - - case Syntax.AssignmentExpression: - case Syntax.ArrayExpression: - case Syntax.ArrayPattern: - case Syntax.BinaryExpression: - case Syntax.CallExpression: - case Syntax.ConditionalExpression: - case Syntax.FunctionExpression: - case Syntax.Identifier: - case Syntax.Literal: - case Syntax.LogicalExpression: - case Syntax.MemberExpression: - case Syntax.NewExpression: - case Syntax.ObjectExpression: - case Syntax.ObjectPattern: - case Syntax.Property: - case Syntax.SequenceExpression: - case Syntax.ThisExpression: - case Syntax.UnaryExpression: - case Syntax.UpdateExpression: - case Syntax.YieldExpression: - - result = generateExpression(node, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - break; - - default: - throw new Error('Unknown node type: ' + node.type); - } - - if (!sourceMap) { - pair = {code: result.toString(), map: null}; - return options.sourceMapWithCode ? pair : pair.code; - } - - - pair = result.toStringWithSourceMap({ - file: options.file, - sourceRoot: options.sourceMapRoot - }); - - if (options.sourceContent) { - pair.map.setSourceContent(options.sourceMap, - options.sourceContent); - } - - if (options.sourceMapWithCode) { - return pair; - } - - return pair.map.toString(); - } - - FORMAT_MINIFY = { - indent: { - style: '', - base: 0 - }, - renumber: true, - hexadecimal: true, - quotes: 'auto', - escapeless: true, - compact: true, - parentheses: false, - semicolons: false - }; - - FORMAT_DEFAULTS = getDefaultOptions().format; - - exports.version = require('./package.json').version; - exports.generate = generate; - exports.attachComments = estraverse.attachComments; - exports.Precedence = updateDeeply({}, Precedence); - exports.browser = false; - exports.FORMAT_MINIFY = FORMAT_MINIFY; - exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/gulpfile.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/gulpfile.js deleted file mode 100644 index 50f7df4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/gulpfile.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2014 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -'use strict'; - -var gulp = require('gulp'); -var mocha = require('gulp-mocha'); -var jshint = require('gulp-jshint'); -var eslint = require('gulp-eslint'); - -var TEST = [ 'test/*.js' ]; - -var LINT = [ - 'gulpfile.js', - 'escodegen.js' -]; - -var ESLINT_OPTION = { - 'rulesdir': 'tools/rules/', - 'rules': { - 'push-with-multiple-arguments': 2, - 'quotes': 0, - 'eqeqeq': 0, - 'no-use-before-define': 0, - 'no-shadow': 0 - }, - 'env': { - 'node': true - } -}; - -gulp.task('test', function () { - return gulp.src(TEST).pipe(mocha({ reporter: 'spec' })); -}); - -gulp.task('lint', function () { - return gulp.src(LINT) - .pipe(jshint('.jshintrc')) - .pipe(jshint.reporter(require('jshint-stylish'))) - .pipe(jshint.reporter('fail')) - .pipe(eslint(ESLINT_OPTION)) - .pipe(eslint.formatEach('compact', process.stderr)); -}); - -gulp.task('travis', [ 'lint', 'test' ]); -gulp.task('default', [ 'travis' ]); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/.bin/esparse b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/.bin/esparse deleted file mode 100755 index 5603666..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/.bin/esparse +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -// Special handling for regular expression literal since we need to -// convert it to a string literal, otherwise it will be decoded -// as object "{}" and the regular expression would be lost. -function adjustRegexLiteral(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return value; -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, adjustRegexLiteral, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/.bin/esvalidate b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/.bin/esvalidate deleted file mode 100755 index dddd8a2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/.bin/esvalidate +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ -/*global phantom:true */ - -var fs, system, esprima, options, fnames, count; - -if (typeof esprima === 'undefined') { - // PhantomJS can only require() relative files - if (typeof phantom === 'object') { - fs = require('fs'); - system = require('system'); - esprima = require('./esprima'); - } else if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); - } else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } - } -} - -// Shims to Node.js objects when running under PhantomJS 1.7+. -if (typeof phantom === 'object') { - fs.readFileSync = fs.read; - process = { - argv: [].slice.call(system.args), - exit: phantom.exit - }; - process.argv.unshift('phantomjs'); -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} - -if (count === 0 && typeof phantom === 'object') { - process.exit(0); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/README.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/README.md deleted file mode 100644 index afaf6d1..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/README.md +++ /dev/null @@ -1,24 +0,0 @@ -**Esprima** ([esprima.org](http://esprima.org), BSD license) is a high performance, -standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -parser written in ECMAScript (also popularly known as -[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)). -Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat), -with the help of [many contributors](https://github.com/ariya/esprima/contributors). - -### Features - -- Full support for ECMAScript 5.1 ([ECMA-262](http://www.ecma-international.org/publications/standards/Ecma-262.htm)) -- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla -[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) -- Optional tracking of syntax node location (index-based and line-column) -- Heavily tested (> 600 [unit tests](http://esprima.org/test/) with solid statement and branch coverage) -- Experimental support for ES6/Harmony (module, class, destructuring, ...) - -Esprima serves as a **building block** for some JavaScript -language tools, from [code instrumentation](http://esprima.org/demo/functiontrace.html) -to [editor autocompletion](http://esprima.org/demo/autocomplete.html). - -Esprima runs on many popular web browsers, as well as other ECMAScript platforms such as -[Rhino](http://www.mozilla.org/rhino) and [Node.js](https://npmjs.org/package/esprima). - -For more information, check the web site [esprima.org](http://esprima.org). diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/bin/esparse.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/bin/esparse.js deleted file mode 100755 index 5603666..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/bin/esparse.js +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -// Special handling for regular expression literal since we need to -// convert it to a string literal, otherwise it will be decoded -// as object "{}" and the regular expression would be lost. -function adjustRegexLiteral(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return value; -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, adjustRegexLiteral, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/bin/esvalidate.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/bin/esvalidate.js deleted file mode 100755 index dddd8a2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/bin/esvalidate.js +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ -/*global phantom:true */ - -var fs, system, esprima, options, fnames, count; - -if (typeof esprima === 'undefined') { - // PhantomJS can only require() relative files - if (typeof phantom === 'object') { - fs = require('fs'); - system = require('system'); - esprima = require('./esprima'); - } else if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); - } else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } - } -} - -// Shims to Node.js objects when running under PhantomJS 1.7+. -if (typeof phantom === 'object') { - fs.readFileSync = fs.read; - process = { - argv: [].slice.call(system.args), - exit: phantom.exit - }; - process.argv.unshift('phantomjs'); -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} - -if (count === 0 && typeof phantom === 'object') { - process.exit(0); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/esprima.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/esprima.js deleted file mode 100644 index 7e79bf8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/esprima.js +++ /dev/null @@ -1,3830 +0,0 @@ -/* - Copyright (C) 2013 Ariya Hidayat - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, define:true, exports:true, window: true, -createLocationMarker: true, -throwError: true, generateStatement: true, peek: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseUnaryExpression: true, -parseStatement: true, parseSourceElement: true */ - -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // Rhino, and plain browser loading. - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.esprima = {})); - } -}(this, function (exports) { - 'use strict'; - - var Token, - TokenName, - FnExprTokens, - Syntax, - PropertyKind, - Messages, - Regex, - SyntaxTreeDelegate, - source, - strict, - index, - lineNumber, - lineStart, - length, - delegate, - lookahead, - state, - extra; - - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8, - RegularExpression: 9 - }; - - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - TokenName[Token.RegularExpression] = 'RegularExpression'; - - // A function following one of those tokens is an expression. - FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', - 'return', 'case', 'delete', 'throw', 'void', - // assignment operators - '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', - '&=', '|=', '^=', ',', - // binary/unary operators - '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', - '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', - '<=', '<', '>', '!=', '!==']; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; - - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; - - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - MultipleDefaultsInSwitch: 'More than one default clause in switch statement', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), - NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') - }; - - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. - - function assert(condition, message) { - if (!condition) { - throw new Error('ASSERT: ' + message); - } - } - - function isDecimalDigit(ch) { - return (ch >= 48 && ch <= 57); // 0..9 - } - - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; - } - - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } - - - // 7.2 White Space - - function isWhiteSpace(ch) { - return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || - (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); - } - - // 7.6 Identifier Names and Identifiers - - function isIdentifierStart(ch) { - return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) - (ch >= 0x41 && ch <= 0x5A) || // A..Z - (ch >= 0x61 && ch <= 0x7A) || // a..z - (ch === 0x5C) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); - } - - function isIdentifierPart(ch) { - return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) - (ch >= 0x41 && ch <= 0x5A) || // A..Z - (ch >= 0x61 && ch <= 0x7A) || // a..z - (ch >= 0x30 && ch <= 0x39) || // 0..9 - (ch === 0x5C) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); - } - - // 7.6.1.2 Future Reserved Words - - function isFutureReservedWord(id) { - switch (id) { - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - default: - return false; - } - } - - function isStrictModeReservedWord(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - default: - return false; - } - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - // 7.6.1.1 Keywords - - function isKeyword(id) { - if (strict && isStrictModeReservedWord(id)) { - return true; - } - - // 'const' is specialized as Keyword in V8. - // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. - // Some others are from future reserved words. - - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || - (id === 'try') || (id === 'let'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } - - // 7.4 Comments - - function addComment(type, value, start, end, loc) { - var comment, attacher; - - assert(typeof start === 'number', 'Comment must have valid position'); - - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (state.lastCommentStart >= start) { - return; - } - state.lastCommentStart = start; - - comment = { - type: type, - value: value - }; - if (extra.range) { - comment.range = [start, end]; - } - if (extra.loc) { - comment.loc = loc; - } - extra.comments.push(comment); - - if (extra.attachComment) { - attacher = { - comment: comment, - leading: null, - trailing: null, - range: [start, end] - }; - extra.pendingComments.push(attacher); - } - } - - function skipSingleLineComment(offset) { - var start, loc, ch, comment; - - start = index - offset; - loc = { - start: { - line: lineNumber, - column: index - lineStart - offset - } - }; - - while (index < length) { - ch = source.charCodeAt(index); - ++index; - if (isLineTerminator(ch)) { - if (extra.comments) { - comment = source.slice(start + offset, index - 1); - loc.end = { - line: lineNumber, - column: index - lineStart - 1 - }; - addComment('Line', comment, start, index - 1, loc); - } - if (ch === 13 && source.charCodeAt(index) === 10) { - ++index; - } - ++lineNumber; - lineStart = index; - return; - } - } - - if (extra.comments) { - comment = source.slice(start + offset, index); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Line', comment, start, index, loc); - } - } - - function skipMultiLineComment() { - var start, loc, ch, comment; - - if (extra.comments) { - start = index - 2; - loc = { - start: { - line: lineNumber, - column: index - lineStart - 2 - } - }; - } - - while (index < length) { - ch = source.charCodeAt(index); - if (isLineTerminator(ch)) { - if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else if (ch === 0x2A) { - // Block comment ends with '*/'. - if (source.charCodeAt(index + 1) === 0x2F) { - ++index; - ++index; - if (extra.comments) { - comment = source.slice(start + 2, index - 2); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Block', comment, start, index, loc); - } - return; - } - ++index; - } else { - ++index; - } - } - - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - function skipComment() { - var ch, start; - - start = (index === 0); - while (index < length) { - ch = source.charCodeAt(index); - - if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { - ++index; - } - ++lineNumber; - lineStart = index; - start = true; - } else if (ch === 0x2F) { // U+002F is '/' - ch = source.charCodeAt(index + 1); - if (ch === 0x2F) { - ++index; - ++index; - skipSingleLineComment(2); - start = true; - } else if (ch === 0x2A) { // U+002A is '*' - ++index; - ++index; - skipMultiLineComment(); - } else { - break; - } - } else if (start && ch === 0x2D) { // U+002D is '-' - // U+003E is '>' - if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { - // '-->' is a single-line comment - index += 3; - skipSingleLineComment(3); - } else { - break; - } - } else if (ch === 0x3C) { // U+003C is '<' - if (source.slice(index + 1, index + 4) === '!--') { - ++index; // `<` - ++index; // `!` - ++index; // `-` - ++index; // `-` - skipSingleLineComment(4); - } else { - break; - } - } else { - break; - } - } - } - - function scanHexEscape(prefix) { - var i, len, ch, code = 0; - - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; - } - } - return String.fromCharCode(code); - } - - function getEscapedIdentifier() { - var ch, id; - - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); - - // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - id = ch; - } - - while (index < length) { - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) { - break; - } - ++index; - id += String.fromCharCode(ch); - - // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - id += ch; - } - } - - return id; - } - - function getIdentifier() { - var start, ch; - - start = index++; - while (index < length) { - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) { - ++index; - } else { - break; - } - } - - return source.slice(start, index); - } - - function scanIdentifier() { - var start, id, type; - - start = index; - - // Backslash (U+005C) starts an escaped character. - id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier(); - - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - type = Token.Identifier; - } else if (isKeyword(id)) { - type = Token.Keyword; - } else if (id === 'null') { - type = Token.NullLiteral; - } else if (id === 'true' || id === 'false') { - type = Token.BooleanLiteral; - } else { - type = Token.Identifier; - } - - return { - type: type, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - - // 7.7 Punctuators - - function scanPunctuator() { - var start = index, - code = source.charCodeAt(index), - code2, - ch1 = source[index], - ch2, - ch3, - ch4; - - switch (code) { - - // Check for most common single-character punctuators. - case 0x2E: // . dot - case 0x28: // ( open bracket - case 0x29: // ) close bracket - case 0x3B: // ; semicolon - case 0x2C: // , comma - case 0x7B: // { open curly brace - case 0x7D: // } close curly brace - case 0x5B: // [ - case 0x5D: // ] - case 0x3A: // : - case 0x3F: // ? - case 0x7E: // ~ - ++index; - if (extra.tokenize) { - if (code === 0x28) { - extra.openParenToken = extra.tokens.length; - } else if (code === 0x7B) { - extra.openCurlyToken = extra.tokens.length; - } - } - return { - type: Token.Punctuator, - value: String.fromCharCode(code), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - - default: - code2 = source.charCodeAt(index + 1); - - // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) { - switch (code) { - case 0x25: // % - case 0x26: // & - case 0x2A: // *: - case 0x2B: // + - case 0x2D: // - - case 0x2F: // / - case 0x3C: // < - case 0x3E: // > - case 0x5E: // ^ - case 0x7C: // | - index += 2; - return { - type: Token.Punctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - - case 0x21: // ! - case 0x3D: // = - index += 2; - - // !== and === - if (source.charCodeAt(index) === 0x3D) { - ++index; - } - return { - type: Token.Punctuator, - value: source.slice(start, index), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - default: - break; - } - } - break; - } - - // Peek more characters. - - ch2 = source[index + 1]; - ch3 = source[index + 2]; - ch4 = source[index + 3]; - - // 4-character punctuator: >>>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - if (ch4 === '=') { - index += 4; - return { - type: Token.Punctuator, - value: '>>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 3-character punctuators: === !== >>> <<= >>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - index += 3; - return { - type: Token.Punctuator, - value: '>>>', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '<' && ch2 === '<' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '<<=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Other 2-character punctuators: ++ -- << >> && || - - if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - // 7.8.3 Numeric Literals - - function scanHexLiteral(start) { - var number = ''; - - while (index < length) { - if (!isHexDigit(source[index])) { - break; - } - number += source[index++]; - } - - if (number.length === 0) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.NumericLiteral, - value: parseInt('0x' + number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanOctalLiteral(start) { - var number = '0' + source[index++]; - while (index < length) { - if (!isOctalDigit(source[index])) { - break; - } - number += source[index++]; - } - - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanNumericLiteral() { - var number, start, ch; - - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); - - start = index; - number = ''; - if (ch !== '.') { - number = source[index++]; - ch = source[index]; - - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) { - return scanOctalLiteral(start); - } - - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } - - if (ch === '.') { - number += source[index++]; - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } - - if (ch === 'e' || ch === 'E') { - number += source[index++]; - - ch = source[index]; - if (ch === '+' || ch === '-') { - number += source[index++]; - } - if (isDecimalDigit(source.charCodeAt(index))) { - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - } else { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.4 String Literals - - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false; - - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); - - start = index; - ++index; - - while (index < length) { - ch = source[index++]; - - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) { - switch (ch) { - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\x0B'; - break; - - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); - - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } - - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(source[index++]); - - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(source[index++]); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - lineStart = index; - } - } else if (isLineTerminator(ch.charCodeAt(0))) { - break; - } else { - str += ch; - } - } - - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.StringLiteral, - value: str, - octal: octal, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanRegExp() { - var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; - - lookahead = null; - skipComment(); - - start = index; - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = source[index++]; - - while (index < length) { - ch = source[index++]; - str += ch; - if (ch === '\\') { - ch = source[index++]; - // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } else if (classMarker) { - if (ch === ']') { - classMarker = false; - } - } else { - if (ch === '/') { - terminated = true; - break; - } else if (ch === '[') { - classMarker = true; - } - } - } - - if (!terminated) { - throwError({}, Messages.UnterminatedRegExp); - } - - // Exclude leading and trailing slash. - pattern = str.substr(1, str.length - 2); - - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) { - break; - } - - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - for (str += '\\u'; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - } else { - str += '\\'; - } - } else { - flags += ch; - str += ch; - } - } - - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); - } - - - - if (extra.tokenize) { - return { - type: Token.RegularExpression, - value: value, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - return { - literal: str, - value: value, - range: [start, index] - }; - } - - function collectRegex() { - var pos, loc, regex, token; - - skipComment(); - - pos = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - regex = scanRegExp(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - if (!extra.tokenize) { - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } - } - - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index], - loc: loc - }); - } - - return regex; - } - - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } - - function advanceSlash() { - var prevToken, - checkToken; - // Using the following algorithm: - // https://github.com/mozilla/sweet.js/wiki/design - prevToken = extra.tokens[extra.tokens.length - 1]; - if (!prevToken) { - // Nothing before that: it cannot be a division. - return collectRegex(); - } - if (prevToken.type === 'Punctuator') { - if (prevToken.value === ']') { - return scanPunctuator(); - } - if (prevToken.value === ')') { - checkToken = extra.tokens[extra.openParenToken - 1]; - if (checkToken && - checkToken.type === 'Keyword' && - (checkToken.value === 'if' || - checkToken.value === 'while' || - checkToken.value === 'for' || - checkToken.value === 'with')) { - return collectRegex(); - } - return scanPunctuator(); - } - if (prevToken.value === '}') { - // Dividing a function by anything makes little sense, - // but we have to check for that. - if (extra.tokens[extra.openCurlyToken - 3] && - extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { - // Anonymous function. - checkToken = extra.tokens[extra.openCurlyToken - 4]; - if (!checkToken) { - return scanPunctuator(); - } - } else if (extra.tokens[extra.openCurlyToken - 4] && - extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { - // Named function. - checkToken = extra.tokens[extra.openCurlyToken - 5]; - if (!checkToken) { - return collectRegex(); - } - } else { - return scanPunctuator(); - } - // checkToken determines whether the function is - // a declaration or an expression. - if (FnExprTokens.indexOf(checkToken.value) >= 0) { - // It is an expression. - return scanPunctuator(); - } - // It is a declaration. - return collectRegex(); - } - return collectRegex(); - } - if (prevToken.type === 'Keyword') { - return collectRegex(); - } - return scanPunctuator(); - } - - function advance() { - var ch; - - skipComment(); - - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - range: [index, index] - }; - } - - ch = source.charCodeAt(index); - - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3A) { - return scanPunctuator(); - } - - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) { - return scanStringLiteral(); - } - - if (isIdentifierStart(ch)) { - return scanIdentifier(); - } - - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) { - return scanNumericLiteral(); - } - return scanPunctuator(); - } - - if (isDecimalDigit(ch)) { - return scanNumericLiteral(); - } - - // Slash (/) U+002F can also start a regex. - if (extra.tokenize && ch === 0x2F) { - return advanceSlash(); - } - - return scanPunctuator(); - } - - function collectToken() { - var start, loc, token, range, value; - - skipComment(); - start = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - token = advance(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - if (token.type !== Token.EOF) { - range = [token.range[0], token.range[1]]; - value = source.slice(token.range[0], token.range[1]); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: range, - loc: loc - }); - } - - return token; - } - - function lex() { - var token; - - token = lookahead; - index = token.range[1]; - lineNumber = token.lineNumber; - lineStart = token.lineStart; - - lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); - - index = token.range[1]; - lineNumber = token.lineNumber; - lineStart = token.lineStart; - - return token; - } - - function peek() { - var pos, line, start; - - pos = index; - line = lineNumber; - start = lineStart; - lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); - index = pos; - lineNumber = line; - lineStart = start; - } - - SyntaxTreeDelegate = { - - name: 'SyntaxTree', - - markStart: function () { - skipComment(); - if (extra.loc) { - state.markerStack.push(index - lineStart); - state.markerStack.push(lineNumber); - } - if (extra.range) { - state.markerStack.push(index); - } - }, - - processComment: function (node) { - var i, attacher, pos, len, candidate; - - if (typeof node.type === 'undefined' || node.type === Syntax.Program) { - return; - } - - // Check for possible additional trailing comments. - peek(); - - for (i = 0; i < extra.pendingComments.length; ++i) { - attacher = extra.pendingComments[i]; - if (node.range[0] >= attacher.comment.range[1]) { - candidate = attacher.leading; - if (candidate) { - pos = candidate.range[0]; - len = candidate.range[1] - pos; - if (node.range[0] <= pos && (node.range[1] - node.range[0] >= len)) { - attacher.leading = node; - } - } else { - attacher.leading = node; - } - } - if (node.range[1] <= attacher.comment.range[0]) { - candidate = attacher.trailing; - if (candidate) { - pos = candidate.range[0]; - len = candidate.range[1] - pos; - if (node.range[0] <= pos && (node.range[1] - node.range[0] >= len)) { - attacher.trailing = node; - } - } else { - attacher.trailing = node; - } - } - } - }, - - markEnd: function (node) { - if (extra.range) { - node.range = [state.markerStack.pop(), index]; - } - if (extra.loc) { - node.loc = { - start: { - line: state.markerStack.pop(), - column: state.markerStack.pop() - }, - end: { - line: lineNumber, - column: index - lineStart - } - }; - this.postProcess(node); - } - if (extra.attachComment) { - this.processComment(node); - } - return node; - }, - - markEndIf: function (node) { - if (node.range || node.loc) { - if (extra.loc) { - state.markerStack.pop(); - state.markerStack.pop(); - } - if (extra.range) { - state.markerStack.pop(); - } - } else { - this.markEnd(node); - } - return node; - }, - - postProcess: function (node) { - if (extra.source) { - node.loc.source = extra.source; - } - return node; - }, - - createArrayExpression: function (elements) { - return { - type: Syntax.ArrayExpression, - elements: elements - }; - }, - - createAssignmentExpression: function (operator, left, right) { - return { - type: Syntax.AssignmentExpression, - operator: operator, - left: left, - right: right - }; - }, - - createBinaryExpression: function (operator, left, right) { - var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : - Syntax.BinaryExpression; - return { - type: type, - operator: operator, - left: left, - right: right - }; - }, - - createBlockStatement: function (body) { - return { - type: Syntax.BlockStatement, - body: body - }; - }, - - createBreakStatement: function (label) { - return { - type: Syntax.BreakStatement, - label: label - }; - }, - - createCallExpression: function (callee, args) { - return { - type: Syntax.CallExpression, - callee: callee, - 'arguments': args - }; - }, - - createCatchClause: function (param, body) { - return { - type: Syntax.CatchClause, - param: param, - body: body - }; - }, - - createConditionalExpression: function (test, consequent, alternate) { - return { - type: Syntax.ConditionalExpression, - test: test, - consequent: consequent, - alternate: alternate - }; - }, - - createContinueStatement: function (label) { - return { - type: Syntax.ContinueStatement, - label: label - }; - }, - - createDebuggerStatement: function () { - return { - type: Syntax.DebuggerStatement - }; - }, - - createDoWhileStatement: function (body, test) { - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - }, - - createEmptyStatement: function () { - return { - type: Syntax.EmptyStatement - }; - }, - - createExpressionStatement: function (expression) { - return { - type: Syntax.ExpressionStatement, - expression: expression - }; - }, - - createForStatement: function (init, test, update, body) { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - }, - - createForInStatement: function (left, right, body) { - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - }, - - createFunctionDeclaration: function (id, params, defaults, body) { - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, - - createFunctionExpression: function (id, params, defaults, body) { - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, - - createIdentifier: function (name) { - return { - type: Syntax.Identifier, - name: name - }; - }, - - createIfStatement: function (test, consequent, alternate) { - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - }, - - createLabeledStatement: function (label, body) { - return { - type: Syntax.LabeledStatement, - label: label, - body: body - }; - }, - - createLiteral: function (token) { - return { - type: Syntax.Literal, - value: token.value, - raw: source.slice(token.range[0], token.range[1]) - }; - }, - - createMemberExpression: function (accessor, object, property) { - return { - type: Syntax.MemberExpression, - computed: accessor === '[', - object: object, - property: property - }; - }, - - createNewExpression: function (callee, args) { - return { - type: Syntax.NewExpression, - callee: callee, - 'arguments': args - }; - }, - - createObjectExpression: function (properties) { - return { - type: Syntax.ObjectExpression, - properties: properties - }; - }, - - createPostfixExpression: function (operator, argument) { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: false - }; - }, - - createProgram: function (body) { - return { - type: Syntax.Program, - body: body - }; - }, - - createProperty: function (kind, key, value) { - return { - type: Syntax.Property, - key: key, - value: value, - kind: kind - }; - }, - - createReturnStatement: function (argument) { - return { - type: Syntax.ReturnStatement, - argument: argument - }; - }, - - createSequenceExpression: function (expressions) { - return { - type: Syntax.SequenceExpression, - expressions: expressions - }; - }, - - createSwitchCase: function (test, consequent) { - return { - type: Syntax.SwitchCase, - test: test, - consequent: consequent - }; - }, - - createSwitchStatement: function (discriminant, cases) { - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - }, - - createThisExpression: function () { - return { - type: Syntax.ThisExpression - }; - }, - - createThrowStatement: function (argument) { - return { - type: Syntax.ThrowStatement, - argument: argument - }; - }, - - createTryStatement: function (block, guardedHandlers, handlers, finalizer) { - return { - type: Syntax.TryStatement, - block: block, - guardedHandlers: guardedHandlers, - handlers: handlers, - finalizer: finalizer - }; - }, - - createUnaryExpression: function (operator, argument) { - if (operator === '++' || operator === '--') { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: true - }; - } - return { - type: Syntax.UnaryExpression, - operator: operator, - argument: argument, - prefix: true - }; - }, - - createVariableDeclaration: function (declarations, kind) { - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - }, - - createVariableDeclarator: function (id, init) { - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - }, - - createWhileStatement: function (test, body) { - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - }, - - createWithStatement: function (object, body) { - return { - type: Syntax.WithStatement, - object: object, - body: body - }; - } - }; - - // Return true if there is a line terminator before the next token. - - function peekLineTerminator() { - var pos, line, start, found; - - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; - - return found; - } - - // Throw an exception - - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - assert(index < args.length, 'Message reference must be in range'); - return args[index]; - } - ); - - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.range[0]; - error.lineNumber = token.lineNumber; - error.column = token.range[0] - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; - } - - error.description = msg; - throw error; - } - - function throwErrorTolerant() { - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; - } - } - } - - - // Throw an exception because of the token. - - function throwUnexpected(token) { - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); - } - - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); - } - - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); - } - - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); - } - - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictReservedWord); - return; - } - throwError(token, Messages.UnexpectedToken, token.value); - } - - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); - } - - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. - - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); - } - } - - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. - - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); - } - } - - // Return true if the next token matches the specified punctuator. - - function match(value) { - return lookahead.type === Token.Punctuator && lookahead.value === value; - } - - // Return true if the next token matches the specified keyword - - function matchKeyword(keyword) { - return lookahead.type === Token.Keyword && lookahead.value === keyword; - } - - // Return true if the next token is an assignment operator - - function matchAssign() { - var op; - - if (lookahead.type !== Token.Punctuator) { - return false; - } - op = lookahead.value; - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; - } - - function consumeSemicolon() { - var line; - - // Catch the very common case first: immediately a semicolon (U+003B). - if (source.charCodeAt(index) === 0x3B) { - lex(); - return; - } - - line = lineNumber; - skipComment(); - if (lineNumber !== line) { - return; - } - - if (match(';')) { - lex(); - return; - } - - if (lookahead.type !== Token.EOF && !match('}')) { - throwUnexpected(lookahead); - } - } - - // Return true if provided expression is LeftHandSideExpression - - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } - - // 11.1.4 Array Initialiser - - function parseArrayInitialiser() { - var elements = []; - - expect('['); - - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(null); - } else { - elements.push(parseAssignmentExpression()); - - if (!match(']')) { - expect(','); - } - } - } - - expect(']'); - - return delegate.createArrayExpression(elements); - } - - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body; - - previousStrict = strict; - delegate.markStart(); - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwErrorTolerant(first, Messages.StrictParamName); - } - strict = previousStrict; - return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body)); - } - - function parseObjectPropertyKey() { - var token; - - delegate.markStart(); - token = lex(); - - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return delegate.markEnd(delegate.createLiteral(token)); - } - - return delegate.markEnd(delegate.createIdentifier(token.value)); - } - - function parseObjectProperty() { - var token, key, id, value, param; - - token = lookahead; - delegate.markStart(); - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); - - // Property Assignment: Getter and Setter. - - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - value = parsePropertyFunction([]); - return delegate.markEnd(delegate.createProperty('get', key, value)); - } - if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead; - if (token.type !== Token.Identifier) { - expect(')'); - throwErrorTolerant(token, Messages.UnexpectedToken, token.value); - value = parsePropertyFunction([]); - } else { - param = [ parseVariableIdentifier() ]; - expect(')'); - value = parsePropertyFunction(param, token); - } - return delegate.markEnd(delegate.createProperty('set', key, value)); - } - expect(':'); - value = parseAssignmentExpression(); - return delegate.markEnd(delegate.createProperty('init', id, value)); - } - if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - value = parseAssignmentExpression(); - return delegate.markEnd(delegate.createProperty('init', key, value)); - } - } - - function parseObjectInitialiser() { - var properties = [], property, name, key, kind, map = {}, toString = String; - - expect('{'); - - while (!match('}')) { - property = parseObjectProperty(); - - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); - } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - - key = '$' + name; - if (Object.prototype.hasOwnProperty.call(map, key)) { - if (map[key] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } else if (map[key] & kind) { - throwErrorTolerant({}, Messages.AccessorGetSet); - } - } - map[key] |= kind; - } else { - map[key] = kind; - } - - properties.push(property); - - if (!match('}')) { - expect(','); - } - } - - expect('}'); - - return delegate.createObjectExpression(properties); - } - - // 11.1.6 The Grouping Operator - - function parseGroupExpression() { - var expr; - - expect('('); - - expr = parseExpression(); - - expect(')'); - - return expr; - } - - - // 11.1 Primary Expressions - - function parsePrimaryExpression() { - var type, token, expr; - - if (match('(')) { - return parseGroupExpression(); - } - - type = lookahead.type; - delegate.markStart(); - - if (type === Token.Identifier) { - expr = delegate.createIdentifier(lex().value); - } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && lookahead.octal) { - throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); - } - expr = delegate.createLiteral(lex()); - } else if (type === Token.Keyword) { - if (matchKeyword('this')) { - lex(); - expr = delegate.createThisExpression(); - } else if (matchKeyword('function')) { - expr = parseFunctionExpression(); - } - } else if (type === Token.BooleanLiteral) { - token = lex(); - token.value = (token.value === 'true'); - expr = delegate.createLiteral(token); - } else if (type === Token.NullLiteral) { - token = lex(); - token.value = null; - expr = delegate.createLiteral(token); - } else if (match('[')) { - expr = parseArrayInitialiser(); - } else if (match('{')) { - expr = parseObjectInitialiser(); - } else if (match('/') || match('/=')) { - if (typeof extra.tokens !== 'undefined') { - expr = delegate.createLiteral(collectRegex()); - } else { - expr = delegate.createLiteral(scanRegExp()); - } - peek(); - } - - if (expr) { - return delegate.markEnd(expr); - } - - throwUnexpected(lex()); - } - - // 11.2 Left-Hand-Side Expressions - - function parseArguments() { - var args = []; - - expect('('); - - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return args; - } - - function parseNonComputedProperty() { - var token; - - delegate.markStart(); - token = lex(); - - if (!isIdentifierName(token)) { - throwUnexpected(token); - } - - return delegate.markEnd(delegate.createIdentifier(token.value)); - } - - function parseNonComputedMember() { - expect('.'); - - return parseNonComputedProperty(); - } - - function parseComputedMember() { - var expr; - - expect('['); - - expr = parseExpression(); - - expect(']'); - - return expr; - } - - function parseNewExpression() { - var callee, args; - - delegate.markStart(); - expectKeyword('new'); - callee = parseLeftHandSideExpression(); - args = match('(') ? parseArguments() : []; - - return delegate.markEnd(delegate.createNewExpression(callee, args)); - } - - function parseLeftHandSideExpressionAllowCall() { - var marker, previousAllowIn, expr, args, property; - - marker = createLocationMarker(); - - previousAllowIn = state.allowIn; - state.allowIn = true; - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - state.allowIn = previousAllowIn; - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - args = parseArguments(); - expr = delegate.createCallExpression(expr, args); - } else if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - } - if (marker) { - marker.apply(expr); - } - } - - return expr; - } - - function parseLeftHandSideExpression() { - var marker, previousAllowIn, expr, property; - - marker = createLocationMarker(); - - previousAllowIn = state.allowIn; - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - state.allowIn = previousAllowIn; - - while (match('.') || match('[')) { - if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - } - if (marker) { - marker.apply(expr); - } - } - - return expr; - } - - // 11.3 Postfix Expressions - - function parsePostfixExpression() { - var expr, token; - - delegate.markStart(); - expr = parseLeftHandSideExpressionAllowCall(); - - if (lookahead.type === Token.Punctuator) { - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPostfix); - } - - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - token = lex(); - expr = delegate.createPostfixExpression(token.value, expr); - } - } - - return delegate.markEndIf(expr); - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr; - - delegate.markStart(); - - if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { - expr = parsePostfixExpression(); - } else if (match('++') || match('--')) { - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPrefix); - } - - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - expr = delegate.createUnaryExpression(token.value, expr); - } else if (match('+') || match('-') || match('~') || match('!')) { - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); - } - } else { - expr = parsePostfixExpression(); - } - - return delegate.markEndIf(expr); - } - - function binaryPrecedence(token, allowIn) { - var prec = 0; - - if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { - return 0; - } - - switch (token.value) { - case '||': - prec = 1; - break; - - case '&&': - prec = 2; - break; - - case '|': - prec = 3; - break; - - case '^': - prec = 4; - break; - - case '&': - prec = 5; - break; - - case '==': - case '!=': - case '===': - case '!==': - prec = 6; - break; - - case '<': - case '>': - case '<=': - case '>=': - case 'instanceof': - prec = 7; - break; - - case 'in': - prec = allowIn ? 7 : 0; - break; - - case '<<': - case '>>': - case '>>>': - prec = 8; - break; - - case '+': - case '-': - prec = 9; - break; - - case '*': - case '/': - case '%': - prec = 11; - break; - - default: - break; - } - - return prec; - } - - // 11.5 Multiplicative Operators - // 11.6 Additive Operators - // 11.7 Bitwise Shift Operators - // 11.8 Relational Operators - // 11.9 Equality Operators - // 11.10 Binary Bitwise Operators - // 11.11 Binary Logical Operators - - function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; - - marker = createLocationMarker(); - left = parseUnaryExpression(); - - token = lookahead; - prec = binaryPrecedence(token, state.allowIn); - if (prec === 0) { - return left; - } - token.prec = prec; - lex(); - - markers = [marker, createLocationMarker()]; - right = parseUnaryExpression(); - - stack = [left, token, right]; - - while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { - - // Reduce: make a binary expression from the three topmost entries. - while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - expr = delegate.createBinaryExpression(operator, left, right); - markers.pop(); - marker = markers.pop(); - if (marker) { - marker.apply(expr); - } - stack.push(expr); - markers.push(marker); - } - - // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(createLocationMarker()); - expr = parseUnaryExpression(); - stack.push(expr); - } - - // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while (i > 1) { - expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - marker = markers.pop(); - if (marker) { - marker.apply(expr); - } - } - - return expr; - } - - - // 11.12 Conditional Operator - - function parseConditionalExpression() { - var expr, previousAllowIn, consequent, alternate; - - delegate.markStart(); - expr = parseBinaryExpression(); - - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - alternate = parseAssignmentExpression(); - - expr = delegate.markEnd(delegate.createConditionalExpression(expr, consequent, alternate)); - } else { - delegate.markEnd({}); - } - - return expr; - } - - // 11.13 Assignment Operators - - function parseAssignmentExpression() { - var token, left, right, node; - - token = lookahead; - delegate.markStart(); - node = left = parseConditionalExpression(); - - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(left)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - // 11.13.1 - if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { - throwErrorTolerant(token, Messages.StrictLHSAssignment); - } - - token = lex(); - right = parseAssignmentExpression(); - node = delegate.createAssignmentExpression(token.value, left, right); - } - - return delegate.markEndIf(node); - } - - // 11.14 Comma Operator - - function parseExpression() { - var expr; - - delegate.markStart(); - expr = parseAssignmentExpression(); - - if (match(',')) { - expr = delegate.createSequenceExpression([ expr ]); - - while (index < length) { - if (!match(',')) { - break; - } - lex(); - expr.expressions.push(parseAssignmentExpression()); - } - } - - return delegate.markEndIf(expr); - } - - // 12.1 Block - - function parseStatementList() { - var list = [], - statement; - - while (index < length) { - if (match('}')) { - break; - } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; - } - list.push(statement); - } - - return list; - } - - function parseBlock() { - var block; - - delegate.markStart(); - expect('{'); - - block = parseStatementList(); - - expect('}'); - - return delegate.markEnd(delegate.createBlockStatement(block)); - } - - // 12.2 Variable Statement - - function parseVariableIdentifier() { - var token; - - delegate.markStart(); - token = lex(); - - if (token.type !== Token.Identifier) { - throwUnexpected(token); - } - - return delegate.markEnd(delegate.createIdentifier(token.value)); - } - - function parseVariableDeclaration(kind) { - var init = null, id; - - delegate.markStart(); - id = parseVariableIdentifier(); - - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); - } - - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); - } - - return delegate.markEnd(delegate.createVariableDeclarator(id, init)); - } - - function parseVariableDeclarationList(kind) { - var list = []; - - do { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; - } - lex(); - } while (index < length); - - return list; - } - - function parseVariableStatement() { - var declarations; - - expectKeyword('var'); - - declarations = parseVariableDeclarationList(); - - consumeSemicolon(); - - return delegate.createVariableDeclaration(declarations, 'var'); - } - - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations; - - delegate.markStart(); - - expectKeyword(kind); - - declarations = parseVariableDeclarationList(kind); - - consumeSemicolon(); - - return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind)); - } - - // 12.3 Empty Statement - - function parseEmptyStatement() { - expect(';'); - return delegate.createEmptyStatement(); - } - - // 12.4 Expression Statement - - function parseExpressionStatement() { - var expr = parseExpression(); - consumeSemicolon(); - return delegate.createExpressionStatement(expr); - } - - // 12.5 If statement - - function parseIfStatement() { - var test, consequent, alternate; - - expectKeyword('if'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - consequent = parseStatement(); - - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } - - return delegate.createIfStatement(test, consequent, alternate); - } - - // 12.6 Iteration Statements - - function parseDoWhileStatement() { - var body, test, oldInIteration; - - expectKeyword('do'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - if (match(';')) { - lex(); - } - - return delegate.createDoWhileStatement(body, test); - } - - function parseWhileStatement() { - var test, body, oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return delegate.createWhileStatement(test, body); - } - - function parseForVariableDeclaration() { - var token, declarations; - - delegate.markStart(); - token = lex(); - declarations = parseVariableDeclarationList(); - - return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value)); - } - - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; - - init = test = update = null; - - expectKeyword('for'); - - expect('('); - - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; - - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; - - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwErrorTolerant({}, Messages.InvalidLHSInForIn); - } - - lex(); - left = init; - right = parseExpression(); - init = null; - } - } - - if (typeof left === 'undefined') { - expect(';'); - } - } - - if (typeof left === 'undefined') { - - if (!match(';')) { - test = parseExpression(); - } - expect(';'); - - if (!match(')')) { - update = parseExpression(); - } - } - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return (typeof left === 'undefined') ? - delegate.createForStatement(init, test, update, body) : - delegate.createForInStatement(left, right, body); - } - - // 12.7 The continue statement - - function parseContinueStatement() { - var label = null, key; - - expectKeyword('continue'); - - // Optimize the most common form: 'continue;'. - if (source.charCodeAt(index) === 0x3B) { - lex(); - - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return delegate.createContinueStatement(null); - } - - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return delegate.createContinueStatement(null); - } - - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); - - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return delegate.createContinueStatement(label); - } - - // 12.8 The break statement - - function parseBreakStatement() { - var label = null, key; - - expectKeyword('break'); - - // Catch the very common case first: immediately a semicolon (U+003B). - if (source.charCodeAt(index) === 0x3B) { - lex(); - - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(null); - } - - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(null); - } - - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); - - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(label); - } - - // 12.9 The return statement - - function parseReturnStatement() { - var argument = null; - - expectKeyword('return'); - - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); - } - - // 'return' followed by a space and an identifier is very common. - if (source.charCodeAt(index) === 0x20) { - if (isIdentifierStart(source.charCodeAt(index + 1))) { - argument = parseExpression(); - consumeSemicolon(); - return delegate.createReturnStatement(argument); - } - } - - if (peekLineTerminator()) { - return delegate.createReturnStatement(null); - } - - if (!match(';')) { - if (!match('}') && lookahead.type !== Token.EOF) { - argument = parseExpression(); - } - } - - consumeSemicolon(); - - return delegate.createReturnStatement(argument); - } - - // 12.10 The with statement - - function parseWithStatement() { - var object, body; - - if (strict) { - throwErrorTolerant({}, Messages.StrictModeWith); - } - - expectKeyword('with'); - - expect('('); - - object = parseExpression(); - - expect(')'); - - body = parseStatement(); - - return delegate.createWithStatement(object, body); - } - - // 12.10 The swith statement - - function parseSwitchCase() { - var test, - consequent = [], - statement; - - delegate.markStart(); - if (matchKeyword('default')) { - lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); - } - expect(':'); - - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - consequent.push(statement); - } - - return delegate.markEnd(delegate.createSwitchCase(test, consequent)); - } - - function parseSwitchStatement() { - var discriminant, cases, clause, oldInSwitch, defaultFound; - - expectKeyword('switch'); - - expect('('); - - discriminant = parseExpression(); - - expect(')'); - - expect('{'); - - cases = []; - - if (match('}')) { - lex(); - return delegate.createSwitchStatement(discriminant, cases); - } - - oldInSwitch = state.inSwitch; - state.inSwitch = true; - defaultFound = false; - - while (index < length) { - if (match('}')) { - break; - } - clause = parseSwitchCase(); - if (clause.test === null) { - if (defaultFound) { - throwError({}, Messages.MultipleDefaultsInSwitch); - } - defaultFound = true; - } - cases.push(clause); - } - - state.inSwitch = oldInSwitch; - - expect('}'); - - return delegate.createSwitchStatement(discriminant, cases); - } - - // 12.13 The throw statement - - function parseThrowStatement() { - var argument; - - expectKeyword('throw'); - - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); - } - - argument = parseExpression(); - - consumeSemicolon(); - - return delegate.createThrowStatement(argument); - } - - // 12.14 The try statement - - function parseCatchClause() { - var param, body; - - delegate.markStart(); - expectKeyword('catch'); - - expect('('); - if (match(')')) { - throwUnexpected(lookahead); - } - - param = parseVariableIdentifier(); - // 12.14.1 - if (strict && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); - } - - expect(')'); - body = parseBlock(); - return delegate.markEnd(delegate.createCatchClause(param, body)); - } - - function parseTryStatement() { - var block, handlers = [], finalizer = null; - - expectKeyword('try'); - - block = parseBlock(); - - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } - - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } - - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); - } - - return delegate.createTryStatement(block, [], handlers, finalizer); - } - - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); - - return delegate.createDebuggerStatement(); - } - - // 12 Statements - - function parseStatement() { - var type = lookahead.type, - expr, - labeledBody, - key; - - if (type === Token.EOF) { - throwUnexpected(lookahead); - } - - delegate.markStart(); - - if (type === Token.Punctuator) { - switch (lookahead.value) { - case ';': - return delegate.markEnd(parseEmptyStatement()); - case '{': - return delegate.markEnd(parseBlock()); - case '(': - return delegate.markEnd(parseExpressionStatement()); - default: - break; - } - } - - if (type === Token.Keyword) { - switch (lookahead.value) { - case 'break': - return delegate.markEnd(parseBreakStatement()); - case 'continue': - return delegate.markEnd(parseContinueStatement()); - case 'debugger': - return delegate.markEnd(parseDebuggerStatement()); - case 'do': - return delegate.markEnd(parseDoWhileStatement()); - case 'for': - return delegate.markEnd(parseForStatement()); - case 'function': - return delegate.markEnd(parseFunctionDeclaration()); - case 'if': - return delegate.markEnd(parseIfStatement()); - case 'return': - return delegate.markEnd(parseReturnStatement()); - case 'switch': - return delegate.markEnd(parseSwitchStatement()); - case 'throw': - return delegate.markEnd(parseThrowStatement()); - case 'try': - return delegate.markEnd(parseTryStatement()); - case 'var': - return delegate.markEnd(parseVariableStatement()); - case 'while': - return delegate.markEnd(parseWhileStatement()); - case 'with': - return delegate.markEnd(parseWithStatement()); - default: - break; - } - } - - expr = parseExpression(); - - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); - - key = '$' + expr.name; - if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } - - state.labelSet[key] = true; - labeledBody = parseStatement(); - delete state.labelSet[key]; - return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody)); - } - - consumeSemicolon(); - - return delegate.markEnd(delegate.createExpressionStatement(expr)); - } - - // 13 Function Definition - - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; - - delegate.markStart(); - expect('{'); - - while (index < length) { - if (lookahead.type !== Token.StringLiteral) { - break; - } - token = lookahead; - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; - - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; - - while (index < length) { - if (match('}')) { - break; - } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - - expect('}'); - - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; - - return delegate.markEnd(delegate.createBlockStatement(sourceElements)); - } - - function parseParams(firstRestricted) { - var param, params = [], token, stricted, paramSet, key, message; - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead; - param = parseVariableIdentifier(); - key = '$' + token.value; - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[key] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return { - params: params, - stricted: stricted, - firstRestricted: firstRestricted, - message: message - }; - } - - function parseFunctionDeclaration() { - var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict; - - delegate.markStart(); - - expectKeyword('function'); - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body)); - } - - function parseFunctionExpression() { - var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict; - - delegate.markStart(); - expectKeyword('function'); - - if (!match('(')) { - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - } - - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body)); - } - - // 14 Program - - function parseSourceElement() { - if (lookahead.type === Token.Keyword) { - switch (lookahead.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(lookahead.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); - } - } - - if (lookahead.type !== Token.EOF) { - return parseStatement(); - } - } - - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; - - while (index < length) { - token = lookahead; - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - while (index < length) { - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - return sourceElements; - } - - function parseProgram() { - var body; - - delegate.markStart(); - strict = false; - peek(); - body = parseSourceElements(); - return delegate.markEnd(delegate.createProgram(body)); - } - - function attachComments() { - var i, attacher, comment, leading, trailing; - - for (i = 0; i < extra.pendingComments.length; ++i) { - attacher = extra.pendingComments[i]; - comment = attacher.comment; - leading = attacher.leading; - if (leading) { - if (typeof leading.leadingComments === 'undefined') { - leading.leadingComments = []; - } - leading.leadingComments.push(attacher.comment); - } - trailing = attacher.trailing; - if (trailing) { - if (typeof trailing.trailingComments === 'undefined') { - trailing.trailingComments = []; - } - trailing.trailingComments.push(attacher.comment); - } - } - extra.pendingComments = []; - } - - function filterTokenLocation() { - var i, entry, token, tokens = []; - - for (i = 0; i < extra.tokens.length; ++i) { - entry = extra.tokens[i]; - token = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - token.range = entry.range; - } - if (extra.loc) { - token.loc = entry.loc; - } - tokens.push(token); - } - - extra.tokens = tokens; - } - - function LocationMarker() { - this.startIndex = index; - this.startLine = lineNumber; - this.startColumn = index - lineStart; - } - - LocationMarker.prototype = { - constructor: LocationMarker, - - apply: function (node) { - if (extra.range) { - node.range = [this.startIndex, index]; - } - if (extra.loc) { - node.loc = { - start: { - line: this.startLine, - column: this.startColumn - }, - end: { - line: lineNumber, - column: index - lineStart - } - }; - node = delegate.postProcess(node); - } - if (extra.attachComment) { - delegate.processComment(node); - } - } - }; - - function createLocationMarker() { - if (!extra.loc && !extra.range) { - return null; - } - - skipComment(); - - return new LocationMarker(); - } - - function tokenize(code, options) { - var toString, - token, - tokens; - - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } - - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false, - lastCommentStart: -1 - }; - - extra = {}; - - // Options matching. - options = options || {}; - - // Of course we collect tokens here. - options.tokens = true; - extra.tokens = []; - extra.tokenize = true; - // The following two fields are necessary to compute the Regex tokens. - extra.openParenToken = -1; - extra.openCurlyToken = -1; - - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - - if (length > 0) { - if (typeof source[0] === 'undefined') { - // Try first to convert to a string. This is good as fast path - // for old IE which understands string indexing for string - // literals only and not for string object. - if (code instanceof String) { - source = code.valueOf(); - } - } - } - - try { - peek(); - if (lookahead.type === Token.EOF) { - return extra.tokens; - } - - token = lex(); - while (lookahead.type !== Token.EOF) { - try { - token = lex(); - } catch (lexError) { - token = lookahead; - if (extra.errors) { - extra.errors.push(lexError); - // We have to break on the first error - // to avoid infinite loops. - break; - } else { - throw lexError; - } - } - } - - filterTokenLocation(); - tokens = extra.tokens; - if (typeof extra.comments !== 'undefined') { - tokens.comments = extra.comments; - } - if (typeof extra.errors !== 'undefined') { - tokens.errors = extra.errors; - } - } catch (e) { - throw e; - } finally { - extra = {}; - } - return tokens; - } - - function parse(code, options) { - var program, toString; - - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } - - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false, - lastCommentStart: -1, - markerStack: [] - }; - - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; - - if (extra.loc && options.source !== null && options.source !== undefined) { - extra.source = toString(options.source); - } - - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - if (extra.attachComment) { - extra.range = true; - extra.pendingComments = []; - extra.comments = []; - } - } - - if (length > 0) { - if (typeof source[0] === 'undefined') { - // Try first to convert to a string. This is good as fast path - // for old IE which understands string indexing for string - // literals only and not for string object. - if (code instanceof String) { - source = code.valueOf(); - } - } - } - - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - filterTokenLocation(); - program.tokens = extra.tokens; - } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; - } - if (extra.attachComment) { - attachComments(); - } - } catch (e) { - throw e; - } finally { - extra = {}; - } - - return program; - } - - // Sync with *.json manifests. - exports.version = '1.1.1'; - - exports.tokenize = tokenize; - - exports.parse = parse; - - // Deep copy. - exports.Syntax = (function () { - var name, types = {}; - - if (typeof Object.create === 'function') { - types = Object.create(null); - } - - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } - - if (typeof Object.freeze === 'function') { - Object.freeze(types); - } - - return types; - }()); - -})); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/package.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/package.json deleted file mode 100644 index 52fe515..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "name": "esprima", - "description": "ECMAScript parsing infrastructure for multipurpose analysis", - "homepage": "http://esprima.org", - "main": "esprima.js", - "bin": { - "esparse": "./bin/esparse.js", - "esvalidate": "./bin/esvalidate.js" - }, - "version": "1.1.1", - "files": [ - "bin", - "test/run.js", - "test/runner.js", - "test/test.js", - "test/compat.js", - "test/reflect.js", - "esprima.js" - ], - "engines": { - "node": ">=0.4.0" - }, - "author": { - "name": "Ariya Hidayat", - "email": "ariya.hidayat@gmail.com" - }, - "maintainers": [ - { - "name": "ariya", - "email": "ariya.hidayat@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/ariya/esprima.git" - }, - "bugs": { - "url": "http://issues.esprima.org" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" - } - ], - "devDependencies": { - "jslint": "~0.1.9", - "eslint": "~0.4.3", - "jscs": "~1.2.4", - "istanbul": "~0.1.27", - "complexity-report": "~0.6.1", - "regenerate": "~0.5.4", - "unicode-6.3.0": "~0.1.0", - "json-diff": "~0.3.1", - "optimist": "~0.6.0" - }, - "keywords": [ - "ast", - "ecmascript", - "javascript", - "parser", - "syntax" - ], - "scripts": { - "generate-regex": "node tools/generate-identifier-regex.js", - "test": "npm run-script lint && node test/run.js && npm run-script coverage && npm run-script complexity", - "lint": "npm run-script check-version && npm run-script eslint && npm run-script jscs && npm run-script jslint", - "check-version": "node tools/check-version.js", - "eslint": "node node_modules/eslint/bin/eslint.js esprima.js", - "jscs": "node node_modules/.bin/jscs esprima.js", - "jslint": "node node_modules/jslint/bin/jslint.js esprima.js", - "coverage": "npm run-script analyze-coverage && npm run-script check-coverage", - "analyze-coverage": "node node_modules/istanbul/lib/cli.js cover test/runner.js", - "check-coverage": "node node_modules/istanbul/lib/cli.js check-coverage --statement -8 --branch -19 --function 100", - "complexity": "npm run-script analyze-complexity && npm run-script check-complexity", - "analyze-complexity": "node tools/list-complexity.js", - "check-complexity": "node node_modules/complexity-report/src/cli.js --maxcc 17 --silent -l -w esprima.js", - "benchmark": "node test/benchmarks.js", - "benchmark-quick": "node test/benchmarks.js quick" - }, - "_id": "esprima@1.1.1", - "dist": { - "shasum": "5b6f1547f4d102e670e140c509be6771d6aeb549", - "tarball": "http://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz" - }, - "_from": "esprima@>=1.1.1 <1.2.0", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "ariya", - "email": "ariya.hidayat@gmail.com" - }, - "directories": {}, - "_shasum": "5b6f1547f4d102e670e140c509be6771d6aeb549", - "_resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/compat.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/compat.js deleted file mode 100644 index d9b0524..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/compat.js +++ /dev/null @@ -1,241 +0,0 @@ -/* - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node: true */ -/*global document: true, window:true, esprima: true, testReflect: true */ - -var runTests; - -function getContext(esprima, reportCase, reportFailure) { - 'use strict'; - - var Reflect, Pattern; - - // Maps Mozilla Reflect object to our Esprima parser. - Reflect = { - parse: function (code) { - var result; - - reportCase(code); - - try { - result = esprima.parse(code); - } catch (error) { - result = error; - } - - return result; - } - }; - - // This is used by Reflect test suite to match a syntax tree. - Pattern = function (obj) { - var pattern; - - // Poor man's deep object cloning. - pattern = JSON.parse(JSON.stringify(obj)); - - // Special handling for regular expression literal since we need to - // convert it to a string literal, otherwise it will be decoded - // as object "{}" and the regular expression would be lost. - if (obj.type && obj.type === 'Literal') { - if (obj.value instanceof RegExp) { - pattern = { - type: obj.type, - value: obj.value.toString() - }; - } - } - - // Special handling for branch statement because SpiderMonkey - // prefers to put the 'alternate' property before 'consequent'. - if (obj.type && obj.type === 'IfStatement') { - pattern = { - type: pattern.type, - test: pattern.test, - consequent: pattern.consequent, - alternate: pattern.alternate - }; - } - - // Special handling for do while statement because SpiderMonkey - // prefers to put the 'test' property before 'body'. - if (obj.type && obj.type === 'DoWhileStatement') { - pattern = { - type: pattern.type, - body: pattern.body, - test: pattern.test - }; - } - - function adjustRegexLiteralAndRaw(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } else if (key === 'raw' && typeof value === "string") { - // Ignore Esprima-specific 'raw' property. - return undefined; - } - return value; - } - - if (obj.type && (obj.type === 'Program')) { - pattern.assert = function (tree) { - var actual, expected; - actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4); - expected = JSON.stringify(obj, null, 4); - - if (expected !== actual) { - reportFailure(expected, actual); - } - }; - } - - return pattern; - }; - - return { - Reflect: Reflect, - Pattern: Pattern - }; -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - - var total = 0, - failures = 0; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function reportCase(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - total += 1; - } - - function reportFailure(expected, actual) { - var report, e; - - failures += 1; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - window.setTimeout(function () { - var tick, context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - if (failures > 0) { - document.getElementById('status').className = 'alert-box alert'; - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - document.getElementById('status').className = 'alert-box success'; - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }, 11); - }; -} else { - (function (global) { - 'use strict'; - var esprima = require('../esprima'), - tick, - total = 0, - failures = [], - header, - current, - context; - - function reportCase(code) { - total += 1; - current = code; - } - - function reportFailure(expected, actual) { - failures.push({ - source: current, - expected: expected.toString(), - actual: actual.toString() - }); - } - - context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - require('./reflect').testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }(this)); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/reflect.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/reflect.js deleted file mode 100644 index dba1ba8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/reflect.js +++ /dev/null @@ -1,422 +0,0 @@ -// This is modified from Mozilla Reflect.parse test suite (the file is located -// at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree). -// -// Some notable changes: -// * Removed unsupported features (destructuring, let, comprehensions...). -// * Removed tests for E4X (ECMAScript for XML). -// * Removed everything related to builder. -// * Enclosed every 'Pattern' construct with a scope. -// * Tweaked some expected tree to remove generator field. -// * Removed the test for bug 632030 and bug 632024. - -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/licenses/publicdomain/ - */ - -(function (exports) { - -function testReflect(Reflect, Pattern) { - -function program(elts) { return Pattern({ type: "Program", body: elts }) } -function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) } -function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) } -function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) } -function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) } -function lit(val) { return Pattern({ type: "Literal", value: val }) } -var thisExpr = Pattern({ type: "ThisExpression" }); -function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) } -function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) } -function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) } -function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) } -function ident(name) { return Pattern({ type: "Identifier", name: name }) } -function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) } -function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) } -function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) } -function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) } -function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) } -function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) } -function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) } -function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) } -var emptyStmt = Pattern({ type: "EmptyStatement" }); -function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) } -function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) } -function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) } -function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) } -function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) } -function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) } -function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) } -function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) } -function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } } -function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) } -function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) } -function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } - -function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg, prefix: true }) } -function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) } -function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) } -function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) } -function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) } - -function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) } -function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) } -function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) } -function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) } -function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) } -function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) } -function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) } - -function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) } -function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) } - -function localSrc(src) { return "(function(){ " + src + " })" } -function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) } -function blockSrc(src) { return "(function(){ { " + src + " } })" } -function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) } - -function assertBlockStmt(src, patt) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src))); -} - -function assertBlockExpr(src, patt) { - assertBlockStmt(src, exprStmt(patt)); -} - -function assertBlockDecl(src, patt, builder) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder})); -} - -function assertLocalStmt(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertLocalExpr(src, patt) { - assertLocalStmt(src, exprStmt(patt)); -} - -function assertLocalDecl(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertGlobalStmt(src, patt, builder) { - program([patt]).assert(Reflect.parse(src, {builder: builder})); -} - -function assertGlobalExpr(src, patt, builder) { - program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder})); - //assertStmt(src, exprStmt(patt)); -} - -function assertGlobalDecl(src, patt) { - program([patt]).assert(Reflect.parse(src)); -} - -function assertProg(src, patt) { - program(patt).assert(Reflect.parse(src)); -} - -function assertStmt(src, patt) { - assertLocalStmt(src, patt); - assertGlobalStmt(src, patt); - assertBlockStmt(src, patt); -} - -function assertExpr(src, patt) { - assertLocalExpr(src, patt); - assertGlobalExpr(src, patt); - assertBlockExpr(src, patt); -} - -function assertDecl(src, patt) { - assertLocalDecl(src, patt); - assertGlobalDecl(src, patt); - assertBlockDecl(src, patt); -} - -function assertError(src, errorType) { - try { - Reflect.parse(src); - } catch (e) { - return; - } - throw new Error("expected " + errorType.name + " for " + uneval(src)); -} - - -// general tests - -// NB: These are useful but for now jit-test doesn't do I/O reliably. - -//program(_).assert(Reflect.parse(snarf('data/flapjax.txt'))); -//program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt'))); -//program(_).assert(Reflect.parse(snarf('data/prototype.js'))); -//program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js'))); -//program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js'))); - - -// declarations - -assertDecl("var x = 1, y = 2, z = 3", - varDecl([declarator(ident("x"), lit(1)), - declarator(ident("y"), lit(2)), - declarator(ident("z"), lit(3))])); -assertDecl("var x, y, z", - varDecl([declarator(ident("x"), null), - declarator(ident("y"), null), - declarator(ident("z"), null)])); -assertDecl("function foo() { }", - funDecl(ident("foo"), [], blockStmt([]))); -assertDecl("function foo() { return 42 }", - funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))]))); - - -// Bug 591437: rebound args have their defs turned into uses -assertDecl("function f(a) { function a() { } }", - funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))]))); -assertDecl("function f(a,b,c) { function b() { } }", - funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))]))); - -// expressions - -assertExpr("true", lit(true)); -assertExpr("false", lit(false)); -assertExpr("42", lit(42)); -assertExpr("(/asdf/)", lit(/asdf/)); -assertExpr("this", thisExpr); -assertExpr("foo", ident("foo")); -assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar"))); -assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar"))); -assertExpr("(function(){})", funExpr(null, [], blockStmt([]))); -assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([]))); -assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([]))); -assertExpr("(++x)", updExpr("++", ident("x"), true)); -assertExpr("(x++)", updExpr("++", ident("x"), false)); -assertExpr("(+x)", unExpr("+", ident("x"))); -assertExpr("(-x)", unExpr("-", ident("x"))); -assertExpr("(!x)", unExpr("!", ident("x"))); -assertExpr("(~x)", unExpr("~", ident("x"))); -assertExpr("(delete x)", unExpr("delete", ident("x"))); -assertExpr("(typeof x)", unExpr("typeof", ident("x"))); -assertExpr("(void x)", unExpr("void", ident("x"))); -assertExpr("(x == y)", binExpr("==", ident("x"), ident("y"))); -assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y"))); -assertExpr("(x === y)", binExpr("===", ident("x"), ident("y"))); -assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y"))); -assertExpr("(x < y)", binExpr("<", ident("x"), ident("y"))); -assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y"))); -assertExpr("(x > y)", binExpr(">", ident("x"), ident("y"))); -assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y"))); -assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y"))); -assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y"))); -assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y"))); -assertExpr("(x + y)", binExpr("+", ident("x"), ident("y"))); -assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x - y)", binExpr("-", ident("x"), ident("y"))); -assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x * y)", binExpr("*", ident("x"), ident("y"))); -assertExpr("(x / y)", binExpr("/", ident("x"), ident("y"))); -assertExpr("(x % y)", binExpr("%", ident("x"), ident("y"))); -assertExpr("(x | y)", binExpr("|", ident("x"), ident("y"))); -assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y"))); -assertExpr("(x & y)", binExpr("&", ident("x"), ident("y"))); -assertExpr("(x in y)", binExpr("in", ident("x"), ident("y"))); -assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y"))); -assertExpr("(x = y)", aExpr("=", ident("x"), ident("y"))); -assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y"))); -assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y"))); -assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y"))); -assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y"))); -assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y"))); -assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y"))); -assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y"))); -assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y"))); -assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y"))); -assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y"))); -assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y"))); -assertExpr("(x || y)", logExpr("||", ident("x"), ident("y"))); -assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y"))); -assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z"))) -assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z"))); -assertExpr("(x,y)", seqExpr([ident("x"),ident("y")])) -assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")])) -assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")])); -assertExpr("(new Object)", newExpr(ident("Object"), [])); -assertExpr("(new Object())", newExpr(ident("Object"), [])); -assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)])); -assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)])); -assertExpr("(String())", callExpr(ident("String"), [])); -assertExpr("(String(42))", callExpr(ident("String"), [lit(42)])); -assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)])); -assertExpr("[]", arrExpr([])); -assertExpr("[1]", arrExpr([lit(1)])); -assertExpr("[1,2]", arrExpr([lit(1),lit(2)])); -assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)])); -assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)])); -assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)])); -assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)])); -assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)])); -assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)])); -assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined])); -assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined])); -assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined])); -assertExpr("({})", objExpr([])); -assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")])); -assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init")])); -assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(lit(3), lit(3), "init") ])); - -// Bug 571617: eliminate constant-folding -assertExpr("2 + 3", binExpr("+", lit(2), lit(3))); - -// Bug 632026: constant-folding -assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a")))); - -// Bug 632056: constant-folding -program([exprStmt(ident("f")), - ifStmt(lit(1), - funDecl(ident("f"), [], blockStmt([])), - null)]).assert(Reflect.parse("f; if (1) function f(){}")); - -// statements - -assertStmt("throw 42", throwStmt(lit(42))); -assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null))); -assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null))); -assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null))); -assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null))); -assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null))); -assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null))); -assertStmt("{ }", blockStmt([])); -assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))])); -assertStmt(";", emptyStmt); -assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null)); -assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true)))); -assertStmt("if (foo) { throw 1; throw 2; throw 3; }", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - null)); -assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - exprStmt(lit(true)))); -assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo"))))); -assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo"))))); -assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([]))); -assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))]))); -assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([]))); -assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))]))); -assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo"))); -assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo"))); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]) ])); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]), - caseClause(lit(42), [ exprStmt(lit(42)) ]) ])); -assertStmt("try { } catch (e) { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - null)); -assertStmt("try { } catch (e) { } finally { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - blockStmt([]))); -assertStmt("try { } finally { }", - tryStmt(blockStmt([]), - [], - [], - blockStmt([]))); - -// redeclarations (TOK_NAME nodes with lexdef) - -assertStmt("function f() { function g() { } function g() { } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([]))]))); - -assertStmt("function f() { function g() { } function g() { return 42 } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))]))); - -assertStmt("function f() { var x = 42; var x = 43; }", - funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]), - varDecl([declarator(ident("x"),lit(43))])]))); - -// getters and setters - - assertExpr("({ get x() { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [], blockStmt([returnStmt(lit(42))])), - "get" ) ])); - assertExpr("({ set x(v) { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])), - "set" ) ])); - -} - -exports.testReflect = testReflect; - -}(typeof exports === 'undefined' ? this : exports)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/run.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/run.js deleted file mode 100644 index 0f08f15..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/run.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node:true */ - -(function () { - 'use strict'; - - var child = require('child_process'), - nodejs = '"' + process.execPath + '"', - ret = 0, - suites, - index; - - suites = [ - 'runner', - 'compat', - 'parselibs' - ]; - - function nextTest() { - var suite = suites[index]; - - if (index < suites.length) { - child.exec(nodejs + ' ./test/' + suite + '.js', function (err, stdout, stderr) { - if (stdout) { - process.stdout.write(suite + ': ' + stdout); - } - if (stderr) { - process.stderr.write(suite + ': ' + stderr); - } - if (err) { - ret = err.code; - } - index += 1; - nextTest(); - }); - } else { - process.exit(ret); - } - } - - index = 0; - nextTest(); -}()); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/runner.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/runner.js deleted file mode 100644 index b0fa069..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/runner.js +++ /dev/null @@ -1,467 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint browser:true node:true */ -/*global esprima:true, testFixture:true */ - -var runTests; - -// Special handling for regular expression literal since we need to -// convert it to a string literal, otherwise it will be decoded -// as object "{}" and the regular expression would be lost. -function adjustRegexLiteral(key, value) { - 'use strict'; - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return value; -} - -function NotMatchingError(expected, actual) { - 'use strict'; - Error.call(this, 'Expected '); - this.expected = expected; - this.actual = actual; -} -NotMatchingError.prototype = new Error(); - -function errorToObject(e) { - 'use strict'; - var msg = e.toString(); - - // Opera 9.64 produces an non-standard string in toString(). - if (msg.substr(0, 6) !== 'Error:') { - if (typeof e.message === 'string') { - msg = 'Error: ' + e.message; - } - } - - return { - index: e.index, - lineNumber: e.lineNumber, - column: e.column, - message: msg - }; -} - -function hasAttachedComment(syntax) { - var key; - for (key in syntax) { - if (key === 'leadingComments' || key === 'trailingComments') { - return true; - } - if (typeof syntax[key] === 'object' && syntax[key] !== null) { - if (hasAttachedComment(syntax[key])) { - return true; - } - } - } - return false; -} - -function testParse(esprima, code, syntax) { - 'use strict'; - var expected, tree, actual, options, StringObject, i, len, err; - - // alias, so that JSLint does not complain. - StringObject = String; - - options = { - comment: (typeof syntax.comments !== 'undefined'), - range: true, - loc: true, - tokens: (typeof syntax.tokens !== 'undefined'), - raw: true, - tolerant: (typeof syntax.errors !== 'undefined'), - source: null - }; - - if (options.comment) { - options.attachComment = hasAttachedComment(syntax); - } - - if (typeof syntax.tokens !== 'undefined') { - if (syntax.tokens.length > 0) { - options.range = (typeof syntax.tokens[0].range !== 'undefined'); - options.loc = (typeof syntax.tokens[0].loc !== 'undefined'); - } - } - - if (typeof syntax.comments !== 'undefined') { - if (syntax.comments.length > 0) { - options.range = (typeof syntax.comments[0].range !== 'undefined'); - options.loc = (typeof syntax.comments[0].loc !== 'undefined'); - } - } - - if (options.loc) { - options.source = syntax.loc.source; - } - - expected = JSON.stringify(syntax, null, 4); - try { - // Some variations of the options. - tree = esprima.parse(code, { tolerant: options.tolerant }); - tree = esprima.parse(code, { tolerant: options.tolerant, range: true }); - tree = esprima.parse(code, { tolerant: options.tolerant, loc: true }); - - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens || options.tolerant) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, adjustRegexLiteral, 4); - - // Only to ensure that there is no error when using string object. - esprima.parse(new StringObject(code), options); - - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } - - function filter(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return (key === 'loc' || key === 'range') ? undefined : value; - } - - if (options.tolerant) { - return; - } - - - // Check again without any location info. - options.range = false; - options.loc = false; - expected = JSON.stringify(syntax, filter, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, filter, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function testTokenize(esprima, code, tokens) { - 'use strict'; - var options, expected, actual, tree; - - options = { - comment: true, - tolerant: true, - loc: true, - range: true - }; - - expected = JSON.stringify(tokens, null, 4); - - try { - tree = esprima.tokenize(code, options); - actual = JSON.stringify(tree, null, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function testError(esprima, code, exception) { - 'use strict'; - var i, options, expected, actual, err, handleInvalidRegexFlag, tokenize; - - // Different parsing options should give the same error. - options = [ - {}, - { comment: true }, - { raw: true }, - { raw: true, comment: true } - ]; - - // If handleInvalidRegexFlag is true, an invalid flag in a regular expression - // will throw an exception. In some old version V8, this is not the case - // and hence handleInvalidRegexFlag is false. - handleInvalidRegexFlag = false; - try { - 'test'.match(new RegExp('[a-z]', 'x')); - } catch (e) { - handleInvalidRegexFlag = true; - } - - exception.description = exception.message.replace(/Error: Line [0-9]+: /, ''); - - if (exception.tokenize) { - tokenize = true; - exception.tokenize = undefined; - } - expected = JSON.stringify(exception); - - for (i = 0; i < options.length; i += 1) { - - try { - if (tokenize) { - esprima.tokenize(code, options[i]) - } else { - esprima.parse(code, options[i]); - } - } catch (e) { - err = errorToObject(e); - err.description = e.description; - actual = JSON.stringify(err); - } - - if (expected !== actual) { - - // Compensate for old V8 which does not handle invalid flag. - if (exception.message.indexOf('Invalid regular expression') > 0) { - if (typeof actual === 'undefined' && !handleInvalidRegexFlag) { - return; - } - } - - throw new NotMatchingError(expected, actual); - } - - } -} - -function testAPI(esprima, code, result) { - 'use strict'; - var expected, res, actual; - - expected = JSON.stringify(result.result, null, 4); - try { - if (typeof result.property !== 'undefined') { - res = esprima[result.property]; - } else { - res = esprima[result.call].apply(esprima, result.args); - } - actual = JSON.stringify(res, adjustRegexLiteral, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function runTest(esprima, code, result) { - 'use strict'; - if (result.hasOwnProperty('lineNumber')) { - testError(esprima, code, result); - } else if (result.hasOwnProperty('result')) { - testAPI(esprima, code, result); - } else if (result instanceof Array) { - testTokenize(esprima, code, result); - } else { - testParse(esprima, code, result); - } -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - var total = 0, - failures = 0, - category, - fixture, - source, - tick, - expected, - index, - len; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function startCategory(category) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('h4'); - setText(e, category); - report.appendChild(e); - } - - function reportSuccess(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - } - - function reportFailure(code, expected, actual) { - var report, e; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Code:'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - tick = new Date(); - for (category in testFixture) { - if (testFixture.hasOwnProperty(category)) { - startCategory(category); - fixture = testFixture[category]; - for (source in fixture) { - if (fixture.hasOwnProperty(source)) { - expected = fixture[source]; - total += 1; - try { - runTest(esprima, source, expected); - reportSuccess(source, JSON.stringify(expected, null, 4)); - } catch (e) { - failures += 1; - reportFailure(source, e.expected, e.actual); - } - } - } - } - } - tick = (new Date()) - tick; - - if (failures > 0) { - document.getElementById('status').className = 'alert-box alert'; - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms.'); - } else { - document.getElementById('status').className = 'alert-box success'; - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms.'); - } - }; -} else { - (function () { - 'use strict'; - - var esprima = require('../esprima'), - vm = require('vm'), - fs = require('fs'), - diff = require('json-diff').diffString, - total = 0, - failures = [], - tick = new Date(), - expected, - header; - - vm.runInThisContext(fs.readFileSync(__dirname + '/test.js', 'utf-8')); - - Object.keys(testFixture).forEach(function (category) { - Object.keys(testFixture[category]).forEach(function (source) { - total += 1; - expected = testFixture[category][source]; - try { - runTest(esprima, source, expected); - } catch (e) { - e.source = source; - failures.push(e); - } - }); - }); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - try { - var expectedObject = JSON.parse(failure.expected); - var actualObject = JSON.parse(failure.actual); - - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual + '\nDiff:\n' + - diff(expectedObject, actualObject)); - } catch (ex) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - } - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }()); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/test.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/test.js deleted file mode 100644 index 46598b4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esprima/test/test.js +++ /dev/null @@ -1,24416 +0,0 @@ -/* - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -var testFixture = { - - 'Primary Expression': { - - 'this\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'ThisExpression', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Keyword', - value: 'this', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - 'null\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null, - raw: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Null', - value: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '\n 42\n\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - } - }], - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - }, - tokens: [{ - type: 'Numeric', - value: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }] - }, - - '(1 + 2 ) * 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [1, 6], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Grouping Operator': { - - '(1) + (2 ) + 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '4 + 5 << (6)': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 4, - raw: '4', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 5, - raw: '5', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 6, - raw: '6', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Array Initializer': { - - 'x = []': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - tokens: [{ - type: 'Identifier', - value: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Punctuator', - value: '=', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Punctuator', - value: '[', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: ']', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }] - }, - - 'x = [ ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = [ 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'x = [ 42, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x = [ ,, 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [ - null, - null, - { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'x = [ 1, 2, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = [ 1, 2,, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, null, { - type: 'Literal', - value: 3, - raw: '3', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '日本語 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '日本語', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'T\u203F = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u203F', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200C = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200C', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200D = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200D', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161\u200A=\u2009[]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Object Initializer': { - - 'x = {}': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x = { }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = { answer: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'answer', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [6, 16], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 16 } - } - }], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { if: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - kind: 'init', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x = { true: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { false: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - kind: 'init', - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'x = { null: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { "answer": 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'answer', - raw: '"answer"', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 18 } - } - }, - kind: 'init', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }], - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'x = { x: 1, x: 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [ - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - kind: 'init', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [12, 16], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 16 } - } - } - ], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { get width() { return m_width } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'm_width', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - range: [20, 35], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 35 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - kind: 'get', - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }], - range: [4, 38], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'x = { get undef() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'undef', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get if() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { get true() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get false() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get null() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get "undef"() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'undef', - raw: '"undef"', - range: [10, 17], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - kind: 'get', - range: [6, 22], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 22 } - } - }], - range: [4, 24], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'x = { get 10() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { set width(w) { m_width = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_width', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set if(w) { m_if = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_if', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 26], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - kind: 'set', - range: [6, 28], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 28 } - } - }], - range: [4, 30], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'x = { set true(w) { m_true = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_true', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set false(w) { m_false = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_false', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set null(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set "null"(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'null', - raw: '"null"', - range: [10, 16], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 16 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [22, 28], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 32], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 33], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 33 } - } - }], - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set 10(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [18, 24], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 24 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }], - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - kind: 'set', - range: [6, 30], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 30 } - } - }], - range: [4, 32], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'x = { get: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'get', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'x = { set: 43 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'set', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 43, - raw: '43', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'x = { __proto__: 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: '__proto__', - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - kind: 'init', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }], - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'x = {"__proto__": 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: '__proto__', - raw: '"__proto__"', - range: [5, 16], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 16 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - kind: 'init', - range: [5, 19], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get width() { return m_width }, set width(width) { m_width = width; } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'm_width', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - range: [20, 35], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 35 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - kind: 'get', - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [42, 47], - loc: { - start: { line: 1, column: 42 }, - end: { line: 1, column: 47 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'width', - range: [48, 53], - loc: { - start: { line: 1, column: 48 }, - end: { line: 1, column: 53 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_width', - range: [57, 64], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 64 } - } - }, - right: { - type: 'Identifier', - name: 'width', - range: [67, 72], - loc: { - start: { line: 1, column: 67 }, - end: { line: 1, column: 72 } - } - }, - range: [57, 72], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 72 } - } - }, - range: [57, 73], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 73 } - } - }], - range: [55, 75], - loc: { - start: { line: 1, column: 55 }, - end: { line: 1, column: 75 } - } - }, - rest: null, - generator: false, - expression: false, - range: [55, 75], - loc: { - start: { line: 1, column: 55 }, - end: { line: 1, column: 75 } - } - }, - kind: 'set', - range: [38, 75], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 75 } - } - }], - range: [4, 77], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 77 } - } - }, - range: [0, 77], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 77 } - } - }, - range: [0, 77], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 77 } - } - } - - - }, - - 'Comments': { - - '/* block comment */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - - '42 /*The*/ /*Answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - comments: [{ - type: 'Block', - value: 'The', - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Block', - value: 'Answer', - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }] - }, - - '42 /*the*/ /*answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2] - }, - range: [0, 21] - }], - range: [0, 21], - comments: [{ - type: 'Block', - value: 'the', - range: [3, 10] - }, { - type: 'Block', - value: 'answer', - range: [11, 21] - }] - }, - - '42 /* the * answer */': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - '42 /* The * answer */': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - comments: [{ - type: 'Block', - value: ' The * answer ', - range: [3, 21], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 21 } - } - }] - }, - - '/* multiline\ncomment\nshould\nbe\nignored */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - - '/*a\r\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - leadingComments: [{ - type: 'Block', - value: 'a\r\nb', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }], - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\r\nb', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\rb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\rb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - leadingComments: [{ - type: 'Block', - value: 'a\nb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nc*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - leadingComments: [{ - type: 'Block', - value: 'a\nc', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nc', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '// line comment\n42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - - '42 // line comment': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - }, - trailingComments: [{ - type: 'Line', - value: ' line comment', - range: [3, 18], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 18 } - } - }] - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - comments: [{ - type: 'Line', - value: ' line comment', - range: [3, 18], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 18 } - } - }] - }, - - '// Hello, world!\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - leadingComments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }], - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hello, world!\n': { - type: 'Program', - body: [], - range: [17, 17], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hallo, world!\n': { - type: 'Program', - body: [], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hallo, world!', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '//\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - leadingComments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }], - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '//': { - type: 'Program', - body: [], - range: [2, 2], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '// ': { - type: 'Program', - body: [], - range: [3, 3], - comments: [{ - type: 'Line', - value: ' ', - range: [0, 3] - }] - }, - - '/**/42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - }, - leadingComments: [{ - type: 'Block', - value: '', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - }, - comments: [{ - type: 'Block', - value: '', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '42/**/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - }, - trailingComments: [{ - type: 'Block', - value: '', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }] - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - comments: [{ - type: 'Block', - value: '', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }] - }, - - '// Hello, world!\n\n// Another hello\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }, - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - }, - leadingComments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Line', - value: ' Another hello', - range: [18, 36], - loc: { - start: { line: 3, column: 0 }, - end: { line: 3, column: 18 } - } - }] - }], - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Line', - value: ' Another hello', - range: [18, 36], - loc: { - start: { line: 3, column: 0 }, - end: { line: 3, column: 18 } - } - }] - }, - - 'if (x) { doThat() // Some comment\n }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }, - 'arguments': [], - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - }, - trailingComments: [{ - type: 'Line', - value: ' Some comment', - range: [18, 33], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 33 } - } - }] - }, - range: [9, 35], - loc: { - start: { line: 1, column: 9 }, - end: { line: 2, column: 1 } - } - }], - range: [7, 36], - loc: { - start: { line: 1, column: 7 }, - end: { line: 2, column: 2 } - } - }, - alternate: null, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Some comment', - range: [18, 33], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 33 } - } - }] - }, - - 'if (x) { // Some comment\ndoThat(); }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [25, 31], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }, - 'arguments': [], - range: [25, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 8 } - } - }, - range: [25, 34], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 9 } - }, - leadingComments: [{ - type: 'Line', - value: ' Some comment', - range: [9, 24], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 24 } - } - }] - }], - range: [7, 36], - loc: { - start: { line: 1, column: 7 }, - end: { line: 2, column: 11 } - } - }, - alternate: null, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - }, - comments: [{ - type: 'Line', - value: ' Some comment', - range: [9, 24], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 24 } - } - }] - }, - - 'if (x) { /* Some comment */ doThat() }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [28, 34], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 34 } - } - }, - 'arguments': [], - range: [28, 36], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 36 } - } - }, - range: [28, 37], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 37 } - }, - leadingComments: [{ - type: 'Block', - value: ' Some comment ', - range: [9, 27], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 27 } - } - }] - }], - range: [7, 38], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 38 } - } - }, - alternate: null, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - comments: [{ - type: 'Block', - value: ' Some comment ', - range: [9, 27], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 27 } - } - }] - }, - - 'if (x) { doThat() /* Some comment */ }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }, - 'arguments': [], - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - }, - trailingComments: [{ - type: 'Block', - value: ' Some comment ', - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }] - }, - range: [9, 37], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 37 } - } - }], - range: [7, 38], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 38 } - } - }, - alternate: null, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - comments: [{ - type: 'Block', - value: ' Some comment ', - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }] - }, - - 'switch (answer) { case 42: /* perfect */ bingo() }': { - type: 'Program', - body: [{ - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'bingo', - range: [41, 46], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 46 } - } - }, - 'arguments': [], - range: [41, 48], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 48 } - } - }, - range: [41, 49], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 49 } - }, - leadingComments: [{ - type: 'Block', - value: ' perfect ', - range: [27, 40], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 40 } - } - }] - }], - range: [18, 49], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 49 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - }, - comments: [{ - type: 'Block', - value: ' perfect ', - range: [27, 40], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 40 } - } - }] - }, - - 'switch (answer) { case 42: bingo() /* perfect */ }': { - type: 'Program', - body: [{ - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'bingo', - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [], - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - }, - trailingComments: [{ - type: 'Block', - value: ' perfect ', - range: [35, 48], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 48 } - } - }] - }, - range: [27, 49], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 49 } - } - }], - range: [18, 49], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 49 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - }, - comments: [{ - type: 'Block', - value: ' perfect ', - range: [35, 48], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 48 } - } - }] - }, - - '/* header */ (function(){ var version = 1; }).call(this)': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'version', - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }, - init: { - type: 'Literal', - value: 1, - raw: '1', - range: [40, 41], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 41 } - } - }, - range: [30, 41], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 41 } - } - }], - kind: 'var', - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 44], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 44 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 44], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 44 } - } - }, - property: { - type: 'Identifier', - name: 'call', - range: [46, 50], - loc: { - start: { line: 1, column: 46 }, - end: { line: 1, column: 50 } - } - }, - range: [13, 50], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 50 } - } - }, - 'arguments': [{ - type: 'ThisExpression', - range: [51, 55], - loc: { - start: { line: 1, column: 51 }, - end: { line: 1, column: 55 } - } - }], - range: [13, 56], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 56 } - } - }, - range: [13, 56], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 56 } - }, - leadingComments: [{ - type: 'Block', - value: ' header ', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }] - }], - range: [13, 56], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 56 } - }, - comments: [{ - type: 'Block', - value: ' header ', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }] - }, - - '(function(){ var version = 1; /* sync */ }).call(this)': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'version', - range: [17, 24], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 1, - raw: '1', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - range: [17, 28], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 28 } - } - }], - kind: 'var', - range: [13, 29], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 29 } - }, - trailingComments: [{ - type: 'Block', - value: ' sync ', - range: [30, 40], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 40 } - } - }] - }], - range: [11, 42], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 42 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 42], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 42 } - } - }, - property: { - type: 'Identifier', - name: 'call', - range: [44, 48], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 48 } - }, - leadingComments: [{ - type: 'Block', - value: ' sync ', - range: [30, 40], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 40 } - } - }] - }, - range: [0, 48], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 48 } - } - }, - 'arguments': [{ - type: 'ThisExpression', - range: [49, 53], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 53 } - } - }], - range: [0, 54], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 54 } - } - }, - range: [0, 54], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 54 } - } - }], - range: [0, 54], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 54 } - }, - comments: [{ - type: 'Block', - value: ' sync ', - range: [30, 40], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 40 } - } - }] - }, - - 'function f() { /* infinite */ while (true) { } /* bar */ var each; }': { - type: 'Program', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [37, 41], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 41 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [43, 46], - loc: { - start: { line: 1, column: 43 }, - end: { line: 1, column: 46 } - } - }, - range: [30, 46], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 46 } - }, - leadingComments: [{ - type: 'Block', - value: ' infinite ', - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }], - trailingComments: [{ - type: 'Block', - value: ' bar ', - range: [47, 56], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 56 } - } - }] - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'each', - range: [61, 65], - loc: { - start: { line: 1, column: 61 }, - end: { line: 1, column: 65 } - } - }, - init: null, - range: [61, 65], - loc: { - start: { line: 1, column: 61 }, - end: { line: 1, column: 65 } - } - }], - kind: 'var', - range: [57, 66], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 66 } - }, - leadingComments: [{ - type: 'Block', - value: ' bar ', - range: [47, 56], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 56 } - } - }] - }], - range: [13, 68], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 68 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 68], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 68 } - } - }], - range: [0, 68], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 68 } - }, - comments: [{ - type: 'Block', - value: ' infinite ', - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Block', - value: ' bar ', - range: [47, 56], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 56 } - } - }] - }, - - ' comment': { - type: 'Program', - body: [], - range: [11, 11], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 11 } - }, - comments: [{ - type: 'Line', - value: ' comment', - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }] - }, - - ' comment': { - type: 'Program', - body: [], - range: [14, 14], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 14 } - }, - comments: [{ - type: 'Line', - value: ' comment', - range: [3, 14], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 14 } - } - }] - }, - - ' \t /* block comment */ --> comment': { - type: 'Program', - body: [], - range: [35, 35], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 35 } - }, - comments: [{ - type: 'Block', - value: ' block comment ', - range: [3, 22], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 22 } - } - }, { - type: 'Line', - value: ' comment', - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }] - }, - - '/* block comment */--> comment': { - type: 'Program', - body: [], - range: [30, 30], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 30 } - }, - comments: [{ - type: 'Block', - value: ' block comment ', - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Line', - value: ' comment', - range: [19, 30], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 30 } - } - }] - }, - - '/* not comment*/; i-->0': { - type: 'Program', - body: [{ - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>', - left: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'i', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - prefix: false, - range: [18, 21], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 21 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - range: [18, 23], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 23 } - } - }, - range: [18, 23], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 23 } - } - }], - range: [16, 23], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 23 } - }, - tokens: [{ - type: 'Punctuator', - value: ';', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, { - type: 'Identifier', - value: 'i', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Punctuator', - value: '--', - range: [19, 21], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 21 } - } - }, { - type: 'Punctuator', - value: '>', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, { - type: 'Numeric', - value: '0', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }] - - }, - - 'while (i-->0) {}': { - type: 'WhileStatement', - test: { - type: 'BinaryExpression', - operator: '>', - left: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'i', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - prefix: false, - range: [7, 10], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - range: [7, 12], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 12 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - } - }, - - 'Numeric Literals': { - - '0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - '42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '3': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3, - raw: '3', - range: [0, 1] - }, - range: [0, 1] - }], - range: [0, 1], - tokens: [{ - type: 'Numeric', - value: '3', - range: [0, 1] - }] - }, - - '5': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 5, - raw: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - }, - tokens: [{ - type: 'Numeric', - value: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }] - }, - - '.14': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0.14, - raw: '.14', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '3.14159': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3.14159, - raw: '3.14159', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '6.02214179e+23': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 6.02214179e+23, - raw: '6.02214179e+23', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '1.492417830e-10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 1.49241783e-10, - raw: '1.492417830e-10', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '0x0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0x0', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0x0;': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0x0', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0e+100 ': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0e+100', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '0e+100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0e+100', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '0xabc': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xabc, - raw: '0xabc', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0xdef': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xdef, - raw: '0xdef', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X1A': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x1A, - raw: '0X1A', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x10, - raw: '0x10', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x100, - raw: '0x100', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X04': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0X04, - raw: '0X04', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '02': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 2, - raw: '02', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '012', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '0012', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - } - - }, - - 'String Literals': { - - '"Hello"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello', - raw: '"Hello"', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\n\r\t\x0B\b\f\\\'"\x00', - raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '"\\u0061"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\u0061"', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - '"\\x61"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\x61"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\u00"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'u00', - raw: '"\\u00"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\xt"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'xt', - raw: '"\\xt"', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '"Hello\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\nworld', - raw: '"Hello\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 6 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 6 } - } - }, - - '"Hello\\02World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0002World', - raw: '"Hello\\02World"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '"Hello\\012World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000AWorld', - raw: '"Hello\\012World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\122World', - raw: '"Hello\\122World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000A2World', - raw: '"Hello\\0122World"', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '"Hello\\312World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u00CAWorld', - raw: '"Hello\\312World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\412World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\412World', - raw: '"Hello\\412World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\812World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello812World', - raw: '"Hello\\812World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\712World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\712World', - raw: '"Hello\\712World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0000World', - raw: '"Hello\\0World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\r\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\r\nworld"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 6 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 6 } - } - }, - - '"Hello\\1World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0001World', - raw: '"Hello\\1World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - }, - - 'Regular Expression Literals': { - - 'var x = /[a-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-z]/i', - raw: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[x-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5] - }, - init: { - type: 'Literal', - value: '/[x-z]/i', - raw: '/[x-z]/i', - range: [8, 16] - }, - range: [4, 16] - }], - kind: 'var', - range: [0, 16] - }], - range: [0, 16], - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3] - }, { - type: 'Identifier', - value: 'x', - range: [4, 5] - }, { - type: 'Punctuator', - value: '=', - range: [6, 7] - }, { - type: 'RegularExpression', - value: '/[x-z]/i', - range: [8, 16] - }] - }, - - 'var x = /[a-c]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-c]/i', - raw: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[P QR]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/i', - raw: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }, - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }], - kind: 'var', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }], - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }] - }, - - 'var x = /[\\]/]/': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: new RegExp('[\\]/]').toString(), - raw: '/[\\]/]/', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }, - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }], - kind: 'var', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }], - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[\\]/]/', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }] - }, - - 'var x = /foo\\/bar/': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/foo\\/bar/', - raw: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - }, - - 'var x = /=([^=\\s])+/g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/=([^=\\s])+/g', - raw: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }, - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }], - kind: 'var', - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }] - }, - - 'var x = /[P QR]/\\u0067': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }, - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }] - }, - - 'var x = /[P QR]/\\g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - }, - - 'var x = /42/g.test': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Literal', - value: '/42/g', - raw: '/42/g', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - property: { - type: 'Identifier', - name: 'test', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - } - - }, - - 'Left-Hand-Side Expression': { - - 'new Button': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'new Button()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new new foo': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'new new foo()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'new foo().bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'new foo[bar]': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 12], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new foo.bar()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( new foo).bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - 'arguments': [], - range: [2, 9], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - 'arguments': [], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'foo(bar, baz)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'bar', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Identifier', - name: 'baz', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( foo )()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'universe.milkyway.solarsystem': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'universe.milkyway.solarsystem.Earth': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - property: { - type: 'Identifier', - name: 'Earth', - range: [30, 35], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'universe[galaxyName, otherUselessName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Identifier', - name: 'otherUselessName', - range: [21, 37], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 37 } - } - }], - range: [9, 37], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'universe[galaxyName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'universe[42].galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies(14, 3, 77).milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 14, - raw: '14', - range: [22, 24], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 24 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, { - type: 'Literal', - value: 77, - raw: '77', - range: [29, 31], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'earth.asia.Indonesia.prepareForElection(2014)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'earth', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - property: { - type: 'Identifier', - name: 'asia', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - property: { - type: 'Identifier', - name: 'Indonesia', - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - property: { - type: 'Identifier', - name: 'prepareForElection', - range: [21, 39], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 39 } - } - }, - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 2014, - raw: '2014', - range: [40, 44], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - - 'universe.if': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'if', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'universe.true': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'true', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.false': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'false', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'universe.null': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'null', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - } - - }, - - 'Postfix Expressions': { - - 'x++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'x--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'eval++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'arguments++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'arguments--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - } - - }, - - 'Unary Operators': { - - '++x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '--x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '++eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '--eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '++arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '--arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '+x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '+', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '-x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '-', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '~x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '~', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '!x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '!', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - 'void x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'void', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'delete x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - prefix: true, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'typeof x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'typeof', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - prefix: true, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - } - - }, - - 'Multiplicative Operators': { - - 'x * y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x / y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x % y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Additive Operators': { - - 'x + y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x - y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '"use strict" + 42': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - } - - }, - - 'Bitwise Shift Operator': { - - 'x << y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >>> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Relational Operators': { - - 'x < y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x > y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x <= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x in y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x instanceof y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'instanceof', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x < y < z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Equality Operators': { - - 'x == y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x != y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x === y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '===', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x !== y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Binary Bitwise Operators': { - - 'x & y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x ^ y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x | y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Binary Expressions': { - - 'x + y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x % y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x << y << z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x | y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x ^ y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Binary Logical Operators': { - - 'x || y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x && y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x || y || z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x && y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [5, 11], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - } - - }, - - 'Conditional Operator': { - - 'y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'Identifier', - name: 'y', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x && y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - 'x = (0) ? 1 : 2' : { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [ 0, 1 ], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ConditionalExpression', - test: { - type: 'Literal', - value: 0, - raw: '0', - range: [ 5, 6 ], - loc: { start: { line: 1, column: 5 }, end: { line: 1, column: 6 } } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [ 10, 11 ], - loc: { start: { line: 1, column: 10 }, end: { line: 1, column: 11 } } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [ 14, 15 ], - loc: { start: { line: 1, column: 14 }, end: { line: 1, column: 15 } } - }, - range: [ 4, 15 ], - loc: { start: { line: 1, column: 4 }, end: { line: 1, column: 15 } } - }, - range: [ 0, 15 ], - loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 15 } } - }, - range: [ 0, 15 ], - loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 15 } } - } - }, - - 'Assignment Operators': { - - 'x = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'arguments = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x *= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '*=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x /= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '/=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x %= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '%=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x += 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '+=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x -= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '-=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x <<= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '<<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x &= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '&=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x ^= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '^=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x |= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '|=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Complex Expression': { - - 'a || b && c | d ^ e & f == g < h >>> i + j * k': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'a', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'b', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'c', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'd', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'e', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - right: { - type: 'BinaryExpression', - operator: '==', - left: { - type: 'Identifier', - name: 'f', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'g', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'BinaryExpression', - operator: '>>>', - left: { - type: 'Identifier', - name: 'h', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - right: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'i', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'j', - range: [41, 42], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 42 } - } - }, - right: { - type: 'Identifier', - name: 'k', - range: [45, 46], - loc: { - start: { line: 1, column: 45 }, - end: { line: 1, column: 46 } - } - }, - range: [41, 46], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 46 } - } - }, - range: [37, 46], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 46 } - } - }, - range: [31, 46], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 46 } - } - }, - range: [27, 46], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 46 } - } - }, - range: [22, 46], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 46 } - } - }, - range: [18, 46], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 46 } - } - }, - range: [14, 46], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 46 } - } - }, - range: [10, 46], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 46 } - } - }, - range: [5, 46], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 46 } - } - }, - range: [0, 46], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 46 } - } - }, - range: [0, 46], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 46 } - } - } - - }, - - 'Block': { - - '{ foo }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'foo', - range: [2, 5], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 5 } - } - }, - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '{ doThis(); doThat(); }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThis', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [2, 10], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 10 } - } - }, - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [12, 18], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 18 } - } - }, - 'arguments': [], - range: [12, 20], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 20 } - } - }, - range: [12, 21], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '{}': { - type: 'BlockStatement', - body: [], - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - } - - }, - - 'Variable Statement': { - - 'var x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'var x, y;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - init: null, - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }], - kind: 'var', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'var x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'var eval = 42, arguments = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [4, 8], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 8 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var x = 14, y = 3, z = 1977': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [12, 17], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 17 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'var implements, interface, package': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'implements', - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - init: null, - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'interface', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - init: null, - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'package', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - init: null, - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var private, protected, public, static': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'private', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - init: null, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'protected', - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'public', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - init: null, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'static', - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }, - init: null, - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - } - - }, - - 'Let Statement': { - - 'let x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'let', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '{ let x }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: null, - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }], - kind: 'let', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - '{ let x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'let', - range: [2, 13], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 13 } - } - }], - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '{ let x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }, - range: [21, 29], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 29 } - } - }], - kind: 'let', - range: [2, 30], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 30 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - } - - }, - - 'Const Statement': { - - 'const x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'const', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - '{ const x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }], - kind: 'const', - range: [2, 15], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 15 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '{ const x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - kind: 'const', - range: [2, 32], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 32 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - } - - }, - - 'Empty Statement': { - - ';': { - type: 'EmptyStatement', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - } - - }, - - 'Expression Statement': { - - 'x': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - 'x, y': { - type: 'ExpressionStatement', - expression: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Identifier', - name: 'y', - range: [3, 4], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 4 } - } - }], - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'a', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'a\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\\u0061a': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\\u0061a ': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - } - }, - - 'If Statement': { - - 'if (morning) goodMorning()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - alternate: null, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'if (morning) (function(){})': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [24, 26], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 26 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) var x = 0;': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [17, 22], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [13, 23], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 23 } - } - }, - alternate: null, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'if (morning) function a(){}': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'a', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 27], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) goodMorning(); else goodDay()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodDay', - range: [33, 40], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 42], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 42 } - } - } - - }, - - 'Iteration Statements': { - - 'do keep(); while (true)': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'do keep(); while (true);': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'do { x++; y--; } while (x < 10)': { - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - prefix: false, - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - range: [5, 9], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 9 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - prefix: false, - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }], - range: [3, 16], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 16 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [28, 30], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 30 } - } - }, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - '{ do { } while (false) false }': { - type: 'BlockStatement', - body: [{ - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [], - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - test: { - type: 'Literal', - value: false, - raw: 'false', - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, - range: [2, 22], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 22 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: false, - raw: 'false', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - range: [23, 29], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 29 } - } - }], - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'while (true) doSomething()': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doSomething', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (x < 10) { x++; y--; }': { - type: 'WhileStatement', - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [7, 13], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [17, 21], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 21 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [22, 25], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 25 } - } - }, - range: [22, 26], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 26 } - } - }], - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'for(;;);': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'for(;;){}': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BlockStatement', - body: [], - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'for(x = 0;;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'for(var x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'var', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(let x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'let', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(var x = 0, y = 1;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - init: { - type: 'Literal', - value: 1, - raw: '1', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }], - kind: 'var', - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: null, - body: { - type: 'EmptyStatement', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'for(x = 0; x < 42; x++);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42; x++) process(x);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [24, 31], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 31 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'for(x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [15, 22], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 22 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }], - range: [15, 25], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 25 } - } - }, - range: [15, 26], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 26 } - } - }, - each: false, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'for (var x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (var x = 42 in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }], - kind: 'var', - range: [5, 15], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [19, 23], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [25, 32], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [25, 35], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 35 } - } - }, - range: [25, 36], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (let x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'let', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (var x = y = z in q);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'y', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - range: [13, 18], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [5, 18], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 18 } - } - }, - right: { - type: 'Identifier', - name: 'q', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'EmptyStatement', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - each: false, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'for (var a = b = c = (d in e) in z);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'a', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'b', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'c', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - right: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Identifier', - name: 'd', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'Identifier', - name: 'e', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - range: [22, 28], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 28 } - } - }, - range: [17, 29], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 29 } - } - }, - range: [13, 29], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 29 } - } - }, - range: [9, 29], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 29 } - } - }], - kind: 'var', - range: [5, 29], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 29 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }, - body: { - type: 'EmptyStatement', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (var i = function() { return 10 in [] } in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'i', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Literal', - value: 10, - raw: '10', - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 43], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 43 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 43 } - } - }, - range: [9, 43], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [5, 43], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 43 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [47, 51], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 51 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [53, 60], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 60 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [61, 62], - loc: { - start: { line: 1, column: 61 }, - end: { line: 1, column: 62 } - } - }], - range: [53, 63], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 63 } - } - }, - range: [53, 64], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 64 } - } - }, - each: false, - range: [0, 64], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 64 } - } - } - - }, - - 'continue statement': { - - 'while (true) { continue; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (true) { continue }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 25], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 25 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'done: while (true) { continue done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 36], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 36 } - } - }, - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'done: while (true) { continue done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 37], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 37 } - } - }, - range: [6, 37], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - }, - - '__proto__: while (true) { continue __proto__; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [35, 44], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 44 } - } - }, - range: [26, 45], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 45 } - } - }], - range: [24, 47], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 47 } - } - }, - range: [11, 47], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 47 } - } - }, - range: [0, 47], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 47 } - } - } - - }, - - 'break statement': { - - 'while (true) { break }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: null, - range: [15, 21], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 21 } - } - } - ], - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'done: while (true) { break done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 33], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 33 } - } - }, - range: [6, 33], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 33 } - } - }, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'done: while (true) { break done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - '__proto__: while (true) { break __proto__; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [32, 41], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 41 } - } - }, - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 44], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 44 } - } - }, - range: [11, 44], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 44 } - } - }, - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - } - } - - }, - - 'return statement': { - - '(function(){ return })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 21], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '(function(){ return; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 22], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 22], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function(){ return x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - '(function(){ return x * y })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - } - ], - range: [11, 27], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 27], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - } - }, - - 'with statement': { - - 'with (x) foo = bar': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'with (x) foo = bar;': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'with (x) { foo = bar }': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }], - range: [9, 22], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - } - - }, - - 'switch statement': { - - 'switch (x) {}': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - cases:[], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'switch (answer) { case 42: hi(); break; }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'switch (answer) { case 42: hi(); break; default: break }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }, { - type: 'SwitchCase', - test: null, - consequent: [{ - type: 'BreakStatement', - label: null, - range: [49, 55], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 55 } - } - }], - range: [40, 55], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 56], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 56 } - } - } - - }, - - 'Labelled Statements': { - - 'start: for (;;) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - range: [16, 27], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 27 } - } - }, - range: [7, 27], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'start: while (true) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - range: [7, 31], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 31 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - '__proto__: test': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'test', - range: [11, 15], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 15 } - } - }, - range: [11, 15], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - } - - }, - - 'throw statement': { - - 'throw x;': { - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'throw x * y': { - type: 'ThrowStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'throw { message: "Error" }': { - type: 'ThrowStatement', - argument: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'message', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'Literal', - value: 'Error', - raw: '"Error"', - range: [17, 24], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 24 } - } - }, - kind: 'init', - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - range: [6, 26], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - } - - }, - - 'try statement': { - - 'try { } catch (e) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [18, 21], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 21 } - } - }, - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }], - finalizer: null, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'try { } catch (eval) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [15, 19], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 19 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - finalizer: null, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'try { } catch (arguments) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, - range: [8, 29], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 29 } - } - }], - finalizer: null, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'try { } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }], - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }], - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [8, 28], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 28 } - } - }], - finalizer: null, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'try { } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [18, 25], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - range: [18, 33], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 33 } - } - }], - range: [16, 34], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'try { doThat(); } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: null, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [49, 56], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 56 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [57, 62], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 62 } - } - }], - range: [49, 63], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 63 } - } - }, - range: [49, 64], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 64 } - } - }], - range: [47, 65], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 65 } - } - }, - range: [0, 65], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 65 } - } - } - - }, - - 'debugger statement': { - - 'debugger;': { - type: 'DebuggerStatement', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Function Definition': { - - 'function hello() { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [19, 24], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [19, 26], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 26 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - range: [17, 29], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 29 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'function eval() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'function arguments() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'function test(t, t) { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'test', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, { - type: 'Identifier', - name: 't', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function test(t, t) { })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'test', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 't', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'function eval() { function inner() { "use strict" } }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'inner', - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\"use strict\"', - range: [37, 49], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 49 } - } - }, - range: [37, 50], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 50 } - } - }], - range: [35, 51], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 51 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 51], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 51 } - } - }], - range: [16, 53], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 53 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 53], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 53 } - } - }, - - 'function hello(a) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [], - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - range: [20, 28], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 28 } - } - }], - range: [18, 30], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'function hello(a, b) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 'b', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - 'arguments': [], - range: [23, 30], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 30 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'var hi = function() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [], - range: [22, 29], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 29 } - } - }, - range: [22, 30], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 30 } - } - }], - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 31], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 31 } - } - }, - range: [4, 31], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'var hi = function eval() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 28], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 28 } - } - }, - range: [4, 28], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 28 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var hi = function arguments() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 33], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 33 } - } - }, - range: [4, 33], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 33 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var hello = function hi() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hello', - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'hi', - range: [21, 23], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [28, 33], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [], - range: [28, 35], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 35 } - } - }, - range: [28, 36], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 36 } - } - }], - range: [26, 37], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [12, 37], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 37 } - } - }, - range: [4, 37], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 37 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - '(function(){})': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 13], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'function universe(__proto__) { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'universe', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - params: [{ - type: 'Identifier', - name: '__proto__', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [29, 32], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'function test() { "use strict" + 42; }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'test', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [18, 30], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 30 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - range: [18, 35], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 35 } - } - }, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }], - range: [16, 38], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - } - - }, - - 'Automatic semicolon insertion': { - - '{ x\n++y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '{ x\n--y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - 'var x /* comment */;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - '{ var x = 14, y = 3\nz; }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }], - kind: 'var', - range: [2, 20], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'z', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 4 } - } - }, - - 'while (true) { continue\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 32], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [35, 40], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [35, 41], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [47, 52], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [47, 53], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 55], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - 'while (true) { break\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [21, 26], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [21, 27], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 29], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [32, 37], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [32, 38], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [44, 49], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [44, 50], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 52], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 52], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - '(function(){ return\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return // Comment\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [31, 32], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [31, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 35], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 35], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return/* Multiline\nComment */x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [42, 43], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 11 } - } - }, - range: [42, 44], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 12 } - } - } - ], - range: [11, 46], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 14 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 46], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 47], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '{ throw error\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 14], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [14, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [14, 20], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error// Comment\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 24], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error/* Multiline\nComment */error; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 36], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 10 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [36, 41], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [36, 42], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - } - - }, - - 'Directive Prolog': { - - '(function () { \'use\\x20strict\'; with (i); }())': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use\\x20strict\'', - range: [15, 30], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 30 } - } - }, - range: [15, 31], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 31 } - } - }, { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'i', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }, - body: { - type: 'EmptyStatement', - range: [40, 41], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 41 } - } - }, - range: [32, 41], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 41 } - } - }], - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 43 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 43], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 43 } - } - }, - 'arguments': [], - range: [1, 45], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 45 } - } - }, - range: [0, 46], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 46 } - } - }, - - '(function () { \'use\\nstrict\'; with (i); }())': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use\nstrict', - raw: '\'use\\nstrict\'', - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }, { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'i', - range: [36, 37], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 37 } - } - }, - body: { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }, - range: [30, 39], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 39 } - } - }], - range: [13, 41], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 41 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 41], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 41 } - } - }, - 'arguments': [], - range: [1, 43], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 43 } - } - }, - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - } - } - - }, - - 'Whitespace': { - - 'new\x20\x09\x0B\x0C\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFFa': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'a', - range: [25, 26], - loc: { - start: {line: 1, column: 25}, - end: {line: 1, column: 26} - } - }, - arguments: [], - range: [0, 26], - loc: { - start: {line: 1, column: 0}, - end: {line: 1, column: 26} - } - }, - range: [0, 26], - loc: { - start: {line: 1, column: 0}, - end: {line: 1, column: 26} - } - }, - - '{0\x0A1\x0D2\u20283\u20294}': { - type: 'BlockStatement', - body: [ - { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0', - range: [1, 2], - loc: { - start: {line: 1, column: 1}, - end: {line: 1, column: 2} - } - }, - range: [1, 3], - loc: { - start: {line: 1, column: 1}, - end: {line: 2, column: 0} - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 1, - raw: '1', - range: [3, 4], - loc: { - start: {line: 2, column: 0}, - end: {line: 2, column: 1} - } - }, - range: [3, 5], - loc: { - start: {line: 2, column: 0}, - end: {line: 3, column: 0} - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 2, - raw: '2', - range: [5, 6], - loc: { - start: {line: 3, column: 0}, - end: {line: 3, column: 1} - } - }, - range: [5, 7], - loc: { - start: {line: 3, column: 0}, - end: {line: 4, column: 0} - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3, - raw: '3', - range: [7, 8], - loc: { - start: {line: 4, column: 0}, - end: {line: 4, column: 1} - } - }, - range: [7, 9], - loc: { - start: {line: 4, column: 0}, - end: {line: 5, column: 0} - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 4, - raw: '4', - range: [9, 10], - loc: { - start: {line: 5, column: 0}, - end: {line: 5, column: 1} - } - }, - range: [9, 10], - loc: { - start: {line: 5, column: 0}, - end: {line: 5, column: 1} - } - } - ], - range: [0, 11], - loc: { - start: {line: 1, column: 0}, - end: {line: 5, column: 2} - } - } - - }, - - 'Source elements': { - - '': { - type: 'Program', - body: [], - range: [0, 0], - loc: { - start: { line: 0, column: 0 }, - end: { line: 0, column: 0 } - }, - tokens: [] - } - }, - - 'Source option': { - 'x + y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 }, - source: '42.js' - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 }, - source: '42.js' - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 }, - source: '42.js' - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 }, - source: '42.js' - } - }, - - 'a + (b < (c * d)) + e': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'a', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 }, - source: '42.js' - } - }, - right: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'b', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 }, - source: '42.js' - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'c', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'd', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 }, - source: '42.js' - } - }, - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 }, - source: '42.js' - } - }, - range: [5, 16], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 16 }, - source: '42.js' - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'e', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 }, - source: '42.js' - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 }, - source: '42.js' - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 }, - source: '42.js' - } - } - - }, - - - 'Invalid syntax': { - - '{': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '}': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token }' - }, - - '3ea': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in []': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e+': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e-': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x0': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '09': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '018': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '01a': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in[]': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x3in[]': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"Hello\nWorld"': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u005c': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u002a': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var x = /(s/g': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Invalid regular expression' - }, - - 'a\\u': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\ua': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '/test': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '/test\n/': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = /[a-z]/\\ux': { - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Invalid regular expression' - }, - - 'var x = /[a-z\n]/\\ux': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '3 = 4': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'func() = 4': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '(1 + 1) = 10': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1++': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1--': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '++1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '--1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'for((1 + 1) in list) process(x);': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - '[': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '[,': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + {': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t ': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t,': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'var x = /\n/': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = "\n': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var if = 42': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token if' - }, - - 'i #= 42': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'i + 2 = 42': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '+i = 42': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1 + (': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '\n\n\n{': { - index: 4, - lineNumber: 4, - column: 2, - message: 'Error: Line 4: Unexpected end of input' - }, - - '\n/* Some multiline\ncomment */\n)': { - index: 30, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token )' - }, - - '{ set 1 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '{ get 2 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '({ set: s(if) { } })': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token if' - }, - - '({ set s(.) { } })': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token .' - }, - - '({ set s() { } })': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token )' - }, - - '({ set: s() { } })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ set: s(a, b) { } })': { - index: 16, - lineNumber: 1, - column: 17, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get: g(d) { } })': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get i() { }, i: 42 })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, get i() { } })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ set i(x) { }, i: 42 })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, set i(x) { } })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ get i() { }, get i() { } })': { - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - '({ set i(x) { }, set i(x) { } })': { - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - 'function t(if) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token if' - }, - - 'function t(true) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function t(false) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function t(null) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function null() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function true() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function false() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function if() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a b;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected identifier' - }, - - 'if.a;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token .' - }, - - 'a if;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a class;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected reserved word' - }, - - 'break\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'break 1;': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - 'continue\n': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'continue 2;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected number' - }, - - 'throw': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'throw;': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'throw\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal newline after throw' - }, - - 'for (var i, i2 in {});': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token in' - }, - - 'for ((i in {}));': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'for (i + 1 in {});': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'for (+i in {});': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'if(false)': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'if(false) doThis(); else': { - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'do': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'while(false)': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'for(;;)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'with(x)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'try { }': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Missing catch or finally after try' - }, - - 'try {} catch (42) {} ': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected number' - }, - - 'try {} catch (answer()) {} ': { - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Unexpected token (' - }, - - 'try {} catch (-x) {} ': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token -' - }, - - - '\u203F = 10': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'const x = 12, y;': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'const x, y = 12;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ,' - }, - - 'const x;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'if(true) let a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token let' - }, - - 'if(true) const a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token const' - }, - - 'switch (c) { default: default: }': { - index: 30, - lineNumber: 1, - column: 31, - message: 'Error: Line 1: More than one default clause in switch statement' - }, - - 'new X()."s"': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Unexpected string' - }, - - '/*': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n\n': { - index: 5, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token ILLEGAL' - }, - - '/**': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n*': { - index: 5, - lineNumber: 3, - column: 2, - message: 'Error: Line 3: Unexpected token ILLEGAL' - }, - - '/*hello': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*hello *': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\n]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r\n]': { - index: 2, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\n\r]': { - index: 2, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '//\r\n]': { - index: 4, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '//\n\r]': { - index: 4, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/a\\\n/': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '//\r \n]': { - index: 5, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r\n*/]': { - index: 6, - lineNumber: 2, - column: 3, - message: 'Error: Line 2: Unexpected token ]' - }, - - '/*\n\r*/]': { - index: 6, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r \n*/]': { - index: 7, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '\\\\': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u005c': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - - '\\x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u0000': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200C = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200D = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\u': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'try { } catch() {}': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'return': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }, - - 'break': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'continue': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'switch (x) { default: continue; }': { - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'do { x } *': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token *' - }, - - 'while (true) { break x; }': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'while (true) { continue x; }': { - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break x; }); }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { continue x; }); }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break; }); }': { - index: 39, - lineNumber: 1, - column: 40, - message: 'Error: Line 1: Illegal break statement' - }, - - 'x: while (true) { (function () { continue; }); }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'x: while (true) { x: while (true) { } }': { - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Label \'x\' has already been declared' - }, - - '(function () { \'use strict\'; delete i; }())': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }, - - '(function () { \'use strict\'; with (i); }())': { - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }, - - 'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': { - index: 73, - lineNumber: 1, - column: 74, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; var eval = 10; }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; var arguments = 10; }': { - index: 45, - lineNumber: 1, - column: 46, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (eval) { } }': { - index: 51, - lineNumber: 1, - column: 52, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (arguments) { } }': { - index: 56, - lineNumber: 1, - column: 57, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; eval = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; arguments = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ++eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; ++arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval++; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval--; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments++; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments--; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; function eval() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; function arguments() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function eval() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function arguments() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function eval() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function arguments() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function eval() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function arguments() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function eval() { } }); }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function package() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ set s(eval) { } }); }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': { - index: 49, - lineNumber: 1, - column: 50, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(eval) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(arguments) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(eval) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(arguments) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - ' "\\1"; \'use strict\';': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; "\\1"; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; 021; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ "\\1": 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ 021: 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': { - index: 52, - lineNumber: 1, - column: 53, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; var implements; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var interface; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var package; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var private; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var protected; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var public; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var static; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var yield; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var let; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello(static) { "use strict"; }': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function static() { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function eval(a) { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function arguments(a) { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'var yield': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token yield' - }, - - 'var let': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token let' - }, - - '"use strict"; function static() { }': { - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a(t, t) { "use strict"; }': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a(eval) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function a(package) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a() { "use strict"; function b(t, t) { }; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(t, t) { "use strict"; })': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a() { "use strict"; (function b(t, t) { }); }': { - index: 44, - lineNumber: 1, - column: 45, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(eval) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - '(function a(package) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - '__proto__: __proto__: 42;': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Label \'__proto__\' has already been declared' - }, - - '"use strict"; function t(__proto__, __proto__) { }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '"use strict"; x = { __proto__: 42, __proto__: 43 }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - '"use strict"; x = { get __proto__() { }, __proto__: 43 }': { - index: 54, - lineNumber: 1, - column: 55, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - 'var': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'let': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'const': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '{ ; ; ': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'function t() { ; ; ': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Unexpected end of input' - } - - }, - - 'Tokenize': { - 'tokenize(/42/)': [ - { - "type": "Identifier", - "value": "tokenize", - "range": [ - 0, - 8 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 8 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 8, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 8 - }, - "end": { - "line": 1, - "column": 9 - } - } - }, - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 9, - 13 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 13 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 13, - 14 - ], - "loc": { - "start": { - "line": 1, - "column": 13 - }, - "end": { - "line": 1, - "column": 14 - } - } - } - ], - - 'if (false) { /42/ }': [ - { - "type": "Keyword", - "value": "if", - "range": [ - 0, - 2 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 2 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 3, - 4 - ], - "loc": { - "start": { - "line": 1, - "column": 3 - }, - "end": { - "line": 1, - "column": 4 - } - } - }, - { - "type": "Boolean", - "value": "false", - "range": [ - 4, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 4 - }, - "end": { - "line": 1, - "column": 9 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 9, - 10 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 10 - } - } - }, - { - "type": "Punctuator", - "value": "{", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - }, - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 13, - 17 - ], - "loc": { - "start": { - "line": 1, - "column": 13 - }, - "end": { - "line": 1, - "column": 17 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 18, - 19 - ], - "loc": { - "start": { - "line": 1, - "column": 18 - }, - "end": { - "line": 1, - "column": 19 - } - } - } - ], - - 'with (false) /42/': [ - { - "type": "Keyword", - "value": "with", - "range": [ - 0, - 4 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 4 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 5, - 6 - ], - "loc": { - "start": { - "line": 1, - "column": 5 - }, - "end": { - "line": 1, - "column": 6 - } - } - }, - { - "type": "Boolean", - "value": "false", - "range": [ - 6, - 11 - ], - "loc": { - "start": { - "line": 1, - "column": 6 - }, - "end": { - "line": 1, - "column": 11 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - }, - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 13, - 17 - ], - "loc": { - "start": { - "line": 1, - "column": 13 - }, - "end": { - "line": 1, - "column": 17 - } - } - } - ], - - '(false) /42/': [ - { - "type": "Punctuator", - "value": "(", - "range": [ - 0, - 1 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 1 - } - } - }, - { - "type": "Boolean", - "value": "false", - "range": [ - 1, - 6 - ], - "loc": { - "start": { - "line": 1, - "column": 1 - }, - "end": { - "line": 1, - "column": 6 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 6, - 7 - ], - "loc": { - "start": { - "line": 1, - "column": 6 - }, - "end": { - "line": 1, - "column": 7 - } - } - }, - { - "type": "Punctuator", - "value": "/", - "range": [ - 8, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 8 - }, - "end": { - "line": 1, - "column": 9 - } - } - }, - { - "type": "Numeric", - "value": "42", - "range": [ - 9, - 11 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 11 - } - } - }, - { - "type": "Punctuator", - "value": "/", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - } - ], - - 'function f(){} /42/': [ - { - "type": "Keyword", - "value": "function", - "range": [ - 0, - 8 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 8 - } - } - }, - { - "type": "Identifier", - "value": "f", - "range": [ - 9, - 10 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 10 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 10, - 11 - ], - "loc": { - "start": { - "line": 1, - "column": 10 - }, - "end": { - "line": 1, - "column": 11 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - }, - { - "type": "Punctuator", - "value": "{", - "range": [ - 12, - 13 - ], - "loc": { - "start": { - "line": 1, - "column": 12 - }, - "end": { - "line": 1, - "column": 13 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 13, - 14 - ], - "loc": { - "start": { - "line": 1, - "column": 13 - }, - "end": { - "line": 1, - "column": 14 - } - } - }, - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 15, - 19 - ], - "loc": { - "start": { - "line": 1, - "column": 15 - }, - "end": { - "line": 1, - "column": 19 - } - } - } - ], - - 'function(){} /42': [ - { - "type": "Keyword", - "value": "function", - "range": [ - 0, - 8 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 8 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 8, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 8 - }, - "end": { - "line": 1, - "column": 9 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 9, - 10 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 10 - } - } - }, - { - "type": "Punctuator", - "value": "{", - "range": [ - 10, - 11 - ], - "loc": { - "start": { - "line": 1, - "column": 10 - }, - "end": { - "line": 1, - "column": 11 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - }, - { - "type": "Punctuator", - "value": "/", - "range": [ - 13, - 14 - ], - "loc": { - "start": { - "line": 1, - "column": 13 - }, - "end": { - "line": 1, - "column": 14 - } - } - }, - { - "type": "Numeric", - "value": "42", - "range": [ - 14, - 16 - ], - "loc": { - "start": { - "line": 1, - "column": 14 - }, - "end": { - "line": 1, - "column": 16 - } - } - } - ], - - '{} /42': [ - { - "type": "Punctuator", - "value": "{", - "range": [ - 0, - 1 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 1 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 1, - 2 - ], - "loc": { - "start": { - "line": 1, - "column": 1 - }, - "end": { - "line": 1, - "column": 2 - } - } - }, - { - "type": "Punctuator", - "value": "/", - "range": [ - 3, - 4 - ], - "loc": { - "start": { - "line": 1, - "column": 3 - }, - "end": { - "line": 1, - "column": 4 - } - } - }, - { - "type": "Numeric", - "value": "42", - "range": [ - 4, - 6 - ], - "loc": { - "start": { - "line": 1, - "column": 4 - }, - "end": { - "line": 1, - "column": 6 - } - } - } - ], - - '[function(){} /42]': [ - { - "type": "Punctuator", - "value": "[", - "range": [ - 0, - 1 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 1 - } - } - }, - { - "type": "Keyword", - "value": "function", - "range": [ - 1, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 1 - }, - "end": { - "line": 1, - "column": 9 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 9, - 10 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 10 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 10, - 11 - ], - "loc": { - "start": { - "line": 1, - "column": 10 - }, - "end": { - "line": 1, - "column": 11 - } - } - }, - { - "type": "Punctuator", - "value": "{", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 12, - 13 - ], - "loc": { - "start": { - "line": 1, - "column": 12 - }, - "end": { - "line": 1, - "column": 13 - } - } - }, - { - "type": "Punctuator", - "value": "/", - "range": [ - 14, - 15 - ], - "loc": { - "start": { - "line": 1, - "column": 14 - }, - "end": { - "line": 1, - "column": 15 - } - } - }, - { - "type": "Numeric", - "value": "42", - "range": [ - 15, - 17 - ], - "loc": { - "start": { - "line": 1, - "column": 15 - }, - "end": { - "line": 1, - "column": 17 - } - } - }, - { - "type": "Punctuator", - "value": "]", - "range": [ - 17, - 18 - ], - "loc": { - "start": { - "line": 1, - "column": 17 - }, - "end": { - "line": 1, - "column": 18 - } - } - } - ], - - ';function f(){} /42/': [ - { - "type": "Punctuator", - "value": ";", - "range": [ - 0, - 1 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 1 - } - } - }, - { - "type": "Keyword", - "value": "function", - "range": [ - 1, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 1 - }, - "end": { - "line": 1, - "column": 9 - } - } - }, - { - "type": "Identifier", - "value": "f", - "range": [ - 10, - 11 - ], - "loc": { - "start": { - "line": 1, - "column": 10 - }, - "end": { - "line": 1, - "column": 11 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 11, - 12 - ], - "loc": { - "start": { - "line": 1, - "column": 11 - }, - "end": { - "line": 1, - "column": 12 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 12, - 13 - ], - "loc": { - "start": { - "line": 1, - "column": 12 - }, - "end": { - "line": 1, - "column": 13 - } - } - }, - { - "type": "Punctuator", - "value": "{", - "range": [ - 13, - 14 - ], - "loc": { - "start": { - "line": 1, - "column": 13 - }, - "end": { - "line": 1, - "column": 14 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 14, - 15 - ], - "loc": { - "start": { - "line": 1, - "column": 14 - }, - "end": { - "line": 1, - "column": 15 - } - } - }, - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 16, - 20 - ], - "loc": { - "start": { - "line": 1, - "column": 16 - }, - "end": { - "line": 1, - "column": 20 - } - } - } - ], - - 'void /42/': [ - { - "type": "Keyword", - "value": "void", - "range": [ - 0, - 4 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 4 - } - } - }, - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 5, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 5 - }, - "end": { - "line": 1, - "column": 9 - } - } - } - ], - - '/42/': [ - { - "type": "RegularExpression", - "value": "/42/", - "range": [ - 0, - 4 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 4 - } - } - } - ], - - 'foo[/42]': [ - { - "type": "Identifier", - "value": "foo", - "range": [ - 0, - 3 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 3 - } - } - }, - { - "type": "Punctuator", - "value": "[", - "range": [ - 3, - 4 - ], - "loc": { - "start": { - "line": 1, - "column": 3 - }, - "end": { - "line": 1, - "column": 4 - } - } - } - ], - - '[a] / b': [ - { - "type": "Punctuator", - "value": "[", - "range": [ - 0, - 1 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 1 - } - } - }, - { - "type": "Identifier", - "value": "a", - "range": [ - 1, - 2 - ], - "loc": { - "start": { - "line": 1, - "column": 1 - }, - "end": { - "line": 1, - "column": 2 - } - } - }, - { - "type": "Punctuator", - "value": "]", - "range": [ - 2, - 3 - ], - "loc": { - "start": { - "line": 1, - "column": 2 - }, - "end": { - "line": 1, - "column": 3 - } - } - }, - { - "type": "Punctuator", - "value": "/", - "range": [ - 4, - 5 - ], - "loc": { - "start": { - "line": 1, - "column": 4 - }, - "end": { - "line": 1, - "column": 5 - } - } - }, - { - "type": "Identifier", - "value": "b", - "range": [ - 6, - 7 - ], - "loc": { - "start": { - "line": 1, - "column": 6 - }, - "end": { - "line": 1, - "column": 7 - } - } - } - ], - - '': [], - - '/42': { - tokenize: true, - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'foo[/42': { - tokenize: true, - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid regular expression: missing /' - } - - }, - - 'API': { - 'parse()': { - call: 'parse', - args: [], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(null)': { - call: 'parse', - args: [null], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null, - raw: 'null' - } - }] - } - }, - - 'parse(42)': { - call: 'parse', - args: [42], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42' - } - }] - } - }, - - 'parse(true)': { - call: 'parse', - args: [true], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true, - raw: 'true' - } - }] - } - }, - - 'parse(undefined)': { - call: 'parse', - args: [void 0], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(new String("test"))': { - call: 'parse', - args: [new String('test')], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'test' - } - }] - } - }, - - 'parse(new Number(42))': { - call: 'parse', - args: [new Number(42)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42' - } - }] - } - }, - - 'parse(new Boolean(true))': { - call: 'parse', - args: [new Boolean(true)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true, - raw: 'true' - } - }] - } - }, - - 'Syntax': { - property: 'Syntax', - result: { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - } - }, - - 'tokenize()': { - call: 'tokenize', - args: [], - result: [{ - type: 'Identifier', - value: 'undefined' - }] - }, - - 'tokenize(null)': { - call: 'tokenize', - args: [null], - result: [{ - type: 'Null', - value: 'null' - }] - }, - - 'tokenize(42)': { - call: 'tokenize', - args: [42], - result: [{ - type: 'Numeric', - value: '42' - }] - }, - - 'tokenize(true)': { - call: 'tokenize', - args: [true], - result: [{ - type: 'Boolean', - value: 'true' - }] - }, - - 'tokenize(undefined)': { - call: 'tokenize', - args: [void 0], - result: [{ - type: 'Identifier', - value: 'undefined' - }] - }, - - 'tokenize(new String("test"))': { - call: 'tokenize', - args: [new String('test')], - result: [{ - type: 'Identifier', - value: 'test' - }] - }, - - 'tokenize(new Number(42))': { - call: 'tokenize', - args: [new Number(42)], - result: [{ - type: 'Numeric', - value: '42' - }] - }, - - 'tokenize(new Boolean(true))': { - call: 'tokenize', - args: [new Boolean(true)], - result: [{ - type: 'Boolean', - value: 'true' - }] - }, - - }, - - 'Tolerant parse': { - 'return': { - type: 'Program', - body: [{ - type: 'ReturnStatement', - 'argument': null, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - errors: [{ - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }] - }, - - '(function () { \'use strict\'; with (i); }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - body: { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - range: [29, 38], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 38 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 40 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 40], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [1, 42], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }] - }, - - '(function () { \'use strict\'; 021 }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 17, - raw: "021", - range: [29, 32], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 32 } - } - }, - range: [29, 33], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 33 } - } - }], - range: [13, 34], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 34], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 34 } - } - }, - 'arguments': [], - range: [1, 36], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - }], - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; delete x': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - prefix: true, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }] - }, - - '"use strict"; try {} catch (eval) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [28, 32], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 32 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [34, 36], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 36 } - } - }, - range: [21, 36], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 36 } - } - }], - finalizer: null, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; try {} catch (arguments) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [28, 37], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 37 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [21, 41], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 41 } - } - }], - finalizer: null, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - init: null, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; eval = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; eval++;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; --eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [16, 20], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 20 } - } - }, - prefix: true, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; arguments = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 27], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; arguments--;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; ++arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - prefix: true, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - - '"use strict";x={y:1,y:1}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - kind: 'init', - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - kind: 'init', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }], - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }] - }, - - '"use strict"; function eval() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 32], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 32], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 32 } - } - }, { - type: 'EmptyStatement', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function arguments() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function interface() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'interface', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; (function eval() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [24, 28], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 28 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 33], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 33 } - } - }, - range: [14, 35], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 35 } - } - }], - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function arguments() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function interface() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'interface', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; function f(eval) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 33], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 33 } - } - }, { - type: 'EmptyStatement', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(arguments) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [25, 34], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(foo, foo) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [31, 34], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; (function f(eval) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 34], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 34 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - - '"use strict"; (function f(arguments) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [26, 35], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; (function f(foo, foo) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [32, 35], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; x = { set f(eval) {} }' : { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value : { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - type: 'Program', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'octal directive\u0001', - raw: '"octal directive\\1"', - range: [19, 38], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 38 } - } - }, - range: [19, 39], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 39 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [40, 52], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 52 } - } - }, - range: [40, 53], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 53 } - } - }], - range: [17, 55], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 55 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - }, - errors: [{ - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"\\1"; \'use strict\';': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\u0001', - raw: '"\\1"', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }, - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - }, - errors: [{ - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { 014: 3}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 12, - raw: '014', - range: [24, 27], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 27 } - } - }, - value: { - type: 'Literal', - value: 3, - raw: '3', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - kind: 'init', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }], - range: [22, 31], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 31 } - } - }, - range: [18, 31], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [14, 31], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { get i() {}, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'get', - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [40, 41], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 41 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - rest: null, - generator: false, - expression: false, - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - kind: 'get', - range: [36, 46], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 46 } - } - }], - range: [22, 48], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 48 } - } - }, - range: [18, 48], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 48 } - } - }], - kind: 'var', - range: [14, 48], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 48 } - } - }], - range: [0, 48], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 48 } - }, - errors: [{ - index: 46, - lineNumber: 1, - column: 47, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }] - }, - - '"use strict"; var x = { i: 42, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - kind: 'init', - range: [24, 29], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - rest: null, - generator: false, - expression: false, - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - kind: 'get', - range: [31, 41], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 41 } - } - }], - range: [22, 43], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 43 } - } - }, - range: [18, 43], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [14, 43], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - }, - - '"use strict"; var x = { set i(x) {}, i: 42 }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'x', - range: [30, 31], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 31 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - rest: null, - generator: false, - expression: false, - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - kind: 'set', - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [40, 42], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 42 } - } - }, - kind: 'init', - range: [37, 42], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 42 } - } - }], - range: [22, 44], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 44 } - } - }, - range: [18, 44], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 44 } - } - }], - kind: 'var', - range: [14, 44], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - }, - errors: [{ - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - - - }, - - '({ set s() { } })': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 's', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - rest: null, - generator: false, - expression: false, - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - kind: 'set', - range: [3, 14], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 14 } - } - }], - range: [1, 16], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }], - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - }, - errors: [{ - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token )' - }] - }, - - 'foo("bar") = baz': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 'bar', - raw: '"bar"', - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }], - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'baz', - range: [13, 16], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - errors: [{ - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - '1 = 2': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - }, - errors: [{ - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - '3++': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Literal', - value: 3, - raw: '3', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }], - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - }, - errors: [{ - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - '--4': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Literal', - value: 4, - raw: '4', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }], - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - }, - errors: [{ - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - 'for (5 in []) {}': { - type: 'Program', - body: [{ - type: 'ForInStatement', - left: { - type: 'Literal', - value: 5, - raw: '5', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - each: false, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - errors: [{ - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }] - } - - - } -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/.jshintrc b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/.jshintrc deleted file mode 100644 index f642dae..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/.jshintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "eqnull": true, - "latedef": true, - "noarg": true, - "noempty": true, - "quotmark": "single", - "undef": true, - "unused": true, - "strict": true, - "trailing": true, - - "node": true -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD deleted file mode 100644 index 3e580c3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD +++ /dev/null @@ -1,19 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/README.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/README.md deleted file mode 100644 index fdef74d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/README.md +++ /dev/null @@ -1,70 +0,0 @@ -### Estraverse [![Build Status](https://secure.travis-ci.org/Constellation/estraverse.png)](http://travis-ci.org/Constellation/estraverse) - -Estraverse ([estraverse](http://github.com/Constellation/estraverse)) is -[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -traversal functions from [esmangle project](http://github.com/Constellation/esmangle). - -### Example Usage - -The following code will output all variables declared at the root of a file. - -```javascript -estraverse.traverse(ast, { - enter: function (node, parent) { - if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration') - return estraverse.VisitorOption.Skip; - }, - leave: function (node, parent) { - if (node.type == 'VariableDeclarator') - console.log(node.id.name); - } -}); -``` - -We can use `this.skip` and `this.break` functions instead of using Skip and Break. - -```javascript -estraverse.traverse(ast, { - enter: function (node) { - this.break(); - } -}); -``` - -And estraverse provides `estraverse.replace` function. When returning node from `enter`/`leave`, current node is replaced with it. - -```javascript -result = estraverse.replace(tree, { - enter: function (node) { - // Replace it with replaced. - if (node.type === 'Literal') - return replaced; - } -}); -``` - -### License - -Copyright (C) 2012-2013 [Yusuke Suzuki](http://github.com/Constellation) - (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/estraverse.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/estraverse.js deleted file mode 100644 index 98ac95f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/estraverse.js +++ /dev/null @@ -1,689 +0,0 @@ -/* - Copyright (C) 2012-2013 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -/*jslint vars:false, bitwise:true*/ -/*jshint indent:4*/ -/*global exports:true, define:true*/ -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // and plain browser loading, - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.estraverse = {})); - } -}(this, function (exports) { - 'use strict'; - - var Syntax, - isArray, - VisitorOption, - VisitorKeys, - BREAK, - SKIP; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - ArrayPattern: 'ArrayPattern', - ArrowFunctionExpression: 'ArrowFunctionExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ClassBody: 'ClassBody', - ClassDeclaration: 'ClassDeclaration', - ClassExpression: 'ClassExpression', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DebuggerStatement: 'DebuggerStatement', - DirectiveStatement: 'DirectiveStatement', - DoWhileStatement: 'DoWhileStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - MethodDefinition: 'MethodDefinition', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - ObjectPattern: 'ObjectPattern', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement', - YieldExpression: 'YieldExpression' - }; - - function ignoreJSHintError() { } - - isArray = Array.isArray; - if (!isArray) { - isArray = function isArray(array) { - return Object.prototype.toString.call(array) === '[object Array]'; - }; - } - - function deepCopy(obj) { - var ret = {}, key, val; - for (key in obj) { - if (obj.hasOwnProperty(key)) { - val = obj[key]; - if (typeof val === 'object' && val !== null) { - ret[key] = deepCopy(val); - } else { - ret[key] = val; - } - } - } - return ret; - } - - function shallowCopy(obj) { - var ret = {}, key; - for (key in obj) { - if (obj.hasOwnProperty(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - ignoreJSHintError(shallowCopy); - - // based on LLVM libc++ upper_bound / lower_bound - // MIT License - - function upperBound(array, func) { - var diff, len, i, current; - - len = array.length; - i = 0; - - while (len) { - diff = len >>> 1; - current = i + diff; - if (func(array[current])) { - len = diff; - } else { - i = current + 1; - len -= diff + 1; - } - } - return i; - } - - function lowerBound(array, func) { - var diff, len, i, current; - - len = array.length; - i = 0; - - while (len) { - diff = len >>> 1; - current = i + diff; - if (func(array[current])) { - i = current + 1; - len -= diff + 1; - } else { - len = diff; - } - } - return i; - } - ignoreJSHintError(lowerBound); - - VisitorKeys = { - AssignmentExpression: ['left', 'right'], - ArrayExpression: ['elements'], - ArrayPattern: ['elements'], - ArrowFunctionExpression: ['params', 'defaults', 'rest', 'body'], - BlockStatement: ['body'], - BinaryExpression: ['left', 'right'], - BreakStatement: ['label'], - CallExpression: ['callee', 'arguments'], - CatchClause: ['param', 'body'], - ClassBody: ['body'], - ClassDeclaration: ['id', 'body', 'superClass'], - ClassExpression: ['id', 'body', 'superClass'], - ConditionalExpression: ['test', 'consequent', 'alternate'], - ContinueStatement: ['label'], - DebuggerStatement: [], - DirectiveStatement: [], - DoWhileStatement: ['body', 'test'], - EmptyStatement: [], - ExpressionStatement: ['expression'], - ForStatement: ['init', 'test', 'update', 'body'], - ForInStatement: ['left', 'right', 'body'], - ForOfStatement: ['left', 'right', 'body'], - FunctionDeclaration: ['id', 'params', 'defaults', 'rest', 'body'], - FunctionExpression: ['id', 'params', 'defaults', 'rest', 'body'], - Identifier: [], - IfStatement: ['test', 'consequent', 'alternate'], - Literal: [], - LabeledStatement: ['label', 'body'], - LogicalExpression: ['left', 'right'], - MemberExpression: ['object', 'property'], - MethodDefinition: ['key', 'value'], - NewExpression: ['callee', 'arguments'], - ObjectExpression: ['properties'], - ObjectPattern: ['properties'], - Program: ['body'], - Property: ['key', 'value'], - ReturnStatement: ['argument'], - SequenceExpression: ['expressions'], - SwitchStatement: ['discriminant', 'cases'], - SwitchCase: ['test', 'consequent'], - ThisExpression: [], - ThrowStatement: ['argument'], - TryStatement: ['block', 'handlers', 'handler', 'guardedHandlers', 'finalizer'], - UnaryExpression: ['argument'], - UpdateExpression: ['argument'], - VariableDeclaration: ['declarations'], - VariableDeclarator: ['id', 'init'], - WhileStatement: ['test', 'body'], - WithStatement: ['object', 'body'], - YieldExpression: ['argument'] - }; - - // unique id - BREAK = {}; - SKIP = {}; - - VisitorOption = { - Break: BREAK, - Skip: SKIP - }; - - function Reference(parent, key) { - this.parent = parent; - this.key = key; - } - - Reference.prototype.replace = function replace(node) { - this.parent[this.key] = node; - }; - - function Element(node, path, wrap, ref) { - this.node = node; - this.path = path; - this.wrap = wrap; - this.ref = ref; - } - - function Controller() { } - - // API: - // return property path array from root to current node - Controller.prototype.path = function path() { - var i, iz, j, jz, result, element; - - function addToPath(result, path) { - if (isArray(path)) { - for (j = 0, jz = path.length; j < jz; ++j) { - result.push(path[j]); - } - } else { - result.push(path); - } - } - - // root node - if (!this.__current.path) { - return null; - } - - // first node is sentinel, second node is root element - result = []; - for (i = 2, iz = this.__leavelist.length; i < iz; ++i) { - element = this.__leavelist[i]; - addToPath(result, element.path); - } - addToPath(result, this.__current.path); - return result; - }; - - // API: - // return array of parent elements - Controller.prototype.parents = function parents() { - var i, iz, result; - - // first node is sentinel - result = []; - for (i = 1, iz = this.__leavelist.length; i < iz; ++i) { - result.push(this.__leavelist[i].node); - } - - return result; - }; - - // API: - // return current node - Controller.prototype.current = function current() { - return this.__current.node; - }; - - Controller.prototype.__execute = function __execute(callback, element) { - var previous, result; - - result = undefined; - - previous = this.__current; - this.__current = element; - this.__state = null; - if (callback) { - result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node); - } - this.__current = previous; - - return result; - }; - - // API: - // notify control skip / break - Controller.prototype.notify = function notify(flag) { - this.__state = flag; - }; - - // API: - // skip child nodes of current node - Controller.prototype.skip = function () { - this.notify(SKIP); - }; - - // API: - // break traversals - Controller.prototype['break'] = function () { - this.notify(BREAK); - }; - - Controller.prototype.__initialize = function(root, visitor) { - this.visitor = visitor; - this.root = root; - this.__worklist = []; - this.__leavelist = []; - this.__current = null; - this.__state = null; - }; - - Controller.prototype.traverse = function traverse(root, visitor) { - var worklist, - leavelist, - element, - node, - nodeType, - ret, - key, - current, - current2, - candidates, - candidate, - sentinel; - - this.__initialize(root, visitor); - - sentinel = {}; - - // reference - worklist = this.__worklist; - leavelist = this.__leavelist; - - // initialize - worklist.push(new Element(root, null, null, null)); - leavelist.push(new Element(null, null, null, null)); - - while (worklist.length) { - element = worklist.pop(); - - if (element === sentinel) { - element = leavelist.pop(); - - ret = this.__execute(visitor.leave, element); - - if (this.__state === BREAK || ret === BREAK) { - return; - } - continue; - } - - if (element.node) { - - ret = this.__execute(visitor.enter, element); - - if (this.__state === BREAK || ret === BREAK) { - return; - } - - worklist.push(sentinel); - leavelist.push(element); - - if (this.__state === SKIP || ret === SKIP) { - continue; - } - - node = element.node; - nodeType = element.wrap || node.type; - candidates = VisitorKeys[nodeType]; - - current = candidates.length; - while ((current -= 1) >= 0) { - key = candidates[current]; - candidate = node[key]; - if (!candidate) { - continue; - } - - if (!isArray(candidate)) { - worklist.push(new Element(candidate, key, null, null)); - continue; - } - - current2 = candidate.length; - while ((current2 -= 1) >= 0) { - if (!candidate[current2]) { - continue; - } - if ((nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === candidates[current]) { - element = new Element(candidate[current2], [key, current2], 'Property', null); - } else { - element = new Element(candidate[current2], [key, current2], null, null); - } - worklist.push(element); - } - } - } - } - }; - - Controller.prototype.replace = function replace(root, visitor) { - var worklist, - leavelist, - node, - nodeType, - target, - element, - current, - current2, - candidates, - candidate, - sentinel, - outer, - key; - - this.__initialize(root, visitor); - - sentinel = {}; - - // reference - worklist = this.__worklist; - leavelist = this.__leavelist; - - // initialize - outer = { - root: root - }; - element = new Element(root, null, null, new Reference(outer, 'root')); - worklist.push(element); - leavelist.push(element); - - while (worklist.length) { - element = worklist.pop(); - - if (element === sentinel) { - element = leavelist.pop(); - - target = this.__execute(visitor.leave, element); - - // node may be replaced with null, - // so distinguish between undefined and null in this place - if (target !== undefined && target !== BREAK && target !== SKIP) { - // replace - element.ref.replace(target); - } - - if (this.__state === BREAK || target === BREAK) { - return outer.root; - } - continue; - } - - target = this.__execute(visitor.enter, element); - - // node may be replaced with null, - // so distinguish between undefined and null in this place - if (target !== undefined && target !== BREAK && target !== SKIP) { - // replace - element.ref.replace(target); - element.node = target; - } - - if (this.__state === BREAK || target === BREAK) { - return outer.root; - } - - // node may be null - node = element.node; - if (!node) { - continue; - } - - worklist.push(sentinel); - leavelist.push(element); - - if (this.__state === SKIP || target === SKIP) { - continue; - } - - nodeType = element.wrap || node.type; - candidates = VisitorKeys[nodeType]; - - current = candidates.length; - while ((current -= 1) >= 0) { - key = candidates[current]; - candidate = node[key]; - if (!candidate) { - continue; - } - - if (!isArray(candidate)) { - worklist.push(new Element(candidate, key, null, new Reference(node, key))); - continue; - } - - current2 = candidate.length; - while ((current2 -= 1) >= 0) { - if (!candidate[current2]) { - continue; - } - if (nodeType === Syntax.ObjectExpression && 'properties' === candidates[current]) { - element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2)); - } else { - element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2)); - } - worklist.push(element); - } - } - } - - return outer.root; - }; - - function traverse(root, visitor) { - var controller = new Controller(); - return controller.traverse(root, visitor); - } - - function replace(root, visitor) { - var controller = new Controller(); - return controller.replace(root, visitor); - } - - function extendCommentRange(comment, tokens) { - var target; - - target = upperBound(tokens, function search(token) { - return token.range[0] > comment.range[0]; - }); - - comment.extendedRange = [comment.range[0], comment.range[1]]; - - if (target !== tokens.length) { - comment.extendedRange[1] = tokens[target].range[0]; - } - - target -= 1; - if (target >= 0) { - comment.extendedRange[0] = tokens[target].range[1]; - } - - return comment; - } - - function attachComments(tree, providedComments, tokens) { - // At first, we should calculate extended comment ranges. - var comments = [], comment, len, i, cursor; - - if (!tree.range) { - throw new Error('attachComments needs range information'); - } - - // tokens array is empty, we attach comments to tree as 'leadingComments' - if (!tokens.length) { - if (providedComments.length) { - for (i = 0, len = providedComments.length; i < len; i += 1) { - comment = deepCopy(providedComments[i]); - comment.extendedRange = [0, tree.range[0]]; - comments.push(comment); - } - tree.leadingComments = comments; - } - return tree; - } - - for (i = 0, len = providedComments.length; i < len; i += 1) { - comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens)); - } - - // This is based on John Freeman's implementation. - cursor = 0; - traverse(tree, { - enter: function (node) { - var comment; - - while (cursor < comments.length) { - comment = comments[cursor]; - if (comment.extendedRange[1] > node.range[0]) { - break; - } - - if (comment.extendedRange[1] === node.range[0]) { - if (!node.leadingComments) { - node.leadingComments = []; - } - node.leadingComments.push(comment); - comments.splice(cursor, 1); - } else { - cursor += 1; - } - } - - // already out of owned node - if (cursor === comments.length) { - return VisitorOption.Break; - } - - if (comments[cursor].extendedRange[0] > node.range[1]) { - return VisitorOption.Skip; - } - } - }); - - cursor = 0; - traverse(tree, { - leave: function (node) { - var comment; - - while (cursor < comments.length) { - comment = comments[cursor]; - if (node.range[1] < comment.extendedRange[0]) { - break; - } - - if (node.range[1] === comment.extendedRange[0]) { - if (!node.trailingComments) { - node.trailingComments = []; - } - node.trailingComments.push(comment); - comments.splice(cursor, 1); - } else { - cursor += 1; - } - } - - // already out of owned node - if (cursor === comments.length) { - return VisitorOption.Break; - } - - if (comments[cursor].extendedRange[0] > node.range[1]) { - return VisitorOption.Skip; - } - } - }); - - return tree; - } - - exports.version = '1.5.1-dev'; - exports.Syntax = Syntax; - exports.traverse = traverse; - exports.replace = replace; - exports.attachComments = attachComments; - exports.VisitorKeys = VisitorKeys; - exports.VisitorOption = VisitorOption; - exports.Controller = Controller; -})); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/package.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/package.json deleted file mode 100644 index 5585153..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/estraverse/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "estraverse", - "description": "ECMAScript JS AST traversal functions", - "homepage": "https://github.com/Constellation/estraverse", - "main": "estraverse.js", - "version": "1.5.1", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "constellation", - "email": "utatane.tea@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/Constellation/estraverse.git" - }, - "devDependencies": { - "mocha": "~1.12.0", - "chai": "~1.7.2", - "jshint": "2.1.5", - "coffee-script": "~1.6.3", - "xyz": "^0.4.0" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/Constellation/estraverse/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "npm run-script lint && npm run-script unit-test", - "lint": "jshint estraverse.js", - "unit-test": "mocha --compilers coffee:coffee-script", - "release-major": "xyz --increment major", - "release-minor": "xyz --increment minor", - "release-patch": "xyz --increment patch" - }, - "bugs": { - "url": "https://github.com/Constellation/estraverse/issues" - }, - "_id": "estraverse@1.5.1", - "dist": { - "shasum": "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71", - "tarball": "http://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz" - }, - "_from": "estraverse@>=1.5.0 <1.6.0", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "constellation", - "email": "utatane.tea@gmail.com" - }, - "directories": {}, - "_shasum": "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71", - "_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/.jshintrc b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/.jshintrc deleted file mode 100644 index f642dae..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/.jshintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "eqnull": true, - "latedef": true, - "noarg": true, - "noempty": true, - "quotmark": "single", - "undef": true, - "unused": true, - "strict": true, - "trailing": true, - - "node": true -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/.travis.yml deleted file mode 100644 index 4b59f8d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.11" - -matrix: - allow_failures: - - node_js: "0.11" diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/README.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/README.md deleted file mode 100644 index 4192e7a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/README.md +++ /dev/null @@ -1,80 +0,0 @@ -esutils ([esutils](http://github.com/Constellation/esutils)) is -utility box for ECMAScript language tools. - -### Functions - -#### code.isDecimalDigit(code) - -Return true if provided code is decimal digit. - -#### code.isHexDigit(code) - -Return true if provided code is hexadecimal digit. - -#### code.isOctalDigit(code) - -Return true if provided code is octal digit. - -#### code.isWhiteSpace(code) - -Return true if provided code is white space. White space characters are formally defined in ECMA262. - -#### code.isLineTerminator(code) - -Return true if provided code is line terminator. Line terminator characters are formally defined in ECMA262. - -#### code.isIdentifierStart(code) - -Return true if provided code can be the first character of ECMA262 Identifier. They are formally defined in ECMA262. - -#### code.isIdentifierPart(code) - -Return true if provided code can be the trailing character of ECMA262 Identifier. They are formally defined in ECMA262. - -### keyword - -#### keyword.isKeywordES5(id, strict) - -Return true if provided identifier string is one of Keywords in ECMA262 5.1. They are formally defined in ECMA262. -If strict flag is true, this function additionally checks whether id is keyword under strict mode. - -#### keyword.isKeywordES6(id, strict) - -Return true if provided identifier string is one of Keywords in ECMA262 6. They are formally defined in ECMA262. -If strict flag is true, this function additionally checks whether id is keyword under strict mode. - -#### keyword.isRestrictedWord(id) - -Return true if provided identifier string is one of restricted words under strict mode: "eval" or "arguments". -They are formally defined in ECMA262. - -#### keyword.isIdentifierName(id) - -Return true if provided identifier string can be IdentifierName. -They are formally defined in ECMA262. - -### License - -Copyright (C) 2013 [Yusuke Suzuki](http://github.com/Constellation) - (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/code.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/code.js deleted file mode 100644 index 0858f6a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/code.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - var Regex; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), - NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') - }; - - function isDecimalDigit(ch) { - return (ch >= 48 && ch <= 57); // 0..9 - } - - function isHexDigit(ch) { - return isDecimalDigit(ch) || (97 <= ch && ch <= 102) || (65 <= ch && ch <= 70); - } - - function isOctalDigit(ch) { - return (ch >= 48 && ch <= 55); // 0..7 - } - - // 7.2 White Space - - function isWhiteSpace(ch) { - return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || - (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); - } - - // 7.6 Identifier Names and Identifiers - - function isIdentifierStart(ch) { - return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) - (ch >= 65 && ch <= 90) || // A..Z - (ch >= 97 && ch <= 122) || // a..z - (ch === 92) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); - } - - function isIdentifierPart(ch) { - return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) - (ch >= 65 && ch <= 90) || // A..Z - (ch >= 97 && ch <= 122) || // a..z - (ch >= 48 && ch <= 57) || // 0..9 - (ch === 92) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); - } - - module.exports = { - isDecimalDigit: isDecimalDigit, - isHexDigit: isHexDigit, - isOctalDigit: isOctalDigit, - isWhiteSpace: isWhiteSpace, - isLineTerminator: isLineTerminator, - isIdentifierStart: isIdentifierStart, - isIdentifierPart: isIdentifierPart - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/keyword.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/keyword.js deleted file mode 100644 index 717ccca..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/keyword.js +++ /dev/null @@ -1,117 +0,0 @@ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - var code = require('./code'); - - function isStrictModeReservedWordES6(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'let': - return true; - default: - return false; - } - } - - function isKeywordES5(id, strict) { - // yield should not be treated as keyword under non-strict mode. - if (!strict && id === 'yield') { - return false; - } - return isKeywordES6(id, strict); - } - - function isKeywordES6(id, strict) { - if (strict && isStrictModeReservedWordES6(id)) { - return true; - } - - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - function isIdentifierName(id) { - var i, iz, ch; - - if (id.length === 0) { - return false; - } - - ch = id.charCodeAt(0); - if (!code.isIdentifierStart(ch) || ch === 92) { // \ (backslash) - return false; - } - - for (i = 1, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (!code.isIdentifierPart(ch) || ch === 92) { // \ (backslash) - return false; - } - } - return true; - } - - module.exports = { - isKeywordES5: isKeywordES5, - isKeywordES6: isKeywordES6, - isRestrictedWord: isRestrictedWord, - isIdentifierName: isIdentifierName - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/utils.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/utils.js deleted file mode 100644 index d0339a1..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/lib/utils.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -(function () { - 'use strict'; - - exports.code = require('./code'); - exports.keyword = require('./keyword'); -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/package.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/package.json deleted file mode 100644 index 154d980..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "esutils", - "description": "utility box for ECMAScript language tools", - "homepage": "https://github.com/Constellation/esutils", - "main": "lib/utils.js", - "version": "1.0.0", - "engines": { - "node": ">=0.10.0" - }, - "directories": { - "lib": "./lib" - }, - "maintainers": [ - { - "name": "Yusuke Suzuki", - "email": "utatane.tea@gmail.com", - "url": "http://github.com/Constellation" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/Constellation/esutils.git" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "~1.12.0", - "chai": "~1.7.2", - "jshint": "2.1.5", - "coffee-script": "~1.6.3" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/Constellation/esutils/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "npm run-script lint && npm run-script unit-test", - "lint": "jshint lib/*.js", - "unit-test": "mocha --compilers coffee:coffee-script -R spec" - }, - "readme": "esutils ([esutils](http://github.com/Constellation/esutils)) is\nutility box for ECMAScript language tools.\n\n### Functions\n\n#### code.isDecimalDigit(code)\n\nReturn true if provided code is decimal digit.\n\n#### code.isHexDigit(code)\n\nReturn true if provided code is hexadecimal digit.\n\n#### code.isOctalDigit(code)\n\nReturn true if provided code is octal digit.\n\n#### code.isWhiteSpace(code)\n\nReturn true if provided code is white space. White space characters are formally defined in ECMA262.\n\n#### code.isLineTerminator(code)\n\nReturn true if provided code is line terminator. Line terminator characters are formally defined in ECMA262.\n\n#### code.isIdentifierStart(code)\n\nReturn true if provided code can be the first character of ECMA262 Identifier. They are formally defined in ECMA262.\n\n#### code.isIdentifierPart(code)\n\nReturn true if provided code can be the trailing character of ECMA262 Identifier. They are formally defined in ECMA262.\n\n### keyword\n\n#### keyword.isKeywordES5(id, strict)\n\nReturn true if provided identifier string is one of Keywords in ECMA262 5.1. They are formally defined in ECMA262.\nIf strict flag is true, this function additionally checks whether id is keyword under strict mode.\n\n#### keyword.isKeywordES6(id, strict)\n\nReturn true if provided identifier string is one of Keywords in ECMA262 6. They are formally defined in ECMA262.\nIf strict flag is true, this function additionally checks whether id is keyword under strict mode.\n\n#### keyword.isRestrictedWord(id)\n\nReturn true if provided identifier string is one of restricted words under strict mode: \"eval\" or \"arguments\".\nThey are formally defined in ECMA262.\n\n#### keyword.isIdentifierName(id)\n\nReturn true if provided identifier string can be IdentifierName.\nThey are formally defined in ECMA262.\n\n### License\n\nCopyright (C) 2013 [Yusuke Suzuki](http://github.com/Constellation)\n (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/Constellation/esutils/issues" - }, - "_id": "esutils@1.0.0", - "_shasum": "8151d358e20c8acc7fb745e7472c0025fe496570", - "_from": "esutils@>=1.0.0 <1.1.0", - "_resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/test/code.coffee b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/test/code.coffee deleted file mode 100644 index d9ff2a4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/test/code.coffee +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright (C) 2013 Yusuke Suzuki -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -'use strict' - -expect = require('chai').expect -esutils = require '../' - -describe 'code', -> - describe 'isDecimalDigit', -> - it 'returns true if provided code is decimal digit', -> - for ch in [0..9] - expect(esutils.code.isDecimalDigit((ch + '').charCodeAt(0))).to.be.true - - it 'returns false if provided code is not decimal digit', -> - for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)] - expect(esutils.code.isDecimalDigit(code)).to.be.false - - for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)] - expect(esutils.code.isDecimalDigit(code)).to.be.false - - describe 'isHexDigit', -> - it 'returns true if provided code is hexadecimal digit', -> - for ch in [0..9] - expect(esutils.code.isHexDigit((ch + '').charCodeAt(0))).to.be.true - - for code in ['a'.charCodeAt(0)..'f'.charCodeAt(0)] - expect(esutils.code.isHexDigit(code)).to.be.true - - for code in ['A'.charCodeAt(0)..'F'.charCodeAt(0)] - expect(esutils.code.isHexDigit(code)).to.be.true - - it 'returns false if provided code is not hexadecimal digit', -> - for code in ['g'.charCodeAt(0)..'z'.charCodeAt(0)] - expect(esutils.code.isHexDigit(code)).to.be.false - - for code in ['G'.charCodeAt(0)..'Z'.charCodeAt(0)] - expect(esutils.code.isHexDigit(code)).to.be.false - - describe 'isOctalDigit', -> - it 'returns true if provided code is octal digit', -> - for ch in [0..7] - expect(esutils.code.isOctalDigit((ch + '').charCodeAt(0))).to.be.true - - it 'returns false if provided code is not octal digit', -> - for ch in [8..9] - expect(esutils.code.isOctalDigit((ch + '').charCodeAt(0))).to.be.false - - for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)] - expect(esutils.code.isOctalDigit(code)).to.be.false - - for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)] - expect(esutils.code.isOctalDigit(code)).to.be.false - - describe 'isWhiteSpace', -> - it 'returns true if provided code is white space', -> - codes = [ - 0x0009 # TAB - 0x000B # VT - 0x000C # FF - 0x0020 # SP - 0x00A0 # NBSP - 0xFEFF # BOM - - # Zs - 0x1680 - 0x180E - 0x2000 - 0x2001 - 0x2002 - 0x2003 - 0x2004 - 0x2005 - 0x2006 - 0x2007 - 0x2008 - 0x2009 - 0x200A - 0x202F - 0x205F - 0x3000 - ] - for code in codes - expect(esutils.code.isWhiteSpace(code)).to.be.true - - it 'returns false if provided code is not white space', -> - for ch in [0..9] - expect(esutils.code.isWhiteSpace((ch + '').charCodeAt(0))).to.be.false - - for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)] - expect(esutils.code.isWhiteSpace(code)).to.be.false - - for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)] - expect(esutils.code.isWhiteSpace(code)).to.be.false - - describe 'isLineTerminator', -> - it 'returns true if provided code is line terminator', -> - codes = [ - 0x000A - 0x000D - 0x2028 - 0x2029 - ] - for code in codes - expect(esutils.code.isLineTerminator(code)).to.be.true - - it 'returns false if provided code is not line terminator', -> - for ch in [0..9] - expect(esutils.code.isLineTerminator((ch + '').charCodeAt(0))).to.be.false - - for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)] - expect(esutils.code.isLineTerminator(code)).to.be.false - - for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)] - expect(esutils.code.isLineTerminator(code)).to.be.false - - describe 'isIdentifierStart', -> - it 'returns true if provided code can be a start of Identifier', -> - characters = [ - 'a' - '$' - '_' - 'ゆ' - ] - for code in characters.map((ch) -> ch.charCodeAt(0)) - expect(esutils.code.isIdentifierStart(code)).to.be.true - - it 'returns false if provided code cannot be a start of Identifier', -> - for ch in [0..9] - expect(esutils.code.isIdentifierStart((ch + '').charCodeAt(0))).to.be.false - - describe 'isIdentifierPart', -> - it 'returns true if provided code can be a part of Identifier', -> - characters = [ - 'a' - '_' - '$' - 'ゆ' - ] - for code in characters.map((ch) -> ch.charCodeAt(0)) - expect(esutils.code.isIdentifierPart(code)).to.be.true - - for ch in [0..9] - expect(esutils.code.isIdentifierPart((ch + '').charCodeAt(0))).to.be.true - - it 'returns false if provided code cannot be a part of Identifier', -> - expect(esutils.code.isIdentifierPart('+'.charCodeAt(0))).to.be.false - expect(esutils.code.isIdentifierPart('-'.charCodeAt(0))).to.be.false diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/test/keyword.coffee b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/test/keyword.coffee deleted file mode 100644 index b27ffc7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/esutils/test/keyword.coffee +++ /dev/null @@ -1,204 +0,0 @@ -# Copyright (C) 2013 Yusuke Suzuki -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -'use strict' - -expect = require('chai').expect -esutils = require '../' - -KW = [ - 'if' - 'in' - 'do' - 'var' - 'for' - 'new' - 'try' - 'this' - 'else' - 'case' - 'void' - 'with' - 'enum' - 'while' - 'break' - 'catch' - 'throw' - 'const' - 'class' - 'super' - 'return' - 'typeof' - 'delete' - 'switch' - 'export' - 'import' - 'default' - 'finally' - 'extends' - 'function' - 'continue' - 'debugger' - 'instanceof' -] - -SRW = [ - 'implements' - 'interface' - 'package' - 'private' - 'protected' - 'public' - 'static' - 'let' -] - -describe 'keyword', -> - describe 'isKeywordES6', -> - it 'returns true if provided string is keyword under non-strict mode', -> - for word in KW - expect(esutils.keyword.isKeywordES6(word, no)).to.be.true - - expect(esutils.keyword.isKeywordES6('yield', no)).to.be.true - - it 'returns false if provided string is not keyword under non-strict mode', -> - words = [ - 'hello' - '20' - '$' - 'ゆゆ式' - ] - - for word in words - expect(esutils.keyword.isKeywordES6(word, no)).to.be.false - - for word in SRW - expect(esutils.keyword.isKeywordES6(word, no)).to.be.false - - it 'returns true if provided string is keyword under strict mode', -> - for word in KW - expect(esutils.keyword.isKeywordES6(word, yes)).to.be.true - - expect(esutils.keyword.isKeywordES6('yield', yes)).to.be.true - - for word in SRW - expect(esutils.keyword.isKeywordES6(word, yes)).to.be.true - - - it 'returns false if provided string is not keyword under strict mode', -> - words = [ - 'hello' - '20' - '$' - 'ゆゆ式' - ] - - for word in words - expect(esutils.keyword.isKeywordES6(word, yes)).to.be.false - - describe 'isKeywordES5', -> - it 'returns true if provided string is keyword under non-strict mode', -> - for word in KW - expect(esutils.keyword.isKeywordES5(word, no)).to.be.true - - it 'returns false if provided string is not keyword under non-strict mode', -> - words = [ - 'hello' - '20' - '$' - 'ゆゆ式' - ] - - for word in words - expect(esutils.keyword.isKeywordES5(word, no)).to.be.false - - for word in SRW - expect(esutils.keyword.isKeywordES5(word, no)).to.be.false - - expect(esutils.keyword.isKeywordES5('yield', no)).to.be.false - - it 'returns true if provided string is keyword under strict mode', -> - for word in KW - expect(esutils.keyword.isKeywordES5(word, yes)).to.be.true - - expect(esutils.keyword.isKeywordES5('yield', yes)).to.be.true - - for word in SRW - expect(esutils.keyword.isKeywordES5(word, yes)).to.be.true - - - it 'returns false if provided string is not keyword under strict mode', -> - words = [ - 'hello' - '20' - '$' - 'ゆゆ式' - ] - - for word in words - expect(esutils.keyword.isKeywordES5(word, yes)).to.be.false - - describe 'isRestrictedWord', -> - it 'returns true if provided string is "eval" or "arguments"', -> - expect(esutils.keyword.isRestrictedWord('eval')).to.be.true - expect(esutils.keyword.isRestrictedWord('arguments')).to.be.true - - it 'returns false if provided string is not "eval" or "arguments"', -> - words = [ - 'hello' - '20' - '$' - 'ゆゆ式' - ] - - for word in words - expect(esutils.keyword.isRestrictedWord(word)).to.be.false - - - describe 'isIdentifierName', -> - it 'returns false if provided string is empty', -> - expect(esutils.keyword.isIdentifierName('')).to.be.false - - it 'returns true if provided string is IdentifierName', -> - words = [ - 'hello' - '$' - 'ゆゆ式' - '$20' - 'hello20' - '_' - ] - - for word in words - expect(esutils.keyword.isIdentifierName(word)).to.be.true - - - it 'returns false if provided string is not IdentifierName', -> - words = [ - '+hello' - '0$' - '-ゆゆ式' - '#_' - ] - - for word in words - expect(esutils.keyword.isIdentifierName(word)).to.be.false diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/.npmignore deleted file mode 100644 index 3dddf3f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/* -node_modules/* diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/.travis.yml deleted file mode 100644 index ddc9c4f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/CHANGELOG.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index 518bed4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,173 +0,0 @@ -# Change Log - -## 0.1.40 - -* Performance improvements for parsing source maps in SourceMapConsumer. - -## 0.1.39 - -* Fix a bug where setting a source's contents to null before any source content - had been set before threw a TypeError. See issue #131. - -## 0.1.38 - -* Fix a bug where finding relative paths from an empty path were creating - absolute paths. See issue #129. - -## 0.1.37 - -* Fix a bug where if the source root was an empty string, relative source paths - would turn into absolute source paths. Issue #124. - -## 0.1.36 - -* Allow the `names` mapping property to be an empty string. Issue #121. - -## 0.1.35 - -* A third optional parameter was added to `SourceNode.fromStringWithSourceMap` - to specify a path that relative sources in the second parameter should be - relative to. Issue #105. - -* If no file property is given to a `SourceMapGenerator`, then the resulting - source map will no longer have a `null` file property. The property will - simply not exist. Issue #104. - -* Fixed a bug where consecutive newlines were ignored in `SourceNode`s. - Issue #116. - -## 0.1.34 - -* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103. - -* Fix bug involving source contents and the - `SourceMapGenerator.prototype.applySourceMap`. Issue #100. - -## 0.1.33 - -* Fix some edge cases surrounding path joining and URL resolution. - -* Add a third parameter for relative path to - `SourceMapGenerator.prototype.applySourceMap`. - -* Fix issues with mappings and EOLs. - -## 0.1.32 - -* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns - (issue 92). - -* Fixed test runner to actually report number of failed tests as its process - exit code. - -* Fixed a typo when reporting bad mappings (issue 87). - -## 0.1.31 - -* Delay parsing the mappings in SourceMapConsumer until queried for a source - location. - -* Support Sass source maps (which at the time of writing deviate from the spec - in small ways) in SourceMapConsumer. - -## 0.1.30 - -* Do not join source root with a source, when the source is a data URI. - -* Extend the test runner to allow running single specific test files at a time. - -* Performance improvements in `SourceNode.prototype.walk` and - `SourceMapConsumer.prototype.eachMapping`. - -* Source map browser builds will now work inside Workers. - -* Better error messages when attempting to add an invalid mapping to a - `SourceMapGenerator`. - -## 0.1.29 - -* Allow duplicate entries in the `names` and `sources` arrays of source maps - (usually from TypeScript) we are parsing. Fixes github issue 72. - -## 0.1.28 - -* Skip duplicate mappings when creating source maps from SourceNode; github - issue 75. - -## 0.1.27 - -* Don't throw an error when the `file` property is missing in SourceMapConsumer, - we don't use it anyway. - -## 0.1.26 - -* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. - -## 0.1.25 - -* Make compatible with browserify - -## 0.1.24 - -* Fix issue with absolute paths and `file://` URIs. See - https://bugzilla.mozilla.org/show_bug.cgi?id=885597 - -## 0.1.23 - -* Fix issue with absolute paths and sourcesContent, github issue 64. - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js deleted file mode 100644 index d6fc26a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var path = require('path'); -var fs = require('fs'); -var copy = require('dryice').copy; - -function removeAmdefine(src) { - src = String(src).replace( - /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module,\s*require\);\s*}\s*/g, - ''); - src = src.replace( - /\b(define\(.*)('amdefine',?)/gm, - '$1'); - return src; -} -removeAmdefine.onRead = true; - -function makeNonRelative(src) { - return src - .replace(/require\('.\//g, 'require(\'source-map/') - .replace(/\.\.\/\.\.\/lib\//g, ''); -} -makeNonRelative.onRead = true; - -function buildBrowser() { - console.log('\nCreating dist/source-map.js'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/mini-require.js', - { - project: project, - require: [ 'source-map/source-map-generator', - 'source-map/source-map-consumer', - 'source-map/source-node'] - }, - 'build/suffix-browser.js' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine - ], - dest: 'dist/source-map.js' - }); -} - -function buildBrowserMin() { - console.log('\nCreating dist/source-map.min.js'); - - copy({ - source: 'dist/source-map.js', - filter: copy.filter.uglifyjs, - dest: 'dist/source-map.min.js' - }); -} - -function buildFirefox() { - console.log('\nCreating dist/SourceMap.jsm'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-source-map.jsm', - { - project: project, - require: [ 'source-map/source-map-consumer', - 'source-map/source-map-generator', - 'source-map/source-node' ] - }, - 'build/suffix-source-map.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/SourceMap.jsm' - }); - - // Create dist/test/Utils.jsm - console.log('\nCreating dist/test/Utils.jsm'); - - project = copy.createCommonJsProject({ - roots: [ __dirname, path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-utils.jsm', - 'build/assert-shim.js', - { - project: project, - require: [ 'test/source-map/util' ] - }, - 'build/suffix-utils.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/test/Utils.jsm' - }); - - function isTestFile(f) { - return /^test\-.*?\.js/.test(f); - } - - var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile); - - testFiles.forEach(function (testFile) { - console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_'))); - - copy({ - source: [ - 'build/test-prefix.js', - path.join('test', 'source-map', testFile), - 'build/test-suffix.js' - ], - filter: [ - removeAmdefine, - makeNonRelative, - function (input, source) { - return input.replace('define(', - 'define("' - + path.join('test', 'source-map', testFile.replace(/\.js$/, '')) - + '", ["require", "exports", "module"], '); - }, - function (input, source) { - return input.replace('{THIS_MODULE}', function () { - return "test/source-map/" + testFile.replace(/\.js$/, ''); - }); - } - ], - dest: path.join('dist', 'test', testFile.replace(/\-/g, '_')) - }); - }); -} - -function ensureDir(name) { - var dirExists = false; - try { - dirExists = fs.statSync(name).isDirectory(); - } catch (err) {} - - if (!dirExists) { - fs.mkdirSync(name, 0777); - } -} - -ensureDir("dist"); -ensureDir("dist/test"); -buildFirefox(); -buildBrowser(); -buildBrowserMin(); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/README.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/README.md deleted file mode 100644 index 1a1c7d8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/README.md +++ /dev/null @@ -1,449 +0,0 @@ -# Source Map - -This is a library to generate and consume the source map format -[described here][format]. - -This library is written in the Asynchronous Module Definition format, and works -in the following environments: - -* Modern Browsers supporting ECMAScript 5 (either after the build, or with an - AMD loader such as RequireJS) - -* Inside Firefox (as a JSM file, after the build) - -* With NodeJS versions 0.8.X and higher - -## Node - - $ npm install source-map - -## Building from Source (for everywhere else) - -Install Node and then run - - $ git clone https://fitzgen@github.com/mozilla/source-map.git - $ cd source-map - $ npm link . - -Next, run - - $ node Makefile.dryice.js - -This should spew a bunch of stuff to stdout, and create the following files: - -* `dist/source-map.js` - The unminified browser version. - -* `dist/source-map.min.js` - The minified browser version. - -* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox source. - -## Examples - -### Consuming a source map - - var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - - var smc = new SourceMapConsumer(rawSourceMap); - - console.log(smc.sources); - // [ 'http://example.com/www/js/one.js', - // 'http://example.com/www/js/two.js' ] - - console.log(smc.originalPositionFor({ - line: 2, - column: 28 - })); - // { source: 'http://example.com/www/js/two.js', - // line: 2, - // column: 10, - // name: 'n' } - - console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 - })); - // { line: 2, column: 28 } - - smc.eachMapping(function (m) { - // ... - }); - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - - function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } - } - - var ast = parse("40 + 2", "add.js"); - console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' - })); - // { code: '40 + 2', - // map: [object SourceMapGenerator] } - -#### With SourceMapGenerator (low level API) - - var map = new SourceMapGenerator({ - file: "source-mapped.js" - }); - - map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" - }); - - console.log(map.toString()); - // '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' - -## API - -Get a reference to the module: - - // NodeJS - var sourceMap = require('source-map'); - - // Browser builds - var sourceMap = window.sourceMap; - - // Inside Firefox - let sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referrenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. - -* `column`: The column number in the generated source. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. - -* `column`: The column number in the original source, or null or null if this - information is not available. - -* `name`: The original identifier, or null if this information is not available. - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: The column number in the original source. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -#### SourceMapConsumer.prototype.sourceContentFor(source) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -You may pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: A root for all relative URLs in this source map. - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new SourceMapGenerator based on a SourceMapConsumer - -* `sourceMapConsumer` The SourceMap. - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimium of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used, if it exists. - Otherwise an error will be thrown. - -* `sourceMapPath`: Optional. The dirname of the path to the SourceMap - to be applied. If relative, it is relative to the SourceMap. - - This parameter is needed when the two SourceMaps aren't in the same - directory, and the SourceMap to be applied contains relative source - paths. If so, those relative source paths need to be rewritten - relative to the SourceMap. - - If omitted, it is assumed that both SourceMaps are in the same directory, - thus not needing any rewriting. (Supplying `'.'` has the same effect.) - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode([line, column, source[, chunk[, name]]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. - -* `source`: The original source's filename; null if no filename is provided. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -* `relativePath` The optional path that relative sources in `sourceMapConsumer` - should be relative to. - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming whitespace from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -## Tests - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`. - -To add new tests, create a new file named `test/test-.js` -and export your test functions with names that start with "test", for example - - exports["test doing the foo bar"] = function (assert, util) { - ... - }; - -The new test will be located automatically when you run the suite. - -The `util` argument is the test utility module located at `test/source-map/util`. - -The `assert` argument is a cut down version of node's assert module. You have -access to the following assertion functions: - -* `doesNotThrow` - -* `equal` - -* `ok` - -* `strictEqual` - -* `throws` - -(The reason for the restricted set of test functions is because we need the -tests to run inside Firefox's test suite as well and so the assert module is -shimmed in that environment. See `build/assert-shim.js`.) - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit -[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap -[Dryice]: https://github.com/mozilla/dryice diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/assert-shim.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/assert-shim.js deleted file mode 100644 index daa1a62..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/assert-shim.js +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -define('test/source-map/assert', ['exports'], function (exports) { - - let do_throw = function (msg) { - throw new Error(msg); - }; - - exports.init = function (throw_fn) { - do_throw = throw_fn; - }; - - exports.doesNotThrow = function (fn) { - try { - fn(); - } - catch (e) { - do_throw(e.message); - } - }; - - exports.equal = function (actual, expected, msg) { - msg = msg || String(actual) + ' != ' + String(expected); - if (actual != expected) { - do_throw(msg); - } - }; - - exports.ok = function (val, msg) { - msg = msg || String(val) + ' is falsey'; - if (!Boolean(val)) { - do_throw(msg); - } - }; - - exports.strictEqual = function (actual, expected, msg) { - msg = msg || String(actual) + ' !== ' + String(expected); - if (actual !== expected) { - do_throw(msg); - } - }; - - exports.throws = function (fn) { - try { - fn(); - do_throw('Expected an error to be thrown, but it wasn\'t.'); - } - catch (e) { - } - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/mini-require.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/mini-require.js deleted file mode 100644 index 0daf453..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/mini-require.js +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * Define a module along with a payload. - * @param {string} moduleName Name for the payload - * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec - * @param {function} payload Function with (require, exports, module) params - */ -function define(moduleName, deps, payload) { - if (typeof moduleName != "string") { - throw new TypeError('Expected string, got: ' + moduleName); - } - - if (arguments.length == 2) { - payload = deps; - } - - if (moduleName in define.modules) { - throw new Error("Module already defined: " + moduleName); - } - define.modules[moduleName] = payload; -}; - -/** - * The global store of un-instantiated modules - */ -define.modules = {}; - - -/** - * We invoke require() in the context of a Domain so we can have multiple - * sets of modules running separate from each other. - * This contrasts with JSMs which are singletons, Domains allows us to - * optionally load a CommonJS module twice with separate data each time. - * Perhaps you want 2 command lines with a different set of commands in each, - * for example. - */ -function Domain() { - this.modules = {}; - this._currentModule = null; -} - -(function () { - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * There are 2 ways to call this, either with an array of dependencies and a - * callback to call when the dependencies are found (which can happen - * asynchronously in an in-page context) or with a single string an no callback - * where the dependency is resolved synchronously and returned. - * The API is designed to be compatible with the CommonJS AMD spec and - * RequireJS. - * @param {string[]|string} deps A name, or names for the payload - * @param {function|undefined} callback Function to call when the dependencies - * are resolved - * @return {undefined|object} The module required or undefined for - * array/callback method - */ - Domain.prototype.require = function(deps, callback) { - if (Array.isArray(deps)) { - var params = deps.map(function(dep) { - return this.lookup(dep); - }, this); - if (callback) { - callback.apply(null, params); - } - return undefined; - } - else { - return this.lookup(deps); - } - }; - - function normalize(path) { - var bits = path.split('/'); - var i = 1; - while (i < bits.length) { - if (bits[i] === '..') { - bits.splice(i-1, 1); - } else if (bits[i] === '.') { - bits.splice(i, 1); - } else { - i++; - } - } - return bits.join('/'); - } - - function join(a, b) { - a = a.trim(); - b = b.trim(); - if (/^\//.test(b)) { - return b; - } else { - return a.replace(/\/*$/, '/') + b; - } - } - - function dirname(path) { - var bits = path.split('/'); - bits.pop(); - return bits.join('/'); - } - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * @param {string} moduleName A name for the payload to lookup - * @return {object} The module specified by aModuleName or null if not found. - */ - Domain.prototype.lookup = function(moduleName) { - if (/^\./.test(moduleName)) { - moduleName = normalize(join(dirname(this._currentModule), moduleName)); - } - - if (moduleName in this.modules) { - var module = this.modules[moduleName]; - return module; - } - - if (!(moduleName in define.modules)) { - throw new Error("Module not defined: " + moduleName); - } - - var module = define.modules[moduleName]; - - if (typeof module == "function") { - var exports = {}; - var previousModule = this._currentModule; - this._currentModule = moduleName; - module(this.require.bind(this), exports, { id: moduleName, uri: "" }); - this._currentModule = previousModule; - module = exports; - } - - // cache the resulting module object for next time - this.modules[moduleName] = module; - - return module; - }; - -}()); - -define.Domain = Domain; -define.globalDomain = new Domain(); -var require = define.globalDomain.require.bind(define.globalDomain); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm deleted file mode 100644 index ee2539d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -/////////////////////////////////////////////////////////////////////////////// - - -this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ]; - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm deleted file mode 100644 index 80341d4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); -Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm'); - -this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ]; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js deleted file mode 100644 index fb29ff5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.sourceMap = { - SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer, - SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator, - SourceNode: require('source-map/source-node').SourceNode -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm deleted file mode 100644 index cf3c2d8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm +++ /dev/null @@ -1,6 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer; -this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator; -this.SourceNode = require('source-map/source-node').SourceNode; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm deleted file mode 100644 index b31b84c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -function runSourceMapTests(modName, do_throw) { - let mod = require(modName); - let assert = require('test/source-map/assert'); - let util = require('test/source-map/util'); - - assert.init(do_throw); - - for (let k in mod) { - if (/^test/.test(k)) { - mod[k](assert, util); - } - } - -} -this.runSourceMapTests = runSourceMapTests; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/test-prefix.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/test-prefix.js deleted file mode 100644 index 1b13f30..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/test-prefix.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://test/Utils.jsm'); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/test-suffix.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/test-suffix.js deleted file mode 100644 index bec2de3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/build/test-suffix.js +++ /dev/null @@ -1,3 +0,0 @@ -function run_test() { - runSourceMapTests('{THIS_MODULE}', do_throw); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map.js deleted file mode 100644 index 121ad24..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./source-map/source-node').SourceNode; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js deleted file mode 100644 index 40f9a18..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = {}; - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var isDuplicate = this.has(aStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - this._set[util.toSetString(aStr)] = idx; - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - return Object.prototype.hasOwnProperty.call(this._set, - util.toSetString(aStr)); - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (this.has(aStr)) { - return this._set[util.toSetString(aStr)]; - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js deleted file mode 100644 index b4ff136..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js +++ /dev/null @@ -1,142 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('./base64'); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aOutParam) { - var i = 0; - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (i >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charAt(i++)); - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aStr.slice(i); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js deleted file mode 100644 index 863cc46..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var charToIntMap = {}; - var intToCharMap = {}; - - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - .split('') - .forEach(function (ch, index) { - charToIntMap[ch] = index; - intToCharMap[index] = ch; - }); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function base64_encode(aNumber) { - if (aNumber in intToCharMap) { - return intToCharMap[aNumber]; - } - throw new TypeError("Must be between 0 and 63: " + aNumber); - }; - - /** - * Decode a single base 64 digit to an integer. - */ - exports.decode = function base64_decode(aChar) { - if (aChar in charToIntMap) { - return charToIntMap[aChar]; - } - throw new TypeError("Not a valid base 64 digit: " + aChar); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js deleted file mode 100644 index ff347c6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the next - // closest element that is less than that element. - // - // 3. We did not find the exact element, and there is no next-closest - // element which is less than the one we are searching for, so we - // return null. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return aHaystack[mid]; - } - else if (cmp > 0) { - // aHaystack[mid] is greater than our needle. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); - } - // We did not find an exact match, return the next closest one - // (termination case 2). - return aHaystack[mid]; - } - else { - // aHaystack[mid] is less than our needle. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); - } - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (2) or (3) and return the appropriate thing. - return aLow < 0 - ? null - : aHaystack[aLow]; - } - } - - /** - * This is an implementation of binary search which will always try and return - * the next lowest value checked if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - */ - exports.search = function search(aNeedle, aHaystack, aCompare) { - return aHaystack.length > 0 - ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) - : null; - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js deleted file mode 100644 index ea643bf..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js +++ /dev/null @@ -1,483 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - var binarySearch = require('./binary-search'); - var ArraySet = require('./array-set').ArraySet; - var base64VLQ = require('./base64-vlq'); - - /** - * A SourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names, true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - /** - * Create a SourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns SourceMapConsumer - */ - SourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(SourceMapConsumer.prototype); - - smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - smc.__generatedMappings = aSourceMap._mappings.slice() - .sort(util.compareByGeneratedPositions); - smc.__originalMappings = aSourceMap._mappings.slice() - .sort(util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(SourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._nextCharIsMappingSeparator = - function SourceMapConsumer_nextCharIsMappingSeparator(aStr) { - var c = aStr.charAt(0); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var str = aStr; - var temp = {}; - var mapping; - - while (str.length > 0) { - if (str.charAt(0) === ';') { - generatedLine++; - str = str.slice(1); - previousGeneratedColumn = 0; - } - else if (str.charAt(0) === ',') { - str = str.slice(1); - } - else { - mapping = {}; - mapping.generatedLine = generatedLine; - - // Generated column. - base64VLQ.decode(str, temp); - mapping.generatedColumn = previousGeneratedColumn + temp.value; - previousGeneratedColumn = mapping.generatedColumn; - str = temp.rest; - - if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) { - // Original source. - base64VLQ.decode(str, temp); - mapping.source = this._sources.at(previousSource + temp.value); - previousSource += temp.value; - str = temp.rest; - if (str.length === 0 || this._nextCharIsMappingSeparator(str)) { - throw new Error('Found a source, but no line and column'); - } - - // Original line. - base64VLQ.decode(str, temp); - mapping.originalLine = previousOriginalLine + temp.value; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - str = temp.rest; - if (str.length === 0 || this._nextCharIsMappingSeparator(str)) { - throw new Error('Found a source and line, but no column'); - } - - // Original column. - base64VLQ.decode(str, temp); - mapping.originalColumn = previousOriginalColumn + temp.value; - previousOriginalColumn = mapping.originalColumn; - str = temp.rest; - - if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) { - // Original name. - base64VLQ.decode(str, temp); - mapping.name = this._names.at(previousName + temp.value); - previousName += temp.value; - str = temp.rest; - } - } - - this.__generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - this.__originalMappings.push(mapping); - } - } - } - - this.__generatedMappings.sort(util.compareByGeneratedPositions); - this.__originalMappings.sort(util.compareByOriginalPositions); - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - SourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator); - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - SourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositions); - - if (mapping && mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source != null && this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: util.getArg(mapping, 'name', null) - }; - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * availible. - */ - SourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - throw new Error('"' + aSource + '" is not in the SourceMap.'); - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - - var mapping = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions); - - if (mapping) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null) - }; - } - - return { - line: null, - column: null - }; - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source; - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name - }; - }).forEach(aCallback, context); - }; - - exports.SourceMapConsumer = SourceMapConsumer; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js deleted file mode 100644 index 5387fa1..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js +++ /dev/null @@ -1,401 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('./base64-vlq'); - var util = require('./util'); - var ArraySet = require('./array-set').ArraySet; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = []; - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - this._validateMapping(generated, original, source, name); - - if (source != null && !this._sources.has(source)) { - this._sources.add(source); - } - - if (name != null && !this._names.has(name)) { - this._names.add(name); - } - - this._mappings.push({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = {}; - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.forEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var mapping; - - // The mappings must be guaranteed to be in sorted order before we start - // serializing them or else the generated line numbers (which are defined - // via the ';' separators) will be all messed up. Note: it might be more - // performant to maintain the sorting as we insert them, rather than as we - // serialize them, but the big O is the same either way. - this._mappings.sort(util.compareByGeneratedPositions); - - for (var i = 0, len = this._mappings.length; i < len; i++) { - mapping = this._mappings[i]; - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - result += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) { - continue; - } - result += ','; - } - } - - result += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - result += base64VLQ.encode(this._sources.indexOf(mapping.source) - - previousSource); - previousSource = this._sources.indexOf(mapping.source); - - // lines are stored 0-based in SourceMap spec version 3 - result += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - result += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - result += base64VLQ.encode(this._names.indexOf(mapping.name) - - previousName); - previousName = this._names.indexOf(mapping.name); - } - } - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, - key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js deleted file mode 100644 index baa5f40..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js +++ /dev/null @@ -1,408 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; - var util = require('./util'); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Matches a Windows-style newline, or any character. - var REGEX_CHARACTER = /\r\n|[\s\S]/g; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are removed from this array, by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var shiftNextLine = function() { - var lineContents = remainingLines.shift(); - // The last line of a file might not have a newline. - var newLine = remainingLines.shift() || ""; - return lineContents + newLine; - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - var code = ""; - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[0]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[0] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLines.length > 0) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk instanceof SourceNode) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild instanceof SourceNode) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i] instanceof SourceNode) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - chunk.match(REGEX_CHARACTER).forEach(function (ch, idx, array) { - if (REGEX_NEWLINE.test(ch)) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === array.length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column += ch.length; - } - }); - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js deleted file mode 100644 index 976f6ca..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js +++ /dev/null @@ -1,319 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consequtive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = (path.charAt(0) === '/'); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // XXX: It is possible to remove this block, and the tests still pass! - var url = urlParse(aRoot); - if (aPath.charAt(0) == "/" && url && url.path == "/") { - return aPath.slice(1); - } - - return aPath.indexOf(aRoot + '/') === 0 - ? aPath.substr(aRoot.length + 1) - : aPath; - } - exports.relative = relative; - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - return '$' + aStr; - } - exports.toSetString = toSetString; - - function fromSetString(aStr) { - return aStr.substr(1); - } - exports.fromSetString = fromSetString; - - function strcmp(aStr1, aStr2) { - var s1 = aStr1 || ""; - var s2 = aStr2 || ""; - return (s1 > s2) - (s1 < s2); - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp; - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp || onlyCompareOriginal) { - return cmp; - } - - cmp = strcmp(mappingA.name, mappingB.name); - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - return mappingA.generatedColumn - mappingB.generatedColumn; - }; - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings where the generated positions are - * compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) { - var cmp; - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - }; - exports.compareByGeneratedPositions = compareByGeneratedPositions; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE deleted file mode 100644 index f33d665..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -amdefine is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2011, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -MIT License ------------ - -Copyright (c) 2011, The Dojo Foundation - -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/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md deleted file mode 100644 index c6995c0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# amdefine - -A module that can be used to implement AMD's define() in Node. This allows you -to code to the AMD API and have the module work in node programs without -requiring those other programs to use AMD. - -## Usage - -**1)** Update your package.json to indicate amdefine as a dependency: - -```javascript - "dependencies": { - "amdefine": ">=0.1.0" - } -``` - -Then run `npm install` to get amdefine into your project. - -**2)** At the top of each module that uses define(), place this code: - -```javascript -if (typeof define !== 'function') { var define = require('amdefine')(module) } -``` - -**Only use these snippets** when loading amdefine. If you preserve the basic structure, -with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer). - -You can add spaces, line breaks and even require amdefine with a local path, but -keep the rest of the structure to get the stripping behavior. - -As you may know, because `if` statements in JavaScript don't have their own scope, the var -declaration in the above snippet is made whether the `if` expression is truthy or not. If -RequireJS is loaded then the declaration is superfluous because `define` is already already -declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var` -declarations of the same variable in the same scope gracefully. - -If you want to deliver amdefine.js with your code rather than specifying it as a dependency -with npm, then just download the latest release and refer to it using a relative path: - -[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js) - -### amdefine/intercept - -Consider this very experimental. - -Instead of pasting the piece of text for the amdefine setup of a `define` -variable in each module you create or consume, you can use `amdefine/intercept` -instead. It will automatically insert the above snippet in each .js file loaded -by Node. - -**Warning**: you should only use this if you are creating an application that -is consuming AMD style defined()'d modules that are distributed via npm and want -to run that code in Node. - -For library code where you are not sure if it will be used by others in Node or -in the browser, then explicitly depending on amdefine and placing the code -snippet above is suggested path, instead of using `amdefine/intercept`. The -intercept module affects all .js files loaded in the Node app, and it is -inconsiderate to modify global state like that unless you are also controlling -the top level app. - -#### Why distribute AMD-style nodes via npm? - -npm has a lot of weaknesses for front-end use (installed layout is not great, -should have better support for the `baseUrl + moduleID + '.js' style of loading, -single file JS installs), but some people want a JS package manager and are -willing to live with those constraints. If that is you, but still want to author -in AMD style modules to get dynamic require([]), better direct source usage and -powerful loader plugin support in the browser, then this tool can help. - -#### amdefine/intercept usage - -Just require it in your top level app module (for example index.js, server.js): - -```javascript -require('amdefine/intercept'); -``` - -The module does not return a value, so no need to assign the result to a local -variable. - -Then just require() code as you normally would with Node's require(). Any .js -loaded after the intercept require will have the amdefine check injected in -the .js source as it is loaded. It does not modify the source on disk, just -prepends some content to the text of the module as it is loaded by Node. - -#### How amdefine/intercept works - -It overrides the `Module._extensions['.js']` in Node to automatically prepend -the amdefine snippet above. So, it will affect any .js file loaded by your -app. - -## define() usage - -It is best if you use the anonymous forms of define() in your module: - -```javascript -define(function (require) { - var dependency = require('dependency'); -}); -``` - -or - -```javascript -define(['dependency'], function (dependency) { - -}); -``` - -## RequireJS optimizer integration. - -Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html) -will have support for stripping the `if (typeof define !== 'function')` check -mentioned above, so you can include this snippet for code that runs in the -browser, but avoid taking the cost of the if() statement once the code is -optimized for deployment. - -## Node 0.4 Support - -If you want to support Node 0.4, then add `require` as the second parameter to amdefine: - -```javascript -//Only if you want Node 0.4. If using 0.5 or later, use the above snippet. -if (typeof define !== 'function') { var define = require('amdefine')(module, require) } -``` - -## Limitations - -### Synchronous vs Asynchronous - -amdefine creates a define() function that is callable by your code. It will -execute and trace dependencies and call the factory function *synchronously*, -to keep the behavior in line with Node's synchronous dependency tracing. - -The exception: calling AMD's callback-style require() from inside a factory -function. The require callback is called on process.nextTick(): - -```javascript -define(function (require) { - require(['a'], function(a) { - //'a' is loaded synchronously, but - //this callback is called on process.nextTick(). - }); -}); -``` - -### Loader Plugins - -Loader plugins are supported as long as they call their load() callbacks -synchronously. So ones that do network requests will not work. However plugins -like [text](http://requirejs.org/docs/api.html#text) can load text files locally. - -The plugin API's `load.fromText()` is **not supported** in amdefine, so this means -transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs) -will not work. This may be fixable, but it is a bit complex, and I do not have -enough node-fu to figure it out yet. See the source for amdefine.js if you want -to get an idea of the issues involved. - -## Tests - -To run the tests, cd to **tests** and run: - -``` -node all.js -node all-intercept.js -``` - -## License - -New BSD and MIT. Check the LICENSE file for all the details. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js deleted file mode 100644 index 53bf5a6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js +++ /dev/null @@ -1,299 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/amdefine for details - */ - -/*jslint node: true */ -/*global module, process */ -'use strict'; - -/** - * Creates a define for node. - * @param {Object} module the "module" object that is defined by Node for the - * current module. - * @param {Function} [requireFn]. Node's require function for the current module. - * It only needs to be passed in Node versions before 0.5, when module.require - * did not exist. - * @returns {Function} a define function that is usable for the current node - * module. - */ -function amdefine(module, requireFn) { - 'use strict'; - var defineCache = {}, - loaderCache = {}, - alreadyCalled = false, - path = require('path'), - makeRequire, stringRequire; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; ary[i]; i+= 1) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - function normalize(name, baseName) { - var baseParts; - - //Adjust any relative paths. - if (name && name.charAt(0) === '.') { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - baseParts = baseName.split('/'); - baseParts = baseParts.slice(0, baseParts.length - 1); - baseParts = baseParts.concat(name.split('/')); - trimDots(baseParts); - name = baseParts.join('/'); - } - } - - return name; - } - - /** - * Create the normalize() function passed to a loader plugin's - * normalize method. - */ - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(id) { - function load(value) { - loaderCache[id] = value; - } - - load.fromText = function (id, text) { - //This one is difficult because the text can/probably uses - //define, and any relative paths and requires should be relative - //to that id was it would be found on disk. But this would require - //bootstrapping a module/require fairly deeply from node core. - //Not sure how best to go about that yet. - throw new Error('amdefine does not implement load.fromText'); - }; - - return load; - } - - makeRequire = function (systemRequire, exports, module, relId) { - function amdRequire(deps, callback) { - if (typeof deps === 'string') { - //Synchronous, single module require('') - return stringRequire(systemRequire, exports, module, deps, relId); - } else { - //Array of dependencies with a callback. - - //Convert the dependencies to modules. - deps = deps.map(function (depName) { - return stringRequire(systemRequire, exports, module, depName, relId); - }); - - //Wait for next tick to call back the require call. - process.nextTick(function () { - callback.apply(null, deps); - }); - } - } - - amdRequire.toUrl = function (filePath) { - if (filePath.indexOf('.') === 0) { - return normalize(filePath, path.dirname(module.filename)); - } else { - return filePath; - } - }; - - return amdRequire; - }; - - //Favor explicit value, passed in if the module wants to support Node 0.4. - requireFn = requireFn || function req() { - return module.require.apply(module, arguments); - }; - - function runFactory(id, deps, factory) { - var r, e, m, result; - - if (id) { - e = loaderCache[id] = {}; - m = { - id: id, - uri: __filename, - exports: e - }; - r = makeRequire(requireFn, e, m, id); - } else { - //Only support one define call per file - if (alreadyCalled) { - throw new Error('amdefine with no module ID cannot be called more than once per file.'); - } - alreadyCalled = true; - - //Use the real variables from node - //Use module.exports for exports, since - //the exports in here is amdefine exports. - e = module.exports; - m = module; - r = makeRequire(requireFn, e, m, module.id); - } - - //If there are dependencies, they are strings, so need - //to convert them to dependency values. - if (deps) { - deps = deps.map(function (depName) { - return r(depName); - }); - } - - //Call the factory with the right dependencies. - if (typeof factory === 'function') { - result = factory.apply(m.exports, deps); - } else { - result = factory; - } - - if (result !== undefined) { - m.exports = result; - if (id) { - loaderCache[id] = m.exports; - } - } - } - - stringRequire = function (systemRequire, exports, module, id, relId) { - //Split the ID by a ! so that - var index = id.indexOf('!'), - originalId = id, - prefix, plugin; - - if (index === -1) { - id = normalize(id, relId); - - //Straight module lookup. If it is one of the special dependencies, - //deal with it, otherwise, delegate to node. - if (id === 'require') { - return makeRequire(systemRequire, exports, module, relId); - } else if (id === 'exports') { - return exports; - } else if (id === 'module') { - return module; - } else if (loaderCache.hasOwnProperty(id)) { - return loaderCache[id]; - } else if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } else { - if(systemRequire) { - return systemRequire(originalId); - } else { - throw new Error('No module with ID: ' + id); - } - } - } else { - //There is a plugin in play. - prefix = id.substring(0, index); - id = id.substring(index + 1, id.length); - - plugin = stringRequire(systemRequire, exports, module, prefix, relId); - - if (plugin.normalize) { - id = plugin.normalize(id, makeNormalize(relId)); - } else { - //Normalize the ID normally. - id = normalize(id, relId); - } - - if (loaderCache[id]) { - return loaderCache[id]; - } else { - plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {}); - - return loaderCache[id]; - } - } - }; - - //Create a define function specific to the module asking for amdefine. - function define(id, deps, factory) { - if (Array.isArray(id)) { - factory = deps; - deps = id; - id = undefined; - } else if (typeof id !== 'string') { - factory = id; - id = deps = undefined; - } - - if (deps && !Array.isArray(deps)) { - factory = deps; - deps = undefined; - } - - if (!deps) { - deps = ['require', 'exports', 'module']; - } - - //Set up properties for this module. If an ID, then use - //internal cache. If no ID, then use the external variables - //for this node module. - if (id) { - //Put the module in deep freeze until there is a - //require call for it. - defineCache[id] = [id, deps, factory]; - } else { - runFactory(id, deps, factory); - } - } - - //define.require, which has access to all the values in the - //cache. Useful for AMD modules that all have IDs in the file, - //but need to finally export a value to node based on one of those - //IDs. - define.require = function (id) { - if (loaderCache[id]) { - return loaderCache[id]; - } - - if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } - }; - - define.amd = {}; - - return define; -} - -module.exports = amdefine; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js deleted file mode 100644 index 771a983..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js +++ /dev/null @@ -1,36 +0,0 @@ -/*jshint node: true */ -var inserted, - Module = require('module'), - fs = require('fs'), - existingExtFn = Module._extensions['.js'], - amdefineRegExp = /amdefine\.js/; - -inserted = "if (typeof define !== 'function') {var define = require('amdefine')(module)}"; - -//From the node/lib/module.js source: -function stripBOM(content) { - // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - // because the buffer-to-string conversion in `fs.readFileSync()` - // translates it to FEFF, the UTF-16 BOM. - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -} - -//Also adapted from the node/lib/module.js source: -function intercept(module, filename) { - var content = stripBOM(fs.readFileSync(filename, 'utf8')); - - if (!amdefineRegExp.test(module.id)) { - content = inserted + content; - } - - module._compile(content, filename); -} - -intercept._id = 'amdefine/intercept'; - -if (!existingExtFn._id || existingExtFn._id !== intercept._id) { - Module._extensions['.js'] = intercept; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json deleted file mode 100644 index bca411d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "amdefine", - "description": "Provide AMD's define() API for declaring modules in the AMD format", - "version": "0.1.0", - "homepage": "http://github.com/jrburke/amdefine", - "author": { - "name": "James Burke", - "email": "jrburke@gmail.com", - "url": "http://github.com/jrburke" - }, - "licenses": [ - { - "type": "BSD", - "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" - }, - { - "type": "MIT", - "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/jrburke/amdefine.git" - }, - "main": "./amdefine.js", - "engines": { - "node": ">=0.4.2" - }, - "readme": "# amdefine\n\nA module that can be used to implement AMD's define() in Node. This allows you\nto code to the AMD API and have the module work in node programs without\nrequiring those other programs to use AMD.\n\n## Usage\n\n**1)** Update your package.json to indicate amdefine as a dependency:\n\n```javascript\n \"dependencies\": {\n \"amdefine\": \">=0.1.0\"\n }\n```\n\nThen run `npm install` to get amdefine into your project.\n\n**2)** At the top of each module that uses define(), place this code:\n\n```javascript\nif (typeof define !== 'function') { var define = require('amdefine')(module) }\n```\n\n**Only use these snippets** when loading amdefine. If you preserve the basic structure,\nwith the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).\n\nYou can add spaces, line breaks and even require amdefine with a local path, but\nkeep the rest of the structure to get the stripping behavior.\n\nAs you may know, because `if` statements in JavaScript don't have their own scope, the var\ndeclaration in the above snippet is made whether the `if` expression is truthy or not. If\nRequireJS is loaded then the declaration is superfluous because `define` is already already\ndeclared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`\ndeclarations of the same variable in the same scope gracefully.\n\nIf you want to deliver amdefine.js with your code rather than specifying it as a dependency\nwith npm, then just download the latest release and refer to it using a relative path:\n\n[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)\n\n### amdefine/intercept\n\nConsider this very experimental.\n\nInstead of pasting the piece of text for the amdefine setup of a `define`\nvariable in each module you create or consume, you can use `amdefine/intercept`\ninstead. It will automatically insert the above snippet in each .js file loaded\nby Node.\n\n**Warning**: you should only use this if you are creating an application that\nis consuming AMD style defined()'d modules that are distributed via npm and want\nto run that code in Node.\n\nFor library code where you are not sure if it will be used by others in Node or\nin the browser, then explicitly depending on amdefine and placing the code\nsnippet above is suggested path, instead of using `amdefine/intercept`. The\nintercept module affects all .js files loaded in the Node app, and it is\ninconsiderate to modify global state like that unless you are also controlling\nthe top level app.\n\n#### Why distribute AMD-style nodes via npm?\n\nnpm has a lot of weaknesses for front-end use (installed layout is not great,\nshould have better support for the `baseUrl + moduleID + '.js' style of loading,\nsingle file JS installs), but some people want a JS package manager and are\nwilling to live with those constraints. If that is you, but still want to author\nin AMD style modules to get dynamic require([]), better direct source usage and\npowerful loader plugin support in the browser, then this tool can help.\n\n#### amdefine/intercept usage\n\nJust require it in your top level app module (for example index.js, server.js):\n\n```javascript\nrequire('amdefine/intercept');\n```\n\nThe module does not return a value, so no need to assign the result to a local\nvariable.\n\nThen just require() code as you normally would with Node's require(). Any .js\nloaded after the intercept require will have the amdefine check injected in\nthe .js source as it is loaded. It does not modify the source on disk, just\nprepends some content to the text of the module as it is loaded by Node.\n\n#### How amdefine/intercept works\n\nIt overrides the `Module._extensions['.js']` in Node to automatically prepend\nthe amdefine snippet above. So, it will affect any .js file loaded by your\napp.\n\n## define() usage\n\nIt is best if you use the anonymous forms of define() in your module:\n\n```javascript\ndefine(function (require) {\n var dependency = require('dependency');\n});\n```\n\nor\n\n```javascript\ndefine(['dependency'], function (dependency) {\n\n});\n```\n\n## RequireJS optimizer integration. \n\nVersion 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)\nwill have support for stripping the `if (typeof define !== 'function')` check\nmentioned above, so you can include this snippet for code that runs in the\nbrowser, but avoid taking the cost of the if() statement once the code is\noptimized for deployment.\n\n## Node 0.4 Support\n\nIf you want to support Node 0.4, then add `require` as the second parameter to amdefine:\n\n```javascript\n//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.\nif (typeof define !== 'function') { var define = require('amdefine')(module, require) }\n```\n\n## Limitations\n\n### Synchronous vs Asynchronous\n\namdefine creates a define() function that is callable by your code. It will\nexecute and trace dependencies and call the factory function *synchronously*,\nto keep the behavior in line with Node's synchronous dependency tracing.\n\nThe exception: calling AMD's callback-style require() from inside a factory\nfunction. The require callback is called on process.nextTick():\n\n```javascript\ndefine(function (require) {\n require(['a'], function(a) {\n //'a' is loaded synchronously, but\n //this callback is called on process.nextTick().\n });\n});\n```\n\n### Loader Plugins\n\nLoader plugins are supported as long as they call their load() callbacks\nsynchronously. So ones that do network requests will not work. However plugins\nlike [text](http://requirejs.org/docs/api.html#text) can load text files locally.\n\nThe plugin API's `load.fromText()` is **not supported** in amdefine, so this means\ntranspiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)\nwill not work. This may be fixable, but it is a bit complex, and I do not have\nenough node-fu to figure it out yet. See the source for amdefine.js if you want\nto get an idea of the issues involved.\n\n## Tests\n\nTo run the tests, cd to **tests** and run:\n\n```\nnode all.js\nnode all-intercept.js\n```\n\n## License\n\nNew BSD and MIT. Check the LICENSE file for all the details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jrburke/amdefine/issues" - }, - "_id": "amdefine@0.1.0", - "_from": "amdefine@>=0.0.4", - "scripts": {} -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/package.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/package.json deleted file mode 100644 index ecdd1c0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/package.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "name": "source-map", - "description": "Generates and consumes source maps", - "version": "0.1.40", - "homepage": "https://github.com/mozilla/source-map", - "author": { - "name": "Nick Fitzgerald", - "email": "nfitzgerald@mozilla.com" - }, - "contributors": [ - { - "name": "Tobias Koppers", - "email": "tobias.koppers@googlemail.com" - }, - { - "name": "Duncan Beevers", - "email": "duncan@dweebd.com" - }, - { - "name": "Stephen Crane", - "email": "scrane@mozilla.com" - }, - { - "name": "Ryan Seddon", - "email": "seddon.ryan@gmail.com" - }, - { - "name": "Miles Elam", - "email": "miles.elam@deem.com" - }, - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com" - }, - { - "name": "Michael Ficarra", - "email": "github.public.email@michael.ficarra.me" - }, - { - "name": "Todd Wolfson", - "email": "todd@twolfson.com" - }, - { - "name": "Alexander Solovyov", - "email": "alexander@solovyov.net" - }, - { - "name": "Felix Gnass", - "email": "fgnass@gmail.com" - }, - { - "name": "Conrad Irwin", - "email": "conrad.irwin@gmail.com" - }, - { - "name": "usrbincc", - "email": "usrbincc@yahoo.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Chase Douglas", - "email": "chase@newrelic.com" - }, - { - "name": "Evan Wallace", - "email": "evan.exe@gmail.com" - }, - { - "name": "Heather Arthur", - "email": "fayearthur@gmail.com" - }, - { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Simon Lydell", - "email": "simon.lydell@gmail.com" - }, - { - "name": "Jmeas Smith", - "email": "jellyes2@gmail.com" - }, - { - "name": "Michael Z Goddard", - "email": "mzgoddard@gmail.com" - }, - { - "name": "azu", - "email": "azu@users.noreply.github.com" - }, - { - "name": "John Gozde", - "email": "john@gozde.ca" - }, - { - "name": "Adam Kirkton", - "email": "akirkton@truefitinnovation.com" - }, - { - "name": "Chris Montgomery", - "email": "christopher.montgomery@dowjones.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/mozilla/source-map.git" - }, - "directories": { - "lib": "./lib" - }, - "main": "./lib/source-map.js", - "engines": { - "node": ">=0.8.0" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://opensource.org/licenses/BSD-3-Clause" - } - ], - "dependencies": { - "amdefine": ">=0.0.4" - }, - "devDependencies": { - "dryice": ">=0.4.8" - }, - "scripts": { - "test": "node test/run-tests.js", - "build": "node Makefile.dryice.js" - }, - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "_id": "source-map@0.1.40", - "_shasum": "7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f", - "_from": "source-map@>=0.1.2", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "nickfitzgerald", - "email": "fitzgen@gmail.com" - }, - "maintainers": [ - { - "name": "mozilla-devtools", - "email": "mozilla-developer-tools@googlegroups.com" - }, - { - "name": "mozilla", - "email": "dherman@mozilla.com" - }, - { - "name": "nickfitzgerald", - "email": "fitzgen@gmail.com" - } - ], - "dist": { - "shasum": "7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f", - "tarball": "http://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz" - }, - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/run-tests.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/run-tests.js deleted file mode 100755 index 64a7c3a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/run-tests.js +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env node -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var assert = require('assert'); -var fs = require('fs'); -var path = require('path'); -var util = require('./source-map/util'); - -function run(tests) { - var total = 0; - var passed = 0; - - for (var i = 0; i < tests.length; i++) { - for (var k in tests[i].testCase) { - if (/^test/.test(k)) { - total++; - try { - tests[i].testCase[k](assert, util); - passed++; - } - catch (e) { - console.log('FAILED ' + tests[i].name + ': ' + k + '!'); - console.log(e.stack); - } - } - } - } - - console.log(''); - console.log(passed + ' / ' + total + ' tests passed.'); - console.log(''); - - return total - passed; -} - -function isTestFile(f) { - var testToRun = process.argv[2]; - return testToRun - ? path.basename(testToRun) === f - : /^test\-.*?\.js/.test(f); -} - -function toModule(f) { - return './source-map/' + f.replace(/\.js$/, ''); -} - -var requires = fs.readdirSync(path.join(__dirname, 'source-map')) - .filter(isTestFile) - .map(toModule); - -var code = run(requires.map(require).map(function (mod, i) { - return { - name: requires[i], - testCase: mod - }; -})); - -process.exit(code); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js deleted file mode 100644 index 3801233..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2012 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var sourceMap; - try { - sourceMap = require('../../lib/source-map'); - } catch (e) { - sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - } - - exports['test that the api is properly exposed in the top level'] = function (assert, util) { - assert.equal(typeof sourceMap.SourceMapGenerator, "function"); - assert.equal(typeof sourceMap.SourceMapConsumer, "function"); - assert.equal(typeof sourceMap.SourceNode, "function"); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js deleted file mode 100644 index b5797ed..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var ArraySet = require('../../lib/source-map/array-set').ArraySet; - - function makeTestSet() { - var set = new ArraySet(); - for (var i = 0; i < 100; i++) { - set.add(String(i)); - } - return set; - } - - exports['test .has() membership'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.ok(set.has(String(i))); - } - }; - - exports['test .indexOf() elements'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.indexOf(String(i)), i); - } - }; - - exports['test .at() indexing'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.at(i), String(i)); - } - }; - - exports['test creating from an array'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); - - assert.ok(set.has('foo')); - assert.ok(set.has('bar')); - assert.ok(set.has('baz')); - assert.ok(set.has('quux')); - assert.ok(set.has('hasOwnProperty')); - - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.indexOf('bar'), 1); - assert.strictEqual(set.indexOf('baz'), 2); - assert.strictEqual(set.indexOf('quux'), 3); - - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'bar'); - assert.strictEqual(set.at(2), 'baz'); - assert.strictEqual(set.at(3), 'quux'); - }; - - exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { - var set = new ArraySet(); - set.add('__proto__'); - assert.ok(set.has('__proto__')); - assert.strictEqual(set.at(0), '__proto__'); - assert.strictEqual(set.indexOf('__proto__'), 0); - }; - - exports['test .fromArray() with duplicates'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'foo']); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set = ArraySet.fromArray(['foo', 'foo'], true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - - exports['test .add() with duplicates'] = function (assert, util) { - var set = new ArraySet(); - set.add('foo'); - - set.add('foo'); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set.add('foo', true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js deleted file mode 100644 index 6fd0d99..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js +++ /dev/null @@ -1,23 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('../../lib/source-map/base64-vlq'); - - exports['test normal encoding and decoding'] = function (assert, util) { - var result = {}; - for (var i = -255; i < 256; i++) { - base64VLQ.decode(base64VLQ.encode(i), result); - assert.equal(result.value, i); - assert.equal(result.rest, ""); - } - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js deleted file mode 100644 index ff3a244..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('../../lib/source-map/base64'); - - exports['test out of range encoding'] = function (assert, util) { - assert.throws(function () { - base64.encode(-1); - }); - assert.throws(function () { - base64.encode(64); - }); - }; - - exports['test out of range decoding'] = function (assert, util) { - assert.throws(function () { - base64.decode('='); - }); - }; - - exports['test normal encoding and decoding'] = function (assert, util) { - for (var i = 0; i < 64; i++) { - assert.equal(base64.decode(base64.encode(i)), i); - } - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js deleted file mode 100644 index ee30683..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var binarySearch = require('../../lib/source-map/binary-search'); - - function numberCompare(a, b) { - return a - b; - } - - exports['test too high'] = function (assert, util) { - var needle = 30; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 20); - }; - - exports['test too low'] = function (assert, util) { - var needle = 1; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), null); - }; - - exports['test exact search'] = function (assert, util) { - var needle = 4; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 4); - }; - - exports['test fuzzy search'] = function (assert, util) { - var needle = 19; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 18); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js deleted file mode 100644 index 26757b2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test eating our own dog food'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'testing.js', - sourceRoot: '/wu/tang' - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 1, column: 0 }, - generated: { line: 2, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 2, column: 0 }, - generated: { line: 3, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 3, column: 0 }, - generated: { line: 4, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 4, column: 0 }, - generated: { line: 5, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 5, column: 10 }, - generated: { line: 6, column: 12 } - }); - - var smc = new SourceMapConsumer(smg.toString()); - - // Exact - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 0, null, smc, assert); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 0, null, smc, assert); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 0, null, smc, assert); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 0, null, smc, assert); - util.assertMapping(6, 12, '/wu/tang/gza.coffee', 5, 10, null, smc, assert); - - // Fuzzy - - // Generated to original - util.assertMapping(2, 0, null, null, null, null, smc, assert, true); - util.assertMapping(2, 9, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); - util.assertMapping(3, 0, null, null, null, null, smc, assert, true); - util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); - util.assertMapping(4, 0, null, null, null, null, smc, assert, true); - util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); - util.assertMapping(5, 0, null, null, null, null, smc, assert, true); - util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, smc, assert, true); - util.assertMapping(6, 0, null, null, null, null, smc, assert, true); - util.assertMapping(6, 9, null, null, null, null, smc, assert, true); - util.assertMapping(6, 13, '/wu/tang/gza.coffee', 5, 10, null, smc, assert, true); - - // Original to generated - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 1, null, smc, assert, null, true); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 3, null, smc, assert, null, true); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 6, null, smc, assert, null, true); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 9, null, smc, assert, null, true); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 5, 9, null, smc, assert, null, true); - util.assertMapping(6, 12, '/wu/tang/gza.coffee', 6, 19, null, smc, assert, null, true); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js deleted file mode 100644 index a4c6659..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js +++ /dev/null @@ -1,531 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test that we can instantiate with a string or an object'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(util.testMap); - }); - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(JSON.stringify(util.testMap)); - }); - }; - - exports['test that the `sources` field has the original sources'] = function (assert, util) { - var map; - var sources; - - map = new SourceMapConsumer(util.testMap); - sources = map.sources; - assert.equal(sources[0], '/the/root/one.js'); - assert.equal(sources[1], '/the/root/two.js'); - assert.equal(sources.length, 2); - - map = new SourceMapConsumer(util.testMapNoSourceRoot); - sources = map.sources; - assert.equal(sources[0], 'one.js'); - assert.equal(sources[1], 'two.js'); - assert.equal(sources.length, 2); - - map = new SourceMapConsumer(util.testMapEmptySourceRoot); - sources = map.sources; - assert.equal(sources[0], 'one.js'); - assert.equal(sources[1], 'two.js'); - assert.equal(sources.length, 2); - }; - - exports['test that the source root is reflected in a mapping\'s source field'] = function (assert, util) { - var map; - var mapping; - - map = new SourceMapConsumer(util.testMap); - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, '/the/root/two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, '/the/root/one.js'); - - - map = new SourceMapConsumer(util.testMapNoSourceRoot); - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, 'two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, 'one.js'); - - - map = new SourceMapConsumer(util.testMapEmptySourceRoot); - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, 'two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, 'one.js'); - }; - - exports['test mapping tokens back exactly'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - util.assertMapping(1, 1, '/the/root/one.js', 1, 1, null, map, assert); - util.assertMapping(1, 5, '/the/root/one.js', 1, 5, null, map, assert); - util.assertMapping(1, 9, '/the/root/one.js', 1, 11, null, map, assert); - util.assertMapping(1, 18, '/the/root/one.js', 1, 21, 'bar', map, assert); - util.assertMapping(1, 21, '/the/root/one.js', 2, 3, null, map, assert); - util.assertMapping(1, 28, '/the/root/one.js', 2, 10, 'baz', map, assert); - util.assertMapping(1, 32, '/the/root/one.js', 2, 14, 'bar', map, assert); - - util.assertMapping(2, 1, '/the/root/two.js', 1, 1, null, map, assert); - util.assertMapping(2, 5, '/the/root/two.js', 1, 5, null, map, assert); - util.assertMapping(2, 9, '/the/root/two.js', 1, 11, null, map, assert); - util.assertMapping(2, 18, '/the/root/two.js', 1, 21, 'n', map, assert); - util.assertMapping(2, 21, '/the/root/two.js', 2, 3, null, map, assert); - util.assertMapping(2, 28, '/the/root/two.js', 2, 10, 'n', map, assert); - }; - - exports['test mapping tokens fuzzy'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - // Finding original positions - util.assertMapping(1, 20, '/the/root/one.js', 1, 21, 'bar', map, assert, true); - util.assertMapping(1, 30, '/the/root/one.js', 2, 10, 'baz', map, assert, true); - util.assertMapping(2, 12, '/the/root/two.js', 1, 11, null, map, assert, true); - - // Finding generated positions - util.assertMapping(1, 18, '/the/root/one.js', 1, 22, 'bar', map, assert, null, true); - util.assertMapping(1, 28, '/the/root/one.js', 2, 13, 'baz', map, assert, null, true); - util.assertMapping(2, 9, '/the/root/two.js', 1, 16, null, map, assert, null, true); - }; - - exports['test mappings and end of lines'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'foo.js' - }); - smg.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 1, column: 1 }, - source: 'bar.js' - }); - smg.addMapping({ - original: { line: 2, column: 2 }, - generated: { line: 2, column: 2 }, - source: 'bar.js' - }); - - var map = SourceMapConsumer.fromSourceMap(smg); - - // When finding original positions, mappings end at the end of the line. - util.assertMapping(2, 1, null, null, null, null, map, assert, true) - - // When finding generated positions, mappings do not end at the end of the line. - util.assertMapping(1, 1, 'bar.js', 2, 1, null, map, assert, null, true); - }; - - exports['test creating source map consumers with )]}\' prefix'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(")]}'" + JSON.stringify(util.testMap)); - }); - }; - - exports['test eachMapping'] = function (assert, util) { - var map; - - map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - map.eachMapping(function (mapping) { - assert.ok(mapping.generatedLine >= previousLine); - - assert.ok(mapping.source === '/the/root/one.js' || mapping.source === '/the/root/two.js'); - - if (mapping.generatedLine === previousLine) { - assert.ok(mapping.generatedColumn >= previousColumn); - previousColumn = mapping.generatedColumn; - } - else { - previousLine = mapping.generatedLine; - previousColumn = -Infinity; - } - }); - - map = new SourceMapConsumer(util.testMapNoSourceRoot); - map.eachMapping(function (mapping) { - assert.ok(mapping.source === 'one.js' || mapping.source === 'two.js'); - }); - - map = new SourceMapConsumer(util.testMapEmptySourceRoot); - map.eachMapping(function (mapping) { - assert.ok(mapping.source === 'one.js' || mapping.source === 'two.js'); - }); - }; - - exports['test iterating over mappings in a different order'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - var previousSource = ""; - map.eachMapping(function (mapping) { - assert.ok(mapping.source >= previousSource); - - if (mapping.source === previousSource) { - assert.ok(mapping.originalLine >= previousLine); - - if (mapping.originalLine === previousLine) { - assert.ok(mapping.originalColumn >= previousColumn); - previousColumn = mapping.originalColumn; - } - else { - previousLine = mapping.originalLine; - previousColumn = -Infinity; - } - } - else { - previousSource = mapping.source; - previousLine = -Infinity; - previousColumn = -Infinity; - } - }, null, SourceMapConsumer.ORIGINAL_ORDER); - }; - - exports['test that we can set the context for `this` in eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var context = {}; - map.eachMapping(function () { - assert.equal(this, context); - }, context); - }; - - exports['test that the `sourcesContent` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sourcesContent = map.sourcesContent; - - assert.equal(sourcesContent[0], ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(sourcesContent[1], ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(sourcesContent.length, 2); - }; - - exports['test that we can get the original sources for the sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sources = map.sources; - - assert.equal(map.sourceContentFor(sources[0]), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor(sources[1]), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(map.sourceContentFor("one.js"), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor("two.js"), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.throws(function () { - map.sourceContentFor(""); - }, Error); - assert.throws(function () { - map.sourceContentFor("/the/root/three.js"); - }, Error); - assert.throws(function () { - map.sourceContentFor("three.js"); - }, Error); - }; - - exports['test sourceRoot + generatedPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map.addMapping({ - original: { line: 5, column: 5 }, - generated: { line: 6, column: 6 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - // Should handle without sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - // Should handle with sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'foo/bar/bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - }; - - exports['test sourceRoot + originalPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - var pos = map.originalPositionFor({ - line: 2, - column: 2, - }); - - // Should always have the prepended source root - assert.equal(pos.source, 'foo/bar/bang.coffee'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - }; - - exports['test github issue #56'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://', - file: 'www.example.com/foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'www.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1); - assert.equal(sources[0], 'http://www.example.com/original.js'); - }; - - exports['test github issue #43'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'http://cdn.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://cdn.example.com/original.js', - 'Should not be joined with the sourceRoot.'); - }; - - exports['test absolute path, but same host sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com/foo/bar', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: '/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://example.com/original.js', - 'Source should be relative the host of the source root.'); - }; - - exports['test github issue #64'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "http://example.com/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - assert.equal(map.sourceContentFor("a"), "foo"); - assert.equal(map.sourceContentFor("/a"), "foo"); - }; - - exports['test bug 885597'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "file:///Users/AlGore/Invented/The/Internet/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - var s = map.sources[0]; - assert.equal(map.sourceContentFor(s), "foo"); - }; - - exports['test github issue #72, duplicate sources'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source1.js", "source1.js", "source3.js"], - "names": [], - "mappings": ";EAAC;;IAEE;;MEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.source, 'http://example.com/source3.js'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test github issue #72, duplicate names'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source.js"], - "names": ["name1", "name1", "name3"], - "mappings": ";EAACA;;IAEEA;;MAEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.name, 'name3'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test SourceMapConsumer.fromSourceMap'] = function (assert, util) { - var smg = new SourceMapGenerator({ - sourceRoot: 'http://example.com/', - file: 'foo.js' - }); - smg.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bar.js' - }); - smg.addMapping({ - original: { line: 2, column: 2 }, - generated: { line: 4, column: 4 }, - source: 'baz.js', - name: 'dirtMcGirt' - }); - smg.setSourceContent('baz.js', 'baz.js content'); - - var smc = SourceMapConsumer.fromSourceMap(smg); - assert.equal(smc.file, 'foo.js'); - assert.equal(smc.sourceRoot, 'http://example.com/'); - assert.equal(smc.sources.length, 2); - assert.equal(smc.sources[0], 'http://example.com/bar.js'); - assert.equal(smc.sources[1], 'http://example.com/baz.js'); - assert.equal(smc.sourceContentFor('baz.js'), 'baz.js content'); - - var pos = smc.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - assert.equal(pos.source, 'http://example.com/bar.js'); - assert.equal(pos.name, null); - - pos = smc.generatedPositionFor({ - line: 1, - column: 1, - source: 'http://example.com/bar.js' - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - pos = smc.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - assert.equal(pos.source, 'http://example.com/baz.js'); - assert.equal(pos.name, 'dirtMcGirt'); - - pos = smc.generatedPositionFor({ - line: 2, - column: 2, - source: 'http://example.com/baz.js' - }); - assert.equal(pos.line, 4); - assert.equal(pos.column, 4); - }; -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js deleted file mode 100644 index a0d9d00..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js +++ /dev/null @@ -1,658 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - var util = require('./util'); - - exports['test some simple stuff'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.ok(true); - - var map = new SourceMapGenerator().toJSON(); - assert.ok(!('file' in map)); - assert.ok(!('sourceRoot' in map)); - }; - - exports['test JSON serialization'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.equal(map.toString(), JSON.stringify(map)); - }; - - exports['test adding mappings (case 1)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 2)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 3)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: 'someToken' - }); - }); - }; - - exports['test adding mappings (invalid)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - // Not enough info. - assert.throws(function () { - map.addMapping({}); - }); - - // Original file position, but no source. - assert.throws(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test that the correct mappings are being generated'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 5 }, - original: { line: 1, column: 5 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 9 }, - original: { line: 1, column: 11 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 18 }, - original: { line: 1, column: 21 }, - source: 'one.js', - name: 'bar' - }); - map.addMapping({ - generated: { line: 1, column: 21 }, - original: { line: 2, column: 3 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 28 }, - original: { line: 2, column: 10 }, - source: 'one.js', - name: 'baz' - }); - map.addMapping({ - generated: { line: 1, column: 32 }, - original: { line: 2, column: 14 }, - source: 'one.js', - name: 'bar' - }); - - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 5 }, - original: { line: 1, column: 5 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 9 }, - original: { line: 1, column: 11 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 18 }, - original: { line: 1, column: 21 }, - source: 'two.js', - name: 'n' - }); - map.addMapping({ - generated: { line: 2, column: 21 }, - original: { line: 2, column: 3 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 28 }, - original: { line: 2, column: 10 }, - source: 'two.js', - name: 'n' - }); - - map = JSON.parse(map.toString()); - - util.assertEqualMaps(assert, map, util.testMap); - }; - - exports['test that adding a mapping with an empty string name does not break generation'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: '' - }); - - assert.doesNotThrow(function () { - JSON.parse(map.toString()); - }); - }; - - exports['test that source content can be set'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.setSourceContent('one.js', 'one file content'); - - map = JSON.parse(map.toString()); - assert.equal(map.sources[0], 'one.js'); - assert.equal(map.sources[1], 'two.js'); - assert.equal(map.sourcesContent[0], 'one file content'); - assert.equal(map.sourcesContent[1], null); - }; - - exports['test .fromSourceMap'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(util.testMap)); - util.assertEqualMaps(assert, map.toJSON(), util.testMap); - }; - - exports['test .fromSourceMap with sourcesContent'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap( - new SourceMapConsumer(util.testMapWithSourcesContent)); - util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent); - }; - - exports['test applySourceMap'] = function (assert, util) { - var node = new SourceNode(null, null, null, [ - new SourceNode(2, 0, 'fileX', 'lineX2\n'), - 'genA1\n', - new SourceNode(2, 0, 'fileY', 'lineY2\n'), - 'genA2\n', - new SourceNode(1, 0, 'fileX', 'lineX1\n'), - 'genA3\n', - new SourceNode(1, 0, 'fileY', 'lineY1\n') - ]); - var mapStep1 = node.toStringWithSourceMap({ - file: 'fileA' - }).map; - mapStep1.setSourceContent('fileX', 'lineX1\nlineX2\n'); - mapStep1 = mapStep1.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(1, 0, 'fileA', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(3, 0, 'fileA', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var mapStep2 = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - mapStep2.setSourceContent('fileB', 'lineB1\nlineB2\n'); - mapStep2 = mapStep2.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(2, 0, 'fileX', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(2, 0, 'fileY', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var expectedMap = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - expectedMap.setSourceContent('fileX', 'lineX1\nlineX2\n'); - expectedMap.setSourceContent('fileB', 'lineB1\nlineB2\n'); - expectedMap = expectedMap.toJSON(); - - // apply source map "mapStep1" to "mapStep2" - var generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(mapStep2)); - generator.applySourceMap(new SourceMapConsumer(mapStep1)); - var actualMap = generator.toJSON(); - - util.assertEqualMaps(assert, actualMap, expectedMap); - }; - - exports['test applySourceMap throws when file is missing'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - var map2 = new SourceMapGenerator(); - assert.throws(function() { - map.applySourceMap(new SourceMapConsumer(map2.toJSON())); - }); - }; - - exports['test the two additional parameters of applySourceMap'] = function (assert, util) { - // Assume the following directory structure: - // - // http://foo.org/ - // bar.coffee - // app/ - // coffee/ - // foo.coffee - // temp/ - // bundle.js - // temp_maps/ - // bundle.js.map - // public/ - // bundle.min.js - // bundle.min.js.map - // - // http://www.example.com/ - // baz.coffee - - var bundleMap = new SourceMapGenerator({ - file: 'bundle.js' - }); - bundleMap.addMapping({ - generated: { line: 3, column: 3 }, - original: { line: 2, column: 2 }, - source: '../../coffee/foo.coffee' - }); - bundleMap.setSourceContent('../../coffee/foo.coffee', 'foo coffee'); - bundleMap.addMapping({ - generated: { line: 13, column: 13 }, - original: { line: 12, column: 12 }, - source: '/bar.coffee' - }); - bundleMap.setSourceContent('/bar.coffee', 'bar coffee'); - bundleMap.addMapping({ - generated: { line: 23, column: 23 }, - original: { line: 22, column: 22 }, - source: 'http://www.example.com/baz.coffee' - }); - bundleMap.setSourceContent( - 'http://www.example.com/baz.coffee', - 'baz coffee' - ); - bundleMap = new SourceMapConsumer(bundleMap.toJSON()); - - var minifiedMap = new SourceMapGenerator({ - file: 'bundle.min.js', - sourceRoot: '..' - }); - minifiedMap.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 3, column: 3 }, - source: 'temp/bundle.js' - }); - minifiedMap.addMapping({ - generated: { line: 11, column: 11 }, - original: { line: 13, column: 13 }, - source: 'temp/bundle.js' - }); - minifiedMap.addMapping({ - generated: { line: 21, column: 21 }, - original: { line: 23, column: 23 }, - source: 'temp/bundle.js' - }); - minifiedMap = new SourceMapConsumer(minifiedMap.toJSON()); - - var expectedMap = function (sources) { - var map = new SourceMapGenerator({ - file: 'bundle.min.js', - sourceRoot: '..' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 2, column: 2 }, - source: sources[0] - }); - map.setSourceContent(sources[0], 'foo coffee'); - map.addMapping({ - generated: { line: 11, column: 11 }, - original: { line: 12, column: 12 }, - source: sources[1] - }); - map.setSourceContent(sources[1], 'bar coffee'); - map.addMapping({ - generated: { line: 21, column: 21 }, - original: { line: 22, column: 22 }, - source: sources[2] - }); - map.setSourceContent(sources[2], 'baz coffee'); - return map.toJSON(); - } - - var actualMap = function (aSourceMapPath) { - var map = SourceMapGenerator.fromSourceMap(minifiedMap); - // Note that relying on `bundleMap.file` (which is simply 'bundle.js') - // instead of supplying the second parameter wouldn't work here. - map.applySourceMap(bundleMap, '../temp/bundle.js', aSourceMapPath); - return map.toJSON(); - } - - util.assertEqualMaps(assert, actualMap('../temp/temp_maps'), expectedMap([ - 'coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('/app/temp/temp_maps'), expectedMap([ - '/app/coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('http://foo.org/app/temp/temp_maps'), expectedMap([ - 'http://foo.org/app/coffee/foo.coffee', - 'http://foo.org/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - // If the third parameter is omitted or set to the current working - // directory we get incorrect source paths: - - util.assertEqualMaps(assert, actualMap(), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap(''), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('.'), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('./'), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - }; - - exports['test applySourceMap name handling'] = function (assert, util) { - // Imagine some CoffeeScript code being compiled into JavaScript and then - // minified. - - var assertName = function(coffeeName, jsName, expectedName) { - var minifiedMap = new SourceMapGenerator({ - file: 'test.js.min' - }); - minifiedMap.addMapping({ - generated: { line: 1, column: 4 }, - original: { line: 1, column: 4 }, - source: 'test.js', - name: jsName - }); - - var coffeeMap = new SourceMapGenerator({ - file: 'test.js' - }); - coffeeMap.addMapping({ - generated: { line: 1, column: 4 }, - original: { line: 1, column: 0 }, - source: 'test.coffee', - name: coffeeName - }); - - minifiedMap.applySourceMap(new SourceMapConsumer(coffeeMap.toJSON())); - - new SourceMapConsumer(minifiedMap.toJSON()).eachMapping(function(mapping) { - assert.equal(mapping.name, expectedName); - }); - }; - - // `foo = 1` -> `var foo = 1;` -> `var a=1` - // CoffeeScript doesn’t rename variables, so there’s no need for it to - // provide names in its source maps. Minifiers do rename variables and - // therefore do provide names in their source maps. So that name should be - // retained if the original map lacks names. - assertName(null, 'foo', 'foo'); - - // `foo = 1` -> `var coffee$foo = 1;` -> `var a=1` - // Imagine that CoffeeScript prefixed all variables with `coffee$`. Even - // though the minifier then also provides a name, the original name is - // what corresponds to the source. - assertName('foo', 'coffee$foo', 'foo'); - - // `foo = 1` -> `var coffee$foo = 1;` -> `var coffee$foo=1` - // Minifiers can turn off variable mangling. Then there’s no need to - // provide names in the source map, but the names from the original map are - // still needed. - assertName('foo', null, 'foo'); - - // `foo = 1` -> `var foo = 1;` -> `var foo=1` - // No renaming at all. - assertName(null, null, null); - }; - - exports['test sorting with duplicate generated mappings'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 3, column: 0 }, - original: { line: 2, column: 0 }, - source: 'a.js' - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 }, - source: 'a.js' - }); - - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: [], - mappings: 'AAAA;A;AACA' - }); - }; - - exports['test ignore duplicate mappings.'] = function (assert, util) { - var init = { file: 'min.js', sourceRoot: '/the/root' }; - var map1, map2; - - // null original source location - var nullMapping1 = { - generated: { line: 1, column: 0 } - }; - var nullMapping2 = { - generated: { line: 2, column: 2 } - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(nullMapping1); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(nullMapping2); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // original source location - var srcMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'srcMapping1.js' - }; - var srcMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'srcMapping2.js' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(srcMapping1); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(srcMapping2); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // full original source and name information - var fullMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'fullMapping1.js', - name: 'fullMapping1' - }; - var fullMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'fullMapping2.js', - name: 'fullMapping2' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(fullMapping1); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(fullMapping2); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - }; - - exports['test github issue #72, check for duplicate names or sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 2, column: 2 }, - source: 'a.js', - name: 'foo' - }); - map.addMapping({ - generated: { line: 3, column: 3 }, - original: { line: 4, column: 4 }, - source: 'a.js', - name: 'foo' - }); - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: ['foo'], - mappings: 'CACEA;;GAEEA' - }); - }; - - exports['test setting sourcesContent to null when already null'] = function (assert, util) { - var smg = new SourceMapGenerator({ file: "foo.js" }); - assert.doesNotThrow(function() { - smg.setSourceContent("bar.js", null); - }); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js deleted file mode 100644 index 139af4e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js +++ /dev/null @@ -1,612 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - - function forEachNewline(fn) { - return function (assert, util) { - ['\n', '\r\n'].forEach(fn.bind(null, assert, util)); - } - } - - exports['test .add()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Adding a string works. - node.add('function noop() {}'); - - // Adding another source node works. - node.add(new SourceNode(null, null, null)); - - // Adding an array works. - node.add(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - - // Adding other stuff doesn't. - assert.throws(function () { - node.add({}); - }); - assert.throws(function () { - node.add(function () {}); - }); - }; - - exports['test .prepend()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Prepending a string works. - node.prepend('function noop() {}'); - assert.equal(node.children[0], 'function noop() {}'); - assert.equal(node.children.length, 1); - - // Prepending another source node works. - node.prepend(new SourceNode(null, null, null)); - assert.equal(node.children[0], ''); - assert.equal(node.children[1], 'function noop() {}'); - assert.equal(node.children.length, 2); - - // Prepending an array works. - node.prepend(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - assert.equal(node.children[0], 'function foo() {'); - assert.equal(node.children[1], 'return 10;'); - assert.equal(node.children[2], '}'); - assert.equal(node.children[3], ''); - assert.equal(node.children[4], 'function noop() {}'); - assert.equal(node.children.length, 5); - - // Prepending other stuff doesn't. - assert.throws(function () { - node.prepend({}); - }); - assert.throws(function () { - node.prepend(function () {}); - }); - }; - - exports['test .toString()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['function foo() {', - new SourceNode(null, null, null, 'return 10;'), - '}'])).toString(), - 'function foo() {return 10;}'); - }; - - exports['test .join()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['a', 'b', 'c', 'd'])).join(', ').toString(), - 'a, b, c, d'); - }; - - exports['test .walk()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', new SourceNode(1, 0, 'a.js', ['someCall()']), ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var expected = [ - { str: '(function () {\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'someCall()', source: 'a.js', line: 1, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'if (foo) bar()', source: 'b.js', line: 2, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: '}());', source: null, line: null, column: null }, - ]; - var i = 0; - node.walk(function (chunk, loc) { - assert.equal(expected[i].str, chunk); - assert.equal(expected[i].source, loc.source); - assert.equal(expected[i].line, loc.line); - assert.equal(expected[i].column, loc.column); - i++; - }); - }; - - exports['test .replaceRight'] = function (assert, util) { - var node; - - // Not nested - node = new SourceNode(null, null, null, 'hello world'); - node.replaceRight(/world/, 'universe'); - assert.equal(node.toString(), 'hello universe'); - - // Nested - node = new SourceNode(null, null, null, - [new SourceNode(null, null, null, 'hey sexy mama, '), - new SourceNode(null, null, null, 'want to kill all humans?')]); - node.replaceRight(/kill all humans/, 'watch Futurama'); - assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?'); - }; - - exports['test .toStringWithSourceMap()'] = forEachNewline(function (assert, util, nl) { - var node = new SourceNode(null, null, null, - ['(function () {' + nl, - ' ', - new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'), - new SourceNode(1, 8, 'a.js', '()'), - ';' + nl, - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';' + nl, - '}());']); - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(result.code, [ - '(function () {', - ' someCall();', - ' if (foo) bar();', - '}());' - ].join(nl)); - - var map = result.map; - var mapWithoutOptions = node.toStringWithSourceMap().map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - assert.ok(mapWithoutOptions instanceof SourceMapGenerator, 'mapWithoutOptions instanceof SourceMapGenerator'); - assert.ok(!('file' in mapWithoutOptions)); - mapWithoutOptions._file = 'foo.js'; - util.assertEqualMaps(assert, map.toJSON(), mapWithoutOptions.toJSON()); - - map = new SourceMapConsumer(map.toString()); - - var actual; - - actual = map.originalPositionFor({ - line: 1, - column: 4 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(actual.source, 'a.js'); - assert.equal(actual.line, 1); - assert.equal(actual.column, 0); - assert.equal(actual.name, 'originalCall'); - - actual = map.originalPositionFor({ - line: 3, - column: 2 - }); - assert.equal(actual.source, 'b.js'); - assert.equal(actual.line, 2); - assert.equal(actual.column, 0); - - actual = map.originalPositionFor({ - line: 3, - column: 16 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 4, - column: 2 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - }); - - exports['test .fromStringWithSourceMap()'] = forEachNewline(function (assert, util, nl) { - var testCode = util.testGeneratedCode.replace(/\n/g, nl); - var node = SourceNode.fromStringWithSourceMap( - testCode, - new SourceMapConsumer(util.testMap)); - - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, testCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.testMap.version); - assert.equal(map.file, util.testMap.file); - assert.equal(map.mappings, util.testMap.mappings); - }); - - exports['test .fromStringWithSourceMap() empty map'] = forEachNewline(function (assert, util, nl) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode.replace(/\n/g, nl), - new SourceMapConsumer(util.emptyMap)); - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode.replace(/\n/g, nl)); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.emptyMap.version); - assert.equal(map.file, util.emptyMap.file); - assert.equal(map.mappings.length, util.emptyMap.mappings.length); - assert.equal(map.mappings, util.emptyMap.mappings); - }); - - exports['test .fromStringWithSourceMap() complex version'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - "(function() {" + nl, - " var Test = {};" + nl, - " ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };" + nl), - " ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), nl, - "}());" + nl, - "/* Generated Source */"]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var node = SourceNode.fromStringWithSourceMap( - input.code, - new SourceMapConsumer(input.map.toString())); - - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, input.code); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - var inputMap = input.map.toJSON(); - util.assertEqualMaps(assert, map, inputMap); - }); - - exports['test .fromStringWithSourceMap() third argument'] = function (assert, util) { - // Assume the following directory structure: - // - // http://foo.org/ - // bar.coffee - // app/ - // coffee/ - // foo.coffee - // coffeeBundle.js # Made from {foo,bar,baz}.coffee - // maps/ - // coffeeBundle.js.map - // js/ - // foo.js - // public/ - // app.js # Made from {foo,coffeeBundle}.js - // app.js.map - // - // http://www.example.com/ - // baz.coffee - - var coffeeBundle = new SourceNode(1, 0, 'foo.coffee', 'foo(coffee);\n'); - coffeeBundle.setSourceContent('foo.coffee', 'foo coffee'); - coffeeBundle.add(new SourceNode(2, 0, '/bar.coffee', 'bar(coffee);\n')); - coffeeBundle.add(new SourceNode(3, 0, 'http://www.example.com/baz.coffee', 'baz(coffee);')); - coffeeBundle = coffeeBundle.toStringWithSourceMap({ - file: 'foo.js', - sourceRoot: '..' - }); - - var foo = new SourceNode(1, 0, 'foo.js', 'foo(js);'); - - var test = function(relativePath, expectedSources) { - var app = new SourceNode(); - app.add(SourceNode.fromStringWithSourceMap( - coffeeBundle.code, - new SourceMapConsumer(coffeeBundle.map.toString()), - relativePath)); - app.add(foo); - var i = 0; - app.walk(function (chunk, loc) { - assert.equal(loc.source, expectedSources[i]); - i++; - }); - app.walkSourceContents(function (sourceFile, sourceContent) { - assert.equal(sourceFile, expectedSources[0]); - assert.equal(sourceContent, 'foo coffee'); - }) - }; - - test('../coffee/maps', [ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - // If the third parameter is omitted or set to the current working - // directory we get incorrect source paths: - - test(undefined, [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - test('', [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - test('.', [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - test('./', [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - }; - - exports['test .toStringWithSourceMap() merging duplicate mappings'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function"), - new SourceNode(1, 0, "a.js", "() {" + nl), - " ", - new SourceNode(1, 0, "a.js", "var Test = "), - new SourceNode(1, 0, "b.js", "{};" + nl), - new SourceNode(2, 0, "b.js", "Test"), - new SourceNode(2, 0, "b.js", ".A", "A"), - new SourceNode(2, 20, "b.js", " = { value: ", "A"), - "1234", - new SourceNode(2, 40, "b.js", " };" + nl, "A"), - "}());" + nl, - "/* Generated Source */" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(input.code, [ - "(function() {", - " var Test = {};", - "Test.A = { value: 1234 };", - "}());", - "/* Generated Source */" - ].join(nl)) - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - // Here is no need for a empty mapping, - // because mappings ends at eol - correctMap.addMapping({ - generated: { line: 2, column: 2 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 13 }, - source: 'b.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'b.js', - original: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 4 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 6 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 20 } - }); - // This empty mapping is required, - // because there is a hole in the middle of the line - correctMap.addMapping({ - generated: { line: 3, column: 18 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 22 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 40 } - }); - // Here is no need for a empty mapping, - // because mappings ends at eol - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, inputMap, correctMap); - }); - - exports['test .toStringWithSourceMap() multi-line SourceNodes'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function() {" + nl + "var nextLine = 1;" + nl + "anotherLine();" + nl), - new SourceNode(2, 2, "b.js", "Test.call(this, 123);" + nl), - new SourceNode(2, 2, "b.js", "this['stuff'] = 'v';" + nl), - new SourceNode(2, 2, "b.js", "anotherLine();" + nl), - "/*" + nl + "Generated" + nl + "Source" + nl + "*/" + nl, - new SourceNode(3, 4, "c.js", "anotherLine();" + nl), - "/*" + nl + "Generated" + nl + "Source" + nl + "*/" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(input.code, [ - "(function() {", - "var nextLine = 1;", - "anotherLine();", - "Test.call(this, 123);", - "this['stuff'] = 'v';", - "anotherLine();", - "/*", - "Generated", - "Source", - "*/", - "anotherLine();", - "/*", - "Generated", - "Source", - "*/" - ].join(nl)); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 4, column: 0 }, - source: 'b.js', - original: { line: 2, column: 2 } - }); - correctMap.addMapping({ - generated: { line: 5, column: 0 }, - source: 'b.js', - original: { line: 2, column: 2 } - }); - correctMap.addMapping({ - generated: { line: 6, column: 0 }, - source: 'b.js', - original: { line: 2, column: 2 } - }); - correctMap.addMapping({ - generated: { line: 11, column: 0 }, - source: 'c.js', - original: { line: 3, column: 4 } - }); - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, inputMap, correctMap); - }); - - exports['test .toStringWithSourceMap() with empty string'] = function (assert, util) { - var node = new SourceNode(1, 0, 'empty.js', ''); - var result = node.toStringWithSourceMap(); - assert.equal(result.code, ''); - }; - - exports['test .toStringWithSourceMap() with consecutive newlines'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - "/***/" + nl + nl, - new SourceNode(1, 0, "a.js", "'use strict';" + nl), - new SourceNode(2, 0, "a.js", "a();"), - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(input.code, [ - "/***/", - "", - "'use strict';", - "a();", - ].join(nl)); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 4, column: 0 }, - source: 'a.js', - original: { line: 2, column: 0 } - }); - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, inputMap, correctMap); - }); - - exports['test setSourceContent with toStringWithSourceMap'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = new SourceMapConsumer(map.toString()); - - assert.equal(map.sources.length, 2); - assert.equal(map.sources[0], 'a.js'); - assert.equal(map.sources[1], 'b.js'); - assert.equal(map.sourcesContent.length, 2); - assert.equal(map.sourcesContent[0], 'someContent'); - assert.equal(map.sourcesContent[1], 'otherContent'); - }; - - exports['test walkSourceContents'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var results = []; - node.walkSourceContents(function (sourceFile, sourceContent) { - results.push([sourceFile, sourceContent]); - }); - assert.equal(results.length, 2); - assert.equal(results[0][0], 'a.js'); - assert.equal(results[0][1], 'someContent'); - assert.equal(results[1][0], 'b.js'); - assert.equal(results[1][1], 'otherContent'); - }; -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-util.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-util.js deleted file mode 100644 index 997d1a2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/test-util.js +++ /dev/null @@ -1,216 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var libUtil = require('../../lib/source-map/util'); - - exports['test urls'] = function (assert, util) { - var assertUrl = function (url) { - assert.equal(url, libUtil.urlGenerate(libUtil.urlParse(url))); - }; - assertUrl('http://'); - assertUrl('http://www.example.com'); - assertUrl('http://user:pass@www.example.com'); - assertUrl('http://www.example.com:80'); - assertUrl('http://www.example.com/'); - assertUrl('http://www.example.com/foo/bar'); - assertUrl('http://www.example.com/foo/bar/'); - assertUrl('http://user:pass@www.example.com:80/foo/bar/'); - - assertUrl('//'); - assertUrl('//www.example.com'); - assertUrl('file:///www.example.com'); - - assert.equal(libUtil.urlParse(''), null); - assert.equal(libUtil.urlParse('.'), null); - assert.equal(libUtil.urlParse('..'), null); - assert.equal(libUtil.urlParse('a'), null); - assert.equal(libUtil.urlParse('a/b'), null); - assert.equal(libUtil.urlParse('a//b'), null); - assert.equal(libUtil.urlParse('/a'), null); - assert.equal(libUtil.urlParse('data:foo,bar'), null); - }; - - exports['test normalize()'] = function (assert, util) { - assert.equal(libUtil.normalize('/..'), '/'); - assert.equal(libUtil.normalize('/../'), '/'); - assert.equal(libUtil.normalize('/../../../..'), '/'); - assert.equal(libUtil.normalize('/../../../../a/b/c'), '/a/b/c'); - assert.equal(libUtil.normalize('/a/b/c/../../../d/../../e'), '/e'); - - assert.equal(libUtil.normalize('..'), '..'); - assert.equal(libUtil.normalize('../'), '../'); - assert.equal(libUtil.normalize('../../a/'), '../../a/'); - assert.equal(libUtil.normalize('a/..'), '.'); - assert.equal(libUtil.normalize('a/../../..'), '../..'); - - assert.equal(libUtil.normalize('/.'), '/'); - assert.equal(libUtil.normalize('/./'), '/'); - assert.equal(libUtil.normalize('/./././.'), '/'); - assert.equal(libUtil.normalize('/././././a/b/c'), '/a/b/c'); - assert.equal(libUtil.normalize('/a/b/c/./././d/././e'), '/a/b/c/d/e'); - - assert.equal(libUtil.normalize(''), '.'); - assert.equal(libUtil.normalize('.'), '.'); - assert.equal(libUtil.normalize('./'), '.'); - assert.equal(libUtil.normalize('././a'), 'a'); - assert.equal(libUtil.normalize('a/./'), 'a/'); - assert.equal(libUtil.normalize('a/././.'), 'a'); - - assert.equal(libUtil.normalize('/a/b//c////d/////'), '/a/b/c/d/'); - assert.equal(libUtil.normalize('///a/b//c////d/////'), '///a/b/c/d/'); - assert.equal(libUtil.normalize('a/b//c////d'), 'a/b/c/d'); - - assert.equal(libUtil.normalize('.///.././../a/b//./..'), '../../a') - - assert.equal(libUtil.normalize('http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.normalize('http://www.example.com/'), 'http://www.example.com/'); - assert.equal(libUtil.normalize('http://www.example.com/./..//a/b/c/.././d//'), 'http://www.example.com/a/b/d/'); - }; - - exports['test join()'] = function (assert, util) { - assert.equal(libUtil.join('a', 'b'), 'a/b'); - assert.equal(libUtil.join('a/', 'b'), 'a/b'); - assert.equal(libUtil.join('a//', 'b'), 'a/b'); - assert.equal(libUtil.join('a', 'b/'), 'a/b/'); - assert.equal(libUtil.join('a', 'b//'), 'a/b/'); - assert.equal(libUtil.join('a/', '/b'), '/b'); - assert.equal(libUtil.join('a//', '//b'), '//b'); - - assert.equal(libUtil.join('a', '..'), '.'); - assert.equal(libUtil.join('a', '../b'), 'b'); - assert.equal(libUtil.join('a/b', '../c'), 'a/c'); - - assert.equal(libUtil.join('a', '.'), 'a'); - assert.equal(libUtil.join('a', './b'), 'a/b'); - assert.equal(libUtil.join('a/b', './c'), 'a/b/c'); - - assert.equal(libUtil.join('a', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('a', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('', 'b'), 'b'); - assert.equal(libUtil.join('.', 'b'), 'b'); - assert.equal(libUtil.join('', 'b/'), 'b/'); - assert.equal(libUtil.join('.', 'b/'), 'b/'); - assert.equal(libUtil.join('', 'b//'), 'b/'); - assert.equal(libUtil.join('.', 'b//'), 'b/'); - - assert.equal(libUtil.join('', '..'), '..'); - assert.equal(libUtil.join('.', '..'), '..'); - assert.equal(libUtil.join('', '../b'), '../b'); - assert.equal(libUtil.join('.', '../b'), '../b'); - - assert.equal(libUtil.join('', '.'), '.'); - assert.equal(libUtil.join('.', '.'), '.'); - assert.equal(libUtil.join('', './b'), 'b'); - assert.equal(libUtil.join('.', './b'), 'b'); - - assert.equal(libUtil.join('', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('.', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('', 'data:foo,bar'), 'data:foo,bar'); - assert.equal(libUtil.join('.', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('..', 'b'), '../b'); - assert.equal(libUtil.join('..', 'b/'), '../b/'); - assert.equal(libUtil.join('..', 'b//'), '../b/'); - - assert.equal(libUtil.join('..', '..'), '../..'); - assert.equal(libUtil.join('..', '../b'), '../../b'); - - assert.equal(libUtil.join('..', '.'), '..'); - assert.equal(libUtil.join('..', './b'), '../b'); - - assert.equal(libUtil.join('..', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('..', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('a', ''), 'a'); - assert.equal(libUtil.join('a', '.'), 'a'); - assert.equal(libUtil.join('a/', ''), 'a'); - assert.equal(libUtil.join('a/', '.'), 'a'); - assert.equal(libUtil.join('a//', ''), 'a'); - assert.equal(libUtil.join('a//', '.'), 'a'); - assert.equal(libUtil.join('/a', ''), '/a'); - assert.equal(libUtil.join('/a', '.'), '/a'); - assert.equal(libUtil.join('', ''), '.'); - assert.equal(libUtil.join('.', ''), '.'); - assert.equal(libUtil.join('.', ''), '.'); - assert.equal(libUtil.join('.', '.'), '.'); - assert.equal(libUtil.join('..', ''), '..'); - assert.equal(libUtil.join('..', '.'), '..'); - assert.equal(libUtil.join('http://foo.org/a', ''), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a/', ''), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a/', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a//', ''), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a//', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org', ''), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org', '.'), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org/', ''), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org/', '.'), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org//', ''), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org//', '.'), 'http://foo.org/'); - assert.equal(libUtil.join('//www.example.com', ''), '//www.example.com/'); - assert.equal(libUtil.join('//www.example.com', '.'), '//www.example.com/'); - - - assert.equal(libUtil.join('http://foo.org/a', 'b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a/', 'b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a//', 'b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a', 'b/'), 'http://foo.org/a/b/'); - assert.equal(libUtil.join('http://foo.org/a', 'b//'), 'http://foo.org/a/b/'); - assert.equal(libUtil.join('http://foo.org/a/', '/b'), 'http://foo.org/b'); - assert.equal(libUtil.join('http://foo.org/a//', '//b'), 'http://b'); - - assert.equal(libUtil.join('http://foo.org/a', '..'), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org/a', '../b'), 'http://foo.org/b'); - assert.equal(libUtil.join('http://foo.org/a/b', '../c'), 'http://foo.org/a/c'); - - assert.equal(libUtil.join('http://foo.org/a', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a', './b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a/b', './c'), 'http://foo.org/a/b/c'); - - assert.equal(libUtil.join('http://foo.org/a', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('http://foo.org/a', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('http://foo.org', 'a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/', 'a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org//', 'a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org', '/a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/', '/a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org//', '/a'), 'http://foo.org/a'); - - - assert.equal(libUtil.join('http://', 'www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('file:///', 'www.example.com'), 'file:///www.example.com'); - assert.equal(libUtil.join('http://', 'ftp://example.com'), 'ftp://example.com'); - - assert.equal(libUtil.join('http://www.example.com', '//foo.org/bar'), 'http://foo.org/bar'); - assert.equal(libUtil.join('//www.example.com', '//foo.org/bar'), '//foo.org/bar'); - }; - - // TODO Issue #128: Define and test this function properly. - exports['test relative()'] = function (assert, util) { - assert.equal(libUtil.relative('/the/root', '/the/root/one.js'), 'one.js'); - assert.equal(libUtil.relative('/the/root', '/the/rootone.js'), '/the/rootone.js'); - - assert.equal(libUtil.relative('', '/the/root/one.js'), '/the/root/one.js'); - assert.equal(libUtil.relative('.', '/the/root/one.js'), '/the/root/one.js'); - assert.equal(libUtil.relative('', 'the/root/one.js'), 'the/root/one.js'); - assert.equal(libUtil.relative('.', 'the/root/one.js'), 'the/root/one.js'); - - assert.equal(libUtil.relative('/', '/the/root/one.js'), 'the/root/one.js'); - assert.equal(libUtil.relative('/', 'the/root/one.js'), 'the/root/one.js'); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/util.js b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/util.js deleted file mode 100644 index fa213ce..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/node_modules/source-map/test/source-map/util.js +++ /dev/null @@ -1,176 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('../../lib/source-map/util'); - - // This is a test mapping which maps functions from two different files - // (one.js and two.js) to a minified generated source. - // - // Here is one.js: - // - // ONE.foo = function (bar) { - // return baz(bar); - // }; - // - // Here is two.js: - // - // TWO.inc = function (n) { - // return n + 1; - // }; - // - // And here is the generated code (min.js): - // - // ONE.foo=function(a){return baz(a);}; - // TWO.inc=function(a){return a+1;}; - exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+ - " TWO.inc=function(a){return a+1;};"; - exports.testMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapNoSourceRoot = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapEmptySourceRoot = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapWithSourcesContent = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourcesContent: [ - ' ONE.foo = function (bar) {\n' + - ' return baz(bar);\n' + - ' };', - ' TWO.inc = function (n) {\n' + - ' return n + 1;\n' + - ' };' - ], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.emptyMap = { - version: 3, - file: 'min.js', - names: [], - sources: [], - mappings: '' - }; - - - function assertMapping(generatedLine, generatedColumn, originalSource, - originalLine, originalColumn, name, map, assert, - dontTestGenerated, dontTestOriginal) { - if (!dontTestOriginal) { - var origMapping = map.originalPositionFor({ - line: generatedLine, - column: generatedColumn - }); - assert.equal(origMapping.name, name, - 'Incorrect name, expected ' + JSON.stringify(name) - + ', got ' + JSON.stringify(origMapping.name)); - assert.equal(origMapping.line, originalLine, - 'Incorrect line, expected ' + JSON.stringify(originalLine) - + ', got ' + JSON.stringify(origMapping.line)); - assert.equal(origMapping.column, originalColumn, - 'Incorrect column, expected ' + JSON.stringify(originalColumn) - + ', got ' + JSON.stringify(origMapping.column)); - - var expectedSource; - - if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) { - expectedSource = originalSource; - } else if (originalSource) { - expectedSource = map.sourceRoot - ? util.join(map.sourceRoot, originalSource) - : originalSource; - } else { - expectedSource = null; - } - - assert.equal(origMapping.source, expectedSource, - 'Incorrect source, expected ' + JSON.stringify(expectedSource) - + ', got ' + JSON.stringify(origMapping.source)); - } - - if (!dontTestGenerated) { - var genMapping = map.generatedPositionFor({ - source: originalSource, - line: originalLine, - column: originalColumn - }); - assert.equal(genMapping.line, generatedLine, - 'Incorrect line, expected ' + JSON.stringify(generatedLine) - + ', got ' + JSON.stringify(genMapping.line)); - assert.equal(genMapping.column, generatedColumn, - 'Incorrect column, expected ' + JSON.stringify(generatedColumn) - + ', got ' + JSON.stringify(genMapping.column)); - } - } - exports.assertMapping = assertMapping; - - function assertEqualMaps(assert, actualMap, expectedMap) { - assert.equal(actualMap.version, expectedMap.version, "version mismatch"); - assert.equal(actualMap.file, expectedMap.file, "file mismatch"); - assert.equal(actualMap.names.length, - expectedMap.names.length, - "names length mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - for (var i = 0; i < actualMap.names.length; i++) { - assert.equal(actualMap.names[i], - expectedMap.names[i], - "names[" + i + "] mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - } - assert.equal(actualMap.sources.length, - expectedMap.sources.length, - "sources length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - for (var i = 0; i < actualMap.sources.length; i++) { - assert.equal(actualMap.sources[i], - expectedMap.sources[i], - "sources[" + i + "] length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - } - assert.equal(actualMap.sourceRoot, - expectedMap.sourceRoot, - "sourceRoot mismatch: " + - actualMap.sourceRoot + " != " + expectedMap.sourceRoot); - assert.equal(actualMap.mappings, expectedMap.mappings, - "mappings mismatch:\nActual: " + actualMap.mappings + "\nExpected: " + expectedMap.mappings); - if (actualMap.sourcesContent) { - assert.equal(actualMap.sourcesContent.length, - expectedMap.sourcesContent.length, - "sourcesContent length mismatch"); - for (var i = 0; i < actualMap.sourcesContent.length; i++) { - assert.equal(actualMap.sourcesContent[i], - expectedMap.sourcesContent[i], - "sourcesContent[" + i + "] mismatch"); - } - } - } - exports.assertEqualMaps = assertEqualMaps; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/package.json b/node_modules/brfs/node_modules/static-module/node_modules/escodegen/package.json deleted file mode 100644 index fb7073e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/escodegen/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "escodegen", - "description": "ECMAScript code generator", - "homepage": "http://github.com/Constellation/escodegen", - "main": "escodegen.js", - "bin": { - "esgenerate": "./bin/esgenerate.js", - "escodegen": "./bin/escodegen.js" - }, - "version": "1.3.3", - "engines": { - "node": ">=0.10.0" - }, - "maintainers": [ - { - "name": "constellation", - "email": "utatane.tea@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/Constellation/escodegen.git" - }, - "dependencies": { - "esutils": "~1.0.0", - "estraverse": "~1.5.0", - "esprima": "~1.1.1", - "source-map": "~0.1.33" - }, - "optionalDependencies": { - "source-map": "~0.1.33" - }, - "devDependencies": { - "esprima-moz": "*", - "semver": "*", - "chai": "~1.7.2", - "gulp": "~3.5.0", - "gulp-mocha": "~0.4.1", - "gulp-eslint": "~0.1.2", - "jshint-stylish": "~0.1.5", - "gulp-jshint": "~1.4.0", - "commonjs-everywhere": "~0.9.6", - "bluebird": "~1.2.0", - "bower-registry-client": "~0.2.0" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "gulp travis", - "unit-test": "gulp test", - "lint": "gulp lint", - "release": "node tools/release.js", - "build-min": "cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js", - "build": "cjsify -a path: tools/entry-point.js > escodegen.browser.js" - }, - "bugs": { - "url": "https://github.com/Constellation/escodegen/issues" - }, - "_id": "escodegen@1.3.3", - "dist": { - "shasum": "f024016f5a88e046fd12005055e939802e6c5f23", - "tarball": "http://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz" - }, - "_from": "escodegen@>=1.3.2 <1.4.0", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "constellation", - "email": "utatane.tea@gmail.com" - }, - "directories": {}, - "_shasum": "f024016f5a88e046fd12005055e939802e6c5f23", - "_resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/falafel/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/array.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/array.js deleted file mode 100644 index c805d51..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/array.js +++ /dev/null @@ -1,14 +0,0 @@ -var falafel = require('../'); - -var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - console.dir([ xs, ys ]); -} + ')()'; - -var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } -}); -console.log(output); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/keyword.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/keyword.js deleted file mode 100644 index b7cdd4a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/keyword.js +++ /dev/null @@ -1,16 +0,0 @@ -var falafel = require('../'); -var src = 'console.log(beep "boop", "BOOP");'; - -function isKeyword (id) { - if (id === 'beep') return true; -} - -var output = falafel(src, { isKeyword: isKeyword }, function (node) { - if (node.type === 'UnaryExpression' - && node.operator === 'beep') { - node.update( - 'String(' + node.argument.source() + ').toUpperCase()' - ); - } -}); -console.log(output); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/prompt.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/prompt.js deleted file mode 100644 index 49dfa0d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/example/prompt.js +++ /dev/null @@ -1,49 +0,0 @@ -var falafel = require('../'); -var vm = require('vm'); - -var termExps = [ - 'Identifier', - 'CallExpression', - 'BinaryExpression', - 'UpdateExpression', - 'UnaryExpression' -].reduce(function (acc, key) { acc[key] = true; return acc }, {}); - -function terminated (node) { - for (var p = node; p.parent; p = p.parent) { - if (termExps[p.type]) return true; - } - return false; -} - -var src = '{"a":[2,~9,prompt(":d")],"b":4,"c":prompt("beep"),"d":6}'; - -var offsets = []; -var output = falafel('(' + src + ')', function (node) { - var isLeaf = node.parent - && !terminated(node.parent) && terminated(node) - ; - - if (isLeaf) { - var s = node.source(); - var prompted = false; - var res = vm.runInNewContext('(' + s + ')', { - prompt : function (x) { - setTimeout(function () { - node.update(x.toUpperCase()); - }, Math.random() * 50); - prompted = true; - } - }); - if (!prompted) { - var s_ = JSON.stringify(res); - node.update(s_); - } - } -}); - -setTimeout(function () { - console.log(src); - console.log('---'); - console.log(output); -}, 200); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js deleted file mode 100644 index f9630a6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js +++ /dev/null @@ -1,94 +0,0 @@ -var parse = require('esprima').parse; -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -}; -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn); - for (var i = 0; i < xs.length; i++) { - fn.call(xs, xs[i], i, xs); - } -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -module.exports = function (src, opts, fn) { - if (typeof opts === 'function') { - fn = opts; - opts = {}; - } - if (typeof src === 'object') { - opts = src; - src = opts.source; - delete opts.source; - } - src = src === undefined ? opts.source : src; - opts.range = true; - if (typeof src !== 'string') src = String(src); - - var ast = parse(src, opts); - - var result = { - chunks : src.split(''), - toString : function () { return result.chunks.join('') }, - inspect : function () { return result.toString() } - }; - var index = 0; - - (function walk (node, parent) { - insertHelpers(node, parent, result.chunks); - - forEach(objectKeys(node), function (key) { - if (key === 'parent') return; - - var child = node[key]; - if (isArray(child)) { - forEach(child, function (c) { - if (c && typeof c.type === 'string') { - walk(c, node); - } - }); - } - else if (child && typeof child.type === 'string') { - insertHelpers(child, node, result.chunks); - walk(child, node); - } - }); - fn(node); - })(ast, undefined); - - return result; -}; - -function insertHelpers (node, parent, chunks) { - if (!node.range) return; - - node.parent = parent; - - node.source = function () { - return chunks.slice( - node.range[0], node.range[1] - ).join(''); - }; - - if (node.update && typeof node.update === 'object') { - var prev = node.update; - forEach(objectKeys(prev), function (key) { - update[key] = prev[key]; - }); - node.update = update; - } - else { - node.update = update; - } - - function update (s) { - chunks[node.range[0]] = s; - for (var i = node.range[0] + 1; i < node.range[1]; i++) { - chunks[i] = ''; - } - }; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/.bin/esparse b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/.bin/esparse deleted file mode 100755 index 3e7bb81..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/.bin/esparse +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, null, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/.bin/esvalidate b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/.bin/esvalidate deleted file mode 100755 index dddd8a2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/.bin/esvalidate +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ -/*global phantom:true */ - -var fs, system, esprima, options, fnames, count; - -if (typeof esprima === 'undefined') { - // PhantomJS can only require() relative files - if (typeof phantom === 'object') { - fs = require('fs'); - system = require('system'); - esprima = require('./esprima'); - } else if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); - } else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } - } -} - -// Shims to Node.js objects when running under PhantomJS 1.7+. -if (typeof phantom === 'object') { - fs.readFileSync = fs.read; - process = { - argv: [].slice.call(system.args), - exit: phantom.exit - }; - process.argv.unshift('phantomjs'); -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} - -if (count === 0 && typeof phantom === 'object') { - process.exit(0); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/.npmignore deleted file mode 100644 index 88dc4e8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/.npmignore +++ /dev/null @@ -1,8 +0,0 @@ -.git -.travis.yml -/node_modules/ -/assets/ -/coverage/ -/demo/ -/test/3rdparty -/tools/ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/ChangeLog b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/ChangeLog deleted file mode 100644 index 84a6d6a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/ChangeLog +++ /dev/null @@ -1,17 +0,0 @@ -2012-11-02: Version 1.0.2 - - Improvement: - - * Fix esvalidate JUnit output upon a syntax error (issue 374) - -2012-10-28: Version 1.0.1 - - Improvements: - - * esvalidate understands shebang in a Unix shell script (issue 361) - * esvalidate treats fatal parsing failure as an error (issue 361) - * Reduce Node.js package via .npmignore (issue 362) - -2012-10-22: Version 1.0.0 - - Initial release. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/LICENSE.BSD b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/LICENSE.BSD deleted file mode 100644 index 3e580c3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/LICENSE.BSD +++ /dev/null @@ -1,19 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/README.md b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/README.md deleted file mode 100644 index 86670b2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/README.md +++ /dev/null @@ -1,76 +0,0 @@ -**Esprima** ([esprima.org](http://esprima.org)) is a high performance, -standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -parser written in ECMAScript (also popularly known as -[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)). -Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat), -with the help of [many contributors](https://github.com/ariya/esprima/contributors). - -Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -[Rhino](http://www.mozilla.org/rhino) and [Node.js](http://nodejs.org). - -### Features - -- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262) -- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla -[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) -- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage) -- Optional tracking of syntax node location (index-based and line-column) -- Experimental support for ES6/Harmony (module, class, destructuring, ...) - -Esprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)). -It is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html) -with the new generation of fast parsers. - -### Applications - -Esprima serves as the basis for many popular JavaScript development tools: - -- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul) -- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck) -- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS), -[Sweet.js](http://sweetjs.org/) (macro) -- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr) -- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html)) -- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter), -- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Rocambole](https://github.com/millermedeiros/rocambole/), - [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen), [redeyed](https://github.com/thlorenz/redeyed) -- Code navigation: [esgoggles](http://keeyipchan.github.com/esgoggles) -- AMD module tree assembler tools: [r.js](https://github.com/jrburke/r.js), [Prune.js](http://dvdotsenko.github.com/prunejs/) - -### Questions? -- [Documentation](http://esprima.org/doc) -- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect) -and [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement) -- [Mailing list](http://groups.google.com/group/esprima) -- [Contribution guide](http://esprima.org/doc/index.html#contribution) - -Follow [@Esprima](http://twitter.com/Esprima) on Twitter to get the -development updates. -Feedback and contribution are welcomed! - -### License - -Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) - and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/bin/esparse.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/bin/esparse.js deleted file mode 100755 index 3e7bb81..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/bin/esparse.js +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, null, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/bin/esvalidate.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/bin/esvalidate.js deleted file mode 100755 index dddd8a2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/bin/esvalidate.js +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ -/*global phantom:true */ - -var fs, system, esprima, options, fnames, count; - -if (typeof esprima === 'undefined') { - // PhantomJS can only require() relative files - if (typeof phantom === 'object') { - fs = require('fs'); - system = require('system'); - esprima = require('./esprima'); - } else if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); - } else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } - } -} - -// Shims to Node.js objects when running under PhantomJS 1.7+. -if (typeof phantom === 'object') { - fs.readFileSync = fs.read; - process = { - argv: [].slice.call(system.args), - exit: phantom.exit - }; - process.argv.unshift('phantomjs'); -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} - -if (count === 0 && typeof phantom === 'object') { - process.exit(0); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/component.json b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/component.json deleted file mode 100644 index 98e8a24..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/component.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "esprima", - "version": "1.1.0-dev", - "main": "./esprima.js", - "dependencies": {}, - "repository": { - "type": "git", - "url": "http://github.com/ariya/esprima.git" - }, - "licenses": [{ - "type": "BSD", - "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" - }] -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/doc/index.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/doc/index.html deleted file mode 100644 index 4e5b831..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/doc/index.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - -Esprima Documentation - - - - - - - -
- - - -

Esprima Documentation

- -
- -

Basic Usage

- -

Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -Rhino and Node.js.

- -

In a web browser

- -

Just include the source file:

- -
-<script src="esparse.js"></script>
-
- -

The module esprima will be available as part of the global window object:

- -
-var syntax = esprima.parse('var answer = 42');
-
- -

Since Esprima supports AMD (Asynchronous Module Definition), it can be loaded via a module loader such as RequireJS:

- -
-require(['esprima'], function (parser) {
-    // Do something with parser, e.g.
-    var syntax = parser.parse('var answer = 42');
-    console.log(JSON.stringify(syntax, null, 4));
-});
-
- -

Since Esprima is available as a Bower component, it can be installed with:

- -
-bower install esprima
-
- -

Obviously, it can be used with Yeoman as well:

- -
-yeoman install esprima
-
- -

With Node.js

- -

Esprima is available as a Node.js package, install it using npm:

- -
-npm install esprima
-
- -

Load the module with require and use it:

- -
-var esprima = require('esprima');
-console.log(JSON.stringify(esprima.parse('var answer = 42'), null, 4));
-
- -

With Rhino

- -

Load the source file from another script:

- -
-load('/path/to/esprima.js');
-
- -

The module esprima will be available as part of the global object:

- -
-var syntax = esprima.parse('42');
-print(JSON.stringify(syntax, null, 2));
-
- -

Parsing Interface

- -

Basic usage: - -

-esprima.parse(code, options);
-
- -

The output of the parser is the syntax tree formatted in JSON, see the following Syntax Tree Format section.

- -

Available options so far (by default, every option false):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionWhen set to true
locNodes have line and column-based location info
rangeNodes have an index-based location range (array)
rawLiterals have extra property which stores the verbatim source
tokensAn extra array containing all found tokens
commentAn extra array containing all line and block comments
tolerantAn extra array containing all errors found, - attempts to continue parsing when an error is encountered
- - -

The easiest way to see the different output based on various option settings is to use the online parser demo. - -

Note: In version > 1.0, raw is ignored since literals always include the verbatim source.

- -

Examples

- -

Detect Nested Ternary Conditionals

- -

The script detectnestedternary.js in the examples/ subdirectory is using Esprima to look for a ternary conditional, i.e. operator ?:, which is immediately followed (in one of its code paths) by another ternary conditional. The script can be invoked from the command-line with Node.js:

- -
-node detectnestedternary.js /some/path
-
- -

An example code fragment which will be flagged by this script as having a nested ternary conditional:

- -
-var str = (age < 1) ? "baby" :
-    (age < 5) ? "toddler" :
-    (age < 18) ? "child": "adult";
-
- -

which will yield the following report:

- -
-  Line 1 : Nested ternary for "age < 1"
-  Line 2 : Nested ternary for "age < 5"
-
- -

Find Possible Boolean Traps

- -

The script findbooleantrap.js in the examples/ subdirectory is using Esprima to detect some possible cases of Boolean trap, i.e. the use of Boolean literal which may lead to ambiguities and lack of readability. The script can be invoked from command-line with Node.js:

- -
-node findbooleantrap.js /some/path
-
- -It will search for all files (recursively) in the given path, try to parse each file, and then look for signs of Boolean traps: - -
    -
  • Literal used with a non-setter function (assumption: setter starts with the "set" prefix):
  • -
    this.refresh(true);
    -
  • Literal used with a function whose name may have a double-negative interpretation:
  • -
    item.setHidden(false);
    -
  • Two different literals in a single function call:
  • -
    element.stop(true, false);
    -
  • Multiple literals in a single function invocation:
  • -
    event.initKeyEvent("keypress", true, true, null, null,
    -    false, false, false, false, 9, 0);
    -
  • Ambiguous Boolean literal as the last argument:
  • -
    return getSomething(obj, false);
    -
- -For some more info, read also the blog post on Boolean trap. - -

Syntax Tree Format

- -

The output of the parser is expected to be compatible with Mozilla SpiderMonkey Parser API. -The best way to understand various different constructs is the online parser demo which shows the syntax tree (formatted with JSON.stringify) corresponding to the typed code. - -The simplest example is as follows. If the following code is executed: - -

-esprima.parse('var answer = 42;');
-
- -then the return value will be (JSON formatted): - -
-{
-    type: 'Program',
-    body: [
-        {
-            type: 'VariableDeclaration',
-            declarations: [
-                {
-                    type: 'AssignmentExpression',
-                    operator: =,
-                    left: {
-                        type: 'Identifier',
-                        name: 'answer'
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 42
-                    }
-                }
-            ]
-        }
-    ]
-}
-
- -

Contribution Guide

- -

Guidelines

- -

Contributors are mandated to follow the guides described in the following sections. Any contribution which do not conform to the guides may be rejected.

- -

Laundry list

- -

Before creating pull requests, make sure the following applies.

- -

There is a corresponding issue. If there is no issue yet, create one in the issue tracker.

- -

The commit log links the corresponding issue (usually as the last line).

- -

No functional regression. Run all unit tests.

- -

No coverage regression. Run the code coverage analysis.

- -

Each commit must be granular. Big changes should be splitted into smaller commits.

- -

Write understandable code. No need to be too terse (or even obfuscated).

- -

JSLint does not complain.

- -

A new feature must be accompanied with unit tests. No compromise.

- -

A new feature should not cause performance loss. Verify with the benchmark tests.

- -

Performance improvement should be backed up by actual conclusive speed-up in the benchmark suite.

- -

Coding style

- -

Indentation is 4 spaces.

- -

Open curly brace is at the end of the line.

- -

String literal uses single quote (') and not double quote (").

- -

Commit message

- -

Bad:

- -
-    Fix a problem with Firefox.
-
- -

The above commit is too short and useless in the long term.

- -

Good:

- -
-    Add support for labeled statement.
-
-    It is covered in ECMAScript Language Specification Section 12.12.
-    This also fixes parsing MooTools and JSLint code.
-
-    Running the benchmarks suite show negligible performance loss.
-
-    http://code.google.com/p/esprima/issues/detail?id=10
-    http://code.google.com/p/esprima/issues/detail?id=15
-    http://code.google.com/p/esprima/issues/detail?id=16
-
- -

Important aspects:

- -
    -
  • The first line is the short description, useful for per-line commit view and thus keep it under 80 characters.
  • -
  • The next paragraphs should provide more explanation (if needed).
  • -
  • Describe the testing situation (new unit/benchmark test, change in performance, etc).
  • -
  • Put the link to the issues for cross-ref.
  • -
- -

Baseline syntax tree as the expected result

- -

The test suite contains a collection of a pair of code and its syntax tree. To generate the syntax tree suitably formatted for the test fixture, use the included helper script tools/generate-test-fixture.js (with Node.js), e.g.: - -

-node tools/generate-test-fixture.js "var answer = 42"
-
- -The syntax tree will be printed out to the console. This can be used in the test fixture. - -

Test Workflow

- -

Before running the tests, prepare the tools via:

- -
-npm install
-
- -

Unit tests

- -

Browser-based unit testing is available by opening test/index.html in the source tree. The online version is esprima.org/test.

- -

Command-line testing using Node.js:

- -
npm test
- -

Code coverage test

- -

Note: you need to use Node.js 0.6 or later version.

- -

Install istanbul:

- -
sudo npm install -g istanbul
- -

Run it in Esprima source tree:

- -
istanbul cover test/runner.js
- -

To get the detailed report, open coverage/lcov-report/index.html file and choose esprima.js from the list.

- -

Benchmark tests

- -

Available by opening test/benchmarks.html in the source tree. The online version is esprima.org/test/benchmarks.html.

- -

Note: Because the corpus is fetched via XML HTTP Request, the benchmarks test needs to be served via a web server and not local file.

- -

It is important to run this with various browsers to cover different JavaScript engines.

- -

Command-line benchmark using Node.js:

- -
node test/benchmark.js
- -

Command-line benchmark using V8 shell:

- -
/path/to/v8/shell test/benchmark.js
- -

Speed comparison tests

- -

Available by opening test/compare.html. The online version is esprima.org/test/compare.html.

- -

Note: Because the corpus is fetched via XML HTTP Request, the benchmarks test needs to be served via a web server and not local file.

- -

Warning: Since each parser has a different format for the syntax tree, the speed is not fully comparable (the cost of constructing different result is not taken into account). These tests exist only to ensure that Esprima parser is not ridiculously slow, e.g. one magnitude slower compare to other parsers.

- -

Manual tests

- -

Code parser

- -

Available by opening demo/parse.html. - -

In this demo, whatever is typed in the editor will be parsed. If it is a valid code, the syntax tree will be shown formatted using JSON.stringify.

- -

Operator precedence

- -

Available by opening demo/precedence.html. - -

The demo compares two expression and decides whether they are semantically equivalent or not. If not, the expression will be rewritten, with extra parentheses, to following the intended semantic of the original.

- -

Regular expression collector

- -

Available by opening demo/collector.html. - -

The demo finds all the regular expressions in the given code, along with the location for each regular expression.

- -

Function tracing

- -

Available by opening demo/functiontrace.html. - -

The demo inserts a function call at the beginning of every function block to log the number of times the function is executed.

- - - -

Sister projects

- -

Escodegen is a code generator which supports Esprima syntax tree. This is useful for source code transformation. The source can be parsed by Esprima and then regenerated using escodegen. Between the process, the syntax tree can be transformed.

- -

Esmorph is a non-destructive source code morphing tool. It can tweak portions of the code without affecting the rest (hence the term non-destructive).

- -

Similar parsers

- -

Narcissus is a metacircular implementation of JavaScript. Obviously it has a parsing capability. Check more at the code repo: github.com/mozilla/narcissus. Narcissus is likely the oldest JavaScript parser written in JavaScript.

- -

UglifyJS is a minifier and obfuscator which has a parser called parse-js. It is pretty popular and widely used. Read more at its project page: github.com/mishoo/UglifyJS.

- -

ZeParser, see github.com/qfox/ZeParser.

- -

License

- -

Copyright (C) 2012, 2011 Ariya Hidayat and other contributors.

- -

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

-
    -
  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • -
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • -
- -

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- -
- - - -
- - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/esprima.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/esprima.js deleted file mode 100644 index ae728c4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/esprima.js +++ /dev/null @@ -1,3867 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, define:true, exports:true, window: true, -throwError: true, generateStatement: true, peek: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseStatement: true, parseSourceElement: true */ - -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // Rhino, and plain browser loading. - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.esprima = {})); - } -}(this, function (exports) { - 'use strict'; - - var Token, - TokenName, - Syntax, - PropertyKind, - Messages, - Regex, - SyntaxTreeDelegate, - source, - strict, - index, - lineNumber, - lineStart, - length, - delegate, - lookahead, - state, - extra; - - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8 - }; - - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; - - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; - - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - MultipleDefaultsInSwitch: 'More than one default clause in switch statement', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), - NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') - }; - - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. - - function assert(condition, message) { - if (!condition) { - throw new Error('ASSERT: ' + message); - } - } - - function isDecimalDigit(ch) { - return (ch >= 48 && ch <= 57); // 0..9 - } - - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; - } - - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } - - - // 7.2 White Space - - function isWhiteSpace(ch) { - return (ch === 32) || // space - (ch === 9) || // tab - (ch === 0xB) || - (ch === 0xC) || - (ch === 0xA0) || - (ch >= 0x1680 && '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(String.fromCharCode(ch)) > 0); - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return (ch === 10) || (ch === 13) || (ch === 0x2028) || (ch === 0x2029); - } - - // 7.6 Identifier Names and Identifiers - - function isIdentifierStart(ch) { - return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) - (ch >= 65 && ch <= 90) || // A..Z - (ch >= 97 && ch <= 122) || // a..z - (ch === 92) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); - } - - function isIdentifierPart(ch) { - return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) - (ch >= 65 && ch <= 90) || // A..Z - (ch >= 97 && ch <= 122) || // a..z - (ch >= 48 && ch <= 57) || // 0..9 - (ch === 92) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); - } - - // 7.6.1.2 Future Reserved Words - - function isFutureReservedWord(id) { - switch (id) { - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - default: - return false; - } - } - - function isStrictModeReservedWord(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - default: - return false; - } - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - // 7.6.1.1 Keywords - - function isKeyword(id) { - var keywordOverride; - if (typeof extra.isKeyword === 'function') { - keywordOverride = extra.isKeyword(id); - if (typeof keywordOverride === 'boolean' - || typeof keywordOverride === 'string') { - return keywordOverride; - } - } - if (strict && isStrictModeReservedWord(id)) { - return true; - } - - // 'const' is specialized as Keyword in V8. - // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. - // Some others are from future reserved words. - - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || - (id === 'try') || (id === 'let'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } - - // 7.4 Comments - - function skipComment() { - var ch, blockComment, lineComment; - - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source.charCodeAt(index); - - if (lineComment) { - ++index; - if (isLineTerminator(ch)) { - lineComment = false; - if (ch === 13 && source.charCodeAt(index) === 10) { - ++index; - } - ++lineNumber; - lineStart = index; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === 13 && source.charCodeAt(index + 1) === 10) { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = source.charCodeAt(index++); - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - // Block comment ends with '*/' (char #42, char #47). - if (ch === 42) { - ch = source.charCodeAt(index); - if (ch === 47) { - ++index; - blockComment = false; - } - } - } - } else if (ch === 47) { - ch = source.charCodeAt(index + 1); - // Line comment starts with '//' (char #47, char #47). - if (ch === 47) { - index += 2; - lineComment = true; - } else if (ch === 42) { - // Block comment starts with '/*' (char #47, char #42). - index += 2; - blockComment = true; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === 13 && source.charCodeAt(index) === 10) { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function scanHexEscape(prefix) { - var i, len, ch, code = 0; - - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; - } - } - return String.fromCharCode(code); - } - - function getEscapedIdentifier() { - var ch, id; - - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); - - // '\u' (char #92, char #117) denotes an escaped character. - if (ch === 92) { - if (source.charCodeAt(index) !== 117) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - id = ch; - } - - while (index < length) { - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) { - break; - } - ++index; - id += String.fromCharCode(ch); - - // '\u' (char #92, char #117) denotes an escaped character. - if (ch === 92) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 117) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - id += ch; - } - } - - return id; - } - - function getIdentifier() { - var start, ch; - - start = index++; - while (index < length) { - ch = source.charCodeAt(index); - if (ch === 92) { - // Blackslash (char #92) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) { - ++index; - } else { - break; - } - } - - return source.slice(start, index); - } - - function scanIdentifier() { - var start, id, fakeId, type; - - start = index; - - // Backslash (char #92) starts an escaped character. - id = (source.charCodeAt(index) === 92) ? getEscapedIdentifier() : getIdentifier(); - - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - type = Token.Identifier; - } else if (fakeId = isKeyword(id)) { - if (typeof fakeId === 'string') { - if (fakeId === 'block') { - lookahead = advance(); - lookahead.keyword = id; - return lookahead; - } - id = fakeId; - } - type = Token.Keyword; - } else if (id === 'null') { - type = Token.NullLiteral; - } else if (id === 'true' || id === 'false') { - type = Token.BooleanLiteral; - } else { - type = Token.Identifier; - } - - return { - type: type, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - - // 7.7 Punctuators - - function scanPunctuator() { - var start = index, - code = source.charCodeAt(index), - code2, - ch1 = source[index], - ch2, - ch3, - ch4; - - switch (code) { - - // Check for most common single-character punctuators. - case 46: // . dot - case 40: // ( open bracket - case 41: // ) close bracket - case 59: // ; semicolon - case 44: // , comma - case 123: // { open curly brace - case 125: // } close curly brace - case 91: // [ - case 93: // ] - case 58: // : - case 63: // ? - case 126: // ~ - ++index; - return { - type: Token.Punctuator, - value: String.fromCharCode(code), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - - default: - code2 = source.charCodeAt(index + 1); - - // '=' (char #61) marks an assignment or comparison operator. - if (code2 === 61) { - switch (code) { - case 37: // % - case 38: // & - case 42: // *: - case 43: // + - case 45: // - - case 47: // / - case 60: // < - case 62: // > - case 94: // ^ - case 124: // | - index += 2; - return { - type: Token.Punctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - - case 33: // ! - case 61: // = - index += 2; - - // !== and === - if (source.charCodeAt(index) === 61) { - ++index; - } - return { - type: Token.Punctuator, - value: source.slice(start, index), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - default: - break; - } - } - break; - } - - // Peek more characters. - - ch2 = source[index + 1]; - ch3 = source[index + 2]; - ch4 = source[index + 3]; - - // 4-character punctuator: >>>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - if (ch4 === '=') { - index += 4; - return { - type: Token.Punctuator, - value: '>>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 3-character punctuators: === !== >>> <<= >>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - index += 3; - return { - type: Token.Punctuator, - value: '>>>', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '<' && ch2 === '<' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '<<=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Other 2-character punctuators: ++ -- << >> && || - - if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - // 7.8.3 Numeric Literals - - function scanHexLiteral(start) { - var number = ''; - - while (index < length) { - if (!isHexDigit(source[index])) { - break; - } - number += source[index++]; - } - - if (number.length === 0) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.NumericLiteral, - value: parseInt('0x' + number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanOctalLiteral(start) { - var number = '0' + source[index++]; - while (index < length) { - if (!isOctalDigit(source[index])) { - break; - } - number += source[index++]; - } - - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanNumericLiteral() { - var number, start, ch; - - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); - - start = index; - number = ''; - if (ch !== '.') { - number = source[index++]; - ch = source[index]; - - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) { - return scanOctalLiteral(start); - } - - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } - - if (ch === '.') { - number += source[index++]; - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } - - if (ch === 'e' || ch === 'E') { - number += source[index++]; - - ch = source[index]; - if (ch === '+' || ch === '-') { - number += source[index++]; - } - if (isDecimalDigit(source.charCodeAt(index))) { - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - } else { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.4 String Literals - - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false; - - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); - - start = index; - ++index; - - while (index < length) { - ch = source[index++]; - - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) { - switch (ch) { - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\v'; - break; - - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); - - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } - - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(source[index++]); - - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(source[index++]); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - } - } else if (isLineTerminator(ch.charCodeAt(0))) { - break; - } else { - str += ch; - } - } - - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.StringLiteral, - value: str, - octal: octal, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanRegExp() { - var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; - - lookahead = null; - skipComment(); - - start = index; - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = source[index++]; - - while (index < length) { - ch = source[index++]; - str += ch; - if (classMarker) { - if (ch === ']') { - classMarker = false; - } - } else { - if (ch === '\\') { - ch = source[index++]; - // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (ch === '/') { - terminated = true; - break; - } else if (ch === '[') { - classMarker = true; - } else if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } - } - } - - if (!terminated) { - throwError({}, Messages.UnterminatedRegExp); - } - - // Exclude leading and trailing slash. - pattern = str.substr(1, str.length - 2); - - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) { - break; - } - - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - for (str += '\\u'; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - } else { - str += '\\'; - } - } else { - flags += ch; - str += ch; - } - } - - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); - } - - peek(); - - return { - literal: str, - value: value, - range: [start, index] - }; - } - - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } - - function advance() { - var ch; - - skipComment(); - - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - range: [index, index] - }; - } - - ch = source.charCodeAt(index); - - // Very common: ( and ) and ; - if (ch === 40 || ch === 41 || ch === 58) { - return scanPunctuator(); - } - - // String literal starts with single quote (#39) or double quote (#34). - if (ch === 39 || ch === 34) { - return scanStringLiteral(); - } - - if (isIdentifierStart(ch)) { - return scanIdentifier(); - } - - // Dot (.) char #46 can also start a floating-point number, hence the need - // to check the next character. - if (ch === 46) { - if (isDecimalDigit(source.charCodeAt(index + 1))) { - return scanNumericLiteral(); - } - return scanPunctuator(); - } - - if (isDecimalDigit(ch)) { - return scanNumericLiteral(); - } - - return scanPunctuator(); - } - - function lex() { - var token; - - token = lookahead; - index = token.range[1]; - lineNumber = token.lineNumber; - lineStart = token.lineStart; - - lookahead = advance(); - - index = token.range[1]; - lineNumber = token.lineNumber; - lineStart = token.lineStart; - - return token; - } - - function peek() { - var pos, line, start; - - pos = index; - line = lineNumber; - start = lineStart; - lookahead = advance(); - index = pos; - lineNumber = line; - lineStart = start; - } - - SyntaxTreeDelegate = { - - name: 'SyntaxTree', - - postProcess: function (node) { - return node; - }, - - createArrayExpression: function (elements) { - return { - type: Syntax.ArrayExpression, - elements: elements - }; - }, - - createAssignmentExpression: function (operator, left, right) { - return { - type: Syntax.AssignmentExpression, - operator: operator, - left: left, - right: right - }; - }, - - createBinaryExpression: function (operator, left, right) { - var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : - Syntax.BinaryExpression; - return { - type: type, - operator: operator, - left: left, - right: right - }; - }, - - createBlockStatement: function (body) { - return { - type: Syntax.BlockStatement, - body: body - }; - }, - - createBreakStatement: function (label) { - return { - type: Syntax.BreakStatement, - label: label - }; - }, - - createCallExpression: function (callee, args) { - return { - type: Syntax.CallExpression, - callee: callee, - 'arguments': args - }; - }, - - createCatchClause: function (param, body) { - return { - type: Syntax.CatchClause, - param: param, - body: body - }; - }, - - createConditionalExpression: function (test, consequent, alternate) { - return { - type: Syntax.ConditionalExpression, - test: test, - consequent: consequent, - alternate: alternate - }; - }, - - createContinueStatement: function (label) { - return { - type: Syntax.ContinueStatement, - label: label - }; - }, - - createDebuggerStatement: function () { - return { - type: Syntax.DebuggerStatement - }; - }, - - createDoWhileStatement: function (body, test) { - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - }, - - createEmptyStatement: function () { - return { - type: Syntax.EmptyStatement - }; - }, - - createExpressionStatement: function (expression) { - return { - type: Syntax.ExpressionStatement, - expression: expression - }; - }, - - createForStatement: function (init, test, update, body) { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - }, - - createForInStatement: function (left, right, body) { - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - }, - - createFunctionDeclaration: function (id, params, defaults, body) { - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, - - createFunctionExpression: function (id, params, defaults, body) { - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, - - createIdentifier: function (name) { - return { - type: Syntax.Identifier, - name: name - }; - }, - - createIfStatement: function (test, consequent, alternate) { - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - }, - - createLabeledStatement: function (label, body) { - return { - type: Syntax.LabeledStatement, - label: label, - body: body - }; - }, - - createLiteral: function (token) { - return { - type: Syntax.Literal, - value: token.value, - raw: source.slice(token.range[0], token.range[1]) - }; - }, - - createMemberExpression: function (accessor, object, property) { - return { - type: Syntax.MemberExpression, - computed: accessor === '[', - object: object, - property: property - }; - }, - - createNewExpression: function (callee, args) { - return { - type: Syntax.NewExpression, - callee: callee, - 'arguments': args - }; - }, - - createObjectExpression: function (properties) { - return { - type: Syntax.ObjectExpression, - properties: properties - }; - }, - - createPostfixExpression: function (operator, argument) { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: false - }; - }, - - createProgram: function (body) { - return { - type: Syntax.Program, - body: body - }; - }, - - createProperty: function (kind, key, value) { - return { - type: Syntax.Property, - key: key, - value: value, - kind: kind - }; - }, - - createReturnStatement: function (argument) { - return { - type: Syntax.ReturnStatement, - argument: argument - }; - }, - - createSequenceExpression: function (expressions) { - return { - type: Syntax.SequenceExpression, - expressions: expressions - }; - }, - - createSwitchCase: function (test, consequent) { - return { - type: Syntax.SwitchCase, - test: test, - consequent: consequent - }; - }, - - createSwitchStatement: function (discriminant, cases) { - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - }, - - createThisExpression: function () { - return { - type: Syntax.ThisExpression - }; - }, - - createThrowStatement: function (argument) { - return { - type: Syntax.ThrowStatement, - argument: argument - }; - }, - - createTryStatement: function (block, guardedHandlers, handlers, finalizer) { - return { - type: Syntax.TryStatement, - block: block, - guardedHandlers: guardedHandlers, - handlers: handlers, - finalizer: finalizer - }; - }, - - createUnaryExpression: function (operator, argument) { - if (operator === '++' || operator === '--') { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: true - }; - } - var res = { - type: Syntax.UnaryExpression, - operator: operator, - argument: argument - }; - if (/^\w/.test(operator)) res.keyword = operator; - return res; - }, - - createVariableDeclaration: function (declarations, kind) { - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - }, - - createVariableDeclarator: function (id, init) { - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - }, - - createWhileStatement: function (test, body) { - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - }, - - createWithStatement: function (object, body) { - return { - type: Syntax.WithStatement, - object: object, - body: body - }; - } - }; - - // Return true if there is a line terminator before the next token. - - function peekLineTerminator() { - var pos, line, start, found; - - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; - - return found; - } - - // Throw an exception - - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - assert(index < args.length, 'Message reference must be in range'); - return args[index]; - } - ); - - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.range[0]; - error.lineNumber = token.lineNumber; - error.column = token.range[0] - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; - } - - error.description = msg; - throw error; - } - - function throwErrorTolerant() { - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; - } - } - } - - - // Throw an exception because of the token. - - function throwUnexpected(token) { - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); - } - - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); - } - - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); - } - - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); - } - - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictReservedWord); - return; - } - throwError(token, Messages.UnexpectedToken, token.value); - } - - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); - } - - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. - - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); - } - else return token; - } - - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. - - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); - } - } - - // Return true if the next token matches the specified punctuator. - - function match(value) { - return lookahead.type === Token.Punctuator && lookahead.value === value; - } - - // Return true if the next token matches the specified keyword - - function matchKeyword(keyword) { - return lookahead.type === Token.Keyword && lookahead.value === keyword; - } - - // Return true if the next token is an assignment operator - - function matchAssign() { - var op; - - if (lookahead.type !== Token.Punctuator) { - return false; - } - op = lookahead.value; - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; - } - - function consumeSemicolon() { - var line; - - // Catch the very common case first: immediately a semicolon (char #59). - if (source.charCodeAt(index) === 59) { - lex(); - return; - } - - line = lineNumber; - skipComment(); - if (lineNumber !== line) { - return; - } - - if (match(';')) { - lex(); - return; - } - - if (lookahead.type !== Token.EOF && !match('}')) { - throwUnexpected(lookahead); - } - } - - // Return true if provided expression is LeftHandSideExpression - - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } - - // 11.1.4 Array Initialiser - - function parseArrayInitialiser() { - var elements = []; - - expect('['); - - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(null); - } else { - elements.push(parseAssignmentExpression()); - - if (!match(']')) { - expect(','); - } - } - } - - expect(']'); - - return delegate.createArrayExpression(elements); - } - - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body; - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwErrorTolerant(first, Messages.StrictParamName); - } - strict = previousStrict; - return delegate.createFunctionExpression(null, param, [], body); - } - - function parseObjectPropertyKey() { - var token = lex(); - - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return delegate.createLiteral(token); - } - - return delegate.createIdentifier(token.value); - } - - function parseObjectProperty() { - var token, key, id, value, param; - - token = lookahead; - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); - - // Property Assignment: Getter and Setter. - - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - value = parsePropertyFunction([]); - return delegate.createProperty('get', key, value); - } - if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead; - if (token.type !== Token.Identifier) { - throwUnexpected(lex()); - } - param = [ parseVariableIdentifier() ]; - expect(')'); - value = parsePropertyFunction(param, token); - return delegate.createProperty('set', key, value); - } - expect(':'); - value = parseAssignmentExpression(); - return delegate.createProperty('init', id, value); - } - if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - value = parseAssignmentExpression(); - return delegate.createProperty('init', key, value); - } - } - - function parseObjectInitialiser() { - var properties = [], property, name, key, kind, map = {}, toString = String; - - expect('{'); - - while (!match('}')) { - property = parseObjectProperty(); - - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); - } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - - key = '$' + name; - if (Object.prototype.hasOwnProperty.call(map, key)) { - if (map[key] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } else if (map[key] & kind) { - throwErrorTolerant({}, Messages.AccessorGetSet); - } - } - map[key] |= kind; - } else { - map[key] = kind; - } - - properties.push(property); - - if (!match('}')) { - expect(','); - } - } - - expect('}'); - - return delegate.createObjectExpression(properties); - } - - // 11.1.6 The Grouping Operator - - function parseGroupExpression() { - var expr; - - expect('('); - - expr = parseExpression(); - - expect(')'); - - return expr; - } - - - // 11.1 Primary Expressions - - function parsePrimaryExpression() { - var type, token; - - type = lookahead.type; - - if (type === Token.Identifier) { - return delegate.createIdentifier(lex().value); - } - - if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && lookahead.octal) { - throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); - } - return delegate.createLiteral(lex()); - } - - if (type === Token.Keyword) { - if (matchKeyword('this')) { - lex(); - return delegate.createThisExpression(); - } - - if (matchKeyword('function')) { - return parseFunctionExpression(); - } - } - - if (type === Token.BooleanLiteral) { - token = lex(); - token.value = (token.value === 'true'); - return delegate.createLiteral(token); - } - - if (type === Token.NullLiteral) { - token = lex(); - token.value = null; - return delegate.createLiteral(token); - } - - if (match('[')) { - return parseArrayInitialiser(); - } - - if (match('{')) { - return parseObjectInitialiser(); - } - - if (match('(')) { - return parseGroupExpression(); - } - - if (match('/') || match('/=')) { - return delegate.createLiteral(scanRegExp()); - } - - return throwUnexpected(lex()); - } - - // 11.2 Left-Hand-Side Expressions - - function parseArguments() { - var args = []; - - expect('('); - - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return args; - } - - function parseNonComputedProperty() { - var token = lex(); - - if (!isIdentifierName(token)) { - throwUnexpected(token); - } - - return delegate.createIdentifier(token.value); - } - - function parseNonComputedMember() { - expect('.'); - - return parseNonComputedProperty(); - } - - function parseComputedMember() { - var expr; - - expect('['); - - expr = parseExpression(); - - expect(']'); - - return expr; - } - - function parseNewExpression() { - var callee, args; - - expectKeyword('new'); - callee = parseLeftHandSideExpression(); - args = match('(') ? parseArguments() : []; - - return delegate.createNewExpression(callee, args); - } - - function parseLeftHandSideExpressionAllowCall() { - var expr, args, property; - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - args = parseArguments(); - expr = delegate.createCallExpression(expr, args); - } else if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - } - } - - return expr; - } - - - function parseLeftHandSideExpression() { - var expr, property; - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[')) { - if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - } - } - - return expr; - } - - // 11.3 Postfix Expressions - - function parsePostfixExpression() { - var expr = parseLeftHandSideExpressionAllowCall(), token; - - if (lookahead.type !== Token.Punctuator) { - return expr; - } - - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPostfix); - } - - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - token = lex(); - expr = delegate.createPostfixExpression(token.value, expr); - } - - return expr; - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr; - - if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { - return parsePostfixExpression(); - } - - if (match('++') || match('--')) { - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPrefix); - } - - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - return delegate.createUnaryExpression(token.value, expr); - } - - if (match('+') || match('-') || match('~') || match('!')) { - token = lex(); - expr = parseUnaryExpression(); - return delegate.createUnaryExpression(token.value, expr); - } - - if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); - } - return expr; - } - - if (extra.isKeyword && lookahead.type === 4 && extra.isKeyword(lookahead.value) === true) { - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - return expr; - } - - return parsePostfixExpression(); - } - - function binaryPrecedence(token, allowIn) { - var prec = 0; - - if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { - return 0; - } - - switch (token.value) { - case '||': - prec = 1; - break; - - case '&&': - prec = 2; - break; - - case '|': - prec = 3; - break; - - case '^': - prec = 4; - break; - - case '&': - prec = 5; - break; - - case '==': - case '!=': - case '===': - case '!==': - prec = 6; - break; - - case '<': - case '>': - case '<=': - case '>=': - case 'instanceof': - prec = 7; - break; - - case 'in': - prec = allowIn ? 7 : 0; - break; - - case '<<': - case '>>': - case '>>>': - prec = 8; - break; - - case '+': - case '-': - prec = 9; - break; - - case '*': - case '/': - case '%': - prec = 11; - break; - - default: - break; - } - - return prec; - } - - // 11.5 Multiplicative Operators - // 11.6 Additive Operators - // 11.7 Bitwise Shift Operators - // 11.8 Relational Operators - // 11.9 Equality Operators - // 11.10 Binary Bitwise Operators - // 11.11 Binary Logical Operators - - function parseBinaryExpression() { - var expr, token, prec, previousAllowIn, stack, right, operator, left, i; - - previousAllowIn = state.allowIn; - state.allowIn = true; - - expr = parseUnaryExpression(); - - token = lookahead; - prec = binaryPrecedence(token, previousAllowIn); - if (prec === 0) { - return expr; - } - token.prec = prec; - lex(); - - stack = [expr, token, parseUnaryExpression()]; - - while ((prec = binaryPrecedence(lookahead, previousAllowIn)) > 0) { - - // Reduce: make a binary expression from the three topmost entries. - while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - stack.push(delegate.createBinaryExpression(operator, left, right)); - } - - // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - stack.push(parseUnaryExpression()); - } - - state.allowIn = previousAllowIn; - - // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - while (i > 1) { - expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - } - return expr; - } - - - // 11.12 Conditional Operator - - function parseConditionalExpression() { - var expr, previousAllowIn, consequent, alternate; - - expr = parseBinaryExpression(); - - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - alternate = parseAssignmentExpression(); - - expr = delegate.createConditionalExpression(expr, consequent, alternate); - } - - return expr; - } - - // 11.13 Assignment Operators - - function parseAssignmentExpression() { - var token, left, right; - - token = lookahead; - left = parseConditionalExpression(); - - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(left)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - // 11.13.1 - if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { - throwErrorTolerant(token, Messages.StrictLHSAssignment); - } - - token = lex(); - right = parseAssignmentExpression(); - return delegate.createAssignmentExpression(token.value, left, right); - } - - return left; - } - - // 11.14 Comma Operator - - function parseExpression() { - var expr = parseAssignmentExpression(); - - if (match(',')) { - expr = delegate.createSequenceExpression([ expr ]); - - while (index < length) { - if (!match(',')) { - break; - } - lex(); - expr.expressions.push(parseAssignmentExpression()); - } - - } - return expr; - } - - // 12.1 Block - - function parseStatementList() { - var list = [], - statement; - - while (index < length) { - if (match('}')) { - break; - } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; - } - list.push(statement); - } - - return list; - } - - function parseBlock() { - var block; - - var t = expect('{'); - - block = parseStatementList(); - - expect('}'); - - var db = delegate.createBlockStatement(block); - if (t.keyword) db.keyword = t.keyword; - return db; - } - - // 12.2 Variable Statement - - function parseVariableIdentifier() { - var token = lex(); - - if (token.type !== Token.Identifier) { - throwUnexpected(token); - } - - return delegate.createIdentifier(token.value); - } - - function parseVariableDeclaration(kind) { - var id = parseVariableIdentifier(), - init = null; - - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); - } - - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); - } - - return delegate.createVariableDeclarator(id, init); - } - - function parseVariableDeclarationList(kind) { - var list = []; - - do { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; - } - lex(); - } while (index < length); - - return list; - } - - function parseVariableStatement() { - var declarations; - - expectKeyword('var'); - - declarations = parseVariableDeclarationList(); - - consumeSemicolon(); - - return delegate.createVariableDeclaration(declarations, 'var'); - } - - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations; - - expectKeyword(kind); - - declarations = parseVariableDeclarationList(kind); - - consumeSemicolon(); - - return delegate.createVariableDeclaration(declarations, kind); - } - - // 12.3 Empty Statement - - function parseEmptyStatement() { - expect(';'); - return delegate.createEmptyStatement(); - } - - // 12.4 Expression Statement - - function parseExpressionStatement() { - var expr = parseExpression(); - consumeSemicolon(); - return delegate.createExpressionStatement(expr); - } - - // 12.5 If statement - - function parseIfStatement() { - var test, consequent, alternate; - - expectKeyword('if'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - consequent = parseStatement(); - - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } - - return delegate.createIfStatement(test, consequent, alternate); - } - - // 12.6 Iteration Statements - - function parseDoWhileStatement() { - var body, test, oldInIteration; - - expectKeyword('do'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - if (match(';')) { - lex(); - } - - return delegate.createDoWhileStatement(body, test); - } - - function parseWhileStatement() { - var test, body, oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return delegate.createWhileStatement(test, body); - } - - function parseForVariableDeclaration() { - var token = lex(), - declarations = parseVariableDeclarationList(); - - return delegate.createVariableDeclaration(declarations, token.value); - } - - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; - - init = test = update = null; - - expectKeyword('for'); - - expect('('); - - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; - - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; - - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwError({}, Messages.InvalidLHSInForIn); - } - - lex(); - left = init; - right = parseExpression(); - init = null; - } - } - - if (typeof left === 'undefined') { - expect(';'); - } - } - - if (typeof left === 'undefined') { - - if (!match(';')) { - test = parseExpression(); - } - expect(';'); - - if (!match(')')) { - update = parseExpression(); - } - } - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return (typeof left === 'undefined') ? - delegate.createForStatement(init, test, update, body) : - delegate.createForInStatement(left, right, body); - } - - // 12.7 The continue statement - - function parseContinueStatement() { - var label = null, key; - - expectKeyword('continue'); - - // Optimize the most common form: 'continue;'. - if (source.charCodeAt(index) === 59) { - lex(); - - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return delegate.createContinueStatement(null); - } - - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return delegate.createContinueStatement(null); - } - - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); - - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return delegate.createContinueStatement(label); - } - - // 12.8 The break statement - - function parseBreakStatement() { - var label = null, key; - - expectKeyword('break'); - - // Catch the very common case first: immediately a semicolon (char #59). - if (source.charCodeAt(index) === 59) { - lex(); - - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(null); - } - - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(null); - } - - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); - - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(label); - } - - // 12.9 The return statement - - function parseReturnStatement() { - var argument = null; - - expectKeyword('return'); - - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); - } - - // 'return' followed by a space and an identifier is very common. - if (source.charCodeAt(index) === 32) { - if (isIdentifierStart(source.charCodeAt(index + 1))) { - argument = parseExpression(); - consumeSemicolon(); - return delegate.createReturnStatement(argument); - } - } - - if (peekLineTerminator()) { - return delegate.createReturnStatement(null); - } - - if (!match(';')) { - if (!match('}') && lookahead.type !== Token.EOF) { - argument = parseExpression(); - } - } - - consumeSemicolon(); - - return delegate.createReturnStatement(argument); - } - - // 12.10 The with statement - - function parseWithStatement() { - var object, body; - - if (strict) { - throwErrorTolerant({}, Messages.StrictModeWith); - } - - expectKeyword('with'); - - expect('('); - - object = parseExpression(); - - expect(')'); - - body = parseStatement(); - - return delegate.createWithStatement(object, body); - } - - // 12.10 The swith statement - - function parseSwitchCase() { - var test, - consequent = [], - statement; - - if (matchKeyword('default')) { - lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); - } - expect(':'); - - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - consequent.push(statement); - } - - return delegate.createSwitchCase(test, consequent); - } - - function parseSwitchStatement() { - var discriminant, cases, clause, oldInSwitch, defaultFound; - - expectKeyword('switch'); - - expect('('); - - discriminant = parseExpression(); - - expect(')'); - - expect('{'); - - if (match('}')) { - lex(); - return delegate.createSwitchStatement(discriminant); - } - - cases = []; - - oldInSwitch = state.inSwitch; - state.inSwitch = true; - defaultFound = false; - - while (index < length) { - if (match('}')) { - break; - } - clause = parseSwitchCase(); - if (clause.test === null) { - if (defaultFound) { - throwError({}, Messages.MultipleDefaultsInSwitch); - } - defaultFound = true; - } - cases.push(clause); - } - - state.inSwitch = oldInSwitch; - - expect('}'); - - return delegate.createSwitchStatement(discriminant, cases); - } - - // 12.13 The throw statement - - function parseThrowStatement() { - var argument; - - expectKeyword('throw'); - - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); - } - - argument = parseExpression(); - - consumeSemicolon(); - - return delegate.createThrowStatement(argument); - } - - // 12.14 The try statement - - function parseCatchClause() { - var param, body; - - expectKeyword('catch'); - - expect('('); - if (match(')')) { - throwUnexpected(lookahead); - } - - param = parseExpression(); - // 12.14.1 - if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); - } - - expect(')'); - body = parseBlock(); - return delegate.createCatchClause(param, body); - } - - function parseTryStatement() { - var block, handlers = [], finalizer = null; - - expectKeyword('try'); - - block = parseBlock(); - - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } - - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } - - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); - } - - return delegate.createTryStatement(block, [], handlers, finalizer); - } - - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); - - return delegate.createDebuggerStatement(); - } - - // 12 Statements - - function parseStatement() { - var type = lookahead.type, - expr, - labeledBody, - key; - - if (type === Token.EOF) { - throwUnexpected(lookahead); - } - - if (type === Token.Punctuator) { - switch (lookahead.value) { - case ';': - return parseEmptyStatement(); - case '{': - return parseBlock(); - case '(': - return parseExpressionStatement(); - default: - break; - } - } - - if (type === Token.Keyword) { - switch (lookahead.value) { - case 'break': - return parseBreakStatement(); - case 'continue': - return parseContinueStatement(); - case 'debugger': - return parseDebuggerStatement(); - case 'do': - return parseDoWhileStatement(); - case 'for': - return parseForStatement(); - case 'function': - return parseFunctionDeclaration(); - case 'if': - return parseIfStatement(); - case 'return': - return parseReturnStatement(); - case 'switch': - return parseSwitchStatement(); - case 'throw': - return parseThrowStatement(); - case 'try': - return parseTryStatement(); - case 'var': - return parseVariableStatement(); - case 'while': - return parseWhileStatement(); - case 'with': - return parseWithStatement(); - default: - break; - } - } - - expr = parseExpression(); - - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); - - key = '$' + expr.name; - if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } - - state.labelSet[key] = true; - labeledBody = parseStatement(); - delete state.labelSet[key]; - return delegate.createLabeledStatement(expr, labeledBody); - } - - consumeSemicolon(); - - return delegate.createExpressionStatement(expr); - } - - // 13 Function Definition - - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; - - expect('{'); - - while (index < length) { - if (lookahead.type !== Token.StringLiteral) { - break; - } - token = lookahead; - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; - - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; - - while (index < length) { - if (match('}')) { - break; - } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - - expect('}'); - - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; - - return delegate.createBlockStatement(sourceElements); - } - - function parseParams(firstRestricted) { - var param, params = [], token, stricted, paramSet, key, message; - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead; - param = parseVariableIdentifier(); - key = '$' + token.value; - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[key] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return { - params: params, - stricted: stricted, - firstRestricted: firstRestricted, - message: message - }; - } - - function parseFunctionDeclaration() { - var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict; - - expectKeyword('function'); - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return delegate.createFunctionDeclaration(id, params, [], body); - } - - function parseFunctionExpression() { - var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict; - - expectKeyword('function'); - - if (!match('(')) { - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - } - - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return delegate.createFunctionExpression(id, params, [], body); - } - - // 14 Program - - function parseSourceElement() { - if (lookahead.type === Token.Keyword) { - switch (lookahead.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(lookahead.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); - } - } - - if (lookahead.type !== Token.EOF) { - return parseStatement(); - } - } - - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; - - while (index < length) { - token = lookahead; - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - while (index < length) { - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - return sourceElements; - } - - function parseProgram() { - var body; - strict = false; - peek(); - body = parseSourceElements(); - return delegate.createProgram(body); - } - - // The following functions are needed only when the option to preserve - // the comments is active. - - function addComment(type, value, start, end, loc) { - assert(typeof start === 'number', 'Comment must have valid position'); - - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (extra.comments.length > 0) { - if (extra.comments[extra.comments.length - 1].range[1] > start) { - return; - } - } - - extra.comments.push({ - type: type, - value: value, - range: [start, end], - loc: loc - }); - } - - function scanComment() { - var comment, ch, loc, start, blockComment, lineComment; - - comment = ''; - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = source[index++]; - if (isLineTerminator(ch.charCodeAt(0))) { - loc.end = { - line: lineNumber, - column: index - lineStart - 1 - }; - lineComment = false; - addComment('Line', comment, start, index - 1, loc); - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - comment = ''; - } else if (index >= length) { - lineComment = false; - comment += ch; - loc.end = { - line: lineNumber, - column: length - lineStart - }; - addComment('Line', comment, start, length, loc); - } else { - comment += ch; - } - } else if (blockComment) { - if (isLineTerminator(ch.charCodeAt(0))) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - comment += '\r\n'; - } else { - comment += ch; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = source[index++]; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - comment += ch; - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - comment = comment.substr(0, comment.length - 1); - blockComment = false; - ++index; - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Block', comment, start, index, loc); - comment = ''; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - start = index; - index += 2; - lineComment = true; - if (index >= length) { - loc.end = { - line: lineNumber, - column: index - lineStart - }; - lineComment = false; - addComment('Line', comment, start, index, loc); - } - } else if (ch === '*') { - start = index; - index += 2; - blockComment = true; - loc = { - start: { - line: lineNumber, - column: index - lineStart - 2 - } - }; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch.charCodeAt(0))) { - ++index; - } else if (isLineTerminator(ch.charCodeAt(0))) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function filterCommentLocation() { - var i, entry, comment, comments = []; - - for (i = 0; i < extra.comments.length; ++i) { - entry = extra.comments[i]; - comment = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - comment.range = entry.range; - } - if (extra.loc) { - comment.loc = entry.loc; - } - comments.push(comment); - } - - extra.comments = comments; - } - - function collectToken() { - var start, loc, token, range, value; - - skipComment(); - start = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - token = extra.advance(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - if (token.type !== Token.EOF) { - range = [token.range[0], token.range[1]]; - value = source.slice(token.range[0], token.range[1]); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: range, - loc: loc - }); - } - - return token; - } - - function collectRegex() { - var pos, loc, regex, token; - - skipComment(); - - pos = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - regex = extra.scanRegExp(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } - } - - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index], - loc: loc - }); - - return regex; - } - - function filterTokenLocation() { - var i, entry, token, tokens = []; - - for (i = 0; i < extra.tokens.length; ++i) { - entry = extra.tokens[i]; - token = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - token.range = entry.range; - } - if (extra.loc) { - token.loc = entry.loc; - } - tokens.push(token); - } - - extra.tokens = tokens; - } - - function createLocationMarker() { - var marker = {}; - - marker.range = [index, index]; - marker.loc = { - start: { - line: lineNumber, - column: index - lineStart - }, - end: { - line: lineNumber, - column: index - lineStart - } - }; - - marker.end = function () { - this.range[1] = index; - this.loc.end.line = lineNumber; - this.loc.end.column = index - lineStart; - }; - - marker.applyGroup = function (node) { - if (extra.range) { - node.groupRange = [this.range[0], this.range[1]]; - } - if (extra.loc) { - node.groupLoc = { - start: { - line: this.loc.start.line, - column: this.loc.start.column - }, - end: { - line: this.loc.end.line, - column: this.loc.end.column - } - }; - node = delegate.postProcess(node); - } - }; - - marker.apply = function (node) { - if (extra.range) { - node.range = [this.range[0], this.range[1]]; - } - if (extra.loc) { - node.loc = { - start: { - line: this.loc.start.line, - column: this.loc.start.column - }, - end: { - line: this.loc.end.line, - column: this.loc.end.column - } - }; - node = delegate.postProcess(node); - } - }; - - return marker; - } - - function trackGroupExpression() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - expect('('); - - expr = parseExpression(); - - expect(')'); - - marker.end(); - marker.applyGroup(expr); - - return expr; - } - - function trackLeftHandSideExpression() { - var marker, expr, property; - - skipComment(); - marker = createLocationMarker(); - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[')) { - if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - marker.end(); - marker.apply(expr); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - marker.end(); - marker.apply(expr); - } - } - - return expr; - } - - function trackLeftHandSideExpressionAllowCall() { - var marker, expr, args, property; - - skipComment(); - marker = createLocationMarker(); - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - args = parseArguments(); - expr = delegate.createCallExpression(expr, args); - marker.end(); - marker.apply(expr); - } else if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - marker.end(); - marker.apply(expr); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - marker.end(); - marker.apply(expr); - } - } - - return expr; - } - - function filterGroup(node) { - var n, i, entry; - - n = (Object.prototype.toString.apply(node) === '[object Array]') ? [] : {}; - for (i in node) { - if (node.hasOwnProperty(i) && i !== 'groupRange' && i !== 'groupLoc') { - entry = node[i]; - if (entry === null || typeof entry !== 'object' || entry instanceof RegExp) { - n[i] = entry; - } else { - n[i] = filterGroup(entry); - } - } - } - return n; - } - - function wrapTrackingFunction(range, loc) { - - return function (parseFunction) { - - function isBinary(node) { - return node.type === Syntax.LogicalExpression || - node.type === Syntax.BinaryExpression; - } - - function visit(node) { - var start, end; - - if (isBinary(node.left)) { - visit(node.left); - } - if (isBinary(node.right)) { - visit(node.right); - } - - if (range) { - if (node.left.groupRange || node.right.groupRange) { - start = node.left.groupRange ? node.left.groupRange[0] : node.left.range[0]; - end = node.right.groupRange ? node.right.groupRange[1] : node.right.range[1]; - node.range = [start, end]; - } else if (typeof node.range === 'undefined') { - start = node.left.range[0]; - end = node.right.range[1]; - node.range = [start, end]; - } - } - if (loc) { - if (node.left.groupLoc || node.right.groupLoc) { - start = node.left.groupLoc ? node.left.groupLoc.start : node.left.loc.start; - end = node.right.groupLoc ? node.right.groupLoc.end : node.right.loc.end; - node.loc = { - start: start, - end: end - }; - node = delegate.postProcess(node); - } else if (typeof node.loc === 'undefined') { - node.loc = { - start: node.left.loc.start, - end: node.right.loc.end - }; - node = delegate.postProcess(node); - } - } - } - - return function () { - var marker, node; - - skipComment(); - - marker = createLocationMarker(); - node = parseFunction.apply(null, arguments); - marker.end(); - - if (range && typeof node.range === 'undefined') { - marker.apply(node); - } - - if (loc && typeof node.loc === 'undefined') { - marker.apply(node); - } - - if (isBinary(node)) { - visit(node); - } - - return node; - }; - }; - } - - function patch() { - - var wrapTracking; - - if (extra.comments) { - extra.skipComment = skipComment; - skipComment = scanComment; - } - - if (extra.range || extra.loc) { - - extra.parseGroupExpression = parseGroupExpression; - extra.parseLeftHandSideExpression = parseLeftHandSideExpression; - extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall; - parseGroupExpression = trackGroupExpression; - parseLeftHandSideExpression = trackLeftHandSideExpression; - parseLeftHandSideExpressionAllowCall = trackLeftHandSideExpressionAllowCall; - - wrapTracking = wrapTrackingFunction(extra.range, extra.loc); - - extra.parseAssignmentExpression = parseAssignmentExpression; - extra.parseBinaryExpression = parseBinaryExpression; - extra.parseBlock = parseBlock; - extra.parseFunctionSourceElements = parseFunctionSourceElements; - extra.parseCatchClause = parseCatchClause; - extra.parseComputedMember = parseComputedMember; - extra.parseConditionalExpression = parseConditionalExpression; - extra.parseConstLetDeclaration = parseConstLetDeclaration; - extra.parseExpression = parseExpression; - extra.parseForVariableDeclaration = parseForVariableDeclaration; - extra.parseFunctionDeclaration = parseFunctionDeclaration; - extra.parseFunctionExpression = parseFunctionExpression; - extra.parseNewExpression = parseNewExpression; - extra.parseNonComputedProperty = parseNonComputedProperty; - extra.parseObjectProperty = parseObjectProperty; - extra.parseObjectPropertyKey = parseObjectPropertyKey; - extra.parsePostfixExpression = parsePostfixExpression; - extra.parsePrimaryExpression = parsePrimaryExpression; - extra.parseProgram = parseProgram; - extra.parsePropertyFunction = parsePropertyFunction; - extra.parseStatement = parseStatement; - extra.parseSwitchCase = parseSwitchCase; - extra.parseUnaryExpression = parseUnaryExpression; - extra.parseVariableDeclaration = parseVariableDeclaration; - extra.parseVariableIdentifier = parseVariableIdentifier; - - parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression); - parseBinaryExpression = wrapTracking(extra.parseBinaryExpression); - parseBlock = wrapTracking(extra.parseBlock); - parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements); - parseCatchClause = wrapTracking(extra.parseCatchClause); - parseComputedMember = wrapTracking(extra.parseComputedMember); - parseConditionalExpression = wrapTracking(extra.parseConditionalExpression); - parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration); - parseExpression = wrapTracking(extra.parseExpression); - parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration); - parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration); - parseFunctionExpression = wrapTracking(extra.parseFunctionExpression); - parseLeftHandSideExpression = wrapTracking(parseLeftHandSideExpression); - parseNewExpression = wrapTracking(extra.parseNewExpression); - parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty); - parseObjectProperty = wrapTracking(extra.parseObjectProperty); - parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey); - parsePostfixExpression = wrapTracking(extra.parsePostfixExpression); - parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression); - parseProgram = wrapTracking(extra.parseProgram); - parsePropertyFunction = wrapTracking(extra.parsePropertyFunction); - parseStatement = wrapTracking(extra.parseStatement); - parseSwitchCase = wrapTracking(extra.parseSwitchCase); - parseUnaryExpression = wrapTracking(extra.parseUnaryExpression); - parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration); - parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier); - } - - if (typeof extra.tokens !== 'undefined') { - extra.advance = advance; - extra.scanRegExp = scanRegExp; - - advance = collectToken; - scanRegExp = collectRegex; - } - } - - function unpatch() { - if (typeof extra.skipComment === 'function') { - skipComment = extra.skipComment; - } - - if (extra.range || extra.loc) { - parseAssignmentExpression = extra.parseAssignmentExpression; - parseBinaryExpression = extra.parseBinaryExpression; - parseBlock = extra.parseBlock; - parseFunctionSourceElements = extra.parseFunctionSourceElements; - parseCatchClause = extra.parseCatchClause; - parseComputedMember = extra.parseComputedMember; - parseConditionalExpression = extra.parseConditionalExpression; - parseConstLetDeclaration = extra.parseConstLetDeclaration; - parseExpression = extra.parseExpression; - parseForVariableDeclaration = extra.parseForVariableDeclaration; - parseFunctionDeclaration = extra.parseFunctionDeclaration; - parseFunctionExpression = extra.parseFunctionExpression; - parseGroupExpression = extra.parseGroupExpression; - parseLeftHandSideExpression = extra.parseLeftHandSideExpression; - parseLeftHandSideExpressionAllowCall = extra.parseLeftHandSideExpressionAllowCall; - parseNewExpression = extra.parseNewExpression; - parseNonComputedProperty = extra.parseNonComputedProperty; - parseObjectProperty = extra.parseObjectProperty; - parseObjectPropertyKey = extra.parseObjectPropertyKey; - parsePrimaryExpression = extra.parsePrimaryExpression; - parsePostfixExpression = extra.parsePostfixExpression; - parseProgram = extra.parseProgram; - parsePropertyFunction = extra.parsePropertyFunction; - parseStatement = extra.parseStatement; - parseSwitchCase = extra.parseSwitchCase; - parseUnaryExpression = extra.parseUnaryExpression; - parseVariableDeclaration = extra.parseVariableDeclaration; - parseVariableIdentifier = extra.parseVariableIdentifier; - } - - if (typeof extra.scanRegExp === 'function') { - advance = extra.advance; - scanRegExp = extra.scanRegExp; - } - } - - // This is used to modify the delegate. - - function extend(object, properties) { - var entry, result = {}; - - for (entry in object) { - if (object.hasOwnProperty(entry)) { - result[entry] = object[entry]; - } - } - - for (entry in properties) { - if (properties.hasOwnProperty(entry)) { - result[entry] = properties[entry]; - } - } - - return result; - } - - function parse(code, options) { - var program, toString; - - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } - - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false - }; - - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.isKeyword = (typeof options.isKeyword === 'function') && options.isKeyword; - - if (extra.loc && options.source !== null && options.source !== undefined) { - delegate = extend(delegate, { - 'postProcess': function (node) { - node.loc.source = toString(options.source); - return node; - } - }); - } - - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - } - - if (length > 0) { - if (typeof source[0] === 'undefined') { - // Try first to convert to a string. This is good as fast path - // for old IE which understands string indexing for string - // literals only and not for string object. - if (code instanceof String) { - source = code.valueOf(); - } - } - } - - patch(); - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - filterCommentLocation(); - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - filterTokenLocation(); - program.tokens = extra.tokens; - } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; - } - if (extra.range || extra.loc) { - program.body = filterGroup(program.body); - } - } catch (e) { - throw e; - } finally { - unpatch(); - extra = {}; - } - - return program; - } - - // Sync with package.json and component.json. - exports.version = '1.1.0-dev'; - - exports.parse = parse; - - // Deep copy. - exports.Syntax = (function () { - var name, types = {}; - - if (typeof Object.create === 'function') { - types = Object.create(null); - } - - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } - - if (typeof Object.freeze === 'function') { - Object.freeze(types); - } - - return types; - }()); - -})); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/detectnestedternary.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/detectnestedternary.js deleted file mode 100644 index f144955..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/detectnestedternary.js +++ /dev/null @@ -1,106 +0,0 @@ -// Usage: node detectnestedternary.js /path/to/some/directory -// For more details, please read http://esprima.org/doc/#nestedternary - -/*jslint node:true sloppy:true plusplus:true */ - -var fs = require('fs'), - esprima = require('../esprima'), - dirname = process.argv[2]; - - -// Executes visitor on the object and its children (recursively). -function traverse(object, visitor) { - var key, child; - - visitor.call(null, object); - for (key in object) { - if (object.hasOwnProperty(key)) { - child = object[key]; - if (typeof child === 'object' && child !== null) { - traverse(child, visitor); - } - } - } -} - -// http://stackoverflow.com/q/5827612/ -function walk(dir, done) { - var results = []; - fs.readdir(dir, function (err, list) { - if (err) { - return done(err); - } - var i = 0; - (function next() { - var file = list[i++]; - if (!file) { - return done(null, results); - } - file = dir + '/' + file; - fs.stat(file, function (err, stat) { - if (stat && stat.isDirectory()) { - walk(file, function (err, res) { - results = results.concat(res); - next(); - }); - } else { - results.push(file); - next(); - } - }); - }()); - }); -} - -walk(dirname, function (err, results) { - if (err) { - console.log('Error', err); - return; - } - - results.forEach(function (filename) { - var shortname, first, content, syntax; - - shortname = filename; - first = true; - - if (shortname.substr(0, dirname.length) === dirname) { - shortname = shortname.substr(dirname.length + 1, shortname.length); - } - - function report(node, problem) { - if (first === true) { - console.log(shortname + ': '); - first = false; - } - console.log(' Line', node.loc.start.line, ':', problem); - } - - function checkConditional(node) { - var condition; - - if (node.consequent.type === 'ConditionalExpression' || - node.alternate.type === 'ConditionalExpression') { - - condition = content.substring(node.test.range[0], node.test.range[1]); - if (condition.length > 20) { - condition = condition.substring(0, 20) + '...'; - } - condition = '"' + condition + '"'; - report(node, 'Nested ternary for ' + condition); - } - } - - try { - content = fs.readFileSync(filename, 'utf-8'); - syntax = esprima.parse(content, { tolerant: true, loc: true, range: true }); - traverse(syntax, function (node) { - if (node.type === 'ConditionalExpression') { - checkConditional(node); - } - }); - } catch (e) { - } - - }); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/findbooleantrap.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/findbooleantrap.js deleted file mode 100644 index dc6d1d9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/findbooleantrap.js +++ /dev/null @@ -1,173 +0,0 @@ -// Usage: node findbooleantrap.js /path/to/some/directory -// For more details, please read http://esprima.org/doc/#booleantrap. - -/*jslint node:true sloppy:true plusplus:true */ - -var fs = require('fs'), - esprima = require('../esprima'), - dirname = process.argv[2], - doubleNegativeList = []; - - -// Black-list of terms with double-negative meaning. -doubleNegativeList = [ - 'hidden', - 'caseinsensitive', - 'disabled' -]; - - -// Executes visitor on the object and its children (recursively). -function traverse(object, visitor) { - var key, child; - - if (visitor.call(null, object) === false) { - return; - } - for (key in object) { - if (object.hasOwnProperty(key)) { - child = object[key]; - if (typeof child === 'object' && child !== null) { - traverse(child, visitor); - } - } - } -} - -// http://stackoverflow.com/q/5827612/ -function walk(dir, done) { - var results = []; - fs.readdir(dir, function (err, list) { - if (err) { - return done(err); - } - var i = 0; - (function next() { - var file = list[i++]; - if (!file) { - return done(null, results); - } - file = dir + '/' + file; - fs.stat(file, function (err, stat) { - if (stat && stat.isDirectory()) { - walk(file, function (err, res) { - results = results.concat(res); - next(); - }); - } else { - results.push(file); - next(); - } - }); - }()); - }); -} - -walk(dirname, function (err, results) { - if (err) { - console.log('Error', err); - return; - } - - results.forEach(function (filename) { - var shortname, first, content, syntax; - - shortname = filename; - first = true; - - if (shortname.substr(0, dirname.length) === dirname) { - shortname = shortname.substr(dirname.length + 1, shortname.length); - } - - function getFunctionName(node) { - if (node.callee.type === 'Identifier') { - return node.callee.name; - } - if (node.callee.type === 'MemberExpression') { - return node.callee.property.name; - } - } - - function report(node, problem) { - if (first === true) { - console.log(shortname + ': '); - first = false; - } - console.log(' Line', node.loc.start.line, 'in function', - getFunctionName(node) + ':', problem); - } - - function checkSingleArgument(node) { - var args = node['arguments'], - functionName = getFunctionName(node); - - if ((args.length !== 1) || (typeof args[0].value !== 'boolean')) { - return; - } - - // Check if the method is a setter, i.e. starts with 'set', - // e.g. 'setEnabled(false)'. - if (functionName.substr(0, 3) !== 'set') { - report(node, 'Boolean literal with a non-setter function'); - } - - // Does it contain a term with double-negative meaning? - doubleNegativeList.forEach(function (term) { - if (functionName.toLowerCase().indexOf(term.toLowerCase()) >= 0) { - report(node, 'Boolean literal with confusing double-negative'); - } - }); - } - - function checkMultipleArguments(node) { - var args = node['arguments'], - literalCount = 0; - - args.forEach(function (arg) { - if (typeof arg.value === 'boolean') { - literalCount++; - } - }); - - // At least two arguments must be Boolean literals. - if (literalCount >= 2) { - - // Check for two different Boolean literals in one call. - if (literalCount === 2 && args.length === 2) { - if (args[0].value !== args[1].value) { - report(node, 'Confusing true vs false'); - return; - } - } - - report(node, 'Multiple Boolean literals'); - } - } - - function checkLastArgument(node) { - var args = node['arguments']; - - if (args.length < 2) { - return; - } - - if (typeof args[args.length - 1].value === 'boolean') { - report(node, 'Ambiguous Boolean literal as the last argument'); - } - } - - try { - content = fs.readFileSync(filename, 'utf-8'); - syntax = esprima.parse(content, { tolerant: true, loc: true }); - traverse(syntax, function (node) { - if (node.type === 'CallExpression') { - checkSingleArgument(node); - checkLastArgument(node); - checkMultipleArguments(node); - } - }); - } catch (e) { - } - - }); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/tokendist.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/tokendist.js deleted file mode 100644 index bdd7761..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/examples/tokendist.js +++ /dev/null @@ -1,33 +0,0 @@ -/*jslint node:true */ -var fs = require('fs'), - esprima = require('../esprima'), - files = process.argv.splice(2), - histogram, - type; - -histogram = { - Boolean: 0, - Identifier: 0, - Keyword: 0, - Null: 0, - Numeric: 0, - Punctuator: 0, - RegularExpression: 0, - String: 0 -}; - -files.forEach(function (filename) { - 'use strict'; - var content = fs.readFileSync(filename, 'utf-8'), - tokens = esprima.parse(content, { tokens: true }).tokens; - - tokens.forEach(function (token) { - histogram[token.type] += 1; - }); -}); - -for (type in histogram) { - if (histogram.hasOwnProperty(type)) { - console.log(type, histogram[type]); - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/index.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/index.html deleted file mode 100644 index bfa0ea4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -Esprima - - - -
- - - -

Esprima ECMAScript parsing infrastructure for multipurpose analysis

- -
-

Esprima is a high performance, standard-compliant -ECMAScript parser -written in ECMAScript (also popularly known as -JavaScript).

- -

Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -Rhino and Node.js.

- -

Features

- -
    -
  • Full support for ECMAScript 5.1 (ECMA-262)
  • -
  • Sensible syntax tree format, compatible with Mozilla -Parser AST
  • -
  • Heavily tested (> 550 unit tests with solid 100% statement coverage)
  • -
  • Optional tracking of syntax node location (index-based and line-column)
  • -
  • Experimental support for ES6/Harmony (module, class, destructuring, ...)
  • -
- -

Esprima is blazing fast (see the benchmark suite). -It is up to 3x faster than UglifyJS v1 and it is still -competitive with the new generation of fast parsers.

- -

Applications

- -Esprima serves as the basis for many popular JavaScript development tools: - - - -

Feedback is welcomed! Please join the discussion in the mailing list.

- -
- - - -
- - -
-Fork me on GitHub - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/package.json b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/package.json deleted file mode 100644 index 2ed1591..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "esprima", - "description": "ECMAScript parsing infrastructure for multipurpose analysis", - "homepage": "http://esprima.org", - "main": "esprima.js", - "bin": { - "esparse": "./bin/esparse.js", - "esvalidate": "./bin/esvalidate.js" - }, - "version": "1.1.0-dev", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "Ariya Hidayat", - "email": "ariya.hidayat@gmail.com", - "url": "http://ariya.ofilabs.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/ariya/esprima.git" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" - } - ], - "devDependencies": { - "jslint": "~0.1.9", - "istanbul": "~0.1.27", - "complexity-report": "~0.6.1" - }, - "scripts": { - "test": "npm run-script lint && node test/run.js && npm run-script coverage && npm run-script complexity", - "lint": "node_modules/jslint/bin/jslint.js esprima.js", - "coverage": "npm run-script analyze-coverage && npm run-script check-coverage", - "analyze-coverage": "node node_modules/istanbul/lib/cli.js cover test/runner.js", - "check-coverage": "node node_modules/istanbul/lib/cli.js check-coverage --statement -5 --branch -19 --function 100", - "complexity": "npm run-script analyze-complexity && npm run-script check-complexity", - "analyze-complexity": "node tools/list-complexity.js", - "check-complexity": "node node_modules/complexity-report/src/cli.js --maxcc 21 --silent -l -w esprima.js", - "benchmark": "node test/benchmarks.js", - "benchmark-quick": "node test/benchmarks.js quick" - }, - "readme": "**Esprima** ([esprima.org](http://esprima.org)) is a high performance,\nstandard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\nparser written in ECMAScript (also popularly known as\n[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).\nEsprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),\nwith the help of [many contributors](https://github.com/ariya/esprima/contributors).\n\nEsprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as\n[Rhino](http://www.mozilla.org/rhino) and [Node.js](http://nodejs.org).\n\n### Features\n\n- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262)\n- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla\n[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)\n- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage)\n- Optional tracking of syntax node location (index-based and line-column)\n- Experimental support for ES6/Harmony (module, class, destructuring, ...)\n\nEsprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)).\nIt is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html)\nwith the new generation of fast parsers.\n\n### Applications\n\nEsprima serves as the basis for many popular JavaScript development tools:\n\n- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul)\n- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck)\n- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS),\n[Sweet.js](http://sweetjs.org/) (macro)\n- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr)\n- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html))\n- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter),\n- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Rocambole](https://github.com/millermedeiros/rocambole/),\n [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen), [redeyed](https://github.com/thlorenz/redeyed)\n- Code navigation: [esgoggles](http://keeyipchan.github.com/esgoggles)\n- AMD module tree assembler tools: [r.js](https://github.com/jrburke/r.js), [Prune.js](http://dvdotsenko.github.com/prunejs/)\n\n### Questions?\n- [Documentation](http://esprima.org/doc)\n- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect)\nand [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement)\n- [Mailing list](http://groups.google.com/group/esprima)\n- [Contribution guide](http://esprima.org/doc/index.html#contribution)\n\nFollow [@Esprima](http://twitter.com/Esprima) on Twitter to get the\ndevelopment updates.\nFeedback and contribution are welcomed!\n\n### License\n\nCopyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about)\n and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "readmeFilename": "README.md", - "_id": "esprima@1.1.0-dev", - "dist": { - "shasum": "7904a05aeffeb65c1defb1adc0d6c3390a126b6f" - }, - "_resolved": "git://github.com/substack/esprima#0a7f8489a11b44b019ce168506f535f22d0be290", - "_from": "git://github.com/substack/esprima#is-keyword", - "_fromGithub": true -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/benchmarks.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/benchmarks.html deleted file mode 100644 index 0187497..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/benchmarks.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - -Esprima: Benchmarks - - - - - - - - - - -
- - - -

Benchmarks show the speed

- -

Time measurement is carried out using Benchmark.js.

- -

Esprima version .

- -

Please wait...

- -

- - -

- -

- -

Note: On a modern machine and up-to-date web browsers, -running full benchmarks suite takes around 1 minute.
-For the quick benchmarks, the running time is only about 15 seconds.

- - -
- - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/benchmarks.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/benchmarks.js deleted file mode 100644 index cc5ec5f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/benchmarks.js +++ /dev/null @@ -1,334 +0,0 @@ -/* - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*jslint browser: true node: true */ -/*global load:true, print:true */ -var setupBenchmarks, - fullFixture, - quickFixture; - -fullFixture = [ - 'Underscore 1.4.1', - 'Backbone 0.9.2', - 'CodeMirror 2.34', - 'MooTools 1.4.1', - 'jQuery 1.8.2', - 'jQuery.Mobile 1.2.0', - 'Angular 1.0.2', - 'three.js r51' -]; - -quickFixture = [ - 'Backbone 0.9.2', - 'jQuery 1.8.2', - 'Angular 1.0.2' -]; - -function slug(name) { - 'use strict'; - return name.toLowerCase().replace(/\.js/g, 'js').replace(/\s/g, '-'); -} - -function kb(bytes) { - 'use strict'; - return (bytes / 1024).toFixed(1); -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - setupBenchmarks = function () { - 'use strict'; - - function id(i) { - return document.getElementById(i); - } - - function setText(id, str) { - var el = document.getElementById(id); - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function enableRunButtons() { - id('runquick').disabled = false; - id('runfull').disabled = false; - } - - function disableRunButtons() { - id('runquick').disabled = true; - id('runfull').disabled = true; - } - - function createTable() { - var str = '', - index, - test, - name; - - str += ''; - str += ''; - str += ''; - str += ''; - for (index = 0; index < fullFixture.length; index += 1) { - test = fullFixture[index]; - name = slug(test); - str += ''; - str += ''; - str += ''; - str += ''; - str += ''; - str += ''; - } - str += ''; - str += ''; - str += ''; - str += ''; - str += ''; - str += '
SourceSize (KiB)Time (ms)Variance
' + test + '
Total
'; - - id('result').innerHTML = str; - } - - function loadTests() { - - var index = 0, - totalSize = 0; - - function load(test, callback) { - var xhr = new XMLHttpRequest(), - src = '3rdparty/' + test + '.js'; - - window.data = window.data || {}; - window.data[test] = ''; - - try { - xhr.timeout = 30000; - xhr.open('GET', src, true); - - xhr.ontimeout = function () { - setText('status', 'Error: time out while loading ' + test); - callback.apply(); - }; - - xhr.onreadystatechange = function () { - var success = false, - size = 0; - - if (this.readyState === XMLHttpRequest.DONE) { - if (this.status === 200) { - window.data[test] = this.responseText; - size = this.responseText.length; - totalSize += size; - success = true; - } - } - - if (success) { - setText(test + '-size', kb(size)); - } else { - setText('status', 'Please wait. Error loading ' + src); - setText(test + '-size', 'Error'); - } - - callback.apply(); - }; - - xhr.send(null); - } catch (e) { - setText('status', 'Please wait. Error loading ' + src); - callback.apply(); - } - } - - function loadNextTest() { - var test; - - if (index < fullFixture.length) { - test = fullFixture[index]; - index += 1; - setText('status', 'Please wait. Loading ' + test + - ' (' + index + ' of ' + fullFixture.length + ')'); - window.setTimeout(function () { - load(slug(test), loadNextTest); - }, 100); - } else { - setText('total-size', kb(totalSize)); - setText('status', 'Ready.'); - enableRunButtons(); - } - } - - loadNextTest(); - } - - function runBenchmarks(suite) { - - var index = 0, - totalTime = 0; - - function reset() { - var i, name; - for (i = 0; i < fullFixture.length; i += 1) { - name = slug(fullFixture[i]); - setText(name + '-time', ''); - setText(name + '-variance', ''); - } - setText('total-time', ''); - } - - function run() { - var el, test, source, benchmark; - - if (index >= suite.length) { - setText('total-time', (1000 * totalTime).toFixed(1)); - setText('status', 'Ready.'); - enableRunButtons(); - return; - } - - test = slug(suite[index]); - el = id(test); - source = window.data[test]; - setText(test + '-time', 'Running...'); - - // Force the result to be held in this array, thus defeating any - // possible "dead core elimination" optimization. - window.tree = []; - - benchmark = new window.Benchmark(test, function (o) { - var syntax = window.esprima.parse(source); - window.tree.push(syntax.body.length); - }, { - 'onComplete': function () { - setText(this.name + '-time', (1000 * this.stats.mean).toFixed(1)); - setText(this.name + '-variance', (1000 * this.stats.variance).toFixed(1)); - totalTime += this.stats.mean; - } - }); - - window.setTimeout(function () { - benchmark.run(); - index += 1; - window.setTimeout(run, 211); - }, 211); - } - - - disableRunButtons(); - setText('status', 'Please wait. Running benchmarks...'); - - reset(); - run(); - } - - id('runquick').onclick = function () { - runBenchmarks(quickFixture); - }; - - id('runfull').onclick = function () { - runBenchmarks(fullFixture); - }; - - setText('benchmarkjs-version', ' version ' + window.Benchmark.version); - setText('version', window.esprima.version); - - createTable(); - disableRunButtons(); - loadTests(); - }; -} else { - - (function (global) { - 'use strict'; - var Benchmark, - esprima, - dirname, - option, - fs, - readFileSync, - log; - - if (typeof require === 'undefined') { - dirname = 'test'; - load(dirname + '/3rdparty/benchmark.js'); - - load(dirname + '/../esprima.js'); - - Benchmark = global.Benchmark; - esprima = global.esprima; - readFileSync = global.read; - log = print; - } else { - Benchmark = require('./3rdparty/benchmark'); - esprima = require('../esprima'); - fs = require('fs'); - option = process.argv[2]; - readFileSync = function readFileSync(filename) { - return fs.readFileSync(filename, 'utf-8'); - }; - dirname = __dirname; - log = console.log.bind(console); - } - - function runTests(tests) { - var index, - tree = [], - totalTime = 0, - totalSize = 0; - - tests.reduce(function (suite, filename) { - var source = readFileSync(dirname + '/3rdparty/' + slug(filename) + '.js'), - size = source.length; - totalSize += size; - return suite.add(filename, function () { - var syntax = esprima.parse(source); - tree.push(syntax.body.length); - }, { - 'onComplete': function (event, bench) { - log(this.name + - ' size ' + kb(size) + - ' time ' + (1000 * this.stats.mean).toFixed(1) + - ' variance ' + (1000 * this.stats.variance).toFixed(1)); - totalTime += this.stats.mean; - } - }); - }, new Benchmark.Suite()).on('complete', function () { - log('Total size ' + kb(totalSize) + - ' time ' + (1000 * totalTime).toFixed(1)); - }).run(); - } - - if (option === 'quick') { - runTests(quickFixture); - } else { - runTests(fullFixture); - } - }(this)); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compare.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compare.html deleted file mode 100644 index 061cb6d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compare.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -Esprima: Speed Comparison - - - - - - - - - - -
- - - -

Compare with other parsers

- -

Time measurement is carried out using Benchmark.js.

- -

Esprima version .

- -

Please wait... -

- -

- - -

Warning: Since each parser may have a different format for the syntax tree, the speed is not fully comparable (the cost of constructing different result is not taken into account). These tests exist only to ensure that Esprima parser is not ridiculously slow compare to other parsers.

- -

parse-js is the parser used in UglifyJS v1. It's a JavaScript port of the Common LISP version. This test uses parse-js from UglifyJS version 1.3.2 (June 26 2012).

- -

Acorn is a compact stand-alone JavaScript parser. This test uses Acorn revision 48bbcd94 (dated Oct 19 2012).

- -

More comparison variants will be added in the near future.

- - -
- - - - - - - - - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compare.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compare.js deleted file mode 100644 index 62a5f44..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compare.js +++ /dev/null @@ -1,328 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint browser: true node: true */ -/*global load:true, print:true */ -var setupBenchmarks, - parsers, - fixtureList, - suite; - -parsers = [ - 'Esprima', - 'parse-js', - 'Acorn' -]; - -fixtureList = [ - 'Underscore 1.4.1', - 'Backbone 0.9.2', - 'CodeMirror 2.34', - 'jQuery 1.8.2' -]; - -function slug(name) { - 'use strict'; - return name.toLowerCase().replace(/\.js/g, 'js').replace(/\s/g, '-'); -} - -function kb(bytes) { - 'use strict'; - return (bytes / 1024).toFixed(1); -} - -function inject(fname) { - 'use strict'; - var head = document.getElementsByTagName('head')[0], - script = document.createElement('script'); - - script.src = fname; - script.type = 'text/javascript'; - head.appendChild(script); -} - -if (typeof window !== 'undefined') { - - // Run all tests in a browser environment. - setupBenchmarks = function () { - 'use strict'; - - function id(i) { - return document.getElementById(i); - } - - function setText(id, str) { - var el = document.getElementById(id); - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function enableRunButtons() { - id('run').disabled = false; - } - - function disableRunButtons() { - id('run').disabled = true; - } - - function createTable() { - var str = '', - i, - index, - test, - name; - - str += ''; - str += ''; - for (i = 0; i < parsers.length; i += 1) { - str += ''; - } - str += ''; - str += ''; - for (index = 0; index < fixtureList.length; index += 1) { - test = fixtureList[index]; - name = slug(test); - str += ''; - str += ''; - if (window.data && window.data[name]) { - str += ''; - } else { - str += ''; - } - for (i = 0; i < parsers.length; i += 1) { - str += ''; - } - str += ''; - } - str += ''; - str += ''; - for (i = 0; i < parsers.length; i += 1) { - str += ''; - } - str += ''; - str += ''; - str += '
SourceSize (KiB)' + parsers[i] + '
' + test + '' + kb(window.data[name].length) + '
Total
'; - - id('result').innerHTML = str; - } - - function loadFixtures() { - - var index = 0, - totalSize = 0; - - function load(test, callback) { - var xhr = new XMLHttpRequest(), - src = '3rdparty/' + test + '.js'; - - window.data = window.data || {}; - window.data[test] = ''; - - try { - xhr.timeout = 30000; - xhr.open('GET', src, true); - - xhr.ontimeout = function () { - setText('status', 'Error: time out while loading ' + test); - callback.apply(); - }; - - xhr.onreadystatechange = function () { - var success = false, - size = 0; - - if (this.readyState === XMLHttpRequest.DONE) { - if (this.status === 200) { - window.data[test] = this.responseText; - size = this.responseText.length; - totalSize += size; - success = true; - } - } - - if (success) { - setText(test + '-size', kb(size)); - } else { - setText('status', 'Please wait. Error loading ' + src); - setText(test + '-size', 'Error'); - } - - callback.apply(); - }; - - xhr.send(null); - } catch (e) { - setText('status', 'Please wait. Error loading ' + src); - callback.apply(); - } - } - - function loadNextTest() { - var test; - - if (index < fixtureList.length) { - test = fixtureList[index]; - index += 1; - setText('status', 'Please wait. Loading ' + test + - ' (' + index + ' of ' + fixtureList.length + ')'); - window.setTimeout(function () { - load(slug(test), loadNextTest); - }, 100); - } else { - setText('total-size', kb(totalSize)); - setText('status', 'Ready.'); - enableRunButtons(); - } - } - - loadNextTest(); - } - - function setupParser() { - var i, j; - - suite = []; - for (i = 0; i < fixtureList.length; i += 1) { - for (j = 0; j < parsers.length; j += 1) { - suite.push({ - fixture: fixtureList[i], - parser: parsers[j] - }); - } - } - - createTable(); - } - - function runBenchmarks() { - - var index = 0, - totalTime = {}; - - function reset() { - var i, name; - for (i = 0; i < suite.length; i += 1) { - name = slug(suite[i].fixture) + '-' + slug(suite[i].parser); - setText(name + '-time', ''); - } - } - - function run() { - var fixture, parser, test, source, fn, benchmark; - - if (index >= suite.length) { - setText('status', 'Ready.'); - enableRunButtons(); - return; - } - - fixture = suite[index].fixture; - parser = suite[index].parser; - - source = window.data[slug(fixture)]; - - test = slug(fixture) + '-' + slug(parser); - setText(test + '-time', 'Running...'); - - setText('status', 'Please wait. Parsing ' + fixture + '...'); - - // Force the result to be held in this array, thus defeating any - // possible "dead code elimination" optimization. - window.tree = []; - - switch (parser) { - case 'Esprima': - fn = function () { - var syntax = window.esprima.parse(source); - window.tree.push(syntax.body.length); - }; - break; - - case 'parse-js': - fn = function () { - var syntax = window.parseJS.parse(source); - window.tree.push(syntax.length); - }; - break; - - case 'Acorn': - fn = function () { - var syntax = window.acorn.parse(source); - window.tree.push(syntax.body.length); - }; - break; - - default: - throw 'Unknown parser type ' + parser; - } - - benchmark = new window.Benchmark(test, fn, { - 'onComplete': function () { - setText(this.name + '-time', (1000 * this.stats.mean).toFixed(1)); - if (!totalTime[parser]) { - totalTime[parser] = this.stats.mean; - } else { - totalTime[parser] += this.stats.mean; - } - setText(slug(parser) + '-total', (1000 * totalTime[parser]).toFixed(1)); - } - }); - - window.setTimeout(function () { - benchmark.run(); - index += 1; - window.setTimeout(run, 211); - }, 211); - } - - - disableRunButtons(); - setText('status', 'Please wait. Running benchmarks...'); - - reset(); - run(); - } - - id('run').onclick = function () { - runBenchmarks(); - }; - - setText('benchmarkjs-version', ' version ' + window.Benchmark.version); - setText('version', window.esprima.version); - - setupParser(); - createTable(); - - disableRunButtons(); - loadFixtures(); - }; -} else { - // TODO - console.log('Not implemented yet!'); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compat.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compat.html deleted file mode 100644 index 2ae18cc..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compat.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - -Esprima: Compatibility Tests - - - - - - - -
- - - -

Compatibility keeps everyone happy

-

Esprima version .

-

The following tests are to ensure that the syntax tree is compatible to -that produced by Mozilla SpiderMonkey -Parser reflection.

-

Please wait...

-
- -
- - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compat.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compat.js deleted file mode 100644 index ee3a629..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/compat.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node: true */ -/*global document: true, window:true, esprima: true, testReflect: true */ - -var runTests; - -function getContext(esprima, reportCase, reportFailure) { - 'use strict'; - - var Reflect, Pattern; - - // Maps Mozilla Reflect object to our Esprima parser. - Reflect = { - parse: function (code) { - var result; - - reportCase(code); - - try { - result = esprima.parse(code); - } catch (error) { - result = error; - } - - return result; - } - }; - - // This is used by Reflect test suite to match a syntax tree. - Pattern = function (obj) { - var pattern; - - // Poor man's deep object cloning. - pattern = JSON.parse(JSON.stringify(obj)); - - // Special handling for regular expression literal since we need to - // convert it to a string literal, otherwise it will be decoded - // as object "{}" and the regular expression would be lost. - if (obj.type && obj.type === 'Literal') { - if (obj.value instanceof RegExp) { - pattern = { - type: obj.type, - value: obj.value.toString() - }; - } - } - - // Special handling for branch statement because SpiderMonkey - // prefers to put the 'alternate' property before 'consequent'. - if (obj.type && obj.type === 'IfStatement') { - pattern = { - type: pattern.type, - test: pattern.test, - consequent: pattern.consequent, - alternate: pattern.alternate - }; - } - - // Special handling for do while statement because SpiderMonkey - // prefers to put the 'test' property before 'body'. - if (obj.type && obj.type === 'DoWhileStatement') { - pattern = { - type: pattern.type, - body: pattern.body, - test: pattern.test - }; - } - - function adjustRegexLiteralAndRaw(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } else if (key === 'raw' && typeof value === "string") { - // Ignore Esprima-specific 'raw' property. - return undefined; - } - return value; - } - - if (obj.type && (obj.type === 'Program')) { - pattern.assert = function (tree) { - var actual, expected; - actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4); - expected = JSON.stringify(obj, null, 4); - - if (expected !== actual) { - reportFailure(expected, actual); - } - }; - } - - return pattern; - }; - - return { - Reflect: Reflect, - Pattern: Pattern - }; -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - - var total = 0, - failures = 0; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function reportCase(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - total += 1; - } - - function reportFailure(expected, actual) { - var report, e; - - failures += 1; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - window.setTimeout(function () { - var tick, context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }, 513); - }; -} else { - (function (global) { - 'use strict'; - var esprima = require('../esprima'), - tick, - total = 0, - failures = [], - header, - current, - context; - - function reportCase(code) { - total += 1; - current = code; - } - - function reportFailure(expected, actual) { - failures.push({ - source: current, - expected: expected.toString(), - actual: actual.toString() - }); - } - - context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - require('./reflect').testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }(this)); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/coverage.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/coverage.html deleted file mode 100644 index 09138e7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/coverage.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - -Esprima: Coverage Analysis Report - - - - -
- - - -

Coverage Analysis ensures systematic exercise of the parser

- -

Note: This is not a live (in-browser) code coverage report. -The analysis is offline -(using Istanbul).

- - - -
- - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/esprima.js.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/esprima.js.html deleted file mode 100644 index e7f00f5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/esprima.js.html +++ /dev/null @@ -1,11752 +0,0 @@ - - - - Code coverage report for esprima/esprima.js - - - - - - - - -
-

Code coverage report for esprima/esprima.js

-

- - Statements: 99.72% (1760 / 1765)      - - - Branches: 98.49% (1107 / 1124)      - - - Functions: 100% (154 / 154)      - - - Lines: 99.72% (1760 / 1765)      - -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -1278 -1279 -1280 -1281 -1282 -1283 -1284 -1285 -1286 -1287 -1288 -1289 -1290 -1291 -1292 -1293 -1294 -1295 -1296 -1297 -1298 -1299 -1300 -1301 -1302 -1303 -1304 -1305 -1306 -1307 -1308 -1309 -1310 -1311 -1312 -1313 -1314 -1315 -1316 -1317 -1318 -1319 -1320 -1321 -1322 -1323 -1324 -1325 -1326 -1327 -1328 -1329 -1330 -1331 -1332 -1333 -1334 -1335 -1336 -1337 -1338 -1339 -1340 -1341 -1342 -1343 -1344 -1345 -1346 -1347 -1348 -1349 -1350 -1351 -1352 -1353 -1354 -1355 -1356 -1357 -1358 -1359 -1360 -1361 -1362 -1363 -1364 -1365 -1366 -1367 -1368 -1369 -1370 -1371 -1372 -1373 -1374 -1375 -1376 -1377 -1378 -1379 -1380 -1381 -1382 -1383 -1384 -1385 -1386 -1387 -1388 -1389 -1390 -1391 -1392 -1393 -1394 -1395 -1396 -1397 -1398 -1399 -1400 -1401 -1402 -1403 -1404 -1405 -1406 -1407 -1408 -1409 -1410 -1411 -1412 -1413 -1414 -1415 -1416 -1417 -1418 -1419 -1420 -1421 -1422 -1423 -1424 -1425 -1426 -1427 -1428 -1429 -1430 -1431 -1432 -1433 -1434 -1435 -1436 -1437 -1438 -1439 -1440 -1441 -1442 -1443 -1444 -1445 -1446 -1447 -1448 -1449 -1450 -1451 -1452 -1453 -1454 -1455 -1456 -1457 -1458 -1459 -1460 -1461 -1462 -1463 -1464 -1465 -1466 -1467 -1468 -1469 -1470 -1471 -1472 -1473 -1474 -1475 -1476 -1477 -1478 -1479 -1480 -1481 -1482 -1483 -1484 -1485 -1486 -1487 -1488 -1489 -1490 -1491 -1492 -1493 -1494 -1495 -1496 -1497 -1498 -1499 -1500 -1501 -1502 -1503 -1504 -1505 -1506 -1507 -1508 -1509 -1510 -1511 -1512 -1513 -1514 -1515 -1516 -1517 -1518 -1519 -1520 -1521 -1522 -1523 -1524 -1525 -1526 -1527 -1528 -1529 -1530 -1531 -1532 -1533 -1534 -1535 -1536 -1537 -1538 -1539 -1540 -1541 -1542 -1543 -1544 -1545 -1546 -1547 -1548 -1549 -1550 -1551 -1552 -1553 -1554 -1555 -1556 -1557 -1558 -1559 -1560 -1561 -1562 -1563 -1564 -1565 -1566 -1567 -1568 -1569 -1570 -1571 -1572 -1573 -1574 -1575 -1576 -1577 -1578 -1579 -1580 -1581 -1582 -1583 -1584 -1585 -1586 -1587 -1588 -1589 -1590 -1591 -1592 -1593 -1594 -1595 -1596 -1597 -1598 -1599 -1600 -1601 -1602 -1603 -1604 -1605 -1606 -1607 -1608 -1609 -1610 -1611 -1612 -1613 -1614 -1615 -1616 -1617 -1618 -1619 -1620 -1621 -1622 -1623 -1624 -1625 -1626 -1627 -1628 -1629 -1630 -1631 -1632 -1633 -1634 -1635 -1636 -1637 -1638 -1639 -1640 -1641 -1642 -1643 -1644 -1645 -1646 -1647 -1648 -1649 -1650 -1651 -1652 -1653 -1654 -1655 -1656 -1657 -1658 -1659 -1660 -1661 -1662 -1663 -1664 -1665 -1666 -1667 -1668 -1669 -1670 -1671 -1672 -1673 -1674 -1675 -1676 -1677 -1678 -1679 -1680 -1681 -1682 -1683 -1684 -1685 -1686 -1687 -1688 -1689 -1690 -1691 -1692 -1693 -1694 -1695 -1696 -1697 -1698 -1699 -1700 -1701 -1702 -1703 -1704 -1705 -1706 -1707 -1708 -1709 -1710 -1711 -1712 -1713 -1714 -1715 -1716 -1717 -1718 -1719 -1720 -1721 -1722 -1723 -1724 -1725 -1726 -1727 -1728 -1729 -1730 -1731 -1732 -1733 -1734 -1735 -1736 -1737 -1738 -1739 -1740 -1741 -1742 -1743 -1744 -1745 -1746 -1747 -1748 -1749 -1750 -1751 -1752 -1753 -1754 -1755 -1756 -1757 -1758 -1759 -1760 -1761 -1762 -1763 -1764 -1765 -1766 -1767 -1768 -1769 -1770 -1771 -1772 -1773 -1774 -1775 -1776 -1777 -1778 -1779 -1780 -1781 -1782 -1783 -1784 -1785 -1786 -1787 -1788 -1789 -1790 -1791 -1792 -1793 -1794 -1795 -1796 -1797 -1798 -1799 -1800 -1801 -1802 -1803 -1804 -1805 -1806 -1807 -1808 -1809 -1810 -1811 -1812 -1813 -1814 -1815 -1816 -1817 -1818 -1819 -1820 -1821 -1822 -1823 -1824 -1825 -1826 -1827 -1828 -1829 -1830 -1831 -1832 -1833 -1834 -1835 -1836 -1837 -1838 -1839 -1840 -1841 -1842 -1843 -1844 -1845 -1846 -1847 -1848 -1849 -1850 -1851 -1852 -1853 -1854 -1855 -1856 -1857 -1858 -1859 -1860 -1861 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -1881 -1882 -1883 -1884 -1885 -1886 -1887 -1888 -1889 -1890 -1891 -1892 -1893 -1894 -1895 -1896 -1897 -1898 -1899 -1900 -1901 -1902 -1903 -1904 -1905 -1906 -1907 -1908 -1909 -1910 -1911 -1912 -1913 -1914 -1915 -1916 -1917 -1918 -1919 -1920 -1921 -1922 -1923 -1924 -1925 -1926 -1927 -1928 -1929 -1930 -1931 -1932 -1933 -1934 -1935 -1936 -1937 -1938 -1939 -1940 -1941 -1942 -1943 -1944 -1945 -1946 -1947 -1948 -1949 -1950 -1951 -1952 -1953 -1954 -1955 -1956 -1957 -1958 -1959 -1960 -1961 -1962 -1963 -1964 -1965 -1966 -1967 -1968 -1969 -1970 -1971 -1972 -1973 -1974 -1975 -1976 -1977 -1978 -1979 -1980 -1981 -1982 -1983 -1984 -1985 -1986 -1987 -1988 -1989 -1990 -1991 -1992 -1993 -1994 -1995 -1996 -1997 -1998 -1999 -2000 -2001 -2002 -2003 -2004 -2005 -2006 -2007 -2008 -2009 -2010 -2011 -2012 -2013 -2014 -2015 -2016 -2017 -2018 -2019 -2020 -2021 -2022 -2023 -2024 -2025 -2026 -2027 -2028 -2029 -2030 -2031 -2032 -2033 -2034 -2035 -2036 -2037 -2038 -2039 -2040 -2041 -2042 -2043 -2044 -2045 -2046 -2047 -2048 -2049 -2050 -2051 -2052 -2053 -2054 -2055 -2056 -2057 -2058 -2059 -2060 -2061 -2062 -2063 -2064 -2065 -2066 -2067 -2068 -2069 -2070 -2071 -2072 -2073 -2074 -2075 -2076 -2077 -2078 -2079 -2080 -2081 -2082 -2083 -2084 -2085 -2086 -2087 -2088 -2089 -2090 -2091 -2092 -2093 -2094 -2095 -2096 -2097 -2098 -2099 -2100 -2101 -2102 -2103 -2104 -2105 -2106 -2107 -2108 -2109 -2110 -2111 -2112 -2113 -2114 -2115 -2116 -2117 -2118 -2119 -2120 -2121 -2122 -2123 -2124 -2125 -2126 -2127 -2128 -2129 -2130 -2131 -2132 -2133 -2134 -2135 -2136 -2137 -2138 -2139 -2140 -2141 -2142 -2143 -2144 -2145 -2146 -2147 -2148 -2149 -2150 -2151 -2152 -2153 -2154 -2155 -2156 -2157 -2158 -2159 -2160 -2161 -2162 -2163 -2164 -2165 -2166 -2167 -2168 -2169 -2170 -2171 -2172 -2173 -2174 -2175 -2176 -2177 -2178 -2179 -2180 -2181 -2182 -2183 -2184 -2185 -2186 -2187 -2188 -2189 -2190 -2191 -2192 -2193 -2194 -2195 -2196 -2197 -2198 -2199 -2200 -2201 -2202 -2203 -2204 -2205 -2206 -2207 -2208 -2209 -2210 -2211 -2212 -2213 -2214 -2215 -2216 -2217 -2218 -2219 -2220 -2221 -2222 -2223 -2224 -2225 -2226 -2227 -2228 -2229 -2230 -2231 -2232 -2233 -2234 -2235 -2236 -2237 -2238 -2239 -2240 -2241 -2242 -2243 -2244 -2245 -2246 -2247 -2248 -2249 -2250 -2251 -2252 -2253 -2254 -2255 -2256 -2257 -2258 -2259 -2260 -2261 -2262 -2263 -2264 -2265 -2266 -2267 -2268 -2269 -2270 -2271 -2272 -2273 -2274 -2275 -2276 -2277 -2278 -2279 -2280 -2281 -2282 -2283 -2284 -2285 -2286 -2287 -2288 -2289 -2290 -2291 -2292 -2293 -2294 -2295 -2296 -2297 -2298 -2299 -2300 -2301 -2302 -2303 -2304 -2305 -2306 -2307 -2308 -2309 -2310 -2311 -2312 -2313 -2314 -2315 -2316 -2317 -2318 -2319 -2320 -2321 -2322 -2323 -2324 -2325 -2326 -2327 -2328 -2329 -2330 -2331 -2332 -2333 -2334 -2335 -2336 -2337 -2338 -2339 -2340 -2341 -2342 -2343 -2344 -2345 -2346 -2347 -2348 -2349 -2350 -2351 -2352 -2353 -2354 -2355 -2356 -2357 -2358 -2359 -2360 -2361 -2362 -2363 -2364 -2365 -2366 -2367 -2368 -2369 -2370 -2371 -2372 -2373 -2374 -2375 -2376 -2377 -2378 -2379 -2380 -2381 -2382 -2383 -2384 -2385 -2386 -2387 -2388 -2389 -2390 -2391 -2392 -2393 -2394 -2395 -2396 -2397 -2398 -2399 -2400 -2401 -2402 -2403 -2404 -2405 -2406 -2407 -2408 -2409 -2410 -2411 -2412 -2413 -2414 -2415 -2416 -2417 -2418 -2419 -2420 -2421 -2422 -2423 -2424 -2425 -2426 -2427 -2428 -2429 -2430 -2431 -2432 -2433 -2434 -2435 -2436 -2437 -2438 -2439 -2440 -2441 -2442 -2443 -2444 -2445 -2446 -2447 -2448 -2449 -2450 -2451 -2452 -2453 -2454 -2455 -2456 -2457 -2458 -2459 -2460 -2461 -2462 -2463 -2464 -2465 -2466 -2467 -2468 -2469 -2470 -2471 -2472 -2473 -2474 -2475 -2476 -2477 -2478 -2479 -2480 -2481 -2482 -2483 -2484 -2485 -2486 -2487 -2488 -2489 -2490 -2491 -2492 -2493 -2494 -2495 -2496 -2497 -2498 -2499 -2500 -2501 -2502 -2503 -2504 -2505 -2506 -2507 -2508 -2509 -2510 -2511 -2512 -2513 -2514 -2515 -2516 -2517 -2518 -2519 -2520 -2521 -2522 -2523 -2524 -2525 -2526 -2527 -2528 -2529 -2530 -2531 -2532 -2533 -2534 -2535 -2536 -2537 -2538 -2539 -2540 -2541 -2542 -2543 -2544 -2545 -2546 -2547 -2548 -2549 -2550 -2551 -2552 -2553 -2554 -2555 -2556 -2557 -2558 -2559 -2560 -2561 -2562 -2563 -2564 -2565 -2566 -2567 -2568 -2569 -2570 -2571 -2572 -2573 -2574 -2575 -2576 -2577 -2578 -2579 -2580 -2581 -2582 -2583 -2584 -2585 -2586 -2587 -2588 -2589 -2590 -2591 -2592 -2593 -2594 -2595 -2596 -2597 -2598 -2599 -2600 -2601 -2602 -2603 -2604 -2605 -2606 -2607 -2608 -2609 -2610 -2611 -2612 -2613 -2614 -2615 -2616 -2617 -2618 -2619 -2620 -2621 -2622 -2623 -2624 -2625 -2626 -2627 -2628 -2629 -2630 -2631 -2632 -2633 -2634 -2635 -2636 -2637 -2638 -2639 -2640 -2641 -2642 -2643 -2644 -2645 -2646 -2647 -2648 -2649 -2650 -2651 -2652 -2653 -2654 -2655 -2656 -2657 -2658 -2659 -2660 -2661 -2662 -2663 -2664 -2665 -2666 -2667 -2668 -2669 -2670 -2671 -2672 -2673 -2674 -2675 -2676 -2677 -2678 -2679 -2680 -2681 -2682 -2683 -2684 -2685 -2686 -2687 -2688 -2689 -2690 -2691 -2692 -2693 -2694 -2695 -2696 -2697 -2698 -2699 -2700 -2701 -2702 -2703 -2704 -2705 -2706 -2707 -2708 -2709 -2710 -2711 -2712 -2713 -2714 -2715 -2716 -2717 -2718 -2719 -2720 -2721 -2722 -2723 -2724 -2725 -2726 -2727 -2728 -2729 -2730 -2731 -2732 -2733 -2734 -2735 -2736 -2737 -2738 -2739 -2740 -2741 -2742 -2743 -2744 -2745 -2746 -2747 -2748 -2749 -2750 -2751 -2752 -2753 -2754 -2755 -2756 -2757 -2758 -2759 -2760 -2761 -2762 -2763 -2764 -2765 -2766 -2767 -2768 -2769 -2770 -2771 -2772 -2773 -2774 -2775 -2776 -2777 -2778 -2779 -2780 -2781 -2782 -2783 -2784 -2785 -2786 -2787 -2788 -2789 -2790 -2791 -2792 -2793 -2794 -2795 -2796 -2797 -2798 -2799 -2800 -2801 -2802 -2803 -2804 -2805 -2806 -2807 -2808 -2809 -2810 -2811 -2812 -2813 -2814 -2815 -2816 -2817 -2818 -2819 -2820 -2821 -2822 -2823 -2824 -2825 -2826 -2827 -2828 -2829 -2830 -2831 -2832 -2833 -2834 -2835 -2836 -2837 -2838 -2839 -2840 -2841 -2842 -2843 -2844 -2845 -2846 -2847 -2848 -2849 -2850 -2851 -2852 -2853 -2854 -2855 -2856 -2857 -2858 -2859 -2860 -2861 -2862 -2863 -2864 -2865 -2866 -2867 -2868 -2869 -2870 -2871 -2872 -2873 -2874 -2875 -2876 -2877 -2878 -2879 -2880 -2881 -2882 -2883 -2884 -2885 -2886 -2887 -2888 -2889 -2890 -2891 -2892 -2893 -2894 -2895 -2896 -2897 -2898 -2899 -2900 -2901 -2902 -2903 -2904 -2905 -2906 -2907 -2908 -2909 -2910 -2911 -2912 -2913 -2914 -2915 -2916 -2917 -2918 -2919 -2920 -2921 -2922 -2923 -2924 -2925 -2926 -2927 -2928 -2929 -2930 -2931 -2932 -2933 -2934 -2935 -2936 -2937 -2938 -2939 -2940 -2941 -2942 -2943 -2944 -2945 -2946 -2947 -2948 -2949 -2950 -2951 -2952 -2953 -2954 -2955 -2956 -2957 -2958 -2959 -2960 -2961 -2962 -2963 -2964 -2965 -2966 -2967 -2968 -2969 -2970 -2971 -2972 -2973 -2974 -2975 -2976 -2977 -2978 -2979 -2980 -2981 -2982 -2983 -2984 -2985 -2986 -2987 -2988 -2989 -2990 -2991 -2992 -2993 -2994 -2995 -2996 -2997 -2998 -2999 -3000 -3001 -3002 -3003 -3004 -3005 -3006 -3007 -3008 -3009 -3010 -3011 -3012 -3013 -3014 -3015 -3016 -3017 -3018 -3019 -3020 -3021 -3022 -3023 -3024 -3025 -3026 -3027 -3028 -3029 -3030 -3031 -3032 -3033 -3034 -3035 -3036 -3037 -3038 -3039 -3040 -3041 -3042 -3043 -3044 -3045 -3046 -3047 -3048 -3049 -3050 -3051 -3052 -3053 -3054 -3055 -3056 -3057 -3058 -3059 -3060 -3061 -3062 -3063 -3064 -3065 -3066 -3067 -3068 -3069 -3070 -3071 -3072 -3073 -3074 -3075 -3076 -3077 -3078 -3079 -3080 -3081 -3082 -3083 -3084 -3085 -3086 -3087 -3088 -3089 -3090 -3091 -3092 -3093 -3094 -3095 -3096 -3097 -3098 -3099 -3100 -3101 -3102 -3103 -3104 -3105 -3106 -3107 -3108 -3109 -3110 -3111 -3112 -3113 -3114 -3115 -3116 -3117 -3118 -3119 -3120 -3121 -3122 -3123 -3124 -3125 -3126 -3127 -3128 -3129 -3130 -3131 -3132 -3133 -3134 -3135 -3136 -3137 -3138 -3139 -3140 -3141 -3142 -3143 -3144 -3145 -3146 -3147 -3148 -3149 -3150 -3151 -3152 -3153 -3154 -3155 -3156 -3157 -3158 -3159 -3160 -3161 -3162 -3163 -3164 -3165 -3166 -3167 -3168 -3169 -3170 -3171 -3172 -3173 -3174 -3175 -3176 -3177 -3178 -3179 -3180 -3181 -3182 -3183 -3184 -3185 -3186 -3187 -3188 -3189 -3190 -3191 -3192 -3193 -3194 -3195 -3196 -3197 -3198 -3199 -3200 -3201 -3202 -3203 -3204 -3205 -3206 -3207 -3208 -3209 -3210 -3211 -3212 -3213 -3214 -3215 -3216 -3217 -3218 -3219 -3220 -3221 -3222 -3223 -3224 -3225 -3226 -3227 -3228 -3229 -3230 -3231 -3232 -3233 -3234 -3235 -3236 -3237 -3238 -3239 -3240 -3241 -3242 -3243 -3244 -3245 -3246 -3247 -3248 -3249 -3250 -3251 -3252 -3253 -3254 -3255 -3256 -3257 -3258 -3259 -3260 -3261 -3262 -3263 -3264 -3265 -3266 -3267 -3268 -3269 -3270 -3271 -3272 -3273 -3274 -3275 -3276 -3277 -3278 -3279 -3280 -3281 -3282 -3283 -3284 -3285 -3286 -3287 -3288 -3289 -3290 -3291 -3292 -3293 -3294 -3295 -3296 -3297 -3298 -3299 -3300 -3301 -3302 -3303 -3304 -3305 -3306 -3307 -3308 -3309 -3310 -3311 -3312 -3313 -3314 -3315 -3316 -3317 -3318 -3319 -3320 -3321 -3322 -3323 -3324 -3325 -3326 -3327 -3328 -3329 -3330 -3331 -3332 -3333 -3334 -3335 -3336 -3337 -3338 -3339 -3340 -3341 -3342 -3343 -3344 -3345 -3346 -3347 -3348 -3349 -3350 -3351 -3352 -3353 -3354 -3355 -3356 -3357 -3358 -3359 -3360 -3361 -3362 -3363 -3364 -3365 -3366 -3367 -3368 -3369 -3370 -3371 -3372 -3373 -3374 -3375 -3376 -3377 -3378 -3379 -3380 -3381 -3382 -3383 -3384 -3385 -3386 -3387 -3388 -3389 -3390 -3391 -3392 -3393 -3394 -3395 -3396 -3397 -3398 -3399 -3400 -3401 -3402 -3403 -3404 -3405 -3406 -3407 -3408 -3409 -3410 -3411 -3412 -3413 -3414 -3415 -3416 -3417 -3418 -3419 -3420 -3421 -3422 -3423 -3424 -3425 -3426 -3427 -3428 -3429 -3430 -3431 -3432 -3433 -3434 -3435 -3436 -3437 -3438 -3439 -3440 -3441 -3442 -3443 -3444 -3445 -3446 -3447 -3448 -3449 -3450 -3451 -3452 -3453 -3454 -3455 -3456 -3457 -3458 -3459 -3460 -3461 -3462 -3463 -3464 -3465 -3466 -3467 -3468 -3469 -3470 -3471 -3472 -3473 -3474 -3475 -3476 -3477 -3478 -3479 -3480 -3481 -3482 -3483 -3484 -3485 -3486 -3487 -3488 -3489 -3490 -3491 -3492 -3493 -3494 -3495 -3496 -3497 -3498 -3499 -3500 -3501 -3502 -3503 -3504 -3505 -3506 -3507 -3508 -3509 -3510 -3511 -3512 -3513 -3514 -3515 -3516 -3517 -3518 -3519 -3520 -3521 -3522 -3523 -3524 -3525 -3526 -3527 -3528 -3529 -3530 -3531 -3532 -3533 -3534 -3535 -3536 -3537 -3538 -3539 -3540 -3541 -3542 -3543 -3544 -3545 -3546 -3547 -3548 -3549 -3550 -3551 -3552 -3553 -3554 -3555 -3556 -3557 -3558 -3559 -3560 -3561 -3562 -3563 -3564 -3565 -3566 -3567 -3568 -3569 -3570 -3571 -3572 -3573 -3574 -3575 -3576 -3577 -3578 -3579 -3580 -3581 -3582 -3583 -3584 -3585 -3586 -3587 -3588 -3589 -3590 -3591 -3592 -3593 -3594 -3595 -3596 -3597 -3598 -3599 -3600 -3601 -3602 -3603 -3604 -3605 -3606 -3607 -3608 -3609 -3610 -3611 -3612 -3613 -3614 -3615 -3616 -3617 -3618 -3619 -3620 -3621 -3622 -3623 -3624 -3625 -3626 -3627 -3628 -3629 -3630 -3631 -3632 -3633 -3634 -3635 -3636 -3637 -3638 -3639 -3640 -3641 -3642 -3643 -3644 -3645 -3646 -3647 -3648 -3649 -3650 -3651 -3652 -3653 -3654 -3655 -3656 -3657 -3658 -3659 -3660 -3661 -3662 -3663 -3664 -3665 -3666 -3667 -3668 -3669 -3670 -3671 -3672 -3673 -3674 -3675 -3676 -3677 -3678 -3679 -3680 -3681 -3682 -3683 -3684 -3685 -3686 -3687 -3688 -3689 -3690 -3691 -3692 -3693 -3694 -3695 -3696 -3697 -3698 -3699 -3700 -3701 -3702 -3703 -3704 -3705 -3706 -3707 -3708 -3709 -3710 -3711 -3712 -3713 -3714 -3715 -3716 -3717 -3718 -3719 -3720 -3721 -3722 -3723 -3724 -3725 -3726 -3727 -3728 -3729 -3730 -3731 -3732 -3733 -3734 -3735 -3736 -3737 -3738 -3739 -3740 -3741 -3742 -3743 -3744 -3745 -3746 -3747 -3748 -3749 -3750 -3751 -3752 -3753 -3754 -3755 -3756 -3757 -3758 -3759 -3760 -3761 -3762 -3763 -3764 -3765 -3766 -3767 -3768 -3769 -3770 -3771 -3772 -3773 -3774 -3775 -3776 -3777 -3778 -3779 -3780 -3781 -3782 -3783 -3784 -3785 -3786 -3787 -3788 -3789 -3790 -3791 -3792 -3793 -3794 -3795 -3796 -3797 -3798 -3799 -3800 -3801 -3802 -3803 -3804 -3805 -3806 -3807 -3808 -3809 -3810 -3811 -3812 -3813 -3814 -3815 -3816 -3817 -3818  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1 -  -  -  -1 -  -1 -1 -  -  -  -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -1 -1 -1 -1 -1 -1 -1 -1 -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -  -  -  -  -  -  -  -  -  -1 -1568 -  -  -  -  -1 -5969 -  -  -1 -224 -  -  -1 -266 -  -  -  -  -  -1 -32604 -  -  -  -  -  -  -  -  -  -1 -32068 -  -  -  -  -1 -9111 -  -  -  -  -  -  -1 -16161 -  -  -  -  -  -  -  -  -  -1 -88 -  -  -  -  -  -  -4 -  -84 -  -  -  -1 -632 -  -  -  -  -  -  -  -  -  -108 -  -524 -  -  -  -1 -611 -  -  -  -  -1 -2798 -44 -  -  -  -  -  -  -2754 -  -177 -  -572 -  -  -381 -  -  -609 -  -  -  -131 -  -  -99 -  -579 -  -12 -  -194 -  -  -  -  -  -1 -24482 -  -24482 -24482 -  -24482 -29971 -  -29971 -318 -318 -39 -39 -2 -  -39 -39 -  -29653 -1020 -64 -2 -  -64 -64 -64 -64 -2 -  -  -956 -956 -8 -  -  -948 -62 -62 -56 -56 -  -  -  -28633 -371 -  -371 -39 -39 -332 -  -68 -68 -68 -2 -  -  -264 -  -28262 -5934 -22328 -117 -117 -2 -  -117 -117 -  -22211 -  -  -  -  -1 -59 -  -59 -59 -174 -152 -152 -  -22 -  -  -37 -  -  -1 -48 -  -48 -48 -  -  -48 -29 -8 -  -21 -21 -21 -12 -  -9 -  -  -28 -28 -28 -3 -  -25 -25 -  -  -25 -19 -19 -4 -  -15 -15 -15 -12 -  -3 -  -  -  -12 -  -  -1 -4174 -  -4174 -4174 -16103 -16103 -  -19 -19 -  -16084 -12235 -  -3849 -  -  -  -4155 -  -  -1 -4203 -  -4203 -  -  -4203 -  -  -  -4167 -1369 -2798 -1440 -1358 -24 -1334 -153 -  -1181 -  -  -4167 -  -  -  -  -  -  -  -  -  -  -  -1 -6341 -  -  -  -  -  -  -  -6341 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5418 -5418 -  -  -  -  -  -  -  -  -923 -  -  -923 -52 -  -  -  -  -  -  -  -  -  -  -33 -33 -  -  -  -  -  -  -  -  -  -15 -  -  -15 -6 -  -15 -  -  -  -  -  -  -  -4 -  -  -875 -  -  -  -  -875 -875 -875 -  -  -  -875 -9 -3 -3 -  -  -  -  -  -  -  -  -  -  -  -872 -6 -6 -  -  -  -  -  -  -  -  -866 -3 -3 -  -  -  -  -  -  -  -  -863 -3 -3 -  -  -  -  -  -  -  -  -  -  -860 -167 -167 -  -  -  -  -  -  -  -  -693 -677 -677 -  -  -  -  -  -  -  -  -16 -  -  -  -  -1 -611 -  -611 -611 -  -  -611 -611 -611 -608 -608 -  -  -  -608 -102 -32 -32 -62 -62 -7 -  -55 -  -  -32 -  -4 -  -  -28 -7 -7 -4 -  -  -24 -  -  -  -  -  -  -  -70 -29 -29 -41 -41 -20 -  -21 -  -  -29 -20 -20 -8 -  -  -21 -  -  -  -  -  -  -  -  -  -  -41 -4 -  -  -  -543 -733 -419 -419 -  -314 -  -  -  -546 -12 -12 -78 -6 -6 -  -72 -  -  -  -546 -28 -  -28 -28 -20 -  -  -28 -28 -12 -12 -21 -3 -3 -  -18 -  -  -16 -16 -12 -  -16 -  -  -  -530 -391 -16 -  -  -  -514 -  -  -  -  -  -  -  -  -  -  -1 -471 -  -471 -471 -  -  -471 -471 -  -471 -4864 -  -4864 -455 -455 -4409 -121 -121 -115 -  -6 -6 -  -3 -3 -  -3 -3 -  -  -16 -16 -16 -6 -  -10 -10 -  -16 -  -3 -3 -  -3 -3 -  -3 -3 -  -  -78 -62 -  -  -62 -47 -  -  -62 -21 -21 -  -  -  -21 -  -  -12 -  -  -62 -  -16 -  -78 -  -  -6 -6 -3 -  -  -4288 -8 -  -4280 -  -  -  -471 -16 -  -  -455 -  -  -  -  -  -  -  -  -  -1 -51 -  -51 -51 -  -51 -51 -51 -51 -  -51 -247 -247 -247 -112 -25 -  -  -135 -7 -  -7 -4 -  -3 -128 -35 -35 -93 -25 -68 -4 -  -  -  -  -43 -8 -  -  -  -35 -  -35 -35 -42 -42 -3 -  -  -39 -39 -10 -10 -7 -7 -7 -7 -3 -3 -12 -  -  -4 -4 -4 -  -  -3 -  -  -29 -29 -  -  -  -35 -35 -  -8 -  -  -27 -  -27 -  -  -  -  -  -  -1 -67 -  -  -  -  -  -1 -13035 -  -13035 -  -13011 -1385 -  -  -  -  -  -  -  -11626 -  -  -11626 -2496 -  -  -  -9130 -471 -  -  -8659 -4203 -  -  -  -  -4456 -78 -3 -  -75 -  -  -4378 -608 -  -  -3770 -  -  -1 -11067 -  -11067 -11067 -11067 -11067 -  -11067 -  -11059 -11059 -11059 -  -11059 -  -  -1 -1968 -  -1968 -1968 -1968 -1968 -1832 -1832 -1832 -  -  -1 -  -  -  -  -42 -  -  -  -  -  -  -221 -  -  -  -  -  -  -  -  -308 -  -308 -  -  -  -  -  -  -  -  -486 -  -  -  -  -  -  -36 -  -  -  -  -  -  -138 -  -  -  -  -  -  -  -22 -  -  -  -  -  -  -  -6 -  -  -  -  -  -  -  -  -24 -  -  -  -  -  -  -3 -  -  -  -  -  -12 -  -  -  -  -  -  -  -54 -  -  -  -  -  -1289 -  -  -  -  -  -  -30 -  -  -  -  -  -  -  -  -  -15 -  -  -  -  -  -  -  -  -  -47 -  -  -  -  -  -  -  -  -  -  -  -  -158 -  -  -  -  -  -  -  -  -  -  -  -  -2578 -  -  -  -  -  -  -18 -  -  -  -  -  -  -  -  -27 -  -  -  -  -  -  -  -1114 -  -  -  -  -  -  -  -75 -  -  -  -  -  -  -  -  -34 -  -  -  -  -  -  -  -106 -  -  -  -  -  -  -40 -  -  -  -  -  -  -  -  -1093 -  -  -  -  -  -  -214 -  -  -  -  -  -  -  -  -32 -  -  -  -  -  -  -6 -  -  -  -  -  -  -20 -  -  -  -  -  -  -  -12 -  -  -  -  -  -  -  -3 -  -  -  -  -  -18 -  -  -  -  -  -  -25 -  -  -  -  -  -  -  -  -  -63 -28 -  -  -  -  -  -  -35 -  -  -  -  -  -  -  -127 -  -  -  -  -  -  -  -180 -  -  -  -  -  -  -  -54 -  -  -  -  -  -  -  -11 -  -  -  -  -  -  -  -  -  -1 -211 -  -211 -211 -211 -211 -211 -211 -211 -211 -  -211 -  -  -  -  -1 -916 -  -  -  -  -336 -336 -  -  -  -916 -506 -506 -506 -506 -  -410 -410 -410 -410 -  -  -916 -916 -  -  -1 -300 -300 -  -300 -68 -  -232 -  -  -  -  -  -  -  -1 -312 -80 -  -  -232 -16 -  -  -216 -4 -  -  -212 -4 -  -  -208 -88 -4 -84 -44 -4 -  -40 -  -  -  -120 -  -  -  -  -  -1 -4378 -4378 -56 -  -  -  -  -  -  -1 -1225 -1225 -4 -  -  -  -  -  -1 -28095 -  -  -  -  -1 -6064 -  -  -  -  -1 -2367 -  -2367 -824 -  -1543 -1543 -  -  -  -  -  -  -  -  -  -  -  -  -  -1 -1504 -  -  -1504 -552 -552 -  -  -952 -952 -952 -27 -  -  -925 -3 -3 -  -  -922 -28 -  -  -  -  -  -1 -356 -  -  -  -  -1 -50 -  -50 -  -50 -48 -13 -13 -  -35 -  -27 -21 -  -  -  -  -42 -  -42 -  -  -  -  -1 -105 -  -105 -105 -105 -10 -  -97 -97 -  -  -1 -355 -  -  -  -  -355 -28 -10 -  -20 -  -  -327 -  -  -1 -254 -  -254 -  -254 -  -218 -  -  -  -218 -53 -53 -53 -53 -53 -  -165 -56 -56 -56 -56 -4 -  -52 -52 -52 -44 -  -109 -109 -97 -  -36 -8 -  -28 -20 -20 -20 -  -  -  -1 -202 -  -202 -  -202 -254 -  -214 -194 -  -20 -  -214 -  -214 -214 -54 -27 -14 -13 -10 -  -  -27 -14 -13 -10 -  -  -14 -  -160 -  -  -174 -  -174 -78 -  -  -  -106 -  -106 -  -  -  -  -1 -168 -  -168 -  -168 -  -28 -  -28 -  -  -  -  -  -1 -3183 -  -3183 -  -3183 -1373 -  -  -1810 -962 -14 -  -950 -  -  -848 -144 -3 -3 -  -  -141 -129 -  -  -  -716 -113 -113 -113 -  -  -603 -4 -4 -4 -  -  -599 -50 -  -  -549 -202 -  -  -347 -216 -  -  -131 -51 -  -  -80 -  -  -  -  -1 -158 -  -158 -  -158 -60 -73 -69 -56 -  -13 -  -  -  -154 -  -154 -  -  -1 -67 -  -67 -4 -  -  -63 -  -  -1 -67 -  -67 -  -  -1 -12 -  -12 -  -12 -  -12 -  -12 -  -  -1 -34 -  -34 -34 -34 -  -34 -  -  -1 -1743 -  -1743 -  -1311 -89 -62 -58 -27 -3 -3 -  -24 -20 -  -  -  -1303 -  -  -  -1 -14 -  -14 -  -14 -2 -1 -1 -  -1 -1 -  -  -  -14 -  -  -  -  -1 -3183 -  -2743 -821 -  -  -1922 -  -64 -20 -  -  -48 -8 -  -  -40 -40 -  -  -1898 -  -  -  -  -1 -3270 -  -3270 -2440 -  -  -830 -52 -52 -  -52 -20 -  -  -36 -8 -  -  -28 -  -  -778 -20 -20 -20 -  -  -758 -15 -15 -15 -15 -6 -  -11 -  -  -743 -  -  -1 -2691 -  -2691 -789 -  -  -1902 -  -18 -18 -  -  -18 -18 -  -  -21 -21 -  -  -18 -18 -  -  -18 -18 -  -  -  -  -  -15 -15 -  -  -  -  -  -  -39 -39 -  -  -31 -31 -  -  -  -  -21 -21 -  -  -  -92 -92 -  -  -  -  -54 -54 -  -  -1557 -  -  -1902 -  -  -  -  -  -  -  -  -  -  -1 -2859 -  -2859 -2859 -  -2859 -  -2383 -2383 -2383 -2161 -  -222 -222 -  -222 -  -206 -  -  -102 -54 -54 -54 -54 -  -  -  -102 -102 -102 -102 -  -  -206 -  -  -206 -206 -206 -254 -254 -  -206 -  -  -  -  -  -1 -2859 -  -2859 -  -2367 -6 -6 -6 -6 -6 -6 -6 -  -6 -  -  -2367 -  -  -  -  -1 -2859 -  -2859 -2859 -  -2367 -  -257 -20 -  -  -  -237 -12 -  -  -229 -229 -221 -  -  -2110 -  -  -  -  -1 -2240 -  -1756 -6 -  -6 -9 -3 -  -6 -6 -  -  -  -1756 -  -  -  -  -1 -229 -  -  -229 -401 -181 -  -220 -184 -4 -  -180 -  -  -193 -  -  -1 -229 -  -229 -  -229 -  -193 -  -181 -  -  -  -  -1 -915 -  -915 -100 -  -  -819 -  -  -1 -276 -  -  -  -216 -12 -  -  -208 -31 -19 -177 -120 -116 -  -  -180 -  -  -1 -223 -  -223 -276 -180 -127 -  -53 -  -  -127 -  -  -1 -157 -  -157 -  -157 -  -81 -  -81 -  -  -  -  -  -  -1 -41 -  -41 -  -41 -  -21 -  -21 -  -  -  -  -1 -54 -54 -  -  -  -  -1 -198 -58 -58 -  -  -  -  -1 -38 -  -38 -  -38 -  -34 -  -34 -  -34 -  -22 -7 -7 -  -15 -  -  -18 -  -  -  -  -1 -20 -  -20 -  -20 -20 -  -20 -  -16 -  -16 -  -12 -  -12 -  -12 -  -12 -3 -  -  -12 -  -  -1 -86 -  -86 -  -86 -  -86 -  -86 -  -86 -86 -  -86 -  -54 -  -54 -  -  -1 -25 -  -  -25 -  -  -1 -69 -  -69 -  -69 -  -69 -  -69 -13 -  -56 -25 -25 -25 -  -25 -12 -12 -12 -12 -  -  -31 -31 -31 -  -31 -  -15 -12 -  -  -3 -3 -3 -3 -  -  -  -44 -29 -  -  -  -49 -  -34 -9 -  -34 -  -34 -6 -  -  -  -49 -  -49 -49 -  -49 -  -45 -  -45 -  -  -  -  -  -  -1 -52 -  -52 -  -  -52 -11 -  -11 -8 -  -  -3 -  -  -41 -13 -4 -  -  -9 -  -  -28 -17 -  -17 -17 -8 -  -  -  -20 -  -16 -4 -  -  -12 -  -  -  -  -1 -60 -  -60 -  -  -60 -10 -  -10 -4 -  -  -6 -  -  -50 -13 -4 -  -  -9 -  -  -37 -23 -  -23 -23 -8 -  -  -  -29 -  -25 -4 -  -  -21 -  -  -  -  -1 -36 -  -36 -  -36 -6 -  -  -  -32 -21 -12 -12 -12 -  -  -  -20 -9 -  -  -11 -8 -3 -  -  -  -11 -  -11 -  -  -  -  -1 -19 -  -19 -6 -  -  -15 -  -15 -  -15 -  -15 -  -15 -  -11 -  -  -  -  -1 -24 -  -  -  -24 -15 -15 -  -9 -9 -  -24 -  -24 -42 -20 -  -22 -18 -  -  -20 -  -  -1 -20 -  -20 -  -20 -  -20 -  -20 -  -20 -  -20 -3 -3 -  -  -17 -  -17 -17 -17 -  -17 -33 -9 -  -24 -20 -11 -4 -  -7 -  -16 -  -  -9 -  -9 -  -9 -  -  -  -  -1 -30 -  -30 -  -30 -4 -  -  -26 -  -18 -  -18 -  -  -  -  -1 -34 -  -34 -  -34 -34 -4 -  -  -30 -  -30 -12 -  -  -22 -22 -22 -  -  -1 -41 -  -41 -  -41 -  -41 -34 -  -  -29 -6 -6 -  -  -29 -4 -  -  -25 -  -  -  -  -1 -3 -  -3 -  -3 -  -  -  -  -1 -2576 -  -  -  -  -2576 -24 -  -  -2552 -548 -  -54 -  -160 -  -198 -  -136 -  -  -  -2140 -685 -  -60 -  -52 -  -3 -  -20 -  -69 -  -3 -  -38 -  -36 -  -20 -  -30 -  -41 -  -157 -  -86 -  -19 -  -51 -  -  -  -1506 -  -  -1310 -59 -  -59 -59 -8 -  -  -51 -51 -27 -27 -  -  -1251 -  -1231 -  -  -  -  -1 -513 -  -  -513 -  -513 -780 -494 -  -286 -  -286 -278 -278 -  -3 -  -275 -275 -261 -261 -10 -  -  -14 -10 -  -  -  -  -497 -497 -497 -497 -  -497 -497 -497 -497 -  -497 -590 -305 -  -285 -97 -4 -  -93 -  -  -309 -  -305 -305 -305 -305 -  -305 -  -  -1 -424 -424 -  -424 -111 -111 -144 -144 -128 -128 -52 -20 -20 -  -52 -16 -16 -  -76 -68 -16 -16 -52 -12 -12 -40 -14 -14 -  -  -128 -128 -128 -95 -  -33 -  -  -  -408 -  -408 -  -  -  -  -  -  -  -1 -335 -  -335 -335 -335 -315 -40 -12 -  -  -275 -25 -25 -250 -4 -4 -  -  -  -307 -291 -291 -291 -291 -49 -  -  -291 -291 -107 -44 -  -63 -22 -  -47 -  -47 -  -  -1 -129 -  -129 -  -129 -68 -68 -68 -32 -16 -  -  -36 -14 -14 -22 -4 -4 -  -  -  -  -117 -117 -117 -117 -117 -29 -  -  -117 -117 -93 -24 -  -69 -14 -  -61 -  -61 -  -  -  -  -1 -2677 -981 -  -  -41 -  -332 -  -608 -  -  -  -1696 -1684 -  -  -  -1 -1805 -  -1805 -1874 -1874 -1728 -  -  -146 -146 -146 -  -3 -  -143 -143 -80 -80 -6 -  -  -63 -30 -  -  -  -  -1801 -1740 -1032 -4 -  -1028 -  -1093 -  -  -1 -1941 -1941 -1941 -1805 -1093 -  -  -  -  -  -1 -99 -  -  -  -  -  -99 -31 -22 -  -  -  -77 -  -  -  -  -  -  -  -1 -3357 -  -3357 -3357 -3357 -  -3357 -5299 -  -5299 -391 -391 -29 -  -  -  -29 -29 -29 -2 -  -29 -29 -29 -362 -9 -9 -9 -  -  -  -9 -  -353 -  -4908 -431 -34 -5 -5 -  -29 -  -34 -34 -34 -34 -2 -  -  -397 -397 -8 -  -389 -389 -64 -64 -58 -58 -58 -58 -  -  -  -58 -58 -  -  -  -4477 -135 -135 -41 -  -  -  -  -  -41 -41 -41 -41 -3 -  -  -  -3 -3 -  -94 -70 -70 -70 -70 -  -  -  -  -  -70 -2 -  -  -24 -  -4342 -1242 -3100 -39 -39 -2 -  -39 -39 -  -3061 -  -  -  -  -1 -54 -  -54 -63 -63 -  -  -  -63 -38 -  -63 -36 -  -63 -  -  -54 -  -  -1 -168 -  -168 -168 -168 -  -  -  -  -  -  -168 -168 -  -  -  -  -168 -123 -123 -123 -  -  -  -  -  -  -  -168 -  -  -1 -24 -  -24 -  -24 -24 -  -  -  -  -  -  -24 -24 -  -  -  -  -  -24 -24 -24 -24 -24 -  -  -  -  -24 -  -  -  -  -  -  -24 -  -  -1 -45 -  -45 -123 -123 -  -  -  -123 -72 -  -123 -72 -  -123 -  -  -45 -  -  -1 -13398 -  -13398 -13398 -  -  -  -  -  -  -  -  -  -  -13398 -12068 -12068 -12068 -  -  -13398 -48 -48 -  -48 -48 -  -  -  -  -  -  -  -  -  -  -  -  -13398 -4598 -4574 -  -4598 -4574 -  -  -  -  -  -  -  -  -  -  -  -  -13398 -  -  -1 -48 -  -48 -48 -48 -  -48 -  -48 -  -48 -48 -  -48 -  -  -1 -20 -  -20 -20 -  -20 -  -20 -4 -2 -2 -2 -2 -  -2 -2 -2 -2 -  -  -  -20 -  -  -1 -1440 -  -1440 -1440 -  -1440 -  -1440 -126 -80 -80 -80 -80 -46 -6 -6 -6 -6 -  -40 -40 -40 -40 -  -  -  -1440 -  -  -1 -20890 -  -20890 -20890 -50620 -50524 -50524 -30380 -  -20144 -  -  -  -20890 -  -  -1 -  -746 -  -19396 -13442 -  -  -  -19396 -776 -  -776 -152 -  -776 -128 -  -  -776 -776 -24 -24 -24 -752 -66 -66 -66 -  -  -776 -776 -24 -24 -24 -  -  -  -752 -66 -  -  -  -  -  -  -  -19396 -11890 -  -11890 -  -11890 -11890 -11890 -  -11890 -4444 -  -  -11890 -24 -  -  -11890 -496 -  -  -11890 -  -  -  -  -1 -  -1941 -  -1941 -478 -478 -  -  -1941 -  -746 -746 -746 -746 -746 -746 -  -746 -  -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -  -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -  -  -1941 -45 -45 -  -45 -45 -  -  -  -1 -1941 -478 -  -  -1941 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -746 -  -  -1941 -45 -45 -  -  -  -1 -1941 -  -1941 -1941 -7 -  -  -1941 -1941 -1941 -1941 -1941 -1941 -1941 -1941 -  -  -  -  -  -  -  -1941 -1941 -1933 -1933 -  -1933 -45 -  -1933 -478 -  -1933 -68 -  -  -  -1941 -1938 -  -  -  -  -  -  -  -  -  -1941 -1941 -1941 -1093 -54 -54 -  -1093 -45 -45 -  -1093 -68 -  -1093 -746 -  -  -848 -  -1941 -1941 -  -  -1093 -  -  -  -1 -  -1 -  -  -1 -1 -  -1 -1 -  -  -1 -40 -40 -  -  -  -1 -1 -  -  -1 -  -  -  -  - 
/*
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>
-  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
-  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>
-  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
-  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
- 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
- 
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
- 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
- 
-/*jslint bitwise:true plusplus:true */
-/*global esprima:true, define:true, exports:true, window: true,
-throwError: true, generateStatement: true, peek: true,
-parseAssignmentExpression: true, parseBlock: true, parseExpression: true,
-parseFunctionDeclaration: true, parseFunctionExpression: true,
-parseFunctionSourceElements: true, parseVariableIdentifier: true,
-parseLeftHandSideExpression: true,
-parseStatement: true, parseSourceElement: true */
- 
-(function (root, factory) {
-    'use strict';
- 
-    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js,
-    // Rhino, and plain browser loading.
-    Iif (typeof define === 'function' && define.amd) {
-        define(['exports'], factory);
-    } else Eif (typeof exports !== 'undefined') {
-        factory(exports);
-    } else {
-        factory((root.esprima = {}));
-    }
-}(this, function (exports) {
-    'use strict';
- 
-    var Token,
-        TokenName,
-        Syntax,
-        PropertyKind,
-        Messages,
-        Regex,
-        SyntaxTreeDelegate,
-        source,
-        strict,
-        index,
-        lineNumber,
-        lineStart,
-        length,
-        delegate,
-        lookahead,
-        state,
-        extra;
- 
-    Token = {
-        BooleanLiteral: 1,
-        EOF: 2,
-        Identifier: 3,
-        Keyword: 4,
-        NullLiteral: 5,
-        NumericLiteral: 6,
-        Punctuator: 7,
-        StringLiteral: 8
-    };
- 
-    TokenName = {};
-    TokenName[Token.BooleanLiteral] = 'Boolean';
-    TokenName[Token.EOF] = '<end>';
-    TokenName[Token.Identifier] = 'Identifier';
-    TokenName[Token.Keyword] = 'Keyword';
-    TokenName[Token.NullLiteral] = 'Null';
-    TokenName[Token.NumericLiteral] = 'Numeric';
-    TokenName[Token.Punctuator] = 'Punctuator';
-    TokenName[Token.StringLiteral] = 'String';
- 
-    Syntax = {
-        AssignmentExpression: 'AssignmentExpression',
-        ArrayExpression: 'ArrayExpression',
-        BlockStatement: 'BlockStatement',
-        BinaryExpression: 'BinaryExpression',
-        BreakStatement: 'BreakStatement',
-        CallExpression: 'CallExpression',
-        CatchClause: 'CatchClause',
-        ConditionalExpression: 'ConditionalExpression',
-        ContinueStatement: 'ContinueStatement',
-        DoWhileStatement: 'DoWhileStatement',
-        DebuggerStatement: 'DebuggerStatement',
-        EmptyStatement: 'EmptyStatement',
-        ExpressionStatement: 'ExpressionStatement',
-        ForStatement: 'ForStatement',
-        ForInStatement: 'ForInStatement',
-        FunctionDeclaration: 'FunctionDeclaration',
-        FunctionExpression: 'FunctionExpression',
-        Identifier: 'Identifier',
-        IfStatement: 'IfStatement',
-        Literal: 'Literal',
-        LabeledStatement: 'LabeledStatement',
-        LogicalExpression: 'LogicalExpression',
-        MemberExpression: 'MemberExpression',
-        NewExpression: 'NewExpression',
-        ObjectExpression: 'ObjectExpression',
-        Program: 'Program',
-        Property: 'Property',
-        ReturnStatement: 'ReturnStatement',
-        SequenceExpression: 'SequenceExpression',
-        SwitchStatement: 'SwitchStatement',
-        SwitchCase: 'SwitchCase',
-        ThisExpression: 'ThisExpression',
-        ThrowStatement: 'ThrowStatement',
-        TryStatement: 'TryStatement',
-        UnaryExpression: 'UnaryExpression',
-        UpdateExpression: 'UpdateExpression',
-        VariableDeclaration: 'VariableDeclaration',
-        VariableDeclarator: 'VariableDeclarator',
-        WhileStatement: 'WhileStatement',
-        WithStatement: 'WithStatement'
-    };
- 
-    PropertyKind = {
-        Data: 1,
-        Get: 2,
-        Set: 4
-    };
- 
-    // Error messages should be identical to V8.
-    Messages = {
-        UnexpectedToken:  'Unexpected token %0',
-        UnexpectedNumber:  'Unexpected number',
-        UnexpectedString:  'Unexpected string',
-        UnexpectedIdentifier:  'Unexpected identifier',
-        UnexpectedReserved:  'Unexpected reserved word',
-        UnexpectedEOS:  'Unexpected end of input',
-        NewlineAfterThrow:  'Illegal newline after throw',
-        InvalidRegExp: 'Invalid regular expression',
-        UnterminatedRegExp:  'Invalid regular expression: missing /',
-        InvalidLHSInAssignment:  'Invalid left-hand side in assignment',
-        InvalidLHSInForIn:  'Invalid left-hand side in for-in',
-        MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
-        NoCatchOrFinally:  'Missing catch or finally after try',
-        UnknownLabel: 'Undefined label \'%0\'',
-        Redeclaration: '%0 \'%1\' has already been declared',
-        IllegalContinue: 'Illegal continue statement',
-        IllegalBreak: 'Illegal break statement',
-        IllegalReturn: 'Illegal return statement',
-        StrictModeWith:  'Strict mode code may not include a with statement',
-        StrictCatchVariable:  'Catch variable may not be eval or arguments in strict mode',
-        StrictVarName:  'Variable name may not be eval or arguments in strict mode',
-        StrictParamName:  'Parameter name eval or arguments is not allowed in strict mode',
-        StrictParamDupe: 'Strict mode function may not have duplicate parameter names',
-        StrictFunctionName:  'Function name may not be eval or arguments in strict mode',
-        StrictOctalLiteral:  'Octal literals are not allowed in strict mode.',
-        StrictDelete:  'Delete of an unqualified identifier in strict mode.',
-        StrictDuplicateProperty:  'Duplicate data property in object literal not allowed in strict mode',
-        AccessorDataProperty:  'Object literal may not have data and accessor property with the same name',
-        AccessorGetSet:  'Object literal may not have multiple get/set accessors with the same name',
-        StrictLHSAssignment:  'Assignment to eval or arguments is not allowed in strict mode',
-        StrictLHSPostfix:  'Postfix increment/decrement may not have eval or arguments operand in strict mode',
-        StrictLHSPrefix:  'Prefix increment/decrement may not have eval or arguments operand in strict mode',
-        StrictReservedWord:  'Use of future reserved word in strict mode'
-    };
- 
-    // See also tools/generate-unicode-regex.py.
-    Regex = {
-        NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'),
-        NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]')
-    };
- 
-    // Ensure the condition is true, otherwise throw an error.
-    // This is only to have a better contract semantic, i.e. another safety net
-    // to catch a logic error. The condition shall be fulfilled in normal case.
-    // Do NOT use this to enforce a certain condition on any user input.
- 
-    function assert(condition, message) {
-        Iif (!condition) {
-            throw new Error('ASSERT: ' + message);
-        }
-    }
- 
-    function isDecimalDigit(ch) {
-        return (ch >= 48 && ch <= 57);   // 0..9
-    }
- 
-    function isHexDigit(ch) {
-        return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;
-    }
- 
-    function isOctalDigit(ch) {
-        return '01234567'.indexOf(ch) >= 0;
-    }
- 
- 
-    // 7.2 White Space
- 
-    function isWhiteSpace(ch) {
-        return (ch === 32) ||  // space
-            (ch === 9) ||      // tab
-            (ch === 0xB) ||
-            (ch === 0xC) ||
-            (ch === 0xA0) ||
-            (ch >= 0x1680 && '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(String.fromCharCode(ch)) > 0);
-    }
- 
-    // 7.3 Line Terminators
- 
-    function isLineTerminator(ch) {
-        return (ch === 10) || (ch === 13) || (ch === 0x2028) || (ch === 0x2029);
-    }
- 
-    // 7.6 Identifier Names and Identifiers
- 
-    function isIdentifierStart(ch) {
-        return (ch === 36) || (ch === 95) ||  // $ (dollar) and _ (underscore)
-            (ch >= 65 && ch <= 90) ||         // A..Z
-            (ch >= 97 && ch <= 122) ||        // a..z
-            (ch === 92) ||                    // \ (backslash)
-            ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));
-    }
- 
-    function isIdentifierPart(ch) {
-        return (ch === 36) || (ch === 95) ||  // $ (dollar) and _ (underscore)
-            (ch >= 65 && ch <= 90) ||         // A..Z
-            (ch >= 97 && ch <= 122) ||        // a..z
-            (ch >= 48 && ch <= 57) ||         // 0..9
-            (ch === 92) ||                    // \ (backslash)
-            ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));
-    }
- 
-    // 7.6.1.2 Future Reserved Words
- 
-    function isFutureReservedWord(id) {
-        switch (id) {
-        case 'class':
-        case 'enum':
-        case 'export':
-        case 'extends':
-        case 'import':
-        case 'super':
-            return true;
-        default:
-            return false;
-        }
-    }
- 
-    function isStrictModeReservedWord(id) {
-        switch (id) {
-        case 'implements':
-        case 'interface':
-        case 'package':
-        case 'private':
-        case 'protected':
-        case 'public':
-        case 'static':
-        case 'yield':
-        case 'let':
-            return true;
-        default:
-            return false;
-        }
-    }
- 
-    function isRestrictedWord(id) {
-        return id === 'eval' || id === 'arguments';
-    }
- 
-    // 7.6.1.1 Keywords
- 
-    function isKeyword(id) {
-        if (strict && isStrictModeReservedWord(id)) {
-            return true;
-        }
- 
-        // 'const' is specialized as Keyword in V8.
-        // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next.
-        // Some others are from future reserved words.
- 
-        switch (id.length) {
-        case 2:
-            return (id === 'if') || (id === 'in') || (id === 'do');
-        case 3:
-            return (id === 'var') || (id === 'for') || (id === 'new') ||
-                (id === 'try') || (id === 'let');
-        case 4:
-            return (id === 'this') || (id === 'else') || (id === 'case') ||
-                (id === 'void') || (id === 'with') || (id === 'enum');
-        case 5:
-            return (id === 'while') || (id === 'break') || (id === 'catch') ||
-                (id === 'throw') || (id === 'const') || (id === 'yield') ||
-                (id === 'class') || (id === 'super');
-        case 6:
-            return (id === 'return') || (id === 'typeof') || (id === 'delete') ||
-                (id === 'switch') || (id === 'export') || (id === 'import');
-        case 7:
-            return (id === 'default') || (id === 'finally') || (id === 'extends');
-        case 8:
-            return (id === 'function') || (id === 'continue') || (id === 'debugger');
-        case 10:
-            return (id === 'instanceof');
-        default:
-            return false;
-        }
-    }
- 
-    // 7.4 Comments
- 
-    function skipComment() {
-        var ch, blockComment, lineComment;
- 
-        blockComment = false;
-        lineComment = false;
- 
-        while (index < length) {
-            ch = source.charCodeAt(index);
- 
-            if (lineComment) {
-                ++index;
-                if (isLineTerminator(ch)) {
-                    lineComment = false;
-                    if (ch === 13 && source.charCodeAt(index) === 10) {
-                        ++index;
-                    }
-                    ++lineNumber;
-                    lineStart = index;
-                }
-            } else if (blockComment) {
-                if (isLineTerminator(ch)) {
-                    if (ch === 13 && source.charCodeAt(index + 1) === 10) {
-                        ++index;
-                    }
-                    ++lineNumber;
-                    ++index;
-                    lineStart = index;
-                    if (index >= length) {
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
-                } else {
-                    ch = source.charCodeAt(index++);
-                    if (index >= length) {
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
-                    // Block comment ends with '*/' (char #42, char #47).
-                    if (ch === 42) {
-                        ch = source.charCodeAt(index);
-                        if (ch === 47) {
-                            ++index;
-                            blockComment = false;
-                        }
-                    }
-                }
-            } else if (ch === 47) {
-                ch = source.charCodeAt(index + 1);
-                // Line comment starts with '//' (char #47, char #47).
-                if (ch === 47) {
-                    index += 2;
-                    lineComment = true;
-                } else if (ch === 42) {
-                    // Block comment starts with '/*' (char #47, char #42).
-                    index += 2;
-                    blockComment = true;
-                    if (index >= length) {
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
-                } else {
-                    break;
-                }
-            } else if (isWhiteSpace(ch)) {
-                ++index;
-            } else if (isLineTerminator(ch)) {
-                ++index;
-                if (ch === 13 && source.charCodeAt(index) === 10) {
-                    ++index;
-                }
-                ++lineNumber;
-                lineStart = index;
-            } else {
-                break;
-            }
-        }
-    }
- 
-    function scanHexEscape(prefix) {
-        var i, len, ch, code = 0;
- 
-        len = (prefix === 'u') ? 4 : 2;
-        for (i = 0; i < len; ++i) {
-            if (index < length && isHexDigit(source[index])) {
-                ch = source[index++];
-                code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
-            } else {
-                return '';
-            }
-        }
-        return String.fromCharCode(code);
-    }
- 
-    function getEscapedIdentifier() {
-        var ch, id;
- 
-        ch = source.charCodeAt(index++);
-        id = String.fromCharCode(ch);
- 
-        // '\u' (char #92, char #117) denotes an escaped character.
-        if (ch === 92) {
-            if (source.charCodeAt(index) !== 117) {
-                throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-            }
-            ++index;
-            ch = scanHexEscape('u');
-            if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) {
-                throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-            }
-            id = ch;
-        }
- 
-        while (index < length) {
-            ch = source.charCodeAt(index);
-            if (!isIdentifierPart(ch)) {
-                break;
-            }
-            ++index;
-            id += String.fromCharCode(ch);
- 
-            // '\u' (char #92, char #117) denotes an escaped character.
-            if (ch === 92) {
-                id = id.substr(0, id.length - 1);
-                if (source.charCodeAt(index) !== 117) {
-                    throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                }
-                ++index;
-                ch = scanHexEscape('u');
-                if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) {
-                    throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                }
-                id += ch;
-            }
-        }
- 
-        return id;
-    }
- 
-    function getIdentifier() {
-        var start, ch;
- 
-        start = index++;
-        while (index < length) {
-            ch = source.charCodeAt(index);
-            if (ch === 92) {
-                // Blackslash (char #92) marks Unicode escape sequence.
-                index = start;
-                return getEscapedIdentifier();
-            }
-            if (isIdentifierPart(ch)) {
-                ++index;
-            } else {
-                break;
-            }
-        }
- 
-        return source.slice(start, index);
-    }
- 
-    function scanIdentifier() {
-        var start, id, type;
- 
-        start = index;
- 
-        // Backslash (char #92) starts an escaped character.
-        id = (source.charCodeAt(index) === 92) ? getEscapedIdentifier() : getIdentifier();
- 
-        // There is no keyword or literal with only one character.
-        // Thus, it must be an identifier.
-        if (id.length === 1) {
-            type = Token.Identifier;
-        } else if (isKeyword(id)) {
-            type = Token.Keyword;
-        } else if (id === 'null') {
-            type = Token.NullLiteral;
-        } else if (id === 'true' || id === 'false') {
-            type = Token.BooleanLiteral;
-        } else {
-            type = Token.Identifier;
-        }
- 
-        return {
-            type: type,
-            value: id,
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            range: [start, index]
-        };
-    }
- 
- 
-    // 7.7 Punctuators
- 
-    function scanPunctuator() {
-        var start = index,
-            code = source.charCodeAt(index),
-            code2,
-            ch1 = source[index],
-            ch2,
-            ch3,
-            ch4;
- 
-        switch (code) {
- 
-        // Check for most common single-character punctuators.
-        case 46:   // . dot
-        case 40:   // ( open bracket
-        case 41:   // ) close bracket
-        case 59:   // ; semicolon
-        case 44:   // , comma
-        case 123:  // { open curly brace
-        case 125:  // } close curly brace
-        case 91:   // [
-        case 93:   // ]
-        case 58:   // :
-        case 63:   // ?
-        case 126:  // ~
-            ++index;
-            return {
-                type: Token.Punctuator,
-                value: String.fromCharCode(code),
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [start, index]
-            };
- 
-        default:
-            code2 = source.charCodeAt(index + 1);
- 
-            // '=' (char #61) marks an assignment or comparison operator.
-            if (code2 === 61) {
-                switch (code) {
-                case 37:  // %
-                case 38:  // &
-                case 42:  // *:
-                case 43:  // +
-                case 45:  // -
-                case 47:  // /
-                case 60:  // <
-                case 62:  // >
-                case 94:  // ^
-                case 124: // |
-                    index += 2;
-                    return {
-                        type: Token.Punctuator,
-                        value: String.fromCharCode(code) + String.fromCharCode(code2),
-                        lineNumber: lineNumber,
-                        lineStart: lineStart,
-                        range: [start, index]
-                    };
- 
-                case 33: // !
-                case 61: // =
-                    index += 2;
- 
-                    // !== and ===
-                    if (source.charCodeAt(index) === 61) {
-                        ++index;
-                    }
-                    return {
-                        type: Token.Punctuator,
-                        value: source.slice(start, index),
-                        lineNumber: lineNumber,
-                        lineStart: lineStart,
-                        range: [start, index]
-                    };
-                default:
-                    break;
-                }
-            }
-            break;
-        }
- 
-        // Peek more characters.
- 
-        ch2 = source[index + 1];
-        ch3 = source[index + 2];
-        ch4 = source[index + 3];
- 
-        // 4-character punctuator: >>>=
- 
-        if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
-            if (ch4 === '=') {
-                index += 4;
-                return {
-                    type: Token.Punctuator,
-                    value: '>>>=',
-                    lineNumber: lineNumber,
-                    lineStart: lineStart,
-                    range: [start, index]
-                };
-            }
-        }
- 
-        // 3-character punctuators: === !== >>> <<= >>=
- 
-        if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
-            index += 3;
-            return {
-                type: Token.Punctuator,
-                value: '>>>',
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [start, index]
-            };
-        }
- 
-        if (ch1 === '<' && ch2 === '<' && ch3 === '=') {
-            index += 3;
-            return {
-                type: Token.Punctuator,
-                value: '<<=',
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [start, index]
-            };
-        }
- 
-        if (ch1 === '>' && ch2 === '>' && ch3 === '=') {
-            index += 3;
-            return {
-                type: Token.Punctuator,
-                value: '>>=',
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [start, index]
-            };
-        }
- 
-        // Other 2-character punctuators: ++ -- << >> && ||
- 
-        if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) {
-            index += 2;
-            return {
-                type: Token.Punctuator,
-                value: ch1 + ch2,
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [start, index]
-            };
-        }
- 
-        if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {
-            ++index;
-            return {
-                type: Token.Punctuator,
-                value: ch1,
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [start, index]
-            };
-        }
- 
-        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-    }
- 
-    // 7.8.3 Numeric Literals
- 
-    function scanNumericLiteral() {
-        var number, start, ch;
- 
-        ch = source[index];
-        assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),
-            'Numeric literal must start with a decimal digit or a decimal point');
- 
-        start = index;
-        number = '';
-        if (ch !== '.') {
-            number = source[index++];
-            ch = source[index];
- 
-            // Hex number starts with '0x'.
-            // Octal number starts with '0'.
-            if (number === '0') {
-                if (ch === 'x' || ch === 'X') {
-                    number += source[index++];
-                    while (index < length) {
-                        ch = source[index];
-                        if (!isHexDigit(ch)) {
-                            break;
-                        }
-                        number += source[index++];
-                    }
- 
-                    if (number.length <= 2) {
-                        // only 0x
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
- 
-                    if (index < length) {
-                        ch = source[index];
-                        if (isIdentifierStart(ch.charCodeAt(0))) {
-                            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                        }
-                    }
-                    return {
-                        type: Token.NumericLiteral,
-                        value: parseInt(number, 16),
-                        lineNumber: lineNumber,
-                        lineStart: lineStart,
-                        range: [start, index]
-                    };
-                }
-                if (isOctalDigit(ch)) {
-                    number += source[index++];
-                    while (index < length) {
-                        ch = source[index];
-                        if (!isOctalDigit(ch)) {
-                            break;
-                        }
-                        number += source[index++];
-                    }
- 
-                    if (index < length) {
-                        ch = source.charCodeAt(index);
-                        if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
-                            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                        }
-                    }
-                    return {
-                        type: Token.NumericLiteral,
-                        value: parseInt(number, 8),
-                        octal: true,
-                        lineNumber: lineNumber,
-                        lineStart: lineStart,
-                        range: [start, index]
-                    };
-                }
- 
-                // decimal number starts with '0' such as '09' is illegal.
-                if (ch && isDecimalDigit(ch.charCodeAt(0))) {
-                    throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                }
-            }
- 
-            while (index < length) {
-                if (!isDecimalDigit(source.charCodeAt(index))) {
-                    ch = source[index];
-                    break;
-                }
-                number += source[index++];
-            }
-        }
- 
-        if (ch === '.') {
-            number += source[index++];
-            while (index < length) {
-                if (!isDecimalDigit(source.charCodeAt(index))) {
-                    ch = source[index];
-                    break;
-                }
-                number += source[index++];
-            }
-        }
- 
-        if (ch === 'e' || ch === 'E') {
-            number += source[index++];
- 
-            ch = source[index];
-            if (ch === '+' || ch === '-') {
-                number += source[index++];
-            }
- 
-            ch = source[index];
-            if (ch && isDecimalDigit(ch.charCodeAt(0))) {
-                number += source[index++];
-                while (index < length) {
-                    if (!isDecimalDigit(source.charCodeAt(index))) {
-                        ch = source[index];
-                        break;
-                    }
-                    number += source[index++];
-                }
-            } else {
-                ch = 'character ' + ch;
-                if (index >= length) {
-                    ch = '<end>';
-                }
-                throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-            }
-        }
- 
-        if (index < length) {
-            if (isIdentifierStart(source.charCodeAt(index))) {
-                throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-            }
-        }
- 
-        return {
-            type: Token.NumericLiteral,
-            value: parseFloat(number),
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            range: [start, index]
-        };
-    }
- 
-    // 7.8.4 String Literals
- 
-    function scanStringLiteral() {
-        var str = '', quote, start, ch, code, unescaped, restore, octal = false;
- 
-        quote = source[index];
-        assert((quote === '\'' || quote === '"'),
-            'String literal must starts with a quote');
- 
-        start = index;
-        ++index;
- 
-        while (index < length) {
-            ch = source[index++];
- 
-            if (ch === quote) {
-                quote = '';
-                break;
-            } else if (ch === '\\') {
-                ch = source[index++];
-                if (!ch || !isLineTerminator(ch.charCodeAt(0))) {
-                    switch (ch) {
-                    case 'n':
-                        str += '\n';
-                        break;
-                    case 'r':
-                        str += '\r';
-                        break;
-                    case 't':
-                        str += '\t';
-                        break;
-                    case 'u':
-                    case 'x':
-                        restore = index;
-                        unescaped = scanHexEscape(ch);
-                        if (unescaped) {
-                            str += unescaped;
-                        } else {
-                            index = restore;
-                            str += ch;
-                        }
-                        break;
-                    case 'b':
-                        str += '\b';
-                        break;
-                    case 'f':
-                        str += '\f';
-                        break;
-                    case 'v':
-                        str += '\v';
-                        break;
- 
-                    default:
-                        if (isOctalDigit(ch)) {
-                            code = '01234567'.indexOf(ch);
- 
-                            // \0 is not octal escape sequence
-                            if (code !== 0) {
-                                octal = true;
-                            }
- 
-                            if (index < length && isOctalDigit(source[index])) {
-                                octal = true;
-                                code = code * 8 + '01234567'.indexOf(source[index++]);
- 
-                                // 3 digits are only allowed when string starts
-                                // with 0, 1, 2, 3
-                                if ('0123'.indexOf(ch) >= 0 &&
-                                        index < length &&
-                                        isOctalDigit(source[index])) {
-                                    code = code * 8 + '01234567'.indexOf(source[index++]);
-                                }
-                            }
-                            str += String.fromCharCode(code);
-                        } else {
-                            str += ch;
-                        }
-                        break;
-                    }
-                } else {
-                    ++lineNumber;
-                    if (ch ===  '\r' && source[index] === '\n') {
-                        ++index;
-                    }
-                }
-            } else if (isLineTerminator(ch.charCodeAt(0))) {
-                break;
-            } else {
-                str += ch;
-            }
-        }
- 
-        if (quote !== '') {
-            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-        }
- 
-        return {
-            type: Token.StringLiteral,
-            value: str,
-            octal: octal,
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            range: [start, index]
-        };
-    }
- 
-    function scanRegExp() {
-        var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false;
- 
-        lookahead = null;
-        skipComment();
- 
-        start = index;
-        ch = source[index];
-        assert(ch === '/', 'Regular expression literal must start with a slash');
-        str = source[index++];
- 
-        while (index < length) {
-            ch = source[index++];
-            str += ch;
-            if (classMarker) {
-                if (ch === ']') {
-                    classMarker = false;
-                }
-            } else {
-                if (ch === '\\') {
-                    ch = source[index++];
-                    // ECMA-262 7.8.5
-                    if (isLineTerminator(ch.charCodeAt(0))) {
-                        throwError({}, Messages.UnterminatedRegExp);
-                    }
-                    str += ch;
-                } else if (ch === '/') {
-                    terminated = true;
-                    break;
-                } else if (ch === '[') {
-                    classMarker = true;
-                } else if (isLineTerminator(ch.charCodeAt(0))) {
-                    throwError({}, Messages.UnterminatedRegExp);
-                }
-            }
-        }
- 
-        if (!terminated) {
-            throwError({}, Messages.UnterminatedRegExp);
-        }
- 
-        // Exclude leading and trailing slash.
-        pattern = str.substr(1, str.length - 2);
- 
-        flags = '';
-        while (index < length) {
-            ch = source[index];
-            if (!isIdentifierPart(ch.charCodeAt(0))) {
-                break;
-            }
- 
-            ++index;
-            if (ch === '\\' && index < length) {
-                ch = source[index];
-                if (ch === 'u') {
-                    ++index;
-                    restore = index;
-                    ch = scanHexEscape('u');
-                    if (ch) {
-                        flags += ch;
-                        for (str += '\\u'; restore < index; ++restore) {
-                            str += source[restore];
-                        }
-                    } else {
-                        index = restore;
-                        flags += 'u';
-                        str += '\\u';
-                    }
-                } else {
-                    str += '\\';
-                }
-            } else {
-                flags += ch;
-                str += ch;
-            }
-        }
- 
-        try {
-            value = new RegExp(pattern, flags);
-        } catch (e) {
-            throwError({}, Messages.InvalidRegExp);
-        }
- 
-        peek();
- 
-        return {
-            literal: str,
-            value: value,
-            range: [start, index]
-        };
-    }
- 
-    function isIdentifierName(token) {
-        return token.type === Token.Identifier ||
-            token.type === Token.Keyword ||
-            token.type === Token.BooleanLiteral ||
-            token.type === Token.NullLiteral;
-    }
- 
-    function advance() {
-        var ch;
- 
-        skipComment();
- 
-        if (index >= length) {
-            return {
-                type: Token.EOF,
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                range: [index, index]
-            };
-        }
- 
-        ch = source.charCodeAt(index);
- 
-        // Very common: ( and ) and ;
-        if (ch === 40 || ch === 41 || ch === 58) {
-            return scanPunctuator();
-        }
- 
-        // String literal starts with single quote (#39) or double quote (#34).
-        if (ch === 39 || ch === 34) {
-            return scanStringLiteral();
-        }
- 
-        if (isIdentifierStart(ch)) {
-            return scanIdentifier();
-        }
- 
-        // Dot (.) char #46 can also start a floating-point number, hence the need
-        // to check the next character.
-        if (ch === 46) {
-            if (isDecimalDigit(source.charCodeAt(index + 1))) {
-                return scanNumericLiteral();
-            }
-            return scanPunctuator();
-        }
- 
-        if (isDecimalDigit(ch)) {
-            return scanNumericLiteral();
-        }
- 
-        return scanPunctuator();
-    }
- 
-    function lex() {
-        var token;
- 
-        token = lookahead;
-        index = token.range[1];
-        lineNumber = token.lineNumber;
-        lineStart = token.lineStart;
- 
-        lookahead = advance();
- 
-        index = token.range[1];
-        lineNumber = token.lineNumber;
-        lineStart = token.lineStart;
- 
-        return token;
-    }
- 
-    function peek() {
-        var pos, line, start;
- 
-        pos = index;
-        line = lineNumber;
-        start = lineStart;
-        lookahead = advance();
-        index = pos;
-        lineNumber = line;
-        lineStart = start;
-    }
- 
-    SyntaxTreeDelegate = {
- 
-        name: 'SyntaxTree',
- 
-        createArrayExpression: function (elements) {
-            return {
-                type: Syntax.ArrayExpression,
-                elements: elements
-            };
-        },
- 
-        createAssignmentExpression: function (operator, left, right) {
-            return {
-                type: Syntax.AssignmentExpression,
-                operator: operator,
-                left: left,
-                right: right
-            };
-        },
- 
-        createBinaryExpression: function (operator, left, right) {
-            var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression :
-                        Syntax.BinaryExpression;
-            return {
-                type: type,
-                operator: operator,
-                left: left,
-                right: right
-            };
-        },
- 
-        createBlockStatement: function (body) {
-            return {
-                type: Syntax.BlockStatement,
-                body: body
-            };
-        },
- 
-        createBreakStatement: function (label) {
-            return {
-                type: Syntax.BreakStatement,
-                label: label
-            };
-        },
- 
-        createCallExpression: function (callee, args) {
-            return {
-                type: Syntax.CallExpression,
-                callee: callee,
-                'arguments': args
-            };
-        },
- 
-        createCatchClause: function (param, body) {
-            return {
-                type: Syntax.CatchClause,
-                param: param,
-                body: body
-            };
-        },
- 
-        createConditionalExpression: function (test, consequent, alternate) {
-            return {
-                type: Syntax.ConditionalExpression,
-                test: test,
-                consequent: consequent,
-                alternate: alternate
-            };
-        },
- 
-        createContinueStatement: function (label) {
-            return {
-                type: Syntax.ContinueStatement,
-                label: label
-            };
-        },
- 
-        createDebuggerStatement: function () {
-            return {
-                type: Syntax.DebuggerStatement
-            };
-        },
- 
-        createDoWhileStatement: function (body, test) {
-            return {
-                type: Syntax.DoWhileStatement,
-                body: body,
-                test: test
-            };
-        },
- 
-        createEmptyStatement: function () {
-            return {
-                type: Syntax.EmptyStatement
-            };
-        },
- 
-        createExpressionStatement: function (expression) {
-            return {
-                type: Syntax.ExpressionStatement,
-                expression: expression
-            };
-        },
- 
-        createForStatement: function (init, test, update, body) {
-            return {
-                type: Syntax.ForStatement,
-                init: init,
-                test: test,
-                update: update,
-                body: body
-            };
-        },
- 
-        createForInStatement: function (left, right, body) {
-            return {
-                type: Syntax.ForInStatement,
-                left: left,
-                right: right,
-                body: body,
-                each: false
-            };
-        },
- 
-        createFunctionDeclaration: function (id, params, defaults, body) {
-            return {
-                type: Syntax.FunctionDeclaration,
-                id: id,
-                params: params,
-                defaults: defaults,
-                body: body,
-                rest: null,
-                generator: false,
-                expression: false
-            };
-        },
- 
-        createFunctionExpression: function (id, params, defaults, body) {
-            return {
-                type: Syntax.FunctionExpression,
-                id: id,
-                params: params,
-                defaults: defaults,
-                body: body,
-                rest: null,
-                generator: false,
-                expression: false
-            };
-        },
- 
-        createIdentifier: function (name) {
-            return {
-                type: Syntax.Identifier,
-                name: name
-            };
-        },
- 
-        createIfStatement: function (test, consequent, alternate) {
-            return {
-                type: Syntax.IfStatement,
-                test: test,
-                consequent: consequent,
-                alternate: alternate
-            };
-        },
- 
-        createLabeledStatement: function (label, body) {
-            return {
-                type: Syntax.LabeledStatement,
-                label: label,
-                body: body
-            };
-        },
- 
-        createLiteral: function (token) {
-            return {
-                type: Syntax.Literal,
-                value: token.value,
-                raw: source.slice(token.range[0], token.range[1])
-            };
-        },
- 
-        createMemberExpression: function (accessor, object, property) {
-            return {
-                type: Syntax.MemberExpression,
-                computed: accessor === '[',
-                object: object,
-                property: property
-            };
-        },
- 
-        createNewExpression: function (callee, args) {
-            return {
-                type: Syntax.NewExpression,
-                callee: callee,
-                'arguments': args
-            };
-        },
- 
-        createObjectExpression: function (properties) {
-            return {
-                type: Syntax.ObjectExpression,
-                properties: properties
-            };
-        },
- 
-        createPostfixExpression: function (operator, argument) {
-            return {
-                type: Syntax.UpdateExpression,
-                operator: operator,
-                argument: argument,
-                prefix: false
-            };
-        },
- 
-        createProgram: function (body) {
-            return {
-                type: Syntax.Program,
-                body: body
-            };
-        },
- 
-        createProperty: function (kind, key, value) {
-            return {
-                type: Syntax.Property,
-                key: key,
-                value: value,
-                kind: kind
-            };
-        },
- 
-        createReturnStatement: function (argument) {
-            return {
-                type: Syntax.ReturnStatement,
-                argument: argument
-            };
-        },
- 
-        createSequenceExpression: function (expressions) {
-            return {
-                type: Syntax.SequenceExpression,
-                expressions: expressions
-            };
-        },
- 
-        createSwitchCase: function (test, consequent) {
-            return {
-                type: Syntax.SwitchCase,
-                test: test,
-                consequent: consequent
-            };
-        },
- 
-        createSwitchStatement: function (discriminant, cases) {
-            return {
-                type: Syntax.SwitchStatement,
-                discriminant: discriminant,
-                cases: cases
-            };
-        },
- 
-        createThisExpression: function () {
-            return {
-                type: Syntax.ThisExpression
-            };
-        },
- 
-        createThrowStatement: function (argument) {
-            return {
-                type: Syntax.ThrowStatement,
-                argument: argument
-            };
-        },
- 
-        createTryStatement: function (block, guardedHandlers, handlers, finalizer) {
-            return {
-                type: Syntax.TryStatement,
-                block: block,
-                guardedHandlers: guardedHandlers,
-                handlers: handlers,
-                finalizer: finalizer
-            };
-        },
- 
-        createUnaryExpression: function (operator, argument) {
-            if (operator === '++' || operator === '--') {
-                return {
-                    type: Syntax.UpdateExpression,
-                    operator: operator,
-                    argument: argument,
-                    prefix: true
-                };
-            }
-            return {
-                type: Syntax.UnaryExpression,
-                operator: operator,
-                argument: argument
-            };
-        },
- 
-        createVariableDeclaration: function (declarations, kind) {
-            return {
-                type: Syntax.VariableDeclaration,
-                declarations: declarations,
-                kind: kind
-            };
-        },
- 
-        createVariableDeclarator: function (id, init) {
-            return {
-                type: Syntax.VariableDeclarator,
-                id: id,
-                init: init
-            };
-        },
- 
-        createWhileStatement: function (test, body) {
-            return {
-                type: Syntax.WhileStatement,
-                test: test,
-                body: body
-            };
-        },
- 
-        createWithStatement: function (object, body) {
-            return {
-                type: Syntax.WithStatement,
-                object: object,
-                body: body
-            };
-        }
-    };
- 
-    // Return true if there is a line terminator before the next token.
- 
-    function peekLineTerminator() {
-        var pos, line, start, found;
- 
-        pos = index;
-        line = lineNumber;
-        start = lineStart;
-        skipComment();
-        found = lineNumber !== line;
-        index = pos;
-        lineNumber = line;
-        lineStart = start;
- 
-        return found;
-    }
- 
-    // Throw an exception
- 
-    function throwError(token, messageFormat) {
-        var error,
-            args = Array.prototype.slice.call(arguments, 2),
-            msg = messageFormat.replace(
-                /%(\d)/g,
-                function (whole, index) {
-                    assert(index < args.length, 'Message reference must be in range');
-                    return args[index];
-                }
-            );
- 
-        if (typeof token.lineNumber === 'number') {
-            error = new Error('Line ' + token.lineNumber + ': ' + msg);
-            error.index = token.range[0];
-            error.lineNumber = token.lineNumber;
-            error.column = token.range[0] - lineStart + 1;
-        } else {
-            error = new Error('Line ' + lineNumber + ': ' + msg);
-            error.index = index;
-            error.lineNumber = lineNumber;
-            error.column = index - lineStart + 1;
-        }
- 
-        error.description = msg;
-        throw error;
-    }
- 
-    function throwErrorTolerant() {
-        try {
-            throwError.apply(null, arguments);
-        } catch (e) {
-            if (extra.errors) {
-                extra.errors.push(e);
-            } else {
-                throw e;
-            }
-        }
-    }
- 
- 
-    // Throw an exception because of the token.
- 
-    function throwUnexpected(token) {
-        if (token.type === Token.EOF) {
-            throwError(token, Messages.UnexpectedEOS);
-        }
- 
-        if (token.type === Token.NumericLiteral) {
-            throwError(token, Messages.UnexpectedNumber);
-        }
- 
-        if (token.type === Token.StringLiteral) {
-            throwError(token, Messages.UnexpectedString);
-        }
- 
-        if (token.type === Token.Identifier) {
-            throwError(token, Messages.UnexpectedIdentifier);
-        }
- 
-        if (token.type === Token.Keyword) {
-            if (isFutureReservedWord(token.value)) {
-                throwError(token, Messages.UnexpectedReserved);
-            } else if (strict && isStrictModeReservedWord(token.value)) {
-                throwErrorTolerant(token, Messages.StrictReservedWord);
-                return;
-            }
-            throwError(token, Messages.UnexpectedToken, token.value);
-        }
- 
-        // BooleanLiteral, NullLiteral, or Punctuator.
-        throwError(token, Messages.UnexpectedToken, token.value);
-    }
- 
-    // Expect the next token to match the specified punctuator.
-    // If not, an exception will be thrown.
- 
-    function expect(value) {
-        var token = lex();
-        if (token.type !== Token.Punctuator || token.value !== value) {
-            throwUnexpected(token);
-        }
-    }
- 
-    // Expect the next token to match the specified keyword.
-    // If not, an exception will be thrown.
- 
-    function expectKeyword(keyword) {
-        var token = lex();
-        if (token.type !== Token.Keyword || token.value !== keyword) {
-            throwUnexpected(token);
-        }
-    }
- 
-    // Return true if the next token matches the specified punctuator.
- 
-    function match(value) {
-        return lookahead.type === Token.Punctuator && lookahead.value === value;
-    }
- 
-    // Return true if the next token matches the specified keyword
- 
-    function matchKeyword(keyword) {
-        return lookahead.type === Token.Keyword && lookahead.value === keyword;
-    }
- 
-    // Return true if the next token is an assignment operator
- 
-    function matchAssign() {
-        var op;
- 
-        if (lookahead.type !== Token.Punctuator) {
-            return false;
-        }
-        op = lookahead.value;
-        return op === '=' ||
-            op === '*=' ||
-            op === '/=' ||
-            op === '%=' ||
-            op === '+=' ||
-            op === '-=' ||
-            op === '<<=' ||
-            op === '>>=' ||
-            op === '>>>=' ||
-            op === '&=' ||
-            op === '^=' ||
-            op === '|=';
-    }
- 
-    function consumeSemicolon() {
-        var line;
- 
-        // Catch the very common case first: immediately a semicolon (char #59).
-        if (source.charCodeAt(index) === 59) {
-            lex();
-            return;
-        }
- 
-        line = lineNumber;
-        skipComment();
-        if (lineNumber !== line) {
-            return;
-        }
- 
-        if (match(';')) {
-            lex();
-            return;
-        }
- 
-        if (lookahead.type !== Token.EOF && !match('}')) {
-            throwUnexpected(lookahead);
-        }
-    }
- 
-    // Return true if provided expression is LeftHandSideExpression
- 
-    function isLeftHandSide(expr) {
-        return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression;
-    }
- 
-    // 11.1.4 Array Initialiser
- 
-    function parseArrayInitialiser() {
-        var elements = [];
- 
-        expect('[');
- 
-        while (!match(']')) {
-            if (match(',')) {
-                lex();
-                elements.push(null);
-            } else {
-                elements.push(parseAssignmentExpression());
- 
-                if (!match(']')) {
-                    expect(',');
-                }
-            }
-        }
- 
-        expect(']');
- 
-        return delegate.createArrayExpression(elements);
-    }
- 
-    // 11.1.5 Object Initialiser
- 
-    function parsePropertyFunction(param, first) {
-        var previousStrict, body;
- 
-        previousStrict = strict;
-        body = parseFunctionSourceElements();
-        if (first && strict && isRestrictedWord(param[0].name)) {
-            throwErrorTolerant(first, Messages.StrictParamName);
-        }
-        strict = previousStrict;
-        return delegate.createFunctionExpression(null, param, [], body);
-    }
- 
-    function parseObjectPropertyKey() {
-        var token = lex();
- 
-        // Note: This function is called only from parseObjectProperty(), where
-        // EOF and Punctuator tokens are already filtered out.
- 
-        if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {
-            if (strict && token.octal) {
-                throwErrorTolerant(token, Messages.StrictOctalLiteral);
-            }
-            return delegate.createLiteral(token);
-        }
- 
-        return delegate.createIdentifier(token.value);
-    }
- 
-    function parseObjectProperty() {
-        var token, key, id, value, param;
- 
-        token = lookahead;
- 
-        if (token.type === Token.Identifier) {
- 
-            id = parseObjectPropertyKey();
- 
-            // Property Assignment: Getter and Setter.
- 
-            if (token.value === 'get' && !match(':')) {
-                key = parseObjectPropertyKey();
-                expect('(');
-                expect(')');
-                value = parsePropertyFunction([]);
-                return delegate.createProperty('get', key, value);
-            }
-            if (token.value === 'set' && !match(':')) {
-                key = parseObjectPropertyKey();
-                expect('(');
-                token = lookahead;
-                if (token.type !== Token.Identifier) {
-                    throwUnexpected(lex());
-                }
-                param = [ parseVariableIdentifier() ];
-                expect(')');
-                value = parsePropertyFunction(param, token);
-                return delegate.createProperty('set', key, value);
-            }
-            expect(':');
-            value = parseAssignmentExpression();
-            return delegate.createProperty('init', id, value);
-        }
-        if (token.type === Token.EOF || token.type === Token.Punctuator) {
-            throwUnexpected(token);
-        } else {
-            key = parseObjectPropertyKey();
-            expect(':');
-            value = parseAssignmentExpression();
-            return delegate.createProperty('init', key, value);
-        }
-    }
- 
-    function parseObjectInitialiser() {
-        var properties = [], property, name, key, kind, map = {}, toString = String;
- 
-        expect('{');
- 
-        while (!match('}')) {
-            property = parseObjectProperty();
- 
-            if (property.key.type === Syntax.Identifier) {
-                name = property.key.name;
-            } else {
-                name = toString(property.key.value);
-            }
-            kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;
- 
-            key = '$' + name;
-            if (Object.prototype.hasOwnProperty.call(map, key)) {
-                if (map[key] === PropertyKind.Data) {
-                    if (strict && kind === PropertyKind.Data) {
-                        throwErrorTolerant({}, Messages.StrictDuplicateProperty);
-                    } else if (kind !== PropertyKind.Data) {
-                        throwErrorTolerant({}, Messages.AccessorDataProperty);
-                    }
-                } else {
-                    if (kind === PropertyKind.Data) {
-                        throwErrorTolerant({}, Messages.AccessorDataProperty);
-                    } else if (map[key] & kind) {
-                        throwErrorTolerant({}, Messages.AccessorGetSet);
-                    }
-                }
-                map[key] |= kind;
-            } else {
-                map[key] = kind;
-            }
- 
-            properties.push(property);
- 
-            if (!match('}')) {
-                expect(',');
-            }
-        }
- 
-        expect('}');
- 
-        return delegate.createObjectExpression(properties);
-    }
- 
-    // 11.1.6 The Grouping Operator
- 
-    function parseGroupExpression() {
-        var expr;
- 
-        expect('(');
- 
-        expr = parseExpression();
- 
-        expect(')');
- 
-        return expr;
-    }
- 
- 
-    // 11.1 Primary Expressions
- 
-    function parsePrimaryExpression() {
-        var type, token;
- 
-        type = lookahead.type;
- 
-        if (type === Token.Identifier) {
-            return delegate.createIdentifier(lex().value);
-        }
- 
-        if (type === Token.StringLiteral || type === Token.NumericLiteral) {
-            if (strict && lookahead.octal) {
-                throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);
-            }
-            return delegate.createLiteral(lex());
-        }
- 
-        if (type === Token.Keyword) {
-            if (matchKeyword('this')) {
-                lex();
-                return delegate.createThisExpression();
-            }
- 
-            if (matchKeyword('function')) {
-                return parseFunctionExpression();
-            }
-        }
- 
-        if (type === Token.BooleanLiteral) {
-            token = lex();
-            token.value = (token.value === 'true');
-            return delegate.createLiteral(token);
-        }
- 
-        if (type === Token.NullLiteral) {
-            token = lex();
-            token.value = null;
-            return delegate.createLiteral(token);
-        }
- 
-        if (match('[')) {
-            return parseArrayInitialiser();
-        }
- 
-        if (match('{')) {
-            return parseObjectInitialiser();
-        }
- 
-        if (match('(')) {
-            return parseGroupExpression();
-        }
- 
-        if (match('/') || match('/=')) {
-            return delegate.createLiteral(scanRegExp());
-        }
- 
-        return throwUnexpected(lex());
-    }
- 
-    // 11.2 Left-Hand-Side Expressions
- 
-    function parseArguments() {
-        var args = [];
- 
-        expect('(');
- 
-        if (!match(')')) {
-            while (index < length) {
-                args.push(parseAssignmentExpression());
-                if (match(')')) {
-                    break;
-                }
-                expect(',');
-            }
-        }
- 
-        expect(')');
- 
-        return args;
-    }
- 
-    function parseNonComputedProperty() {
-        var token = lex();
- 
-        if (!isIdentifierName(token)) {
-            throwUnexpected(token);
-        }
- 
-        return delegate.createIdentifier(token.value);
-    }
- 
-    function parseNonComputedMember() {
-        expect('.');
- 
-        return parseNonComputedProperty();
-    }
- 
-    function parseComputedMember() {
-        var expr;
- 
-        expect('[');
- 
-        expr = parseExpression();
- 
-        expect(']');
- 
-        return expr;
-    }
- 
-    function parseNewExpression() {
-        var callee, args;
- 
-        expectKeyword('new');
-        callee = parseLeftHandSideExpression();
-        args = match('(') ? parseArguments() : [];
- 
-        return delegate.createNewExpression(callee, args);
-    }
- 
-    function parseLeftHandSideExpressionAllowCall() {
-        var expr, args, property;
- 
-        expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression();
- 
-        while (match('.') || match('[') || match('(')) {
-            if (match('(')) {
-                args = parseArguments();
-                expr = delegate.createCallExpression(expr, args);
-            } else if (match('[')) {
-                property = parseComputedMember();
-                expr = delegate.createMemberExpression('[', expr, property);
-            } else {
-                property = parseNonComputedMember();
-                expr = delegate.createMemberExpression('.', expr, property);
-            }
-        }
- 
-        return expr;
-    }
- 
- 
-    function parseLeftHandSideExpression() {
-        var expr, property;
- 
-        expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression();
- 
-        while (match('.') || match('[')) {
-            if (match('[')) {
-                property = parseComputedMember();
-                expr = delegate.createMemberExpression('[', expr, property);
-            } else {
-                property = parseNonComputedMember();
-                expr = delegate.createMemberExpression('.', expr, property);
-            }
-        }
- 
-        return expr;
-    }
- 
-    // 11.3 Postfix Expressions
- 
-    function parsePostfixExpression() {
-        var expr = parseLeftHandSideExpressionAllowCall(), token;
- 
-        if (lookahead.type !== Token.Punctuator) {
-            return expr;
-        }
- 
-        if ((match('++') || match('--')) && !peekLineTerminator()) {
-            // 11.3.1, 11.3.2
-            if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
-                throwErrorTolerant({}, Messages.StrictLHSPostfix);
-            }
- 
-            if (!isLeftHandSide(expr)) {
-                throwError({}, Messages.InvalidLHSInAssignment);
-            }
- 
-            token = lex();
-            expr = delegate.createPostfixExpression(token.value, expr);
-        }
- 
-        return expr;
-    }
- 
-    // 11.4 Unary Operators
- 
-    function parseUnaryExpression() {
-        var token, expr;
- 
-        if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {
-            return parsePostfixExpression();
-        }
- 
-        if (match('++') || match('--')) {
-            token = lex();
-            expr = parseUnaryExpression();
-            // 11.4.4, 11.4.5
-            if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
-                throwErrorTolerant({}, Messages.StrictLHSPrefix);
-            }
- 
-            if (!isLeftHandSide(expr)) {
-                throwError({}, Messages.InvalidLHSInAssignment);
-            }
- 
-            return delegate.createUnaryExpression(token.value, expr);
-        }
- 
-        if (match('+') || match('-') || match('~') || match('!')) {
-            token = lex();
-            expr = parseUnaryExpression();
-            return delegate.createUnaryExpression(token.value, expr);
-        }
- 
-        if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
-            token = lex();
-            expr = parseUnaryExpression();
-            expr = delegate.createUnaryExpression(token.value, expr);
-            if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) {
-                throwErrorTolerant({}, Messages.StrictDelete);
-            }
-            return expr;
-        }
- 
-        return parsePostfixExpression();
-    }
- 
-    function binaryPrecedence(token, allowIn) {
-        var prec = 0;
- 
-        if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {
-            return 0;
-        }
- 
-        switch (token.value) {
-        case '||':
-            prec = 1;
-            break;
- 
-        case '&&':
-            prec = 2;
-            break;
- 
-        case '|':
-            prec = 3;
-            break;
- 
-        case '^':
-            prec = 4;
-            break;
- 
-        case '&':
-            prec = 5;
-            break;
- 
-        case '==':
-        case '!=':
-        case '===':
-        case '!==':
-            prec = 6;
-            break;
- 
-        case '<':
-        case '>':
-        case '<=':
-        case '>=':
-        case 'instanceof':
-            prec = 7;
-            break;
- 
-        case 'in':
-            prec = allowIn ? 7 : 0;
-            break;
- 
-        case '<<':
-        case '>>':
-        case '>>>':
-            prec = 8;
-            break;
- 
-        case '+':
-        case '-':
-            prec = 9;
-            break;
- 
-        case '*':
-        case '/':
-        case '%':
-            prec = 11;
-            break;
- 
-        default:
-            break;
-        }
- 
-        return prec;
-    }
- 
-    // 11.5 Multiplicative Operators
-    // 11.6 Additive Operators
-    // 11.7 Bitwise Shift Operators
-    // 11.8 Relational Operators
-    // 11.9 Equality Operators
-    // 11.10 Binary Bitwise Operators
-    // 11.11 Binary Logical Operators
- 
-    function parseBinaryExpression() {
-        var expr, token, prec, previousAllowIn, stack, right, operator, left, i;
- 
-        previousAllowIn = state.allowIn;
-        state.allowIn = true;
- 
-        expr = parseUnaryExpression();
- 
-        token = lookahead;
-        prec = binaryPrecedence(token, previousAllowIn);
-        if (prec === 0) {
-            return expr;
-        }
-        token.prec = prec;
-        lex();
- 
-        stack = [expr, token, parseUnaryExpression()];
- 
-        while ((prec = binaryPrecedence(lookahead, previousAllowIn)) > 0) {
- 
-            // Reduce: make a binary expression from the three topmost entries.
-            while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {
-                right = stack.pop();
-                operator = stack.pop().value;
-                left = stack.pop();
-                stack.push(delegate.createBinaryExpression(operator, left, right));
-            }
- 
-            // Shift.
-            token = lex();
-            token.prec = prec;
-            stack.push(token);
-            stack.push(parseUnaryExpression());
-        }
- 
-        state.allowIn = previousAllowIn;
- 
-        // Final reduce to clean-up the stack.
-        i = stack.length - 1;
-        expr = stack[i];
-        while (i > 1) {
-            expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr);
-            i -= 2;
-        }
-        return expr;
-    }
- 
- 
-    // 11.12 Conditional Operator
- 
-    function parseConditionalExpression() {
-        var expr, previousAllowIn, consequent, alternate;
- 
-        expr = parseBinaryExpression();
- 
-        if (match('?')) {
-            lex();
-            previousAllowIn = state.allowIn;
-            state.allowIn = true;
-            consequent = parseAssignmentExpression();
-            state.allowIn = previousAllowIn;
-            expect(':');
-            alternate = parseAssignmentExpression();
- 
-            expr = delegate.createConditionalExpression(expr, consequent, alternate);
-        }
- 
-        return expr;
-    }
- 
-    // 11.13 Assignment Operators
- 
-    function parseAssignmentExpression() {
-        var token, left, right;
- 
-        token = lookahead;
-        left = parseConditionalExpression();
- 
-        if (matchAssign()) {
-            // LeftHandSideExpression
-            if (!isLeftHandSide(left)) {
-                throwError({}, Messages.InvalidLHSInAssignment);
-            }
- 
-            // 11.13.1
-            if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) {
-                throwErrorTolerant(token, Messages.StrictLHSAssignment);
-            }
- 
-            token = lex();
-            right = parseAssignmentExpression();
-            return delegate.createAssignmentExpression(token.value, left, right);
-        }
- 
-        return left;
-    }
- 
-    // 11.14 Comma Operator
- 
-    function parseExpression() {
-        var expr = parseAssignmentExpression();
- 
-        if (match(',')) {
-            expr = delegate.createSequenceExpression([ expr ]);
- 
-            while (index < length) {
-                if (!match(',')) {
-                    break;
-                }
-                lex();
-                expr.expressions.push(parseAssignmentExpression());
-            }
- 
-        }
-        return expr;
-    }
- 
-    // 12.1 Block
- 
-    function parseStatementList() {
-        var list = [],
-            statement;
- 
-        while (index < length) {
-            if (match('}')) {
-                break;
-            }
-            statement = parseSourceElement();
-            if (typeof statement === 'undefined') {
-                break;
-            }
-            list.push(statement);
-        }
- 
-        return list;
-    }
- 
-    function parseBlock() {
-        var block;
- 
-        expect('{');
- 
-        block = parseStatementList();
- 
-        expect('}');
- 
-        return delegate.createBlockStatement(block);
-    }
- 
-    // 12.2 Variable Statement
- 
-    function parseVariableIdentifier() {
-        var token = lex();
- 
-        if (token.type !== Token.Identifier) {
-            throwUnexpected(token);
-        }
- 
-        return delegate.createIdentifier(token.value);
-    }
- 
-    function parseVariableDeclaration(kind) {
-        var id = parseVariableIdentifier(),
-            init = null;
- 
-        // 12.2.1
-        if (strict && isRestrictedWord(id.name)) {
-            throwErrorTolerant({}, Messages.StrictVarName);
-        }
- 
-        if (kind === 'const') {
-            expect('=');
-            init = parseAssignmentExpression();
-        } else if (match('=')) {
-            lex();
-            init = parseAssignmentExpression();
-        }
- 
-        return delegate.createVariableDeclarator(id, init);
-    }
- 
-    function parseVariableDeclarationList(kind) {
-        var list = [];
- 
-        do {
-            list.push(parseVariableDeclaration(kind));
-            if (!match(',')) {
-                break;
-            }
-            lex();
-        } while (index < length);
- 
-        return list;
-    }
- 
-    function parseVariableStatement() {
-        var declarations;
- 
-        expectKeyword('var');
- 
-        declarations = parseVariableDeclarationList();
- 
-        consumeSemicolon();
- 
-        return delegate.createVariableDeclaration(declarations, 'var');
-    }
- 
-    // kind may be `const` or `let`
-    // Both are experimental and not in the specification yet.
-    // see http://wiki.ecmascript.org/doku.php?id=harmony:const
-    // and http://wiki.ecmascript.org/doku.php?id=harmony:let
-    function parseConstLetDeclaration(kind) {
-        var declarations;
- 
-        expectKeyword(kind);
- 
-        declarations = parseVariableDeclarationList(kind);
- 
-        consumeSemicolon();
- 
-        return delegate.createVariableDeclaration(declarations, kind);
-    }
- 
-    // 12.3 Empty Statement
- 
-    function parseEmptyStatement() {
-        expect(';');
-        return delegate.createEmptyStatement();
-    }
- 
-    // 12.4 Expression Statement
- 
-    function parseExpressionStatement() {
-        var expr = parseExpression();
-        consumeSemicolon();
-        return delegate.createExpressionStatement(expr);
-    }
- 
-    // 12.5 If statement
- 
-    function parseIfStatement() {
-        var test, consequent, alternate;
- 
-        expectKeyword('if');
- 
-        expect('(');
- 
-        test = parseExpression();
- 
-        expect(')');
- 
-        consequent = parseStatement();
- 
-        if (matchKeyword('else')) {
-            lex();
-            alternate = parseStatement();
-        } else {
-            alternate = null;
-        }
- 
-        return delegate.createIfStatement(test, consequent, alternate);
-    }
- 
-    // 12.6 Iteration Statements
- 
-    function parseDoWhileStatement() {
-        var body, test, oldInIteration;
- 
-        expectKeyword('do');
- 
-        oldInIteration = state.inIteration;
-        state.inIteration = true;
- 
-        body = parseStatement();
- 
-        state.inIteration = oldInIteration;
- 
-        expectKeyword('while');
- 
-        expect('(');
- 
-        test = parseExpression();
- 
-        expect(')');
- 
-        if (match(';')) {
-            lex();
-        }
- 
-        return delegate.createDoWhileStatement(body, test);
-    }
- 
-    function parseWhileStatement() {
-        var test, body, oldInIteration;
- 
-        expectKeyword('while');
- 
-        expect('(');
- 
-        test = parseExpression();
- 
-        expect(')');
- 
-        oldInIteration = state.inIteration;
-        state.inIteration = true;
- 
-        body = parseStatement();
- 
-        state.inIteration = oldInIteration;
- 
-        return delegate.createWhileStatement(test, body);
-    }
- 
-    function parseForVariableDeclaration() {
-        var token = lex(),
-            declarations = parseVariableDeclarationList();
- 
-        return delegate.createVariableDeclaration(declarations, token.value);
-    }
- 
-    function parseForStatement() {
-        var init, test, update, left, right, body, oldInIteration;
- 
-        init = test = update = null;
- 
-        expectKeyword('for');
- 
-        expect('(');
- 
-        if (match(';')) {
-            lex();
-        } else {
-            if (matchKeyword('var') || matchKeyword('let')) {
-                state.allowIn = false;
-                init = parseForVariableDeclaration();
-                state.allowIn = true;
- 
-                if (init.declarations.length === 1 && matchKeyword('in')) {
-                    lex();
-                    left = init;
-                    right = parseExpression();
-                    init = null;
-                }
-            } else {
-                state.allowIn = false;
-                init = parseExpression();
-                state.allowIn = true;
- 
-                if (matchKeyword('in')) {
-                    // LeftHandSideExpression
-                    if (!isLeftHandSide(init)) {
-                        throwError({}, Messages.InvalidLHSInForIn);
-                    }
- 
-                    lex();
-                    left = init;
-                    right = parseExpression();
-                    init = null;
-                }
-            }
- 
-            if (typeof left === 'undefined') {
-                expect(';');
-            }
-        }
- 
-        if (typeof left === 'undefined') {
- 
-            if (!match(';')) {
-                test = parseExpression();
-            }
-            expect(';');
- 
-            if (!match(')')) {
-                update = parseExpression();
-            }
-        }
- 
-        expect(')');
- 
-        oldInIteration = state.inIteration;
-        state.inIteration = true;
- 
-        body = parseStatement();
- 
-        state.inIteration = oldInIteration;
- 
-        return (typeof left === 'undefined') ?
-                delegate.createForStatement(init, test, update, body) :
-                delegate.createForInStatement(left, right, body);
-    }
- 
-    // 12.7 The continue statement
- 
-    function parseContinueStatement() {
-        var label = null, key;
- 
-        expectKeyword('continue');
- 
-        // Optimize the most common form: 'continue;'.
-        if (source.charCodeAt(index) === 59) {
-            lex();
- 
-            if (!state.inIteration) {
-                throwError({}, Messages.IllegalContinue);
-            }
- 
-            return delegate.createContinueStatement(null);
-        }
- 
-        if (peekLineTerminator()) {
-            if (!state.inIteration) {
-                throwError({}, Messages.IllegalContinue);
-            }
- 
-            return delegate.createContinueStatement(null);
-        }
- 
-        if (lookahead.type === Token.Identifier) {
-            label = parseVariableIdentifier();
- 
-            key = '$' + label.name;
-            if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
-                throwError({}, Messages.UnknownLabel, label.name);
-            }
-        }
- 
-        consumeSemicolon();
- 
-        if (label === null && !state.inIteration) {
-            throwError({}, Messages.IllegalContinue);
-        }
- 
-        return delegate.createContinueStatement(label);
-    }
- 
-    // 12.8 The break statement
- 
-    function parseBreakStatement() {
-        var label = null, key;
- 
-        expectKeyword('break');
- 
-        // Catch the very common case first: immediately a semicolon (char #59).
-        if (source.charCodeAt(index) === 59) {
-            lex();
- 
-            if (!(state.inIteration || state.inSwitch)) {
-                throwError({}, Messages.IllegalBreak);
-            }
- 
-            return delegate.createBreakStatement(null);
-        }
- 
-        if (peekLineTerminator()) {
-            if (!(state.inIteration || state.inSwitch)) {
-                throwError({}, Messages.IllegalBreak);
-            }
- 
-            return delegate.createBreakStatement(null);
-        }
- 
-        if (lookahead.type === Token.Identifier) {
-            label = parseVariableIdentifier();
- 
-            key = '$' + label.name;
-            if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
-                throwError({}, Messages.UnknownLabel, label.name);
-            }
-        }
- 
-        consumeSemicolon();
- 
-        if (label === null && !(state.inIteration || state.inSwitch)) {
-            throwError({}, Messages.IllegalBreak);
-        }
- 
-        return delegate.createBreakStatement(label);
-    }
- 
-    // 12.9 The return statement
- 
-    function parseReturnStatement() {
-        var argument = null;
- 
-        expectKeyword('return');
- 
-        if (!state.inFunctionBody) {
-            throwErrorTolerant({}, Messages.IllegalReturn);
-        }
- 
-        // 'return' followed by a space and an identifier is very common.
-        if (source.charCodeAt(index) === 32) {
-            if (isIdentifierStart(source.charCodeAt(index + 1))) {
-                argument = parseExpression();
-                consumeSemicolon();
-                return delegate.createReturnStatement(argument);
-            }
-        }
- 
-        if (peekLineTerminator()) {
-            return delegate.createReturnStatement(null);
-        }
- 
-        if (!match(';')) {
-            if (!match('}') && lookahead.type !== Token.EOF) {
-                argument = parseExpression();
-            }
-        }
- 
-        consumeSemicolon();
- 
-        return delegate.createReturnStatement(argument);
-    }
- 
-    // 12.10 The with statement
- 
-    function parseWithStatement() {
-        var object, body;
- 
-        if (strict) {
-            throwErrorTolerant({}, Messages.StrictModeWith);
-        }
- 
-        expectKeyword('with');
- 
-        expect('(');
- 
-        object = parseExpression();
- 
-        expect(')');
- 
-        body = parseStatement();
- 
-        return delegate.createWithStatement(object, body);
-    }
- 
-    // 12.10 The swith statement
- 
-    function parseSwitchCase() {
-        var test,
-            consequent = [],
-            statement;
- 
-        if (matchKeyword('default')) {
-            lex();
-            test = null;
-        } else {
-            expectKeyword('case');
-            test = parseExpression();
-        }
-        expect(':');
- 
-        while (index < length) {
-            if (match('}') || matchKeyword('default') || matchKeyword('case')) {
-                break;
-            }
-            statement = parseStatement();
-            consequent.push(statement);
-        }
- 
-        return delegate.createSwitchCase(test, consequent);
-    }
- 
-    function parseSwitchStatement() {
-        var discriminant, cases, clause, oldInSwitch, defaultFound;
- 
-        expectKeyword('switch');
- 
-        expect('(');
- 
-        discriminant = parseExpression();
- 
-        expect(')');
- 
-        expect('{');
- 
-        if (match('}')) {
-            lex();
-            return delegate.createSwitchStatement(discriminant);
-        }
- 
-        cases = [];
- 
-        oldInSwitch = state.inSwitch;
-        state.inSwitch = true;
-        defaultFound = false;
- 
-        while (index < length) {
-            if (match('}')) {
-                break;
-            }
-            clause = parseSwitchCase();
-            if (clause.test === null) {
-                if (defaultFound) {
-                    throwError({}, Messages.MultipleDefaultsInSwitch);
-                }
-                defaultFound = true;
-            }
-            cases.push(clause);
-        }
- 
-        state.inSwitch = oldInSwitch;
- 
-        expect('}');
- 
-        return delegate.createSwitchStatement(discriminant, cases);
-    }
- 
-    // 12.13 The throw statement
- 
-    function parseThrowStatement() {
-        var argument;
- 
-        expectKeyword('throw');
- 
-        if (peekLineTerminator()) {
-            throwError({}, Messages.NewlineAfterThrow);
-        }
- 
-        argument = parseExpression();
- 
-        consumeSemicolon();
- 
-        return delegate.createThrowStatement(argument);
-    }
- 
-    // 12.14 The try statement
- 
-    function parseCatchClause() {
-        var param, body;
- 
-        expectKeyword('catch');
- 
-        expect('(');
-        if (match(')')) {
-            throwUnexpected(lookahead);
-        }
- 
-        param = parseExpression();
-        // 12.14.1
-        if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) {
-            throwErrorTolerant({}, Messages.StrictCatchVariable);
-        }
- 
-        expect(')');
-        body = parseBlock();
-        return delegate.createCatchClause(param, body);
-    }
- 
-    function parseTryStatement() {
-        var block, handlers = [], finalizer = null;
- 
-        expectKeyword('try');
- 
-        block = parseBlock();
- 
-        if (matchKeyword('catch')) {
-            handlers.push(parseCatchClause());
-        }
- 
-        if (matchKeyword('finally')) {
-            lex();
-            finalizer = parseBlock();
-        }
- 
-        if (handlers.length === 0 && !finalizer) {
-            throwError({}, Messages.NoCatchOrFinally);
-        }
- 
-        return delegate.createTryStatement(block, [], handlers, finalizer);
-    }
- 
-    // 12.15 The debugger statement
- 
-    function parseDebuggerStatement() {
-        expectKeyword('debugger');
- 
-        consumeSemicolon();
- 
-        return delegate.createDebuggerStatement();
-    }
- 
-    // 12 Statements
- 
-    function parseStatement() {
-        var type = lookahead.type,
-            expr,
-            labeledBody,
-            key;
- 
-        if (type === Token.EOF) {
-            throwUnexpected(lookahead);
-        }
- 
-        if (type === Token.Punctuator) {
-            switch (lookahead.value) {
-            case ';':
-                return parseEmptyStatement();
-            case '{':
-                return parseBlock();
-            case '(':
-                return parseExpressionStatement();
-            default:
-                break;
-            }
-        }
- 
-        if (type === Token.Keyword) {
-            switch (lookahead.value) {
-            case 'break':
-                return parseBreakStatement();
-            case 'continue':
-                return parseContinueStatement();
-            case 'debugger':
-                return parseDebuggerStatement();
-            case 'do':
-                return parseDoWhileStatement();
-            case 'for':
-                return parseForStatement();
-            case 'function':
-                return parseFunctionDeclaration();
-            case 'if':
-                return parseIfStatement();
-            case 'return':
-                return parseReturnStatement();
-            case 'switch':
-                return parseSwitchStatement();
-            case 'throw':
-                return parseThrowStatement();
-            case 'try':
-                return parseTryStatement();
-            case 'var':
-                return parseVariableStatement();
-            case 'while':
-                return parseWhileStatement();
-            case 'with':
-                return parseWithStatement();
-            default:
-                break;
-            }
-        }
- 
-        expr = parseExpression();
- 
-        // 12.12 Labelled Statements
-        if ((expr.type === Syntax.Identifier) && match(':')) {
-            lex();
- 
-            key = '$' + expr.name;
-            if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
-                throwError({}, Messages.Redeclaration, 'Label', expr.name);
-            }
- 
-            state.labelSet[key] = true;
-            labeledBody = parseStatement();
-            delete state.labelSet[key];
-            return delegate.createLabeledStatement(expr, labeledBody);
-        }
- 
-        consumeSemicolon();
- 
-        return delegate.createExpressionStatement(expr);
-    }
- 
-    // 13 Function Definition
- 
-    function parseFunctionSourceElements() {
-        var sourceElement, sourceElements = [], token, directive, firstRestricted,
-            oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody;
- 
-        expect('{');
- 
-        while (index < length) {
-            if (lookahead.type !== Token.StringLiteral) {
-                break;
-            }
-            token = lookahead;
- 
-            sourceElement = parseSourceElement();
-            sourceElements.push(sourceElement);
-            if (sourceElement.expression.type !== Syntax.Literal) {
-                // this is not directive
-                break;
-            }
-            directive = source.slice(token.range[0] + 1, token.range[1] - 1);
-            if (directive === 'use strict') {
-                strict = true;
-                if (firstRestricted) {
-                    throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);
-                }
-            } else {
-                if (!firstRestricted && token.octal) {
-                    firstRestricted = token;
-                }
-            }
-        }
- 
-        oldLabelSet = state.labelSet;
-        oldInIteration = state.inIteration;
-        oldInSwitch = state.inSwitch;
-        oldInFunctionBody = state.inFunctionBody;
- 
-        state.labelSet = {};
-        state.inIteration = false;
-        state.inSwitch = false;
-        state.inFunctionBody = true;
- 
-        while (index < length) {
-            if (match('}')) {
-                break;
-            }
-            sourceElement = parseSourceElement();
-            if (typeof sourceElement === 'undefined') {
-                break;
-            }
-            sourceElements.push(sourceElement);
-        }
- 
-        expect('}');
- 
-        state.labelSet = oldLabelSet;
-        state.inIteration = oldInIteration;
-        state.inSwitch = oldInSwitch;
-        state.inFunctionBody = oldInFunctionBody;
- 
-        return delegate.createBlockStatement(sourceElements);
-    }
- 
-    function parseParams(firstRestricted) {
-        var param, params = [], token, stricted, paramSet, key, message;
-        expect('(');
- 
-        if (!match(')')) {
-            paramSet = {};
-            while (index < length) {
-                token = lookahead;
-                param = parseVariableIdentifier();
-                key = '$' + token.value;
-                if (strict) {
-                    if (isRestrictedWord(token.value)) {
-                        stricted = token;
-                        message = Messages.StrictParamName;
-                    }
-                    if (Object.prototype.hasOwnProperty.call(paramSet, key)) {
-                        stricted = token;
-                        message = Messages.StrictParamDupe;
-                    }
-                } else if (!firstRestricted) {
-                    if (isRestrictedWord(token.value)) {
-                        firstRestricted = token;
-                        message = Messages.StrictParamName;
-                    } else if (isStrictModeReservedWord(token.value)) {
-                        firstRestricted = token;
-                        message = Messages.StrictReservedWord;
-                    } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) {
-                        firstRestricted = token;
-                        message = Messages.StrictParamDupe;
-                    }
-                }
-                params.push(param);
-                paramSet[key] = true;
-                if (match(')')) {
-                    break;
-                }
-                expect(',');
-            }
-        }
- 
-        expect(')');
- 
-        return {
-            params: params,
-            stricted: stricted,
-            firstRestricted: firstRestricted,
-            message: message
-        };
-    }
- 
-    function parseFunctionDeclaration() {
-        var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict;
- 
-        expectKeyword('function');
-        token = lookahead;
-        id = parseVariableIdentifier();
-        if (strict) {
-            if (isRestrictedWord(token.value)) {
-                throwErrorTolerant(token, Messages.StrictFunctionName);
-            }
-        } else {
-            if (isRestrictedWord(token.value)) {
-                firstRestricted = token;
-                message = Messages.StrictFunctionName;
-            } else if (isStrictModeReservedWord(token.value)) {
-                firstRestricted = token;
-                message = Messages.StrictReservedWord;
-            }
-        }
- 
-        tmp = parseParams(firstRestricted);
-        params = tmp.params;
-        stricted = tmp.stricted;
-        firstRestricted = tmp.firstRestricted;
-        if (tmp.message) {
-            message = tmp.message;
-        }
- 
-        previousStrict = strict;
-        body = parseFunctionSourceElements();
-        if (strict && firstRestricted) {
-            throwError(firstRestricted, message);
-        }
-        if (strict && stricted) {
-            throwErrorTolerant(stricted, message);
-        }
-        strict = previousStrict;
- 
-        return delegate.createFunctionDeclaration(id, params, [], body);
-    }
- 
-    function parseFunctionExpression() {
-        var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict;
- 
-        expectKeyword('function');
- 
-        if (!match('(')) {
-            token = lookahead;
-            id = parseVariableIdentifier();
-            if (strict) {
-                if (isRestrictedWord(token.value)) {
-                    throwErrorTolerant(token, Messages.StrictFunctionName);
-                }
-            } else {
-                if (isRestrictedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictFunctionName;
-                } else if (isStrictModeReservedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictReservedWord;
-                }
-            }
-        }
- 
-        tmp = parseParams(firstRestricted);
-        params = tmp.params;
-        stricted = tmp.stricted;
-        firstRestricted = tmp.firstRestricted;
-        if (tmp.message) {
-            message = tmp.message;
-        }
- 
-        previousStrict = strict;
-        body = parseFunctionSourceElements();
-        if (strict && firstRestricted) {
-            throwError(firstRestricted, message);
-        }
-        if (strict && stricted) {
-            throwErrorTolerant(stricted, message);
-        }
-        strict = previousStrict;
- 
-        return delegate.createFunctionExpression(id, params, [], body);
-    }
- 
-    // 14 Program
- 
-    function parseSourceElement() {
-        if (lookahead.type === Token.Keyword) {
-            switch (lookahead.value) {
-            case 'const':
-            case 'let':
-                return parseConstLetDeclaration(lookahead.value);
-            case 'function':
-                return parseFunctionDeclaration();
-            default:
-                return parseStatement();
-            }
-        }
- 
-        if (lookahead.type !== Token.EOF) {
-            return parseStatement();
-        }
-    }
- 
-    function parseSourceElements() {
-        var sourceElement, sourceElements = [], token, directive, firstRestricted;
- 
-        while (index < length) {
-            token = lookahead;
-            if (token.type !== Token.StringLiteral) {
-                break;
-            }
- 
-            sourceElement = parseSourceElement();
-            sourceElements.push(sourceElement);
-            if (sourceElement.expression.type !== Syntax.Literal) {
-                // this is not directive
-                break;
-            }
-            directive = source.slice(token.range[0] + 1, token.range[1] - 1);
-            if (directive === 'use strict') {
-                strict = true;
-                if (firstRestricted) {
-                    throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);
-                }
-            } else {
-                if (!firstRestricted && token.octal) {
-                    firstRestricted = token;
-                }
-            }
-        }
- 
-        while (index < length) {
-            sourceElement = parseSourceElement();
-            if (typeof sourceElement === 'undefined') {
-                break;
-            }
-            sourceElements.push(sourceElement);
-        }
-        return sourceElements;
-    }
- 
-    function parseProgram() {
-        var body;
-        strict = false;
-        peek();
-        body = parseSourceElements();
-        return delegate.createProgram(body);
-    }
- 
-    // The following functions are needed only when the option to preserve
-    // the comments is active.
- 
-    function addComment(type, value, start, end, loc) {
-        assert(typeof start === 'number', 'Comment must have valid position');
- 
-        // Because the way the actual token is scanned, often the comments
-        // (if any) are skipped twice during the lexical analysis.
-        // Thus, we need to skip adding a comment if the comment array already
-        // handled it.
-        if (extra.comments.length > 0) {
-            if (extra.comments[extra.comments.length - 1].range[1] > start) {
-                return;
-            }
-        }
- 
-        extra.comments.push({
-            type: type,
-            value: value,
-            range: [start, end],
-            loc: loc
-        });
-    }
- 
-    function scanComment() {
-        var comment, ch, loc, start, blockComment, lineComment;
- 
-        comment = '';
-        blockComment = false;
-        lineComment = false;
- 
-        while (index < length) {
-            ch = source[index];
- 
-            if (lineComment) {
-                ch = source[index++];
-                if (isLineTerminator(ch.charCodeAt(0))) {
-                    loc.end = {
-                        line: lineNumber,
-                        column: index - lineStart - 1
-                    };
-                    lineComment = false;
-                    addComment('Line', comment, start, index - 1, loc);
-                    if (ch === '\r' && source[index] === '\n') {
-                        ++index;
-                    }
-                    ++lineNumber;
-                    lineStart = index;
-                    comment = '';
-                } else if (index >= length) {
-                    lineComment = false;
-                    comment += ch;
-                    loc.end = {
-                        line: lineNumber,
-                        column: length - lineStart
-                    };
-                    addComment('Line', comment, start, length, loc);
-                } else {
-                    comment += ch;
-                }
-            } else if (blockComment) {
-                if (isLineTerminator(ch.charCodeAt(0))) {
-                    if (ch === '\r' && source[index + 1] === '\n') {
-                        ++index;
-                        comment += '\r\n';
-                    } else {
-                        comment += ch;
-                    }
-                    ++lineNumber;
-                    ++index;
-                    lineStart = index;
-                    if (index >= length) {
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
-                } else {
-                    ch = source[index++];
-                    if (index >= length) {
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
-                    comment += ch;
-                    if (ch === '*') {
-                        ch = source[index];
-                        if (ch === '/') {
-                            comment = comment.substr(0, comment.length - 1);
-                            blockComment = false;
-                            ++index;
-                            loc.end = {
-                                line: lineNumber,
-                                column: index - lineStart
-                            };
-                            addComment('Block', comment, start, index, loc);
-                            comment = '';
-                        }
-                    }
-                }
-            } else if (ch === '/') {
-                ch = source[index + 1];
-                if (ch === '/') {
-                    loc = {
-                        start: {
-                            line: lineNumber,
-                            column: index - lineStart
-                        }
-                    };
-                    start = index;
-                    index += 2;
-                    lineComment = true;
-                    if (index >= length) {
-                        loc.end = {
-                            line: lineNumber,
-                            column: index - lineStart
-                        };
-                        lineComment = false;
-                        addComment('Line', comment, start, index, loc);
-                    }
-                } else if (ch === '*') {
-                    start = index;
-                    index += 2;
-                    blockComment = true;
-                    loc = {
-                        start: {
-                            line: lineNumber,
-                            column: index - lineStart - 2
-                        }
-                    };
-                    if (index >= length) {
-                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                    }
-                } else {
-                    break;
-                }
-            } else if (isWhiteSpace(ch.charCodeAt(0))) {
-                ++index;
-            } else if (isLineTerminator(ch.charCodeAt(0))) {
-                ++index;
-                if (ch ===  '\r' && source[index] === '\n') {
-                    ++index;
-                }
-                ++lineNumber;
-                lineStart = index;
-            } else {
-                break;
-            }
-        }
-    }
- 
-    function filterCommentLocation() {
-        var i, entry, comment, comments = [];
- 
-        for (i = 0; i < extra.comments.length; ++i) {
-            entry = extra.comments[i];
-            comment = {
-                type: entry.type,
-                value: entry.value
-            };
-            if (extra.range) {
-                comment.range = entry.range;
-            }
-            if (extra.loc) {
-                comment.loc = entry.loc;
-            }
-            comments.push(comment);
-        }
- 
-        extra.comments = comments;
-    }
- 
-    function collectToken() {
-        var start, loc, token, range, value;
- 
-        skipComment();
-        start = index;
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
- 
-        token = extra.advance();
-        loc.end = {
-            line: lineNumber,
-            column: index - lineStart
-        };
- 
-        if (token.type !== Token.EOF) {
-            range = [token.range[0], token.range[1]];
-            value = source.slice(token.range[0], token.range[1]);
-            extra.tokens.push({
-                type: TokenName[token.type],
-                value: value,
-                range: range,
-                loc: loc
-            });
-        }
- 
-        return token;
-    }
- 
-    function collectRegex() {
-        var pos, loc, regex, token;
- 
-        skipComment();
- 
-        pos = index;
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
- 
-        regex = extra.scanRegExp();
-        loc.end = {
-            line: lineNumber,
-            column: index - lineStart
-        };
- 
-        // Pop the previous token, which is likely '/' or '/='
-        Eif (extra.tokens.length > 0) {
-            token = extra.tokens[extra.tokens.length - 1];
-            Eif (token.range[0] === pos && token.type === 'Punctuator') {
-                Eif (token.value === '/' || token.value === '/=') {
-                    extra.tokens.pop();
-                }
-            }
-        }
- 
-        extra.tokens.push({
-            type: 'RegularExpression',
-            value: regex.literal,
-            range: [pos, index],
-            loc: loc
-        });
- 
-        return regex;
-    }
- 
-    function filterTokenLocation() {
-        var i, entry, token, tokens = [];
- 
-        for (i = 0; i < extra.tokens.length; ++i) {
-            entry = extra.tokens[i];
-            token = {
-                type: entry.type,
-                value: entry.value
-            };
-            if (extra.range) {
-                token.range = entry.range;
-            }
-            if (extra.loc) {
-                token.loc = entry.loc;
-            }
-            tokens.push(token);
-        }
- 
-        extra.tokens = tokens;
-    }
- 
-    function createLocationMarker() {
-        var marker = {};
- 
-        marker.range = [index, index];
-        marker.loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            },
-            end: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
- 
-        marker.end = function () {
-            this.range[1] = index;
-            this.loc.end.line = lineNumber;
-            this.loc.end.column = index - lineStart;
-        };
- 
-        marker.applyGroup = function (node) {
-            Eif (extra.range) {
-                node.groupRange = [this.range[0], this.range[1]];
-            }
-            Eif (extra.loc) {
-                node.groupLoc = {
-                    start: {
-                        line: this.loc.start.line,
-                        column: this.loc.start.column
-                    },
-                    end: {
-                        line: this.loc.end.line,
-                        column: this.loc.end.column
-                    }
-                };
-            }
-        };
- 
-        marker.apply = function (node) {
-            if (extra.range) {
-                node.range = [this.range[0], this.range[1]];
-            }
-            if (extra.loc) {
-                node.loc = {
-                    start: {
-                        line: this.loc.start.line,
-                        column: this.loc.start.column
-                    },
-                    end: {
-                        line: this.loc.end.line,
-                        column: this.loc.end.column
-                    }
-                };
-            }
-        };
- 
-        return marker;
-    }
- 
-    function trackGroupExpression() {
-        var marker, expr;
- 
-        skipComment();
-        marker = createLocationMarker();
-        expect('(');
- 
-        expr = parseExpression();
- 
-        expect(')');
- 
-        marker.end();
-        marker.applyGroup(expr);
- 
-        return expr;
-    }
- 
-    function trackLeftHandSideExpression() {
-        var marker, expr, property;
- 
-        skipComment();
-        marker = createLocationMarker();
- 
-        expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression();
- 
-        while (match('.') || match('[')) {
-            if (match('[')) {
-                property = parseComputedMember();
-                expr = delegate.createMemberExpression('[', expr, property);
-                marker.end();
-                marker.apply(expr);
-            } else {
-                property = parseNonComputedMember();
-                expr = delegate.createMemberExpression('.', expr, property);
-                marker.end();
-                marker.apply(expr);
-            }
-        }
- 
-        return expr;
-    }
- 
-    function trackLeftHandSideExpressionAllowCall() {
-        var marker, expr, args, property;
- 
-        skipComment();
-        marker = createLocationMarker();
- 
-        expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression();
- 
-        while (match('.') || match('[') || match('(')) {
-            if (match('(')) {
-                args = parseArguments();
-                expr = delegate.createCallExpression(expr, args);
-                marker.end();
-                marker.apply(expr);
-            } else if (match('[')) {
-                property = parseComputedMember();
-                expr = delegate.createMemberExpression('[', expr, property);
-                marker.end();
-                marker.apply(expr);
-            } else {
-                property = parseNonComputedMember();
-                expr = delegate.createMemberExpression('.', expr, property);
-                marker.end();
-                marker.apply(expr);
-            }
-        }
- 
-        return expr;
-    }
- 
-    function filterGroup(node) {
-        var n, i, entry;
- 
-        n = (Object.prototype.toString.apply(node) === '[object Array]') ? [] : {};
-        for (i in node) {
-            if (node.hasOwnProperty(i) && i !== 'groupRange' && i !== 'groupLoc') {
-                entry = node[i];
-                if (entry === null || typeof entry !== 'object' || entry instanceof RegExp) {
-                    n[i] = entry;
-                } else {
-                    n[i] = filterGroup(entry);
-                }
-            }
-        }
-        return n;
-    }
- 
-    function wrapTrackingFunction(range, loc) {
- 
-        return function (parseFunction) {
- 
-            function isBinary(node) {
-                return node.type === Syntax.LogicalExpression ||
-                    node.type === Syntax.BinaryExpression;
-            }
- 
-            function visit(node) {
-                var start, end;
- 
-                if (isBinary(node.left)) {
-                    visit(node.left);
-                }
-                if (isBinary(node.right)) {
-                    visit(node.right);
-                }
- 
-                Eif (range) {
-                    if (node.left.groupRange || node.right.groupRange) {
-                        start = node.left.groupRange ? node.left.groupRange[0] : node.left.range[0];
-                        end = node.right.groupRange ? node.right.groupRange[1] : node.right.range[1];
-                        node.range = [start, end];
-                    } else if (typeof node.range === 'undefined') {
-                        start = node.left.range[0];
-                        end = node.right.range[1];
-                        node.range = [start, end];
-                    }
-                }
-                Eif (loc) {
-                    if (node.left.groupLoc || node.right.groupLoc) {
-                        start = node.left.groupLoc ? node.left.groupLoc.start : node.left.loc.start;
-                        end = node.right.groupLoc ? node.right.groupLoc.end : node.right.loc.end;
-                        node.loc = {
-                            start: start,
-                            end: end
-                        };
-                    } else if (typeof node.loc === 'undefined') {
-                        node.loc = {
-                            start: node.left.loc.start,
-                            end: node.right.loc.end
-                        };
-                    }
-                }
-            }
- 
-            return function () {
-                var marker, node;
- 
-                skipComment();
- 
-                marker = createLocationMarker();
-                node = parseFunction.apply(null, arguments);
-                marker.end();
- 
-                if (range && typeof node.range === 'undefined') {
-                    marker.apply(node);
-                }
- 
-                if (loc && typeof node.loc === 'undefined') {
-                    marker.apply(node);
-                }
- 
-                if (isBinary(node)) {
-                    visit(node);
-                }
- 
-                return node;
-            };
-        };
-    }
- 
-    function patch() {
- 
-        var wrapTracking;
- 
-        if (extra.comments) {
-            extra.skipComment = skipComment;
-            skipComment = scanComment;
-        }
- 
-        if (extra.range || extra.loc) {
- 
-            extra.parseGroupExpression = parseGroupExpression;
-            extra.parseLeftHandSideExpression = parseLeftHandSideExpression;
-            extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall;
-            parseGroupExpression = trackGroupExpression;
-            parseLeftHandSideExpression = trackLeftHandSideExpression;
-            parseLeftHandSideExpressionAllowCall = trackLeftHandSideExpressionAllowCall;
- 
-            wrapTracking = wrapTrackingFunction(extra.range, extra.loc);
- 
-            extra.parseAssignmentExpression = parseAssignmentExpression;
-            extra.parseBinaryExpression = parseBinaryExpression;
-            extra.parseBlock = parseBlock;
-            extra.parseFunctionSourceElements = parseFunctionSourceElements;
-            extra.parseCatchClause = parseCatchClause;
-            extra.parseComputedMember = parseComputedMember;
-            extra.parseConditionalExpression = parseConditionalExpression;
-            extra.parseConstLetDeclaration = parseConstLetDeclaration;
-            extra.parseExpression = parseExpression;
-            extra.parseForVariableDeclaration = parseForVariableDeclaration;
-            extra.parseFunctionDeclaration = parseFunctionDeclaration;
-            extra.parseFunctionExpression = parseFunctionExpression;
-            extra.parseNewExpression = parseNewExpression;
-            extra.parseNonComputedProperty = parseNonComputedProperty;
-            extra.parseObjectProperty = parseObjectProperty;
-            extra.parseObjectPropertyKey = parseObjectPropertyKey;
-            extra.parsePostfixExpression = parsePostfixExpression;
-            extra.parsePrimaryExpression = parsePrimaryExpression;
-            extra.parseProgram = parseProgram;
-            extra.parsePropertyFunction = parsePropertyFunction;
-            extra.parseStatement = parseStatement;
-            extra.parseSwitchCase = parseSwitchCase;
-            extra.parseUnaryExpression = parseUnaryExpression;
-            extra.parseVariableDeclaration = parseVariableDeclaration;
-            extra.parseVariableIdentifier = parseVariableIdentifier;
- 
-            parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression);
-            parseBinaryExpression = wrapTracking(extra.parseBinaryExpression);
-            parseBlock = wrapTracking(extra.parseBlock);
-            parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements);
-            parseCatchClause = wrapTracking(extra.parseCatchClause);
-            parseComputedMember = wrapTracking(extra.parseComputedMember);
-            parseConditionalExpression = wrapTracking(extra.parseConditionalExpression);
-            parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration);
-            parseExpression = wrapTracking(extra.parseExpression);
-            parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration);
-            parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration);
-            parseFunctionExpression = wrapTracking(extra.parseFunctionExpression);
-            parseLeftHandSideExpression = wrapTracking(parseLeftHandSideExpression);
-            parseNewExpression = wrapTracking(extra.parseNewExpression);
-            parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty);
-            parseObjectProperty = wrapTracking(extra.parseObjectProperty);
-            parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey);
-            parsePostfixExpression = wrapTracking(extra.parsePostfixExpression);
-            parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression);
-            parseProgram = wrapTracking(extra.parseProgram);
-            parsePropertyFunction = wrapTracking(extra.parsePropertyFunction);
-            parseStatement = wrapTracking(extra.parseStatement);
-            parseSwitchCase = wrapTracking(extra.parseSwitchCase);
-            parseUnaryExpression = wrapTracking(extra.parseUnaryExpression);
-            parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration);
-            parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier);
-        }
- 
-        if (typeof extra.tokens !== 'undefined') {
-            extra.advance = advance;
-            extra.scanRegExp = scanRegExp;
- 
-            advance = collectToken;
-            scanRegExp = collectRegex;
-        }
-    }
- 
-    function unpatch() {
-        if (typeof extra.skipComment === 'function') {
-            skipComment = extra.skipComment;
-        }
- 
-        if (extra.range || extra.loc) {
-            parseAssignmentExpression = extra.parseAssignmentExpression;
-            parseBinaryExpression = extra.parseBinaryExpression;
-            parseBlock = extra.parseBlock;
-            parseFunctionSourceElements = extra.parseFunctionSourceElements;
-            parseCatchClause = extra.parseCatchClause;
-            parseComputedMember = extra.parseComputedMember;
-            parseConditionalExpression = extra.parseConditionalExpression;
-            parseConstLetDeclaration = extra.parseConstLetDeclaration;
-            parseExpression = extra.parseExpression;
-            parseForVariableDeclaration = extra.parseForVariableDeclaration;
-            parseFunctionDeclaration = extra.parseFunctionDeclaration;
-            parseFunctionExpression = extra.parseFunctionExpression;
-            parseGroupExpression = extra.parseGroupExpression;
-            parseLeftHandSideExpression = extra.parseLeftHandSideExpression;
-            parseLeftHandSideExpressionAllowCall = extra.parseLeftHandSideExpressionAllowCall;
-            parseNewExpression = extra.parseNewExpression;
-            parseNonComputedProperty = extra.parseNonComputedProperty;
-            parseObjectProperty = extra.parseObjectProperty;
-            parseObjectPropertyKey = extra.parseObjectPropertyKey;
-            parsePrimaryExpression = extra.parsePrimaryExpression;
-            parsePostfixExpression = extra.parsePostfixExpression;
-            parseProgram = extra.parseProgram;
-            parsePropertyFunction = extra.parsePropertyFunction;
-            parseStatement = extra.parseStatement;
-            parseSwitchCase = extra.parseSwitchCase;
-            parseUnaryExpression = extra.parseUnaryExpression;
-            parseVariableDeclaration = extra.parseVariableDeclaration;
-            parseVariableIdentifier = extra.parseVariableIdentifier;
-        }
- 
-        if (typeof extra.scanRegExp === 'function') {
-            advance = extra.advance;
-            scanRegExp = extra.scanRegExp;
-        }
-    }
- 
-    function parse(code, options) {
-        var program, toString;
- 
-        toString = String;
-        if (typeof code !== 'string' && !(code instanceof String)) {
-            code = toString(code);
-        }
- 
-        delegate = SyntaxTreeDelegate;
-        source = code;
-        index = 0;
-        lineNumber = (source.length > 0) ? 1 : 0;
-        lineStart = 0;
-        length = source.length;
-        lookahead = null;
-        state = {
-            allowIn: true,
-            labelSet: {},
-            inFunctionBody: false,
-            inIteration: false,
-            inSwitch: false
-        };
- 
-        extra = {};
-        if (typeof options !== 'undefined') {
-            extra.range = (typeof options.range === 'boolean') && options.range;
-            extra.loc = (typeof options.loc === 'boolean') && options.loc;
- 
-            if (typeof options.tokens === 'boolean' && options.tokens) {
-                extra.tokens = [];
-            }
-            if (typeof options.comment === 'boolean' && options.comment) {
-                extra.comments = [];
-            }
-            if (typeof options.tolerant === 'boolean' && options.tolerant) {
-                extra.errors = [];
-            }
-        }
- 
-        if (length > 0) {
-            Iif (typeof source[0] === 'undefined') {
-                // Try first to convert to a string. This is good as fast path
-                // for old IE which understands string indexing for string
-                // literals only and not for string object.
-                if (code instanceof String) {
-                    source = code.valueOf();
-                }
-            }
-        }
- 
-        patch();
-        try {
-            program = parseProgram();
-            if (typeof extra.comments !== 'undefined') {
-                filterCommentLocation();
-                program.comments = extra.comments;
-            }
-            if (typeof extra.tokens !== 'undefined') {
-                filterTokenLocation();
-                program.tokens = extra.tokens;
-            }
-            if (typeof extra.errors !== 'undefined') {
-                program.errors = extra.errors;
-            }
-            if (extra.range || extra.loc) {
-                program.body = filterGroup(program.body);
-            }
-        } catch (e) {
-            throw e;
-        } finally {
-            unpatch();
-            extra = {};
-        }
- 
-        return program;
-    }
- 
-    // Sync with package.json and component.json.
-    exports.version = '1.1.0-dev';
- 
-    exports.parse = parse;
- 
-    // Deep copy.
-    exports.Syntax = (function () {
-        var name, types = {};
- 
-        Eif (typeof Object.create === 'function') {
-            types = Object.create(null);
-        }
- 
-        for (name in Syntax) {
-            Eif (Syntax.hasOwnProperty(name)) {
-                types[name] = Syntax[name];
-            }
-        }
- 
-        Eif (typeof Object.freeze === 'function') {
-            Object.freeze(types);
-        }
- 
-        return types;
-    }());
- 
-}));
-/* vim: set sw=4 ts=4 et tw=80 : */
- 
- -
- - - - - - - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/index.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/index.html deleted file mode 100644 index ec2af9c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - -Esprima: Unit Tests - - - - - - - -
- - - -

Unit Tests ensures the correct implementation

-

Esprima version .

-

Please wait...

-
- -
- - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/module.html b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/module.html deleted file mode 100644 index 7173a30..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/module.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -Esprima: Module Loading Test - - - - -
- - - -

Module Loading works also with web browsers

- -

The following tests are to ensure that Esprima can be loaded using AMD (Asynchronous Module Definition) loader such as RequireJS.

-

-
- -
- - - - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/module.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/module.js deleted file mode 100644 index bba84c7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/module.js +++ /dev/null @@ -1,129 +0,0 @@ -/*jslint browser:true plusplus:true */ -/*global require:true */ -function runTests() { - 'use strict'; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function reportSuccess(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - } - - function reportFailure(code, expected, actual) { - var report, e; - - report = document.getElementById('report'); - - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Expected type: ' + expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual type: ' + actual); - report.appendChild(e); - } - - - require(['../esprima'], function (ESParser) { - var tick, total, failures, obj, variable, variables, i, entry, entries; - - // We check only the type of some members of ESParser. - variables = { - 'version': 'string', - 'parse': 'function', - 'Syntax': 'object', - 'Syntax.AssignmentExpression': 'string', - 'Syntax.ArrayExpression': 'string', - 'Syntax.BlockStatement': 'string', - 'Syntax.BinaryExpression': 'string', - 'Syntax.BreakStatement': 'string', - 'Syntax.CallExpression': 'string', - 'Syntax.CatchClause': 'string', - 'Syntax.ConditionalExpression': 'string', - 'Syntax.ContinueStatement': 'string', - 'Syntax.DoWhileStatement': 'string', - 'Syntax.DebuggerStatement': 'string', - 'Syntax.EmptyStatement': 'string', - 'Syntax.ExpressionStatement': 'string', - 'Syntax.ForStatement': 'string', - 'Syntax.ForInStatement': 'string', - 'Syntax.FunctionDeclaration': 'string', - 'Syntax.FunctionExpression': 'string', - 'Syntax.Identifier': 'string', - 'Syntax.IfStatement': 'string', - 'Syntax.Literal': 'string', - 'Syntax.LabeledStatement': 'string', - 'Syntax.LogicalExpression': 'string', - 'Syntax.MemberExpression': 'string', - 'Syntax.NewExpression': 'string', - 'Syntax.ObjectExpression': 'string', - 'Syntax.Program': 'string', - 'Syntax.Property': 'string', - 'Syntax.ReturnStatement': 'string', - 'Syntax.SequenceExpression': 'string', - 'Syntax.SwitchStatement': 'string', - 'Syntax.SwitchCase': 'string', - 'Syntax.ThisExpression': 'string', - 'Syntax.ThrowStatement': 'string', - 'Syntax.TryStatement': 'string', - 'Syntax.UnaryExpression': 'string', - 'Syntax.UpdateExpression': 'string', - 'Syntax.VariableDeclaration': 'string', - 'Syntax.VariableDeclarator': 'string', - 'Syntax.WhileStatement': 'string', - 'Syntax.WithStatement': 'string' - }; - - total = failures = 0; - tick = new Date(); - - for (variable in variables) { - if (variables.hasOwnProperty(variable)) { - entries = variable.split('.'); - obj = ESParser; - for (i = 0; i < entries.length; ++i) { - entry = entries[i]; - if (typeof obj[entry] !== 'undefined') { - obj = obj[entry]; - } else { - obj = undefined; - break; - } - } - total++; - if (typeof obj === variables[variable]) { - reportSuccess(variable); - } else { - failures++; - reportFailure(variable, variables[variable], typeof obj); - } - } - } - - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/reflect.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/reflect.js deleted file mode 100644 index ffbeb53..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/reflect.js +++ /dev/null @@ -1,422 +0,0 @@ -// This is modified from Mozilla Reflect.parse test suite (the file is located -// at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree). -// -// Some notable changes: -// * Removed unsupported features (destructuring, let, comprehensions...). -// * Removed tests for E4X (ECMAScript for XML). -// * Removed everything related to builder. -// * Enclosed every 'Pattern' construct with a scope. -// * Tweaked some expected tree to remove generator field. -// * Removed the test for bug 632030 and bug 632024. - -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/licenses/publicdomain/ - */ - -(function (exports) { - -function testReflect(Reflect, Pattern) { - -function program(elts) { return Pattern({ type: "Program", body: elts }) } -function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) } -function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) } -function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) } -function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) } -function lit(val) { return Pattern({ type: "Literal", value: val }) } -var thisExpr = Pattern({ type: "ThisExpression" }); -function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) } -function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) } -function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) } -function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) } -function ident(name) { return Pattern({ type: "Identifier", name: name }) } -function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) } -function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) } -function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) } -function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) } -function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) } -function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) } -function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) } -function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) } -var emptyStmt = Pattern({ type: "EmptyStatement" }); -function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) } -function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) } -function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) } -function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) } -function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) } -function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) } -function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) } -function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) } -function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } } -function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) } -function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) } -function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } - -function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg }) } -function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) } -function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) } -function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) } -function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) } - -function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) } -function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) } -function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) } -function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) } -function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) } -function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) } -function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) } - -function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) } -function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) } - -function localSrc(src) { return "(function(){ " + src + " })" } -function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) } -function blockSrc(src) { return "(function(){ { " + src + " } })" } -function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) } - -function assertBlockStmt(src, patt) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src))); -} - -function assertBlockExpr(src, patt) { - assertBlockStmt(src, exprStmt(patt)); -} - -function assertBlockDecl(src, patt, builder) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder})); -} - -function assertLocalStmt(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertLocalExpr(src, patt) { - assertLocalStmt(src, exprStmt(patt)); -} - -function assertLocalDecl(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertGlobalStmt(src, patt, builder) { - program([patt]).assert(Reflect.parse(src, {builder: builder})); -} - -function assertGlobalExpr(src, patt, builder) { - program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder})); - //assertStmt(src, exprStmt(patt)); -} - -function assertGlobalDecl(src, patt) { - program([patt]).assert(Reflect.parse(src)); -} - -function assertProg(src, patt) { - program(patt).assert(Reflect.parse(src)); -} - -function assertStmt(src, patt) { - assertLocalStmt(src, patt); - assertGlobalStmt(src, patt); - assertBlockStmt(src, patt); -} - -function assertExpr(src, patt) { - assertLocalExpr(src, patt); - assertGlobalExpr(src, patt); - assertBlockExpr(src, patt); -} - -function assertDecl(src, patt) { - assertLocalDecl(src, patt); - assertGlobalDecl(src, patt); - assertBlockDecl(src, patt); -} - -function assertError(src, errorType) { - try { - Reflect.parse(src); - } catch (e) { - return; - } - throw new Error("expected " + errorType.name + " for " + uneval(src)); -} - - -// general tests - -// NB: These are useful but for now jit-test doesn't do I/O reliably. - -//program(_).assert(Reflect.parse(snarf('data/flapjax.txt'))); -//program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt'))); -//program(_).assert(Reflect.parse(snarf('data/prototype.js'))); -//program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js'))); -//program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js'))); - - -// declarations - -assertDecl("var x = 1, y = 2, z = 3", - varDecl([declarator(ident("x"), lit(1)), - declarator(ident("y"), lit(2)), - declarator(ident("z"), lit(3))])); -assertDecl("var x, y, z", - varDecl([declarator(ident("x"), null), - declarator(ident("y"), null), - declarator(ident("z"), null)])); -assertDecl("function foo() { }", - funDecl(ident("foo"), [], blockStmt([]))); -assertDecl("function foo() { return 42 }", - funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))]))); - - -// Bug 591437: rebound args have their defs turned into uses -assertDecl("function f(a) { function a() { } }", - funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))]))); -assertDecl("function f(a,b,c) { function b() { } }", - funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))]))); - -// expressions - -assertExpr("true", lit(true)); -assertExpr("false", lit(false)); -assertExpr("42", lit(42)); -assertExpr("(/asdf/)", lit(/asdf/)); -assertExpr("this", thisExpr); -assertExpr("foo", ident("foo")); -assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar"))); -assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar"))); -assertExpr("(function(){})", funExpr(null, [], blockStmt([]))); -assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([]))); -assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([]))); -assertExpr("(++x)", updExpr("++", ident("x"), true)); -assertExpr("(x++)", updExpr("++", ident("x"), false)); -assertExpr("(+x)", unExpr("+", ident("x"))); -assertExpr("(-x)", unExpr("-", ident("x"))); -assertExpr("(!x)", unExpr("!", ident("x"))); -assertExpr("(~x)", unExpr("~", ident("x"))); -assertExpr("(delete x)", unExpr("delete", ident("x"))); -assertExpr("(typeof x)", unExpr("typeof", ident("x"))); -assertExpr("(void x)", unExpr("void", ident("x"))); -assertExpr("(x == y)", binExpr("==", ident("x"), ident("y"))); -assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y"))); -assertExpr("(x === y)", binExpr("===", ident("x"), ident("y"))); -assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y"))); -assertExpr("(x < y)", binExpr("<", ident("x"), ident("y"))); -assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y"))); -assertExpr("(x > y)", binExpr(">", ident("x"), ident("y"))); -assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y"))); -assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y"))); -assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y"))); -assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y"))); -assertExpr("(x + y)", binExpr("+", ident("x"), ident("y"))); -assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x - y)", binExpr("-", ident("x"), ident("y"))); -assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x * y)", binExpr("*", ident("x"), ident("y"))); -assertExpr("(x / y)", binExpr("/", ident("x"), ident("y"))); -assertExpr("(x % y)", binExpr("%", ident("x"), ident("y"))); -assertExpr("(x | y)", binExpr("|", ident("x"), ident("y"))); -assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y"))); -assertExpr("(x & y)", binExpr("&", ident("x"), ident("y"))); -assertExpr("(x in y)", binExpr("in", ident("x"), ident("y"))); -assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y"))); -assertExpr("(x = y)", aExpr("=", ident("x"), ident("y"))); -assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y"))); -assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y"))); -assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y"))); -assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y"))); -assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y"))); -assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y"))); -assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y"))); -assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y"))); -assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y"))); -assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y"))); -assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y"))); -assertExpr("(x || y)", logExpr("||", ident("x"), ident("y"))); -assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y"))); -assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z"))) -assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z"))); -assertExpr("(x,y)", seqExpr([ident("x"),ident("y")])) -assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")])) -assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")])); -assertExpr("(new Object)", newExpr(ident("Object"), [])); -assertExpr("(new Object())", newExpr(ident("Object"), [])); -assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)])); -assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)])); -assertExpr("(String())", callExpr(ident("String"), [])); -assertExpr("(String(42))", callExpr(ident("String"), [lit(42)])); -assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)])); -assertExpr("[]", arrExpr([])); -assertExpr("[1]", arrExpr([lit(1)])); -assertExpr("[1,2]", arrExpr([lit(1),lit(2)])); -assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)])); -assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)])); -assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)])); -assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)])); -assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)])); -assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)])); -assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined])); -assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined])); -assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined])); -assertExpr("({})", objExpr([])); -assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")])); -assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init")])); -assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(lit(3), lit(3), "init") ])); - -// Bug 571617: eliminate constant-folding -assertExpr("2 + 3", binExpr("+", lit(2), lit(3))); - -// Bug 632026: constant-folding -assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a")))); - -// Bug 632056: constant-folding -program([exprStmt(ident("f")), - ifStmt(lit(1), - funDecl(ident("f"), [], blockStmt([])), - null)]).assert(Reflect.parse("f; if (1) function f(){}")); - -// statements - -assertStmt("throw 42", throwStmt(lit(42))); -assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null))); -assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null))); -assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null))); -assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null))); -assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null))); -assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null))); -assertStmt("{ }", blockStmt([])); -assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))])); -assertStmt(";", emptyStmt); -assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null)); -assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true)))); -assertStmt("if (foo) { throw 1; throw 2; throw 3; }", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - null)); -assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - exprStmt(lit(true)))); -assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo"))))); -assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo"))))); -assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([]))); -assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))]))); -assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([]))); -assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))]))); -assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo"))); -assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo"))); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]) ])); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]), - caseClause(lit(42), [ exprStmt(lit(42)) ]) ])); -assertStmt("try { } catch (e) { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - null)); -assertStmt("try { } catch (e) { } finally { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - blockStmt([]))); -assertStmt("try { } finally { }", - tryStmt(blockStmt([]), - [], - [], - blockStmt([]))); - -// redeclarations (TOK_NAME nodes with lexdef) - -assertStmt("function f() { function g() { } function g() { } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([]))]))); - -assertStmt("function f() { function g() { } function g() { return 42 } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))]))); - -assertStmt("function f() { var x = 42; var x = 43; }", - funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]), - varDecl([declarator(ident("x"),lit(43))])]))); - -// getters and setters - - assertExpr("({ get x() { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [], blockStmt([returnStmt(lit(42))])), - "get" ) ])); - assertExpr("({ set x(v) { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])), - "set" ) ])); - -} - -exports.testReflect = testReflect; - -}(typeof exports === 'undefined' ? this : exports)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/run.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/run.js deleted file mode 100644 index 32ca3fa..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/run.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node:true */ - -(function () { - 'use strict'; - - var child = require('child_process'), - nodejs = '"' + process.execPath + '"', - ret = 0, - suites, - index; - - suites = [ - 'runner', - 'compat' - ]; - - function nextTest() { - var suite = suites[index]; - - if (index < suites.length) { - child.exec(nodejs + ' ./test/' + suite + '.js', function (err, stdout, stderr) { - if (stdout) { - process.stdout.write(suite + ': ' + stdout); - } - if (stderr) { - process.stderr.write(suite + ': ' + stderr); - } - if (err) { - ret = err.code; - } - index += 1; - nextTest(); - }); - } else { - process.exit(ret); - } - } - - index = 0; - nextTest(); -}()); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/runner.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/runner.js deleted file mode 100644 index a1ca809..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/runner.js +++ /dev/null @@ -1,396 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint browser:true node:true */ -/*global esprima:true, testFixture:true */ - -var runTests; - -// Special handling for regular expression literal since we need to -// convert it to a string literal, otherwise it will be decoded -// as object "{}" and the regular expression would be lost. -function adjustRegexLiteral(key, value) { - 'use strict'; - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return value; -} - -function NotMatchingError(expected, actual) { - 'use strict'; - Error.call(this, 'Expected '); - this.expected = expected; - this.actual = actual; -} -NotMatchingError.prototype = new Error(); - -function errorToObject(e) { - 'use strict'; - var msg = e.toString(); - - // Opera 9.64 produces an non-standard string in toString(). - if (msg.substr(0, 6) !== 'Error:') { - if (typeof e.message === 'string') { - msg = 'Error: ' + e.message; - } - } - - return { - index: e.index, - lineNumber: e.lineNumber, - column: e.column, - message: msg - }; -} - -function testParse(esprima, code, syntax) { - 'use strict'; - var expected, tree, actual, options, StringObject, i, len, err; - - // alias, so that JSLint does not complain. - StringObject = String; - - options = { - comment: (typeof syntax.comments !== 'undefined'), - range: true, - loc: true, - tokens: (typeof syntax.tokens !== 'undefined'), - raw: true, - tolerant: (typeof syntax.errors !== 'undefined'), - source: null - }; - - if (typeof syntax.tokens !== 'undefined') { - if (syntax.tokens.length > 0) { - options.range = (typeof syntax.tokens[0].range !== 'undefined'); - options.loc = (typeof syntax.tokens[0].loc !== 'undefined'); - } - } - - if (typeof syntax.comments !== 'undefined') { - if (syntax.comments.length > 0) { - options.range = (typeof syntax.comments[0].range !== 'undefined'); - options.loc = (typeof syntax.comments[0].loc !== 'undefined'); - } - } - - if (options.loc) { - options.source = syntax.loc.source; - } - - expected = JSON.stringify(syntax, null, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens || options.tolerant) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, adjustRegexLiteral, 4); - - // Only to ensure that there is no error when using string object. - esprima.parse(new StringObject(code), options); - - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } - - function filter(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return (key === 'loc' || key === 'range') ? undefined : value; - } - - if (options.tolerant) { - return; - } - - - // Check again without any location info. - options.range = false; - options.loc = false; - expected = JSON.stringify(syntax, filter, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, filter, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function testError(esprima, code, exception) { - 'use strict'; - var i, options, expected, actual, err, handleInvalidRegexFlag; - - // Different parsing options should give the same error. - options = [ - {}, - { comment: true }, - { raw: true }, - { raw: true, comment: true } - ]; - - // If handleInvalidRegexFlag is true, an invalid flag in a regular expression - // will throw an exception. In some old version V8, this is not the case - // and hence handleInvalidRegexFlag is false. - handleInvalidRegexFlag = false; - try { - 'test'.match(new RegExp('[a-z]', 'x')); - } catch (e) { - handleInvalidRegexFlag = true; - } - - exception.description = exception.message.replace(/Error: Line [0-9]+: /, ''); - - expected = JSON.stringify(exception); - - for (i = 0; i < options.length; i += 1) { - - try { - esprima.parse(code, options[i]); - } catch (e) { - err = errorToObject(e); - err.description = e.description; - actual = JSON.stringify(err); - } - - if (expected !== actual) { - - // Compensate for old V8 which does not handle invalid flag. - if (exception.message.indexOf('Invalid regular expression') > 0) { - if (typeof actual === 'undefined' && !handleInvalidRegexFlag) { - return; - } - } - - throw new NotMatchingError(expected, actual); - } - - } -} - -function testAPI(esprima, code, result) { - 'use strict'; - var expected, res, actual; - - expected = JSON.stringify(result.result, null, 4); - try { - if (typeof result.property !== 'undefined') { - res = esprima[result.property]; - } else { - res = esprima[result.call].apply(esprima, result.args); - } - actual = JSON.stringify(res, adjustRegexLiteral, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function runTest(esprima, code, result) { - 'use strict'; - if (result.hasOwnProperty('lineNumber')) { - testError(esprima, code, result); - } else if (result.hasOwnProperty('result')) { - testAPI(esprima, code, result); - } else { - testParse(esprima, code, result); - } -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - var total = 0, - failures = 0, - category, - fixture, - source, - tick, - expected, - index, - len; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function startCategory(category) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('h4'); - setText(e, category); - report.appendChild(e); - } - - function reportSuccess(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - } - - function reportFailure(code, expected, actual) { - var report, e; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Code:'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - tick = new Date(); - for (category in testFixture) { - if (testFixture.hasOwnProperty(category)) { - startCategory(category); - fixture = testFixture[category]; - for (source in fixture) { - if (fixture.hasOwnProperty(source)) { - expected = fixture[source]; - total += 1; - try { - runTest(esprima, source, expected); - reportSuccess(source, JSON.stringify(expected, null, 4)); - } catch (e) { - failures += 1; - reportFailure(source, e.expected, e.actual); - } - } - } - } - } - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }; -} else { - (function () { - 'use strict'; - - var esprima = require('../esprima'), - vm = require('vm'), - fs = require('fs'), - total = 0, - failures = [], - tick = new Date(), - expected, - header; - - vm.runInThisContext(fs.readFileSync(__dirname + '/test.js', 'utf-8')); - - Object.keys(testFixture).forEach(function (category) { - Object.keys(testFixture[category]).forEach(function (source) { - total += 1; - expected = testFixture[category][source]; - try { - runTest(esprima, source, expected); - } catch (e) { - e.source = source; - failures.push(e); - } - }); - }); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }()); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/test.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/test.js deleted file mode 100644 index a96f6e5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/node_modules/esprima/test/test.js +++ /dev/null @@ -1,20903 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -var testFixture = { - - 'Primary Expression': { - - 'this\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'ThisExpression', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Keyword', - value: 'this', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - 'null\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null, - raw: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Null', - value: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '\n 42\n\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - } - }], - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - }, - tokens: [{ - type: 'Numeric', - value: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }] - }, - - '(1 + 2 ) * 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [1, 6], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Grouping Operator': { - - '(1) + (2 ) + 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '4 + 5 << (6)': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 4, - raw: '4', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 5, - raw: '5', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 6, - raw: '6', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Array Initializer': { - - 'x = []': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - tokens: [{ - type: 'Identifier', - value: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Punctuator', - value: '=', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Punctuator', - value: '[', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: ']', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }] - }, - - 'x = [ ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = [ 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'x = [ 42, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x = [ ,, 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [ - null, - null, - { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'x = [ 1, 2, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = [ 1, 2,, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, null, { - type: 'Literal', - value: 3, - raw: '3', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '日本語 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '日本語', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'T\u203F = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u203F', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200C = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200C', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200D = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200D', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161\u200A=\u2009[]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Object Initializer': { - - 'x = {}': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x = { }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = { answer: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'answer', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [6, 16], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 16 } - } - }], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { if: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - kind: 'init', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x = { true: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { false: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - kind: 'init', - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'x = { null: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { "answer": 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'answer', - raw: '"answer"', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 18 } - } - }, - kind: 'init', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }], - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'x = { x: 1, x: 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [ - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - kind: 'init', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [12, 16], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 16 } - } - } - ], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { get width() { return m_width } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'm_width', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - range: [20, 35], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 35 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - kind: 'get', - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }], - range: [4, 38], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'x = { get undef() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'undef', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get if() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { get true() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get false() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get null() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get "undef"() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'undef', - raw: '"undef"', - range: [10, 17], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - kind: 'get', - range: [6, 22], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 22 } - } - }], - range: [4, 24], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'x = { get 10() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { set width(w) { m_width = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_width', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set if(w) { m_if = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_if', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 26], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - kind: 'set', - range: [6, 28], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 28 } - } - }], - range: [4, 30], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'x = { set true(w) { m_true = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_true', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set false(w) { m_false = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_false', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set null(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set "null"(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'null', - raw: '"null"', - range: [10, 16], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 16 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [22, 28], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 32], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 33], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 33 } - } - }], - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set 10(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [18, 24], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 24 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }], - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - kind: 'set', - range: [6, 30], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 30 } - } - }], - range: [4, 32], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'x = { get: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'get', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'x = { set: 43 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'set', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 43, - raw: '43', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'x = { __proto__: 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: '__proto__', - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - kind: 'init', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }], - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'x = {"__proto__": 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: '__proto__', - raw: '"__proto__"', - range: [5, 16], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 16 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - kind: 'init', - range: [5, 19], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get width() { return m_width }, set width(width) { m_width = width; } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'm_width', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - range: [20, 35], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 35 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - kind: 'get', - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [42, 47], - loc: { - start: { line: 1, column: 42 }, - end: { line: 1, column: 47 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'width', - range: [48, 53], - loc: { - start: { line: 1, column: 48 }, - end: { line: 1, column: 53 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_width', - range: [57, 64], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 64 } - } - }, - right: { - type: 'Identifier', - name: 'width', - range: [67, 72], - loc: { - start: { line: 1, column: 67 }, - end: { line: 1, column: 72 } - } - }, - range: [57, 72], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 72 } - } - }, - range: [57, 73], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 73 } - } - }], - range: [55, 75], - loc: { - start: { line: 1, column: 55 }, - end: { line: 1, column: 75 } - } - }, - rest: null, - generator: false, - expression: false, - range: [55, 75], - loc: { - start: { line: 1, column: 55 }, - end: { line: 1, column: 75 } - } - }, - kind: 'set', - range: [38, 75], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 75 } - } - }], - range: [4, 77], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 77 } - } - }, - range: [0, 77], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 77 } - } - }, - range: [0, 77], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 77 } - } - } - - - }, - - 'Comments': { - - '/* block comment */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - - '42 /*The*/ /*Answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - comments: [{ - type: 'Block', - value: 'The', - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Block', - value: 'Answer', - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }] - }, - - '42 /*the*/ /*answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2] - }, - range: [0, 21] - }], - range: [0, 21], - comments: [{ - type: 'Block', - value: 'the', - range: [3, 10] - }, { - type: 'Block', - value: 'answer', - range: [11, 21] - }] - }, - - '42 /* the * answer */': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - '42 /* The * answer */': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - comments: [{ - type: 'Block', - value: ' The * answer ', - range: [3, 21], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 21 } - } - }] - }, - - '/* multiline\ncomment\nshould\nbe\nignored */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - - '/*a\r\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\r\nb', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\rb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\rb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nc*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nc', - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '// line comment\n42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - - '42 // line comment': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - comments: [{ - type: 'Line', - value: ' line comment', - range: [3, 18], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 18 } - } - }] - }, - - '// Hello, world!\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hello, world!\n': { - type: 'Program', - body: [], - range: [17, 17], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hallo, world!\n': { - type: 'Program', - body: [], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hallo, world!', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '//\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '//': { - type: 'Program', - body: [], - range: [2, 2], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '// ': { - type: 'Program', - body: [], - range: [3, 3], - comments: [{ - type: 'Line', - value: ' ', - range: [0, 3] - }] - }, - - '/**/42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - }, - comments: [{ - type: 'Block', - value: '', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '// Hello, world!\n\n// Another hello\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }, - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }], - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Line', - value: ' Another hello', - range: [18, 36], - loc: { - start: { line: 3, column: 0 }, - end: { line: 3, column: 18 } - } - }] - }, - - 'if (x) { // Some comment\ndoThat(); }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [25, 31], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }, - 'arguments': [], - range: [25, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 8 } - } - }, - range: [25, 34], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 9 } - } - }], - range: [7, 36], - loc: { - start: { line: 1, column: 7 }, - end: { line: 2, column: 11 } - } - }, - alternate: null, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - }, - comments: [{ - type: 'Line', - value: ' Some comment', - range: [9, 24], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 24 } - } - }] - }, - - 'switch (answer) { case 42: /* perfect */ bingo() }': { - type: 'Program', - body: [{ - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'bingo', - range: [41, 46], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 46 } - } - }, - 'arguments': [], - range: [41, 48], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 48 } - } - }, - range: [41, 49], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 49 } - } - }], - range: [18, 49], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 49 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - }, - comments: [{ - type: 'Block', - value: ' perfect ', - range: [27, 40], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 40 } - } - }] - } - - }, - - 'Numeric Literals': { - - '0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - '42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '3': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3, - raw: '3', - range: [0, 1] - }, - range: [0, 1] - }], - range: [0, 1], - tokens: [{ - type: 'Numeric', - value: '3', - range: [0, 1] - }] - }, - - '5': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 5, - raw: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - }, - tokens: [{ - type: 'Numeric', - value: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }] - }, - - '.14': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0.14, - raw: '.14', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '3.14159': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3.14159, - raw: '3.14159', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '6.02214179e+23': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 6.02214179e+23, - raw: '6.02214179e+23', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '1.492417830e-10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 1.49241783e-10, - raw: '1.492417830e-10', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '0x0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0x0', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0x0;': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0x0', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0e+100 ': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0e+100', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '0e+100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0e+100', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '0xabc': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xabc, - raw: '0xabc', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0xdef': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xdef, - raw: '0xdef', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X1A': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x1A, - raw: '0X1A', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x10, - raw: '0x10', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x100, - raw: '0x100', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X04': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0X04, - raw: '0X04', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '02': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 2, - raw: '02', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '012', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '0012', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - } - - }, - - 'String Literals': { - - '"Hello"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello', - raw: '"Hello"', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\n\r\t\v\b\f\\\'"\x00', - raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '"\\u0061"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\u0061"', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - '"\\x61"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\x61"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\u00"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'u00', - raw: '"\\u00"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\xt"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'xt', - raw: '"\\xt"', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '"Hello\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\nworld', - raw: '"Hello\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 14 } - } - }, - - '"Hello\\02World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0002World', - raw: '"Hello\\02World"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '"Hello\\012World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000AWorld', - raw: '"Hello\\012World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\122World', - raw: '"Hello\\122World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000A2World', - raw: '"Hello\\0122World"', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '"Hello\\312World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u00CAWorld', - raw: '"Hello\\312World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\412World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\412World', - raw: '"Hello\\412World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\812World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello812World', - raw: '"Hello\\812World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\712World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\712World', - raw: '"Hello\\712World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0000World', - raw: '"Hello\\0World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\r\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\r\nworld"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '"Hello\\1World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0001World', - raw: '"Hello\\1World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - }, - - 'Regular Expression Literals': { - - 'var x = /[a-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-z]/i', - raw: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[x-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5] - }, - init: { - type: 'Literal', - value: '/[x-z]/i', - raw: '/[x-z]/i', - range: [8, 16] - }, - range: [4, 16] - }], - kind: 'var', - range: [0, 16] - }], - range: [0, 16], - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3] - }, { - type: 'Identifier', - value: 'x', - range: [4, 5] - }, { - type: 'Punctuator', - value: '=', - range: [6, 7] - }, { - type: 'RegularExpression', - value: '/[x-z]/i', - range: [8, 16] - }] - }, - - 'var x = /[a-c]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-c]/i', - raw: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[P QR]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/i', - raw: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }, - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }], - kind: 'var', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }], - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }] - }, - - 'var x = /foo\\/bar/': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/foo\\/bar/', - raw: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - }, - - 'var x = /=([^=\\s])+/g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/=([^=\\s])+/g', - raw: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }, - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }], - kind: 'var', - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }] - }, - - 'var x = /[P QR]/\\u0067': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }, - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }] - }, - - 'var x = /[P QR]/\\g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - }, - - 'var x = /42/g.test': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Literal', - value: '/42/g', - raw: '/42/g', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - property: { - type: 'Identifier', - name: 'test', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - } - - }, - - 'Left-Hand-Side Expression': { - - 'new Button': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'new Button()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new new foo': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'new new foo()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'new foo().bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'new foo[bar]': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 12], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new foo.bar()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( new foo).bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - 'arguments': [], - range: [2, 9], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - 'arguments': [], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'foo(bar, baz)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'bar', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Identifier', - name: 'baz', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( foo )()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'universe.milkyway.solarsystem': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'universe.milkyway.solarsystem.Earth': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - property: { - type: 'Identifier', - name: 'Earth', - range: [30, 35], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'universe[galaxyName, otherUselessName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Identifier', - name: 'otherUselessName', - range: [21, 37], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 37 } - } - }], - range: [9, 37], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'universe[galaxyName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'universe[42].galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies(14, 3, 77).milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 14, - raw: '14', - range: [22, 24], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 24 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, { - type: 'Literal', - value: 77, - raw: '77', - range: [29, 31], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'earth.asia.Indonesia.prepareForElection(2014)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'earth', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - property: { - type: 'Identifier', - name: 'asia', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - property: { - type: 'Identifier', - name: 'Indonesia', - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - property: { - type: 'Identifier', - name: 'prepareForElection', - range: [21, 39], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 39 } - } - }, - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 2014, - raw: '2014', - range: [40, 44], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - - 'universe.if': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'if', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'universe.true': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'true', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.false': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'false', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'universe.null': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'null', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - } - - }, - - 'Postfix Expressions': { - - 'x++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'x--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'eval++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'arguments++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'arguments--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - } - - }, - - 'Unary Operators': { - - '++x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '--x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '++eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '--eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '++arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '--arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '+x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '+', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '-x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '-', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '~x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '~', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '!x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '!', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - 'void x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'void', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'delete x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'typeof x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'typeof', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - } - - }, - - 'Multiplicative Operators': { - - 'x * y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x / y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x % y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Additive Operators': { - - 'x + y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x - y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '"use strict" + 42': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - } - - }, - - 'Bitwise Shift Operator': { - - 'x << y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >>> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Relational Operators': { - - 'x < y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x > y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x <= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x in y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x instanceof y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'instanceof', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x < y < z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Equality Operators': { - - 'x == y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x != y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x === y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '===', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x !== y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Binary Bitwise Operators': { - - 'x & y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x ^ y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x | y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Binary Expressions': { - - 'x + y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x % y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x << y << z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x | y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x ^ y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Binary Logical Operators': { - - 'x || y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x && y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x || y || z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x && y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [5, 11], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - } - - }, - - 'Conditional Operator': { - - 'y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'Identifier', - name: 'y', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x && y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - - }, - - 'Assignment Operators': { - - 'x = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'arguments = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x *= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '*=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x /= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '/=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x %= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '%=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x += 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '+=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x -= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '-=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x <<= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '<<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x &= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '&=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x ^= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '^=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x |= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '|=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Complex Expression': { - - 'a || b && c | d ^ e & f == g < h >>> i + j * k': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'a', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'b', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'c', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'd', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'e', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - right: { - type: 'BinaryExpression', - operator: '==', - left: { - type: 'Identifier', - name: 'f', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'g', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'BinaryExpression', - operator: '>>>', - left: { - type: 'Identifier', - name: 'h', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - right: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'i', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'j', - range: [41, 42], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 42 } - } - }, - right: { - type: 'Identifier', - name: 'k', - range: [45, 46], - loc: { - start: { line: 1, column: 45 }, - end: { line: 1, column: 46 } - } - }, - range: [41, 46], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 46 } - } - }, - range: [37, 46], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 46 } - } - }, - range: [31, 46], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 46 } - } - }, - range: [27, 46], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 46 } - } - }, - range: [22, 46], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 46 } - } - }, - range: [18, 46], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 46 } - } - }, - range: [14, 46], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 46 } - } - }, - range: [10, 46], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 46 } - } - }, - range: [5, 46], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 46 } - } - }, - range: [0, 46], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 46 } - } - }, - range: [0, 46], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 46 } - } - } - - }, - - 'Block': { - - '{ foo }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'foo', - range: [2, 5], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 5 } - } - }, - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '{ doThis(); doThat(); }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThis', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [2, 10], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 10 } - } - }, - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [12, 18], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 18 } - } - }, - 'arguments': [], - range: [12, 20], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 20 } - } - }, - range: [12, 21], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '{}': { - type: 'BlockStatement', - body: [], - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - } - - }, - - 'Variable Statement': { - - 'var x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'var x, y;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - init: null, - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }], - kind: 'var', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'var x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'var eval = 42, arguments = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [4, 8], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 8 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var x = 14, y = 3, z = 1977': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [12, 17], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 17 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'var implements, interface, package': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'implements', - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - init: null, - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'interface', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - init: null, - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'package', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - init: null, - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var private, protected, public, static': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'private', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - init: null, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'protected', - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'public', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - init: null, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'static', - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }, - init: null, - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - } - - }, - - 'Let Statement': { - - 'let x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'let', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '{ let x }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: null, - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }], - kind: 'let', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - '{ let x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'let', - range: [2, 13], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 13 } - } - }], - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '{ let x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }, - range: [21, 29], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 29 } - } - }], - kind: 'let', - range: [2, 30], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 30 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - } - - }, - - 'Const Statement': { - - 'const x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'const', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - '{ const x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }], - kind: 'const', - range: [2, 15], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 15 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '{ const x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - kind: 'const', - range: [2, 32], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 32 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - } - - }, - - 'Empty Statement': { - - ';': { - type: 'EmptyStatement', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - } - - }, - - 'Expression Statement': { - - 'x': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - 'x, y': { - type: 'ExpressionStatement', - expression: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Identifier', - name: 'y', - range: [3, 4], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 4 } - } - }], - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'a', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'a\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\\u0061a': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\\u0061a ': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - } - }, - - 'If Statement': { - - 'if (morning) goodMorning()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - alternate: null, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'if (morning) (function(){})': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [24, 26], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 26 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) var x = 0;': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [17, 22], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [13, 23], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 23 } - } - }, - alternate: null, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'if (morning) function a(){}': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'a', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 27], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) goodMorning(); else goodDay()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodDay', - range: [33, 40], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 42], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 42 } - } - } - - }, - - 'Iteration Statements': { - - 'do keep(); while (true)': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'do keep(); while (true);': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'do { x++; y--; } while (x < 10)': { - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - prefix: false, - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - range: [5, 9], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 9 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - prefix: false, - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }], - range: [3, 16], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 16 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [28, 30], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 30 } - } - }, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - '{ do { } while (false) false }': { - type: 'BlockStatement', - body: [{ - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [], - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - test: { - type: 'Literal', - value: false, - raw: 'false', - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, - range: [2, 22], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 22 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: false, - raw: 'false', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - range: [23, 29], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 29 } - } - }], - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'while (true) doSomething()': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doSomething', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (x < 10) { x++; y--; }': { - type: 'WhileStatement', - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [7, 13], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [17, 21], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 21 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [22, 25], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 25 } - } - }, - range: [22, 26], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 26 } - } - }], - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'for(;;);': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'for(;;){}': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BlockStatement', - body: [], - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'for(x = 0;;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'for(var x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'var', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(let x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'let', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(var x = 0, y = 1;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - init: { - type: 'Literal', - value: 1, - raw: '1', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }], - kind: 'var', - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: null, - body: { - type: 'EmptyStatement', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'for(x = 0; x < 42; x++);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42; x++) process(x);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [24, 31], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 31 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'for(x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [15, 22], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 22 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }], - range: [15, 25], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 25 } - } - }, - range: [15, 26], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 26 } - } - }, - each: false, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'for (var x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (var x = 42 in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }], - kind: 'var', - range: [5, 15], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [19, 23], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [25, 32], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [25, 35], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 35 } - } - }, - range: [25, 36], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (let x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'let', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (var i = function() { return 10 in [] } in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'i', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Literal', - value: 10, - raw: '10', - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 43], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 43 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 43 } - } - }, - range: [9, 43], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [5, 43], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 43 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [47, 51], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 51 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [53, 60], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 60 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [61, 62], - loc: { - start: { line: 1, column: 61 }, - end: { line: 1, column: 62 } - } - }], - range: [53, 63], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 63 } - } - }, - range: [53, 64], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 64 } - } - }, - each: false, - range: [0, 64], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 64 } - } - } - - }, - - 'continue statement': { - - 'while (true) { continue; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (true) { continue }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 25], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 25 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'done: while (true) { continue done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 36], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 36 } - } - }, - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'done: while (true) { continue done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 37], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 37 } - } - }, - range: [6, 37], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - }, - - '__proto__: while (true) { continue __proto__; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [35, 44], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 44 } - } - }, - range: [26, 45], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 45 } - } - }], - range: [24, 47], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 47 } - } - }, - range: [11, 47], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 47 } - } - }, - range: [0, 47], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 47 } - } - } - - }, - - 'break statement': { - - 'while (true) { break }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: null, - range: [15, 21], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 21 } - } - } - ], - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'done: while (true) { break done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 33], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 33 } - } - }, - range: [6, 33], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 33 } - } - }, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'done: while (true) { break done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - '__proto__: while (true) { break __proto__; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [32, 41], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 41 } - } - }, - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 44], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 44 } - } - }, - range: [11, 44], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 44 } - } - }, - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - } - } - - }, - - 'return statement': { - - '(function(){ return })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 21], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '(function(){ return; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 22], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 22], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function(){ return x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - '(function(){ return x * y })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - } - ], - range: [11, 27], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 27], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - } - }, - - 'with statement': { - - 'with (x) foo = bar': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'with (x) foo = bar;': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'with (x) { foo = bar }': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }], - range: [9, 22], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - } - - }, - - 'switch statement': { - - 'switch (x) {}': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'switch (answer) { case 42: hi(); break; }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'switch (answer) { case 42: hi(); break; default: break }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }, { - type: 'SwitchCase', - test: null, - consequent: [{ - type: 'BreakStatement', - label: null, - range: [49, 55], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 55 } - } - }], - range: [40, 55], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 56], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 56 } - } - } - - }, - - 'Labelled Statements': { - - 'start: for (;;) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - range: [16, 27], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 27 } - } - }, - range: [7, 27], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'start: while (true) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - range: [7, 31], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 31 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - '__proto__: test': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: '__proto__', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'test', - range: [11, 15], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 15 } - } - }, - range: [11, 15], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - } - - }, - - 'throw statement': { - - 'throw x;': { - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'throw x * y': { - type: 'ThrowStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'throw { message: "Error" }': { - type: 'ThrowStatement', - argument: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'message', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'Literal', - value: 'Error', - raw: '"Error"', - range: [17, 24], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 24 } - } - }, - kind: 'init', - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - range: [6, 26], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - } - - }, - - 'try statement': { - - 'try { } catch (e) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [18, 21], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 21 } - } - }, - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }], - finalizer: null, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'try { } catch (eval) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [15, 19], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 19 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - finalizer: null, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'try { } catch (arguments) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, - range: [8, 29], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 29 } - } - }], - finalizer: null, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'try { } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }], - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }], - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [8, 28], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 28 } - } - }], - finalizer: null, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'try { } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [18, 25], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - range: [18, 33], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 33 } - } - }], - range: [16, 34], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'try { doThat(); } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: null, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [49, 56], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 56 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [57, 62], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 62 } - } - }], - range: [49, 63], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 63 } - } - }, - range: [49, 64], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 64 } - } - }], - range: [47, 65], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 65 } - } - }, - range: [0, 65], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 65 } - } - } - - }, - - 'debugger statement': { - - 'debugger;': { - type: 'DebuggerStatement', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Function Definition': { - - 'function hello() { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [19, 24], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [19, 26], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 26 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - range: [17, 29], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 29 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'function eval() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'function arguments() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'function test(t, t) { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'test', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, { - type: 'Identifier', - name: 't', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function test(t, t) { })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'test', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 't', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'function eval() { function inner() { "use strict" } }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'inner', - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\"use strict\"', - range: [37, 49], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 49 } - } - }, - range: [37, 50], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 50 } - } - }], - range: [35, 51], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 51 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 51], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 51 } - } - }], - range: [16, 53], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 53 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 53], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 53 } - } - }, - - 'function hello(a) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [], - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - range: [20, 28], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 28 } - } - }], - range: [18, 30], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'function hello(a, b) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 'b', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - 'arguments': [], - range: [23, 30], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 30 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'var hi = function() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [], - range: [22, 29], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 29 } - } - }, - range: [22, 30], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 30 } - } - }], - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 31], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 31 } - } - }, - range: [4, 31], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'var hi = function eval() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 28], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 28 } - } - }, - range: [4, 28], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 28 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var hi = function arguments() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 33], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 33 } - } - }, - range: [4, 33], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 33 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var hello = function hi() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hello', - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'hi', - range: [21, 23], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [28, 33], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [], - range: [28, 35], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 35 } - } - }, - range: [28, 36], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 36 } - } - }], - range: [26, 37], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [12, 37], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 37 } - } - }, - range: [4, 37], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 37 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - '(function(){})': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 13], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'function universe(__proto__) { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'universe', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - params: [{ - type: 'Identifier', - name: '__proto__', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [29, 32], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'function test() { "use strict" + 42; }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'test', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [18, 30], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 30 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - range: [18, 35], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 35 } - } - }, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }], - range: [16, 38], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - } - - }, - - 'Automatic semicolon insertion': { - - '{ x\n++y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '{ x\n--y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - 'var x /* comment */;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - '{ var x = 14, y = 3\nz; }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }], - kind: 'var', - range: [2, 20], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'z', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 4 } - } - }, - - 'while (true) { continue\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 32], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [35, 40], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [35, 41], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [47, 52], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [47, 53], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 55], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - 'while (true) { break\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [21, 26], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [21, 27], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 29], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [32, 37], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [32, 38], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [44, 49], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [44, 50], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 52], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 52], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - '(function(){ return\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return // Comment\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [31, 32], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [31, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 35], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 35], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return/* Multiline\nComment */x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [42, 43], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 11 } - } - }, - range: [42, 44], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 12 } - } - } - ], - range: [11, 46], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 14 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 46], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 47], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '{ throw error\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 14], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [14, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [14, 20], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error// Comment\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 24], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error/* Multiline\nComment */error; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 36], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 10 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [36, 41], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [36, 42], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - } - - }, - - 'Source elements': { - - '': { - type: 'Program', - body: [], - range: [0, 0], - loc: { - start: { line: 0, column: 0 }, - end: { line: 0, column: 0 } - }, - tokens: [] - } - }, - - 'Source option': { - 'x + y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 }, - source: '42.js' - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 }, - source: '42.js' - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 }, - source: '42.js' - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 }, - source: '42.js' - } - }, - - 'a + (b < (c * d)) + e': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'a', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 }, - source: '42.js' - } - }, - right: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'b', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 }, - source: '42.js' - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'c', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'd', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 }, - source: '42.js' - } - }, - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 }, - source: '42.js' - } - }, - range: [5, 16], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 16 }, - source: '42.js' - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 }, - source: '42.js' - } - }, - right: { - type: 'Identifier', - name: 'e', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 }, - source: '42.js' - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 }, - source: '42.js' - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 }, - source: '42.js' - } - } - - }, - - - 'Invalid syntax': { - - '{': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '}': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token }' - }, - - '3ea': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in []': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e+': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e-': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x0': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '09': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '018': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '01a': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in[]': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x3in[]': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"Hello\nWorld"': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u005c': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u002a': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var x = /(s/g': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Invalid regular expression' - }, - - 'a\\u': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\ua': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '/test': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = /[a-z]/\\ux': { - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Invalid regular expression' - }, - - '3 = 4': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'func() = 4': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '(1 + 1) = 10': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1++': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1--': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '++1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '--1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'for((1 + 1) in list) process(x);': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - '[': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '[,': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + {': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t ': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t,': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'var x = /\n/': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = "\n': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var if = 42': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token if' - }, - - 'i #= 42': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'i + 2 = 42': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '+i = 42': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1 + (': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '\n\n\n{': { - index: 4, - lineNumber: 4, - column: 2, - message: 'Error: Line 4: Unexpected end of input' - }, - - '\n/* Some multiline\ncomment */\n)': { - index: 30, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token )' - }, - - '{ set 1 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '{ get 2 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '({ set: s(if) { } })': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token if' - }, - - '({ set s(.) { } })': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token .' - }, - - '({ set: s() { } })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ set: s(a, b) { } })': { - index: 16, - lineNumber: 1, - column: 17, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get: g(d) { } })': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get i() { }, i: 42 })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, get i() { } })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ set i(x) { }, i: 42 })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, set i(x) { } })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ get i() { }, get i() { } })': { - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - '({ set i(x) { }, set i(x) { } })': { - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - 'function t(if) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token if' - }, - - 'function t(true) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function t(false) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function t(null) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function null() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function true() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function false() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function if() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a b;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected identifier' - }, - - 'if.a;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token .' - }, - - 'a if;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a class;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected reserved word' - }, - - 'break\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'break 1;': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - 'continue\n': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'continue 2;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected number' - }, - - 'throw': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'throw;': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'throw\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal newline after throw' - }, - - 'for (var i, i2 in {});': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token in' - }, - - 'for ((i in {}));': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'for (i + 1 in {});': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'for (+i in {});': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'if(false)': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'if(false) doThis(); else': { - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'do': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'while(false)': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'for(;;)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'with(x)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'try { }': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Missing catch or finally after try' - }, - - '\u203F = 10': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'const x = 12, y;': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'const x, y = 12;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ,' - }, - - 'const x;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'if(true) let a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token let' - }, - - 'if(true) const a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token const' - }, - - 'switch (c) { default: default: }': { - index: 30, - lineNumber: 1, - column: 31, - message: 'Error: Line 1: More than one default clause in switch statement' - }, - - 'new X()."s"': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Unexpected string' - }, - - '/*': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n\n': { - index: 5, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token ILLEGAL' - }, - - '/**': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n*': { - index: 5, - lineNumber: 3, - column: 2, - message: 'Error: Line 3: Unexpected token ILLEGAL' - }, - - '/*hello': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*hello *': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\n]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r\n]': { - index: 2, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\n\r]': { - index: 2, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '//\r\n]': { - index: 4, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '//\n\r]': { - index: 4, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/a\\\n/': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '//\r \n]': { - index: 5, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r\n*/]': { - index: 6, - lineNumber: 2, - column: 3, - message: 'Error: Line 2: Unexpected token ]' - }, - - '/*\n\r*/]': { - index: 6, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r \n*/]': { - index: 7, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '\\\\': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u005c': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - - '\\x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u0000': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200C = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200D = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\u': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'try { } catch() {}': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'return': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }, - - 'break': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'continue': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'switch (x) { default: continue; }': { - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'do { x } *': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token *' - }, - - 'while (true) { break x; }': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'while (true) { continue x; }': { - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break x; }); }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { continue x; }); }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break; }); }': { - index: 39, - lineNumber: 1, - column: 40, - message: 'Error: Line 1: Illegal break statement' - }, - - 'x: while (true) { (function () { continue; }); }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'x: while (true) { x: while (true) { } }': { - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Label \'x\' has already been declared' - }, - - '(function () { \'use strict\'; delete i; }())': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }, - - '(function () { \'use strict\'; with (i); }())': { - index: 28, - lineNumber: 1, - column: 29, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }, - - 'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': { - index: 73, - lineNumber: 1, - column: 74, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; var eval = 10; }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; var arguments = 10; }': { - index: 45, - lineNumber: 1, - column: 46, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (eval) { } }': { - index: 51, - lineNumber: 1, - column: 52, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (arguments) { } }': { - index: 56, - lineNumber: 1, - column: 57, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; eval = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; arguments = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ++eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; ++arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval++; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval--; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments++; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments--; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; function eval() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; function arguments() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function eval() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function arguments() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function eval() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function arguments() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function eval() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function arguments() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function eval() { } }); }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function package() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ set s(eval) { } }); }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': { - index: 49, - lineNumber: 1, - column: 50, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(eval) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(arguments) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(eval) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(arguments) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - ' "\\1"; \'use strict\';': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; "\\1"; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; 021; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ "\\1": 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ 021: 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': { - index: 52, - lineNumber: 1, - column: 53, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; var implements; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var interface; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var package; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var private; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var protected; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var public; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var static; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var yield; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var let; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello(static) { "use strict"; }': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function static() { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function eval(a) { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function arguments(a) { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'var yield': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token yield' - }, - - 'var let': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token let' - }, - - '"use strict"; function static() { }': { - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a(t, t) { "use strict"; }': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a(eval) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function a(package) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a() { "use strict"; function b(t, t) { }; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(t, t) { "use strict"; })': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a() { "use strict"; (function b(t, t) { }); }': { - index: 44, - lineNumber: 1, - column: 45, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(eval) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - '(function a(package) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - '__proto__: __proto__: 42;': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Label \'__proto__\' has already been declared' - }, - - '"use strict"; function t(__proto__, __proto__) { }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '"use strict"; x = { __proto__: 42, __proto__: 43 }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - '"use strict"; x = { get __proto__() { }, __proto__: 43 }': { - index: 54, - lineNumber: 1, - column: 55, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - 'var': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'let': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'const': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '{ ; ; ': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'function t() { ; ; ': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Unexpected end of input' - } - - }, - - 'API': { - 'parse()': { - call: 'parse', - args: [], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(null)': { - call: 'parse', - args: [null], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null, - raw: 'null' - } - }] - } - }, - - 'parse(42)': { - call: 'parse', - args: [42], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42' - } - }] - } - }, - - 'parse(true)': { - call: 'parse', - args: [true], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true, - raw: 'true' - } - }] - } - }, - - 'parse(undefined)': { - call: 'parse', - args: [void 0], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(new String("test"))': { - call: 'parse', - args: [new String('test')], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'test' - } - }] - } - }, - - 'parse(new Number(42))': { - call: 'parse', - args: [new Number(42)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42' - } - }] - } - }, - - 'parse(new Boolean(true))': { - call: 'parse', - args: [new Boolean(true)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true, - raw: 'true' - } - }] - } - }, - - 'Syntax': { - property: 'Syntax', - result: { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - } - } - - }, - - 'Tolerant parse': { - 'return': { - type: 'Program', - body: [{ - type: 'ReturnStatement', - 'argument': null, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - errors: [{ - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }] - }, - - '(function () { \'use strict\'; with (i); }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - body: { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - range: [29, 38], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 38 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 40 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 40], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [1, 42], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }] - }, - - '(function () { \'use strict\'; 021 }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 17, - raw: "021", - range: [29, 32], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 32 } - } - }, - range: [29, 33], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 33 } - } - }], - range: [13, 34], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 34], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 34 } - } - }, - 'arguments': [], - range: [1, 36], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - }], - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; delete x': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }] - }, - - '"use strict"; try {} catch (eval) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [28, 32], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 32 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [34, 36], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 36 } - } - }, - range: [21, 36], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 36 } - } - }], - finalizer: null, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; try {} catch (arguments) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [28, 37], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 37 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [21, 41], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 41 } - } - }], - finalizer: null, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - init: null, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; eval = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; eval++;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; --eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [16, 20], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 20 } - } - }, - prefix: true, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; arguments = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 27], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; arguments--;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; ++arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - prefix: true, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - - '"use strict";x={y:1,y:1}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - kind: 'init', - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - kind: 'init', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }], - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }] - }, - - '"use strict"; function eval() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 32], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 32], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 32 } - } - }, { - type: 'EmptyStatement', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function arguments() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function interface() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'interface', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; (function eval() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [24, 28], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 28 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 33], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 33 } - } - }, - range: [14, 35], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 35 } - } - }], - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function arguments() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function interface() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'interface', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; function f(eval) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 33], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 33 } - } - }, { - type: 'EmptyStatement', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(arguments) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [25, 34], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(foo, foo) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [31, 34], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; (function f(eval) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 34], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 34 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - - '"use strict"; (function f(arguments) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [26, 35], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; (function f(foo, foo) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [32, 35], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; x = { set f(eval) {} }' : { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value : { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - type: 'Program', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'octal directive\u0001', - raw: '"octal directive\\1"', - range: [19, 38], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 38 } - } - }, - range: [19, 39], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 39 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [40, 52], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 52 } - } - }, - range: [40, 53], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 53 } - } - }], - range: [17, 55], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 55 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - }, - errors: [{ - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"\\1"; \'use strict\';': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\u0001', - raw: '"\\1"', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }, - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - }, - errors: [{ - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { 014: 3}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 12, - raw: '014', - range: [24, 27], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 27 } - } - }, - value: { - type: 'Literal', - value: 3, - raw: '3', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - kind: 'init', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }], - range: [22, 31], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 31 } - } - }, - range: [18, 31], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [14, 31], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { get i() {}, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'get', - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [40, 41], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 41 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - rest: null, - generator: false, - expression: false, - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - kind: 'get', - range: [36, 46], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 46 } - } - }], - range: [22, 48], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 48 } - } - }, - range: [18, 48], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 48 } - } - }], - kind: 'var', - range: [14, 48], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 48 } - } - }], - range: [0, 48], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 48 } - }, - errors: [{ - index: 46, - lineNumber: 1, - column: 47, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }] - }, - - '"use strict"; var x = { i: 42, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - kind: 'init', - range: [24, 29], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - rest: null, - generator: false, - expression: false, - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - kind: 'get', - range: [31, 41], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 41 } - } - }], - range: [22, 43], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 43 } - } - }, - range: [18, 43], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [14, 43], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - }, - - '"use strict"; var x = { set i(x) {}, i: 42 }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'x', - range: [30, 31], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 31 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - rest: null, - generator: false, - expression: false, - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - kind: 'set', - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [40, 42], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 42 } - } - }, - kind: 'init', - range: [37, 42], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 42 } - } - }], - range: [22, 44], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 44 } - } - }, - range: [18, 44], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 44 } - } - }], - kind: 'var', - range: [14, 44], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - }, - errors: [{ - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - - - } - - - } -}; - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/package.json b/node_modules/brfs/node_modules/static-module/node_modules/falafel/package.json deleted file mode 100644 index 9e4fd50..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "falafel", - "description": "transform the ast on a recursive walk", - "version": "0.3.1", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-falafel.git" - }, - "main": "index.js", - "keywords": [ - "ast", - "source", - "traversal", - "syntax", - "tree", - "burrito" - ], - "directories": { - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tape test/*.js" - }, - "devDependencies": { - "tape": "~1.0.4" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "testling": { - "files": "test/*.js", - "browsers": { - "iexplore": [ - "6.0", - "7.0", - "8.0", - "9.0" - ], - "chrome": [ - "20.0" - ], - "firefox": [ - "10.0", - "15.0" - ], - "safari": [ - "5.1" - ], - "opera": [ - "12.0" - ] - } - }, - "bugs": { - "url": "https://github.com/substack/node-falafel/issues" - }, - "bundleDependencies": [ - "esprima" - ], - "_id": "falafel@0.3.1", - "dist": { - "shasum": "f3546748814f7d09543d19f2fb3d6090f136853d", - "tarball": "http://registry.npmjs.org/falafel/-/falafel-0.3.1.tgz" - }, - "_from": "falafel@>=0.3.1 <0.4.0", - "_npmVersion": "1.3.0", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "_shasum": "f3546748814f7d09543d19f2fb3d6090f136853d", - "_resolved": "https://registry.npmjs.org/falafel/-/falafel-0.3.1.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/substack/node-falafel", - "dependencies": { - "esprima": "*" - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/readme.markdown b/node_modules/brfs/node_modules/static-module/node_modules/falafel/readme.markdown deleted file mode 100644 index c543498..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/readme.markdown +++ /dev/null @@ -1,164 +0,0 @@ -# falafel - -Transform the [ast](http://en.wikipedia.org/wiki/Abstract_syntax_tree) on a -recursive walk. - -[![browser support](http://ci.testling.com/substack/node-falafel.png)](http://ci.testling.com/substack/node-falafel) - -[![build status](https://secure.travis-ci.org/substack/node-falafel.png)](http://travis-ci.org/substack/node-falafel) - -This module is like [burrito](https://github.com/substack/node-burrito), -except that it uses [esprima](http://esprima.org) instead of -[uglify](https://github.com/mishoo/UglifyJS) -for friendlier-looking ast nodes. - -![falafel döner](http://substack.net/images/falafel.png) - -# example - -## array.js - -Put a function wrapper around all array literals. - -``` js -var falafel = require('falafel'); - -var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - console.dir([ xs, ys ]); -} + ')()'; - -var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } -}); -console.log(output); -``` - -output: - -``` -(function () { - var xs = fn([ 1, 2, fn([ 3, 4 ]) ]); - var ys = fn([ 5, 6 ]); - console.dir(fn([ xs, ys ])); -})() -``` - -## custom keyword - -Creating custom keywords is super simple! - -This example creates a new `beep` keyword that uppercases its arguments: - -``` js -var falafel = require('falafel'); -var src = 'console.log(beep "boop", "BOOP");'; - -function isKeyword (id) { - if (id === 'beep') return true; -} - -var output = falafel(src, { isKeyword: isKeyword }, function (node) { - if (node.type === 'UnaryExpression' - && node.keyword === 'beep') { - node.update( - 'String(' + node.argument.source() + ').toUpperCase()' - ); - } -}); -console.log(output); -``` - -Now the source string `console.log(beep "boop", "BOOP");` is converted to: - -``` -$ node example/keyword.js -console.log(String("boop").toUpperCase(), "BOOP"); -``` - -which we can execute: - -``` -$ node example/keyword.js | node -BOOP BOOP -``` - -Neat! - -# methods - -``` js -var falafel = require('falafel') -``` - -## falafel(src, opts={}, fn) - -Transform the string source `src` with the function `fn`, returning a -string-like transformed output object. - -For every node in the ast, `fn(node)` fires. The recursive walk is a -pre-traversal, so children get called before their parents. - -Performing a pre-traversal makes it easier to write nested transforms since -transforming parents often requires transforming all its children first. - -The return value is string-like (it defines `.toString()` and `.inspect()`) so -that you can call `node.update()` asynchronously after the function has -returned and still capture the output. - -Instead of passing a `src` you can also use `opts.source`. - -All of the `opts` will be passed directly to esprima except for `'range'` which -is always turned on because falafel needs it. - -Some of the options you might want from esprima includes: -`'loc'`, `'raw'`, `'comments'`, `'tokens'`, and `'tolerant'`. - -falafel uses a custom patch of esprima with support for an `opts.isKeyword()` -function. When `opts.isKeyword(id)` returns `true`, the string `id` will be -treated as a keyword. You can use this behavior to create custom unary -expression keywords. - -An `opts.isKeyword(id)` value that is a string will be mapped to existing types. -The only currently supported string value is `"block"`. - -# nodes - -Aside from the regular [esprima](http://esprima.org) data, you can also call -some inserted methods on nodes. - -Aside from updating the current node, you can also reach into sub-nodes to call -update functions on children from parent nodes. - -## node.source() - -Return the source for the given node, including any modifications made to -children nodes. - -## node.update(s) - -Transform the source for the present node to the string `s`. - -Note that in `'ForStatement'` node types, there is an existing subnode called -`update`. For those nodes all the properties are copied over onto the -`node.update()` function. - -## node.parent - -Reference to the parent element or `null` at the root element. - -# install - -With [npm](http://npmjs.org) do: - -``` -npm install falafel -``` - -# license - -MIT - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/array.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/array.js deleted file mode 100644 index 3680cab..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/array.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('../'); -var test = require('tape'); - -test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/async.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/async.js deleted file mode 100644 index 780efcf..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/async.js +++ /dev/null @@ -1,42 +0,0 @@ -var falafel = require('../'); -var test = require('tape'); - -test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var pending = 0; - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - pending ++; - setTimeout(function () { - node.update('fn(' + node.source() + ')'); - if (--pending === 0) check(); - }, 50 * pending * 2); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - function check () { - Function([ 'fn', 'g' ], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); - } -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/for.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/for.js deleted file mode 100644 index 8ad19a0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/for.js +++ /dev/null @@ -1,28 +0,0 @@ -var falafel = require('../'); -var test = require('tape'); - -test('for loop', function (t) { - t.plan(3); - - var src = '(' + function () { - var sum = 0; - for (var i = 0; i < 10; i++) { - sum += i; - } - return sum; - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ForStatement') { - t.equal(node.update.source(), 'i++'); - node.update.update('i+=2'); - } - if (node.type === 'UpdateExpression') { - t.equal(node.source(), 'i++'); - } - }); - - var res = Function('return ' + output)(); - t.equal(res, 2 + 4 + 6 + 8); - //t.equal(res, 222 + 4 + 6 + 8); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/keyword.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/keyword.js deleted file mode 100644 index a102586..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/keyword.js +++ /dev/null @@ -1,64 +0,0 @@ -var falafel = require('../'); -var test = require('tape'); - -test('custom keyword', function (t) { - t.plan(2); - - var src = 't.equal(beep "boop", "BOOP");'; - var opts = { - isKeyword: function (id) { - if (id === 'beep') return true; - } - }; - - var output = falafel(src, opts, function (node) { - if (node.type === 'UnaryExpression' - && node.operator === 'beep') { - node.update( - 'String(' + node.argument.source() + ').toUpperCase()' - ); - t.equal(node.operator, node.keyword); - } - }); - Function('t', output)(t); -}); - -test('block keyword', function (t) { - t.plan(4); - - var src = 'server { where.push("server") } client { where.push("client") }'; - var output = falafel(src, { isKeyword: isKeyword }, function (node) { - if (node.keyword === 'server') { - node.update('if (SERVER) {' + source(node.body) + '}'); - } - else if (node.keyword === 'client') { - node.update('if (CLIENT) {' + source(node.body) + '}'); - } - }); - - var where; - - where = []; - Function('CLIENT', 'SERVER', 'where', output)(true, false, where); - t.deepEqual(where, ['client']); - - where = []; - Function('CLIENT', 'SERVER', 'where', output)(false, true, where); - t.deepEqual(where, ['server']); - - where = []; - Function('CLIENT', 'SERVER', 'where', output)(true, true, where); - t.deepEqual(where, ['server', 'client']); - - where = []; - Function('CLIENT', 'SERVER', 'where', output)(false, false, where); - t.deepEqual(where, []); - - function isKeyword (id) { - if (id === 'server' || id === 'client') return 'block'; - } - - function source (xs) { - return xs.map(function (x) { return x.source() }).join(''); - } -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/parent.js b/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/parent.js deleted file mode 100644 index ae10fea..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/falafel/test/parent.js +++ /dev/null @@ -1,33 +0,0 @@ -var falafel = require('../'); -var test = require('tape'); - -test('parent', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, 3 ]; - fn(ys); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - t.equal(node.parent.type, 'VariableDeclarator'); - t.equal( - ffBracket(node.parent.source()), - 'xs = [ 1, 2, 3 ]' - ); - t.equal(node.parent.parent.type, 'VariableDeclaration'); - t.equal( - ffBracket(node.parent.parent.source()), - 'var xs = [ 1, 2, 3 ];' - ); - node.parent.update('ys = 4;'); - } - }); - - Function(['fn'], output)(function (x) { t.equal(x, 4) }); -}); - -function ffBracket (s) { - return s.replace(/\[\s*/, '[ ').replace(/\s*\]/, ' ]'); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -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/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/all.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/all.js deleted file mode 100644 index 6d2d4be..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/all.js +++ /dev/null @@ -1,17 +0,0 @@ -var inspect = require('../'); -var holes = [ 'a', 'b' ]; -holes[4] = 'e', holes[6] = 'g'; -var obj = { - a: 1, - b: [ 3, 4, undefined, null ], - c: undefined, - d: null, - e: { - regex: /^x/i, - buf: new Buffer('abc'), - holes: holes - }, - now: new Date -}; -obj.self = obj; -console.log(inspect(obj)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/circular.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/circular.js deleted file mode 100644 index 1006d0c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/circular.js +++ /dev/null @@ -1,4 +0,0 @@ -var inspect = require('../'); -var obj = { a: 1, b: [3,4] }; -obj.c = obj; -console.log(inspect(obj)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/fn.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/fn.js deleted file mode 100644 index 4c00ba6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/fn.js +++ /dev/null @@ -1,3 +0,0 @@ -var inspect = require('../'); -var obj = [ 1, 2, function f (n) { return n + 5 }, 4 ]; -console.log(inspect(obj)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/inspect.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/inspect.js deleted file mode 100644 index b5ad4d1..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/example/inspect.js +++ /dev/null @@ -1,7 +0,0 @@ -var inspect = require('../'); - -var d = document.createElement('div'); -d.setAttribute('id', 'beep'); -d.innerHTML = 'woooiiiii'; - -console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/index.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/index.js deleted file mode 100644 index 2fa2225..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/index.js +++ /dev/null @@ -1,127 +0,0 @@ -module.exports = function inspect_ (obj, opts, depth, seen) { - if (!opts) opts = {}; - - var maxDepth = opts.depth === undefined ? 5 : opts.depth; - if (depth === undefined) depth = 0; - if (depth > maxDepth && maxDepth > 0) return '...'; - - if (seen === undefined) seen = []; - else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect (value, from) { - if (from) { - seen = seen.slice(); - seen.push(from); - } - return inspect_(value, opts, depth + 1, seen); - } - - if (typeof obj === 'string') { - return inspectString(obj); - } - else if (typeof obj === 'function') { - var name = nameOf(obj); - return '[Function' + (name ? ': ' + name : '') + ']'; - } - else if (obj === null) { - return 'null'; - } - else if (isElement(obj)) { - var s = '<' + String(obj.nodeName).toLowerCase(); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '="' + quote(attrs[i].value) + '"'; - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) s += '...'; - s += ''; - return s; - } - else if (isArray(obj)) { - if (obj.length === 0) return '[]'; - var xs = Array(obj.length); - for (var i = 0; i < obj.length; i++) { - xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; - } - return '[ ' + xs.join(', ') + ' ]'; - } - else if (typeof obj === 'object' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - else if (typeof obj === 'object' && !isDate(obj) && !isRegExp(obj)) { - var xs = [], keys = []; - for (var key in obj) { - if (has(obj, key)) keys.push(key); - } - keys.sort(); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (/[^\w$]/.test(key)) { - xs.push(inspect(key) + ': ' + inspect(obj[key], obj)); - } - else xs.push(key + ': ' + inspect(obj[key], obj)); - } - if (xs.length === 0) return '{}'; - return '{ ' + xs.join(', ') + ' }'; - } - else return String(obj); -}; - -function quote (s) { - return String(s).replace(/"/g, '"'); -} - -function isArray (obj) { - return {}.toString.call(obj) === '[object Array]'; -} - -function isDate (obj) { - return {}.toString.call(obj) === '[object Date]'; -} - -function isRegExp (obj) { - return {}.toString.call(obj) === '[object RegExp]'; -} - -function has (obj, key) { - if (!{}.hasOwnProperty) return key in obj; - return {}.hasOwnProperty.call(obj, key); -} - -function nameOf (f) { - if (f.name) return f.name; - var m = f.toString().match(/^function\s*([\w$]+)/); - if (m) return m[1]; -} - -function indexOf (xs, x) { - if (xs.indexOf) return xs.indexOf(x); - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} - -function isElement (x) { - if (!x || typeof x !== 'object') return false; - if (typeof HTMLElement !== 'undefined') { - return x instanceof HTMLElement; - } - else return typeof x.nodeName === 'string' - && typeof x.getAttribute === 'function' - ; -} - -function inspectString (str) { - var s = str.replace(/(['\\])/g, '\\$1').replace(/[\x00-\x1f]/g, lowbyte); - return "'" + s + "'"; - - function lowbyte (c) { - var n = c.charCodeAt(0); - var x = { 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r' }[n]; - if (x) return '\\' + x; - return '\\x' + (n < 0x10 ? '0' : '') + n.toString(16); - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/package.json b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/package.json deleted file mode 100644 index 957e04b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "object-inspect", - "version": "0.4.0", - "description": "string representations of objects in node and the browser", - "main": "index.js", - "devDependencies": { - "tape": "~2.6.0" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "files": [ - "test/*.js", - "test/browser/*.js" - ], - "browsers": [ - "ie/6..latest", - "chrome/latest", - "firefox/latest", - "safari/latest", - "opera/latest", - "iphone/latest", - "ipad/latest", - "android/latest" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/object-inspect.git" - }, - "homepage": "https://github.com/substack/object-inspect", - "keywords": [ - "inspect", - "util.inspect", - "object", - "stringify", - "pretty" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/substack/object-inspect/issues" - }, - "_id": "object-inspect@0.4.0", - "dist": { - "shasum": "f5157c116c1455b243b06ee97703392c5ad89fec", - "tarball": "http://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz" - }, - "_from": "object-inspect@>=0.4.0 <0.5.0", - "_npmVersion": "1.4.4", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "directories": {}, - "_shasum": "f5157c116c1455b243b06ee97703392c5ad89fec", - "_resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/readme.markdown b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/readme.markdown deleted file mode 100644 index 41959a4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/readme.markdown +++ /dev/null @@ -1,59 +0,0 @@ -# object-inspect - -string representations of objects in node and the browser - -[![testling badge](https://ci.testling.com/substack/object-inspect.png)](https://ci.testling.com/substack/object-inspect) - -[![build status](https://secure.travis-ci.org/substack/object-inspect.png)](http://travis-ci.org/substack/object-inspect) - -# example - -## circular - -``` js -var inspect = require('object-inspect'); -var obj = { a: 1, b: [3,4] }; -obj.c = obj; -console.log(inspect(obj)); -``` - -## dom element - -``` js -var inspect = require('object-inspect'); - -var d = document.createElement('div'); -d.setAttribute('id', 'beep'); -d.innerHTML = 'woooiiiii'; - -console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); -``` - -output: - -``` -[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ] -``` - -# methods - -``` js -var inspect = require('object-inspect') -``` - -## var s = inspect(obj, opts={}) - -Return a string `s` with the string representation of `obj` up to a depth of -`opts.depth`. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install object-inspect -``` - -# license - -MIT diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/browser/dom.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/browser/dom.js deleted file mode 100644 index 30d0b7e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/browser/dom.js +++ /dev/null @@ -1,15 +0,0 @@ -var inspect = require('../../'); -var test = require('tape'); - -test('dom element', function (t) { - t.plan(1); - - var d = document.createElement('div'); - d.setAttribute('id', 'beep'); - d.innerHTML = 'woooiiiii'; - - t.equal( - inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ]), - '[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ]' - ); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/circular.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/circular.js deleted file mode 100644 index 28598a7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/circular.js +++ /dev/null @@ -1,9 +0,0 @@ -var inspect = require('../'); -var test = require('tape'); - -test('circular', function (t) { - t.plan(1); - var obj = { a: 1, b: [3,4] }; - obj.c = obj; - t.equal(inspect(obj), '{ a: 1, b: [ 3, 4 ], c: [Circular] }'); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/fn.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/fn.js deleted file mode 100644 index cdf97dd..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/fn.js +++ /dev/null @@ -1,8 +0,0 @@ -var inspect = require('../'); -var test = require('tape'); - -test('function', function (t) { - t.plan(1); - var obj = [ 1, 2, function f (n) { return n + 5 }, 4 ]; - t.equal(inspect(obj), '[ 1, 2, [Function: f], 4 ]'); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/holes.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/holes.js deleted file mode 100644 index ae54de4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/holes.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tape'); -var inspect = require('../'); - -var xs = [ 'a', 'b' ]; -xs[5] = 'f'; -xs[7] = 'j'; -xs[8] = 'k'; - -test('holes', function (t) { - t.plan(1); - t.equal( - inspect(xs), - "[ 'a', 'b', , , , 'f', , 'j', 'k' ]" - ); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/lowbyte.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/lowbyte.js deleted file mode 100644 index debd59c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/lowbyte.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('tape'); -var inspect = require('../'); - -var obj = { x: 'a\r\nb', y: '\5! \x1f \022' }; - -test('interpolate low bytes', function (t) { - t.plan(1); - t.equal( - inspect(obj), - "{ x: 'a\\r\\nb', y: '\\x05! \\x1f \\x12' }" - ); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/undef.js b/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/undef.js deleted file mode 100644 index 833238f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/object-inspect/test/undef.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('tape'); -var inspect = require('../'); - -var obj = { a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }; - -test('undef and null', function (t) { - t.plan(1); - t.equal( - inspect(obj), - '{ a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }' - ); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f8..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e69..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/README.md b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e80..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -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. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/duplex.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +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. - -// 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. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - 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. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -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); -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 6307220..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // 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; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = 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, becuase 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; - - - // 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; - - // 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; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - 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 (typeof chunk === 'string' && !state.objectMode) { - 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); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - 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 { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - 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; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - 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 = roundUpToNextPowerOf2(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) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - 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)) { - 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) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // 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; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // 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; - - if (doRead) { - 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 called its callback 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); - - 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 happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(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) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// 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; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - 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; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function 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); - - function 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); - - // 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 (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(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() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function 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) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -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; - this.removeListener('readable', pipeOnReadable); - 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; - this.removeListener('readable', pipeOnReadable); - 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 (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// 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() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// 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() { - 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) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - 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 (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - 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) { - 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 - 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.calledRead) { - state.ended = true; - process.nextTick(function() { - // 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; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +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. - - -// 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. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = 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); - - if (cb) - 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); - - var ts = this._transformState = new TransformState(options, 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; - - this.once('finish', function() { - if ('function' === typeof this._flush) - 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 rs = stream._readableState; - 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); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // 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; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // 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; - - // 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, becuase 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.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var 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; - - 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, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - 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) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - 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 = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -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.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - 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(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - 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; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // 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) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -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 (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b41..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c0..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8e..0000000 --- a/node_modules/brfs/node_modules/static-module/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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (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; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 9aaf597..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "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" - }, - "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" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "_from": "core-util-is@>=1.0.0 <1.1.0", - "scripts": {} -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa10..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object 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; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/README.md b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/inherits.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/package.json b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index 9013262..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +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" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@>=2.0.1 <2.1.0" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/test.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## 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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/build/build.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/build/build.js deleted file mode 100644 index ec58596..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/build/build.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (require.modules.hasOwnProperty(path)) return path; - } - - if (require.aliases.hasOwnProperty(index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!require.modules.hasOwnProperty(from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return require.modules.hasOwnProperty(localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("isarray/index.js", function(exports, require, module){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -}); -require.alias("isarray/index.js", "isarray/index.js"); - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index fc7904b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - } -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa00..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54f..0000000 --- a/node_modules/brfs/node_modules/static-module/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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 0364d54..0000000 --- a/node_modules/brfs/node_modules/static-module/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.0 <0.11.0", - "_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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/package.json b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/package.json deleted file mode 100644 index 16de866..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.33", - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "gitHead": "0bf97a117c5646556548966409ebc57a6dda2638", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.33", - "_shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "_from": "readable-stream@>=1.0.17 <1.1.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/passthrough.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/readable.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/readable.js deleted file mode 100644 index 8b5337b..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,8 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -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/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/transform.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/writable.js b/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efd..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -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/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/example/array.js b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/example/array.js deleted file mode 100644 index 0aa8092..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/example/array.js +++ /dev/null @@ -1,9 +0,0 @@ -var copy = require('../'); - -var xs = [ 3, 4, 5, { f: 6, g: 7 } ]; -var dup = copy(xs); -dup.unshift(1, 2); -dup[5].g += 100; - -console.log('original: ', xs); -console.log('copy: ', dup); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/example/object.js b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/example/object.js deleted file mode 100644 index d29f6e6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/example/object.js +++ /dev/null @@ -1,9 +0,0 @@ -var copy = require('../'); - -var obj = { a: 3, b: 4, c: [5,6] }; -var dup = copy(obj); -dup.b *= 111; -dup.c.push(7); - -console.log('original: ', obj); -console.log('copy: ', dup); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/index.js b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/index.js deleted file mode 100644 index dfe800a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/index.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = function (obj) { - if (!obj || typeof obj !== 'object') return obj; - - var copy; - - if (isArray(obj)) { - var len = obj.length; - copy = Array(len); - for (var i = 0; i < len; i++) { - copy[i] = obj[i]; - } - } - else { - var keys = objectKeys(obj); - copy = {}; - - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - copy[key] = obj[key]; - } - } - return copy; -}; - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - if ({}.hasOwnProperty.call(obj, key)) keys.push(key); - } - return keys; -}; - -var isArray = Array.isArray || function (xs) { - return {}.toString.call(xs) === '[object Array]'; -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/package.json b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/package.json deleted file mode 100644 index d8ad9ba..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "shallow-copy", - "version": "0.0.1", - "description": "make a shallow copy of an object or array", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tape": "~1.0.4" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "ff/latest", - "chrome/latest", - "safari/latest", - "opera/latest", - "android/latest", - "iphone/latest", - "ipad/latest" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/shallow-copy.git" - }, - "homepage": "https://github.com/substack/shallow-copy", - "keywords": [ - "shallow", - "copy", - "data", - "object", - "array" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# shallow-copy\n\nmake a shallow copy of an object or array\n\n[![testling badge](https://ci.testling.com/substack/shallow-copy.png)](https://ci.testling.com/substack/shallow-copy)\n\n[![build status](https://secure.travis-ci.org/substack/shallow-copy.png)](http://travis-ci.org/substack/shallow-copy)\n\n# example\n\nyou can copy objects shallowly:\n\n``` js\nvar copy = require('shallow-copy');\n\nvar obj = { a: 3, b: 4, c: [5,6] };\nvar dup = copy(obj);\ndup.b *= 111;\ndup.c.push(7);\n\nconsole.log('original: ', obj);\nconsole.log('copy: ', dup);\n```\n\nand you can copy arrays shallowly:\n\n``` js\nvar copy = require('shallow-copy');\n\nvar xs = [ 3, 4, 5, { f: 6, g: 7 } ];\nvar dup = copy(xs);\ndup.unshift(1, 2);\ndup[5].g += 100;\n\nconsole.log('original: ', xs);\nconsole.log('copy: ', dup);\n```\n\n# methods\n\n``` js\nvar copy = require('shallow-copy')\n```\n\n## copy(obj)\n\nReturn a copy of the enumerable properties of the object `obj` without making\ncopies of nested objects inside of `obj`.\n\nIf `obj` is an array, the result will be an array.\nIf `obj` is an object, the result will be an object.\nIf `obj` is not an object, its value is returned.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install shallow-copy\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/shallow-copy/issues" - }, - "_id": "shallow-copy@0.0.1", - "_shasum": "415f42702d73d810330292cc5ee86eae1a11a170", - "_from": "shallow-copy@>=0.0.1 <0.1.0", - "_resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/readme.markdown b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/readme.markdown deleted file mode 100644 index fad4da4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/readme.markdown +++ /dev/null @@ -1,64 +0,0 @@ -# shallow-copy - -make a shallow copy of an object or array - -[![testling badge](https://ci.testling.com/substack/shallow-copy.png)](https://ci.testling.com/substack/shallow-copy) - -[![build status](https://secure.travis-ci.org/substack/shallow-copy.png)](http://travis-ci.org/substack/shallow-copy) - -# example - -you can copy objects shallowly: - -``` js -var copy = require('shallow-copy'); - -var obj = { a: 3, b: 4, c: [5,6] }; -var dup = copy(obj); -dup.b *= 111; -dup.c.push(7); - -console.log('original: ', obj); -console.log('copy: ', dup); -``` - -and you can copy arrays shallowly: - -``` js -var copy = require('shallow-copy'); - -var xs = [ 3, 4, 5, { f: 6, g: 7 } ]; -var dup = copy(xs); -dup.unshift(1, 2); -dup[5].g += 100; - -console.log('original: ', xs); -console.log('copy: ', dup); -``` - -# methods - -``` js -var copy = require('shallow-copy') -``` - -## copy(obj) - -Return a copy of the enumerable properties of the object `obj` without making -copies of nested objects inside of `obj`. - -If `obj` is an array, the result will be an array. -If `obj` is an object, the result will be an object. -If `obj` is not an object, its value is returned. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install shallow-copy -``` - -# license - -MIT diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/test/array.js b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/test/array.js deleted file mode 100644 index 96b5257..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/test/array.js +++ /dev/null @@ -1,14 +0,0 @@ -var copy = require('../'); -var test = require('tape'); - -test('array', function (t) { - t.plan(2); - - var xs = [ 3, 4, 5, { f: 6, g: 7 } ]; - var dup = copy(xs); - dup.unshift(1, 2); - dup[5].g += 100; - - t.deepEqual(xs, [ 3, 4, 5, { f: 6, g: 107 } ]); - t.deepEqual(dup, [ 1, 2, 3, 4, 5, { f: 6, g: 107 } ]); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/test/object.js b/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/test/object.js deleted file mode 100644 index 1d43abc..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/shallow-copy/test/object.js +++ /dev/null @@ -1,14 +0,0 @@ -var copy = require('../'); -var test = require('tape'); - -test('object', function (t) { - t.plan(2); - - var obj = { a: 3, b: 4, c: [5,6] }; - var dup = copy(obj); - dup.b *= 111; - dup.c.push(7); - - t.deepEqual(obj, { a: 3, b: 4, c: [ 5, 6, 7 ] }); - t.deepEqual(dup, { a: 3, b: 444, c: [ 5, 6, 7 ] }); -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -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/node_modules/brfs/node_modules/static-module/node_modules/static-eval/example/eval.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/example/eval.js deleted file mode 100644 index 8a8cf4e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/example/eval.js +++ /dev/null @@ -1,7 +0,0 @@ -var evaluate = require('static-eval'); -var parse = require('esprima').parse; - -var src = process.argv.slice(2).join(' '); -var ast = parse(src).body[0].expression; - -console.log(evaluate(ast)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/example/vars.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/example/vars.js deleted file mode 100644 index 78198b0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/example/vars.js +++ /dev/null @@ -1,11 +0,0 @@ -var evaluate = require('../'); -var parse = require('esprima').parse; - -var src = '[1,2,3+4*10+n,foo(3+5),obj[""+"x"].y]'; -var ast = parse(src).body[0].expression; - -console.log(evaluate(ast, { - n: 6, - foo: function (x) { return x * 100 }, - obj: { x: { y: 555 } } -})); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/index.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/index.js deleted file mode 100644 index 42e38ef..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/index.js +++ /dev/null @@ -1,113 +0,0 @@ -var unparse = require('escodegen').generate; - -module.exports = function (ast, vars) { - if (!vars) vars = {}; - var FAIL = {}; - - var result = (function walk (node) { - if (node.type === 'Literal') { - return node.value; - } - else if (node.type === 'UnaryExpression'){ - var val = walk(node.argument) - if (node.operator === '+') return +val - if (node.operator === '-') return -val - if (node.operator === '~') return ~val - if (node.operator === '!') return !val - return FAIL - } - else if (node.type === 'ArrayExpression') { - var xs = []; - for (var i = 0, l = node.elements.length; i < l; i++) { - var x = walk(node.elements[i]); - if (x === FAIL) return FAIL; - xs.push(x); - } - return xs; - } - else if (node.type === 'ObjectExpression') { - var obj = {}; - for (var i = 0; i < node.properties.length; i++) { - var prop = node.properties[i]; - var value = prop.value === null - ? prop.value - : walk(prop.value) - ; - if (value === FAIL) return FAIL; - obj[prop.key.value || prop.key.name] = value; - } - return obj; - } - else if (node.type === 'BinaryExpression' || - node.type === 'LogicalExpression') { - var l = walk(node.left); - if (l === FAIL) return FAIL; - var r = walk(node.right); - if (r === FAIL) return FAIL; - - var op = node.operator; - if (op === '==') return l == r; - if (op === '===') return l === r; - if (op === '!=') return l != r; - if (op === '!==') return l !== r; - if (op === '+') return l + r; - if (op === '-') return l - r; - if (op === '*') return l * r; - if (op === '/') return l / r; - if (op === '%') return l % r; - if (op === '<') return l < r; - if (op === '<=') return l <= r; - if (op === '>') return l > r; - if (op === '>=') return l >= r; - if (op === '|') return l | r; - if (op === '&') return l & r; - if (op === '^') return l ^ r; - if (op === '&&') return l && r; - if (op === '||') return l || r; - - return FAIL; - } - else if (node.type === 'Identifier') { - if ({}.hasOwnProperty.call(vars, node.name)) { - return vars[node.name]; - } - else return FAIL; - } - else if (node.type === 'CallExpression') { - var callee = walk(node.callee); - if (callee === FAIL) return FAIL; - - var ctx = node.callee.object ? walk(node.callee.object) : FAIL; - if (ctx === FAIL) ctx = null; - - var args = []; - for (var i = 0, l = node.arguments.length; i < l; i++) { - var x = walk(node.arguments[i]); - if (x === FAIL) return FAIL; - args.push(x); - } - return callee.apply(ctx, args); - } - else if (node.type === 'MemberExpression') { - var obj = walk(node.object); - if (obj === FAIL) return FAIL; - if (node.property.type === 'Identifier') { - return obj[node.property.name]; - } - var prop = walk(node.property); - if (prop === FAIL) return FAIL; - return obj[prop]; - } - else if (node.type === 'ConditionalExpression') { - var val = walk(node.test) - if (val === FAIL) return FAIL; - return val ? walk(node.consequent) : walk(node.alternate) - } - else if (node.type === 'FunctionExpression') { - return Function('return ' + unparse(node))(); - } - else return FAIL; - })(ast); - - return result === FAIL ? undefined : result; -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/.bin/escodegen b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/.bin/escodegen deleted file mode 100755 index 783fb93..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/.bin/escodegen +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' escodegen file.js'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(esprima.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/.bin/esgenerate b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/.bin/esgenerate deleted file mode 100755 index b27daa7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/.bin/esgenerate +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' esgenerate file.json'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(JSON.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/.jshintrc b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/.jshintrc deleted file mode 100644 index 71a3a9a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/.jshintrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "indent": 4, - "eqnull": true, - "latedef": true, - "noarg": true, - "noempty": true, - "quotmark": "single", - "undef": true, - "unused": "vars", - "strict": true, - "trailing": true, - "validthis": true, - - "onevar": true, - - "node": true -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/Gruntfile.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/Gruntfile.js deleted file mode 100644 index cdfeac2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/Gruntfile.js +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -module.exports = function (grunt) { - 'use strict'; - - grunt.initConfig({ - jshint: { - all: [ - 'Gruntfile.js', - 'escodegen.js' - ], - options: { - jshintrc: '.jshintrc', - force: false - } - }, - mochaTest: { - test: { - options: { - reporter: 'spec' - }, - src: ['test/*.js'] - } - } - }); - - - // load tasks - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-mocha-test'); - - // alias - grunt.registerTask('test', 'mochaTest'); - grunt.registerTask('lint', 'jshint'); - grunt.registerTask('travis', ['lint', 'test']); - grunt.registerTask('default','travis'); -}; -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/LICENSE.BSD b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/LICENSE.BSD deleted file mode 100644 index 3e580c3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/LICENSE.BSD +++ /dev/null @@ -1,19 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/LICENSE.source-map b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/LICENSE.source-map deleted file mode 100644 index 259c59f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/LICENSE.source-map +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/README.md b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/README.md deleted file mode 100644 index 5237652..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/README.md +++ /dev/null @@ -1,97 +0,0 @@ - -### Escodegen [![Build Status](https://secure.travis-ci.org/Constellation/escodegen.png)](http://travis-ci.org/Constellation/escodegen) [![Build Status](https://drone.io/github.com/Constellation/escodegen/status.png)](https://drone.io/github.com/Constellation/escodegen/latest) - -Escodegen ([escodegen](http://github.com/Constellation/escodegen)) is -[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -(also popularly known as [JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)) -code generator from [Parser API](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) AST. -See [online generator demo](http://constellation.github.com/escodegen/demo/index.html). - - -### Install - -Escodegen can be used in a web browser: - - - -escodegen.browser.js is found in tagged-revision. See Tags on GitHub. - -Or in a Node.js application via the package manager: - - npm install escodegen - -### Usage - -A simple example: the program - - escodegen.generate({ - type: 'BinaryExpression', - operator: '+', - left: { type: 'Literal', value: 40 }, - right: { type: 'Literal', value: 2 } - }); - -produces the string `'40 + 2'` - -See the [API page](https://github.com/Constellation/escodegen/wiki/API) for -options. To run the tests, execute `npm test` in the root directory. - -### License - -#### Escodegen - -Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation) - (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#### source-map - -SourceNodeMocks has a limited interface of mozilla/source-map SourceNode implementations. - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/bin/escodegen.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/bin/escodegen.js deleted file mode 100755 index 783fb93..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/bin/escodegen.js +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' escodegen file.js'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(esprima.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/bin/esgenerate.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/bin/esgenerate.js deleted file mode 100755 index b27daa7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/bin/esgenerate.js +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true */ - -var fs = require('fs'), - path = require('path'), - root = path.join(path.dirname(fs.realpathSync(__filename)), '..'), - esprima = require('esprima'), - escodegen = require(root), - files = process.argv.splice(2); - -if (files.length === 0) { - console.log('Usage:'); - console.log(' esgenerate file.json'); - process.exit(1); -} - -files.forEach(function (filename) { - var content = fs.readFileSync(filename, 'utf-8'); - console.log(escodegen.generate(JSON.parse(content))); -}); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/escodegen.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/escodegen.js deleted file mode 100644 index d921a95..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/escodegen.js +++ /dev/null @@ -1,2119 +0,0 @@ -/* - Copyright (C) 2012-2013 Yusuke Suzuki - Copyright (C) 2012-2013 Michael Ficarra - Copyright (C) 2012-2013 Mathias Bynens - Copyright (C) 2013 Irakli Gozalishvili - Copyright (C) 2012 Robert Gust-Bardon - Copyright (C) 2012 John Freeman - Copyright (C) 2011-2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*global exports:true, generateStatement:true, generateExpression:true, require:true, global:true*/ -(function () { - 'use strict'; - - var Syntax, - Precedence, - BinaryPrecedence, - Regex, - SourceNode, - estraverse, - isArray, - base, - indent, - json, - renumber, - hexadecimal, - quotes, - escapeless, - newline, - space, - parentheses, - semicolons, - safeConcatenation, - directive, - extra, - parse, - sourceMap, - FORMAT_MINIFY, - FORMAT_DEFAULTS; - - estraverse = require('estraverse'); - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - ArrayPattern: 'ArrayPattern', - ArrowFunctionExpression: 'ArrowFunctionExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ComprehensionBlock: 'ComprehensionBlock', - ComprehensionExpression: 'ComprehensionExpression', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DirectiveStatement: 'DirectiveStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - ObjectPattern: 'ObjectPattern', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement', - YieldExpression: 'YieldExpression' - - }; - - Precedence = { - Sequence: 0, - Assignment: 1, - Conditional: 2, - ArrowFunction: 2, - LogicalOR: 3, - LogicalAND: 4, - BitwiseOR: 5, - BitwiseXOR: 6, - BitwiseAND: 7, - Equality: 8, - Relational: 9, - BitwiseSHIFT: 10, - Additive: 11, - Multiplicative: 12, - Unary: 13, - Postfix: 14, - Call: 15, - New: 16, - Member: 17, - Primary: 18 - }; - - BinaryPrecedence = { - '||': Precedence.LogicalOR, - '&&': Precedence.LogicalAND, - '|': Precedence.BitwiseOR, - '^': Precedence.BitwiseXOR, - '&': Precedence.BitwiseAND, - '==': Precedence.Equality, - '!=': Precedence.Equality, - '===': Precedence.Equality, - '!==': Precedence.Equality, - 'is': Precedence.Equality, - 'isnt': Precedence.Equality, - '<': Precedence.Relational, - '>': Precedence.Relational, - '<=': Precedence.Relational, - '>=': Precedence.Relational, - 'in': Precedence.Relational, - 'instanceof': Precedence.Relational, - '<<': Precedence.BitwiseSHIFT, - '>>': Precedence.BitwiseSHIFT, - '>>>': Precedence.BitwiseSHIFT, - '+': Precedence.Additive, - '-': Precedence.Additive, - '*': Precedence.Multiplicative, - '%': Precedence.Multiplicative, - '/': Precedence.Multiplicative - }; - - Regex = { - NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') - }; - - function getDefaultOptions() { - // default options - return { - indent: null, - base: null, - parse: null, - comment: false, - format: { - indent: { - style: ' ', - base: 0, - adjustMultilineComment: false - }, - newline: '\n', - space: ' ', - json: false, - renumber: false, - hexadecimal: false, - quotes: 'single', - escapeless: false, - compact: false, - parentheses: true, - semicolons: true, - safeConcatenation: false - }, - moz: { - starlessGenerator: false, - parenthesizedComprehensionBlock: false - }, - sourceMap: null, - sourceMapRoot: null, - sourceMapWithCode: false, - directive: false, - verbatim: null - }; - } - - function stringToArray(str) { - var length = str.length, - result = [], - i; - for (i = 0; i < length; i += 1) { - result[i] = str.charAt(i); - } - return result; - } - - function stringRepeat(str, num) { - var result = ''; - - for (num |= 0; num > 0; num >>>= 1, str += str) { - if (num & 1) { - result += str; - } - } - - return result; - } - - isArray = Array.isArray; - if (!isArray) { - isArray = function isArray(array) { - return Object.prototype.toString.call(array) === '[object Array]'; - }; - } - - // Fallback for the non SourceMap environment - function SourceNodeMock(line, column, filename, chunk) { - var result = []; - - function flatten(input) { - var i, iz; - if (isArray(input)) { - for (i = 0, iz = input.length; i < iz; ++i) { - flatten(input[i]); - } - } else if (input instanceof SourceNodeMock) { - result.push(input); - } else if (typeof input === 'string' && input) { - result.push(input); - } - } - - flatten(chunk); - this.children = result; - } - - SourceNodeMock.prototype.toString = function toString() { - var res = '', i, iz, node; - for (i = 0, iz = this.children.length; i < iz; ++i) { - node = this.children[i]; - if (node instanceof SourceNodeMock) { - res += node.toString(); - } else { - res += node; - } - } - return res; - }; - - SourceNodeMock.prototype.replaceRight = function replaceRight(pattern, replacement) { - var last = this.children[this.children.length - 1]; - if (last instanceof SourceNodeMock) { - last.replaceRight(pattern, replacement); - } else if (typeof last === 'string') { - this.children[this.children.length - 1] = last.replace(pattern, replacement); - } else { - this.children.push(''.replace(pattern, replacement)); - } - return this; - }; - - SourceNodeMock.prototype.join = function join(sep) { - var i, iz, result; - result = []; - iz = this.children.length; - if (iz > 0) { - for (i = 0, iz -= 1; i < iz; ++i) { - result.push(this.children[i], sep); - } - result.push(this.children[iz]); - this.children = result; - } - return this; - }; - - function hasLineTerminator(str) { - return (/[\r\n]/g).test(str); - } - - function endsWithLineTerminator(str) { - var ch = str.charAt(str.length - 1); - return ch && isLineTerminator(ch); - } - - function updateDeeply(target, override) { - var key, val; - - function isHashObject(target) { - return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp); - } - - for (key in override) { - if (override.hasOwnProperty(key)) { - val = override[key]; - if (isHashObject(val)) { - if (isHashObject(target[key])) { - updateDeeply(target[key], val); - } else { - target[key] = updateDeeply({}, val); - } - } else { - target[key] = val; - } - } - } - return target; - } - - function generateNumber(value) { - var result, point, temp, exponent, pos; - - if (value !== value) { - throw new Error('Numeric literal whose value is NaN'); - } - if (value < 0 || (value === 0 && 1 / value < 0)) { - throw new Error('Numeric literal whose value is negative'); - } - - if (value === 1 / 0) { - return json ? 'null' : renumber ? '1e400' : '1e+400'; - } - - result = '' + value; - if (!renumber || result.length < 3) { - return result; - } - - point = result.indexOf('.'); - if (!json && result.charAt(0) === '0' && point === 1) { - point = 0; - result = result.slice(1); - } - temp = result; - result = result.replace('e+', 'e'); - exponent = 0; - if ((pos = temp.indexOf('e')) > 0) { - exponent = +temp.slice(pos + 1); - temp = temp.slice(0, pos); - } - if (point >= 0) { - exponent -= temp.length - point - 1; - temp = +(temp.slice(0, point) + temp.slice(point + 1)) + ''; - } - pos = 0; - while (temp.charAt(temp.length + pos - 1) === '0') { - pos -= 1; - } - if (pos !== 0) { - exponent -= pos; - temp = temp.slice(0, pos); - } - if (exponent !== 0) { - temp += 'e' + exponent; - } - if ((temp.length < result.length || - (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) && - +temp === value) { - result = temp; - } - - return result; - } - - // Generate valid RegExp expression. - // This function is based on https://github.com/Constellation/iv Engine - - function escapeRegExpCharacter(ch, previousIsBackslash) { - // not handling '\' and handling \u2028 or \u2029 to unicode escape sequence - if ((ch & ~1) === 0x2028) { - return (previousIsBackslash ? 'u' : '\\u') + ((ch === 0x2028) ? '2028' : '2029'); - } else if (ch === 10 || ch === 13) { // \n, \r - return (previousIsBackslash ? '' : '\\') + ((ch === 10) ? 'n' : 'r'); - } - return String.fromCharCode(ch); - } - - function generateRegExp(reg) { - var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash; - - result = reg.toString(); - - if (reg.source) { - // extract flag from toString result - match = result.match(/\/([^/]*)$/); - if (!match) { - return result; - } - - flags = match[1]; - result = ''; - - characterInBrack = false; - previousIsBackslash = false; - for (i = 0, iz = reg.source.length; i < iz; ++i) { - ch = reg.source.charCodeAt(i); - - if (!previousIsBackslash) { - if (characterInBrack) { - if (ch === 93) { // ] - characterInBrack = false; - } - } else { - if (ch === 47) { // / - result += '\\'; - } else if (ch === 91) { // [ - characterInBrack = true; - } - } - result += escapeRegExpCharacter(ch, previousIsBackslash); - previousIsBackslash = ch === 92; // \ - } else { - // if new RegExp("\\\n') is provided, create /\n/ - result += escapeRegExpCharacter(ch, previousIsBackslash); - // prevent like /\\[/]/ - previousIsBackslash = false; - } - } - - return '/' + result + '/' + flags; - } - - return result; - } - - function escapeAllowedCharacter(ch, next) { - var code = ch.charCodeAt(0), hex = code.toString(16), result = '\\'; - - switch (ch) { - case '\b': - result += 'b'; - break; - case '\f': - result += 'f'; - break; - case '\t': - result += 't'; - break; - default: - if (json || code > 0xff) { - result += 'u' + '0000'.slice(hex.length) + hex; - } else if (ch === '\u0000' && '0123456789'.indexOf(next) < 0) { - result += '0'; - } else if (ch === '\x0B') { // '\v' - result += 'x0B'; - } else { - result += 'x' + '00'.slice(hex.length) + hex; - } - break; - } - - return result; - } - - function escapeDisallowedCharacter(ch) { - var result = '\\'; - switch (ch) { - case '\\': - result += '\\'; - break; - case '\n': - result += 'n'; - break; - case '\r': - result += 'r'; - break; - case '\u2028': - result += 'u2028'; - break; - case '\u2029': - result += 'u2029'; - break; - default: - throw new Error('Incorrectly classified character'); - } - - return result; - } - - function escapeDirective(str) { - var i, iz, ch, buf, quote; - - buf = str; - if (typeof buf[0] === 'undefined') { - buf = stringToArray(buf); - } - - quote = quotes === 'double' ? '"' : '\''; - for (i = 0, iz = buf.length; i < iz; i += 1) { - ch = buf[i]; - if (ch === '\'') { - quote = '"'; - break; - } else if (ch === '"') { - quote = '\''; - break; - } else if (ch === '\\') { - i += 1; - } - } - - return quote + str + quote; - } - - function escapeString(str) { - var result = '', i, len, ch, singleQuotes = 0, doubleQuotes = 0, single; - - if (typeof str[0] === 'undefined') { - str = stringToArray(str); - } - - for (i = 0, len = str.length; i < len; i += 1) { - ch = str[i]; - if (ch === '\'') { - singleQuotes += 1; - } else if (ch === '"') { - doubleQuotes += 1; - } else if (ch === '/' && json) { - result += '\\'; - } else if ('\\\n\r\u2028\u2029'.indexOf(ch) >= 0) { - result += escapeDisallowedCharacter(ch); - continue; - } else if ((json && ch < ' ') || !(json || escapeless || (ch >= ' ' && ch <= '~'))) { - result += escapeAllowedCharacter(ch, str[i + 1]); - continue; - } - result += ch; - } - - single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes)); - str = result; - result = single ? '\'' : '"'; - - if (typeof str[0] === 'undefined') { - str = stringToArray(str); - } - - for (i = 0, len = str.length; i < len; i += 1) { - ch = str[i]; - if ((ch === '\'' && single) || (ch === '"' && !single)) { - result += '\\'; - } - result += ch; - } - - return result + (single ? '\'' : '"'); - } - - function isWhiteSpace(ch) { - // Use `\x0B` instead of `\v` for IE < 9 compatibility - return '\t\x0B\f \xa0'.indexOf(ch) >= 0 || (ch.charCodeAt(0) >= 0x1680 && '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff'.indexOf(ch) >= 0); - } - - function isLineTerminator(ch) { - return '\n\r\u2028\u2029'.indexOf(ch) >= 0; - } - - function isIdentifierPart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch >= '0') && (ch <= '9')) || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); - } - - // takes char code - function isDecimalDigit(ch) { - return (ch >= 48 && ch <= 57); // 0..9 - } - - function toSourceNode(generated, node) { - if (node == null) { - if (generated instanceof SourceNode) { - return generated; - } else { - node = {}; - } - } - if (node.loc == null) { - return new SourceNode(null, null, sourceMap, generated, node.name || null); - } - return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null); - } - - function noEmptySpace() { - return (space) ? space : ' '; - } - - function join(left, right) { - var leftSource = toSourceNode(left).toString(), - rightSource = toSourceNode(right).toString(), - leftChar = leftSource.charAt(leftSource.length - 1), - rightChar = rightSource.charAt(0); - - if ((leftChar === '+' || leftChar === '-') && leftChar === rightChar || - isIdentifierPart(leftChar) && isIdentifierPart(rightChar) || - leftChar === '/' && rightChar === 'i') { // infix word operators all start with `i` - return [left, noEmptySpace(), right]; - } else if (isWhiteSpace(leftChar) || isLineTerminator(leftChar) || isWhiteSpace(rightChar) || isLineTerminator(rightChar)) { - return [left, right]; - } - return [left, space, right]; - } - - function addIndent(stmt) { - return [base, stmt]; - } - - function withIndent(fn) { - var previousBase, result; - previousBase = base; - base += indent; - result = fn.call(this, base); - base = previousBase; - return result; - } - - function calculateSpaces(str) { - var i; - for (i = str.length - 1; i >= 0; i -= 1) { - if (isLineTerminator(str.charAt(i))) { - break; - } - } - return (str.length - 1) - i; - } - - function adjustMultilineComment(value, specialBase) { - var array, i, len, line, j, spaces, previousBase; - - array = value.split(/\r\n|[\r\n]/); - spaces = Number.MAX_VALUE; - - // first line doesn't have indentation - for (i = 1, len = array.length; i < len; i += 1) { - line = array[i]; - j = 0; - while (j < line.length && isWhiteSpace(line[j])) { - j += 1; - } - if (spaces > j) { - spaces = j; - } - } - - if (typeof specialBase !== 'undefined') { - // pattern like - // { - // var t = 20; /* - // * this is comment - // */ - // } - previousBase = base; - if (array[1][spaces] === '*') { - specialBase += ' '; - } - base = specialBase; - } else { - if (spaces & 1) { - // /* - // * - // */ - // If spaces are odd number, above pattern is considered. - // We waste 1 space. - spaces -= 1; - } - previousBase = base; - } - - for (i = 1, len = array.length; i < len; i += 1) { - array[i] = toSourceNode(addIndent(array[i].slice(spaces))).join(''); - } - - base = previousBase; - - return array.join('\n'); - } - - function generateComment(comment, specialBase) { - if (comment.type === 'Line') { - if (endsWithLineTerminator(comment.value)) { - return '//' + comment.value; - } else { - // Always use LineTerminator - return '//' + comment.value + '\n'; - } - } - if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) { - return adjustMultilineComment('/*' + comment.value + '*/', specialBase); - } - return '/*' + comment.value + '*/'; - } - - function addCommentsToStatement(stmt, result) { - var i, len, comment, save, tailingToStatement, specialBase, fragment; - - if (stmt.leadingComments && stmt.leadingComments.length > 0) { - save = result; - - comment = stmt.leadingComments[0]; - result = []; - if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) { - result.push('\n'); - } - result.push(generateComment(comment)); - if (!endsWithLineTerminator(toSourceNode(result).toString())) { - result.push('\n'); - } - - for (i = 1, len = stmt.leadingComments.length; i < len; i += 1) { - comment = stmt.leadingComments[i]; - fragment = [generateComment(comment)]; - if (!endsWithLineTerminator(toSourceNode(fragment).toString())) { - fragment.push('\n'); - } - result.push(addIndent(fragment)); - } - - result.push(addIndent(save)); - } - - if (stmt.trailingComments) { - tailingToStatement = !endsWithLineTerminator(toSourceNode(result).toString()); - specialBase = stringRepeat(' ', calculateSpaces(toSourceNode([base, result, indent]).toString())); - for (i = 0, len = stmt.trailingComments.length; i < len; i += 1) { - comment = stmt.trailingComments[i]; - if (tailingToStatement) { - // We assume target like following script - // - // var t = 20; /** - // * This is comment of t - // */ - if (i === 0) { - // first case - result = [result, indent]; - } else { - result = [result, specialBase]; - } - result.push(generateComment(comment, specialBase)); - } else { - result = [result, addIndent(generateComment(comment))]; - } - if (i !== len - 1 && !endsWithLineTerminator(toSourceNode(result).toString())) { - result = [result, '\n']; - } - } - } - - return result; - } - - function parenthesize(text, current, should) { - if (current < should) { - return ['(', text, ')']; - } - return text; - } - - function maybeBlock(stmt, semicolonOptional, functionBody) { - var result, noLeadingComment; - - noLeadingComment = !extra.comment || !stmt.leadingComments; - - if (stmt.type === Syntax.BlockStatement && noLeadingComment) { - return [space, generateStatement(stmt, { functionBody: functionBody })]; - } - - if (stmt.type === Syntax.EmptyStatement && noLeadingComment) { - return ';'; - } - - withIndent(function () { - result = [newline, addIndent(generateStatement(stmt, { semicolonOptional: semicolonOptional, functionBody: functionBody }))]; - }); - - return result; - } - - function maybeBlockSuffix(stmt, result) { - var ends = endsWithLineTerminator(toSourceNode(result).toString()); - if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) { - return [result, space]; - } - if (ends) { - return [result, base]; - } - return [result, newline, base]; - } - - function generateVerbatim(expr, option) { - var i, result; - result = expr[extra.verbatim].split(/\r\n|\n/); - for (i = 1; i < result.length; i++) { - result[i] = newline + base + result[i]; - } - - result = parenthesize(result, Precedence.Sequence, option.precedence); - return toSourceNode(result, expr); - } - - function generateIdentifier(node) { - return toSourceNode(node.name, node); - } - - function generateFunctionBody(node) { - var result, i, len, expr, arrow; - - arrow = node.type === Syntax.ArrowFunctionExpression; - - if (arrow && node.params.length === 1 && node.params[0].type === Syntax.Identifier) { - // arg => { } case - result = [generateIdentifier(node.params[0])]; - } else { - result = ['(']; - for (i = 0, len = node.params.length; i < len; i += 1) { - result.push(generateIdentifier(node.params[i])); - if (i + 1 < len) { - result.push(',' + space); - } - } - result.push(')'); - } - - if (arrow) { - result.push(space, '=>'); - } - - if (node.expression) { - result.push(space); - expr = generateExpression(node.body, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }); - if (expr.toString().charAt(0) === '{') { - expr = ['(', expr, ')']; - } - result.push(expr); - } else { - result.push(maybeBlock(node.body, false, true)); - } - return result; - } - - function generateExpression(expr, option) { - var result, - precedence, - type, - currentPrecedence, - i, - len, - raw, - fragment, - multiline, - leftChar, - leftSource, - rightChar, - allowIn, - allowCall, - allowUnparenthesizedNew, - property; - - precedence = option.precedence; - allowIn = option.allowIn; - allowCall = option.allowCall; - type = expr.type || option.type; - - if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) { - return generateVerbatim(expr, option); - } - - switch (type) { - case Syntax.SequenceExpression: - result = []; - allowIn |= (Precedence.Sequence < precedence); - for (i = 0, len = expr.expressions.length; i < len; i += 1) { - result.push(generateExpression(expr.expressions[i], { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result = parenthesize(result, Precedence.Sequence, precedence); - break; - - case Syntax.AssignmentExpression: - allowIn |= (Precedence.Assignment < precedence); - result = parenthesize( - [ - generateExpression(expr.left, { - precedence: Precedence.Call, - allowIn: allowIn, - allowCall: true - }), - space + expr.operator + space, - generateExpression(expr.right, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }) - ], - Precedence.Assignment, - precedence - ); - break; - - case Syntax.ArrowFunctionExpression: - allowIn |= (Precedence.ArrowFunction < precedence); - result = parenthesize(generateFunctionBody(expr), Precedence.ArrowFunction, precedence); - break; - - case Syntax.ConditionalExpression: - allowIn |= (Precedence.Conditional < precedence); - result = parenthesize( - [ - generateExpression(expr.test, { - precedence: Precedence.LogicalOR, - allowIn: allowIn, - allowCall: true - }), - space + '?' + space, - generateExpression(expr.consequent, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }), - space + ':' + space, - generateExpression(expr.alternate, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }) - ], - Precedence.Conditional, - precedence - ); - break; - - case Syntax.LogicalExpression: - case Syntax.BinaryExpression: - currentPrecedence = BinaryPrecedence[expr.operator]; - - allowIn |= (currentPrecedence < precedence); - - fragment = generateExpression(expr.left, { - precedence: currentPrecedence, - allowIn: allowIn, - allowCall: true - }); - - leftSource = fragment.toString(); - - if (leftSource.charAt(leftSource.length - 1) === '/' && isIdentifierPart(expr.operator.charAt(0))) { - result = [fragment, noEmptySpace(), expr.operator]; - } else { - result = join(fragment, expr.operator); - } - - fragment = generateExpression(expr.right, { - precedence: currentPrecedence + 1, - allowIn: allowIn, - allowCall: true - }); - - if (expr.operator === '/' && fragment.toString().charAt(0) === '/' || - expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') { - // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start - result.push(noEmptySpace(), fragment); - } else { - result = join(result, fragment); - } - - if (expr.operator === 'in' && !allowIn) { - result = ['(', result, ')']; - } else { - result = parenthesize(result, currentPrecedence, precedence); - } - - break; - - case Syntax.CallExpression: - result = [generateExpression(expr.callee, { - precedence: Precedence.Call, - allowIn: true, - allowCall: true, - allowUnparenthesizedNew: false - })]; - - result.push('('); - for (i = 0, len = expr['arguments'].length; i < len; i += 1) { - result.push(generateExpression(expr['arguments'][i], { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result.push(')'); - - if (!allowCall) { - result = ['(', result, ')']; - } else { - result = parenthesize(result, Precedence.Call, precedence); - } - break; - - case Syntax.NewExpression: - len = expr['arguments'].length; - allowUnparenthesizedNew = option.allowUnparenthesizedNew === undefined || option.allowUnparenthesizedNew; - - result = join( - 'new', - generateExpression(expr.callee, { - precedence: Precedence.New, - allowIn: true, - allowCall: false, - allowUnparenthesizedNew: allowUnparenthesizedNew && !parentheses && len === 0 - }) - ); - - if (!allowUnparenthesizedNew || parentheses || len > 0) { - result.push('('); - for (i = 0; i < len; i += 1) { - result.push(generateExpression(expr['arguments'][i], { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + space); - } - } - result.push(')'); - } - - result = parenthesize(result, Precedence.New, precedence); - break; - - case Syntax.MemberExpression: - result = [generateExpression(expr.object, { - precedence: Precedence.Call, - allowIn: true, - allowCall: allowCall, - allowUnparenthesizedNew: false - })]; - - if (expr.computed) { - result.push('[', generateExpression(expr.property, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: allowCall - }), ']'); - } else { - if (expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') { - fragment = toSourceNode(result).toString(); - // When the following conditions are all true, - // 1. No floating point - // 2. Don't have exponents - // 3. The last character is a decimal digit - // 4. Not hexadecimal OR octal number literal - // we should add a floating point. - if ( - fragment.indexOf('.') < 0 && - !/[eExX]/.test(fragment) && - isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) && - !(fragment.length >= 2 && fragment.charCodeAt(0) === 48) // '0' - ) { - result.push('.'); - } - } - result.push('.', generateIdentifier(expr.property)); - } - - result = parenthesize(result, Precedence.Member, precedence); - break; - - case Syntax.UnaryExpression: - fragment = generateExpression(expr.argument, { - precedence: Precedence.Unary, - allowIn: true, - allowCall: true - }); - - if (space === '') { - result = join(expr.operator, fragment); - } else { - result = [expr.operator]; - if (expr.operator.length > 2) { - // delete, void, typeof - // get `typeof []`, not `typeof[]` - result = join(result, fragment); - } else { - // Prevent inserting spaces between operator and argument if it is unnecessary - // like, `!cond` - leftSource = toSourceNode(result).toString(); - leftChar = leftSource.charAt(leftSource.length - 1); - rightChar = fragment.toString().charAt(0); - - if (((leftChar === '+' || leftChar === '-') && leftChar === rightChar) || (isIdentifierPart(leftChar) && isIdentifierPart(rightChar))) { - result.push(noEmptySpace(), fragment); - } else { - result.push(fragment); - } - } - } - result = parenthesize(result, Precedence.Unary, precedence); - break; - - case Syntax.YieldExpression: - if (expr.delegate) { - result = 'yield*'; - } else { - result = 'yield'; - } - if (expr.argument) { - result = join( - result, - generateExpression(expr.argument, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }) - ); - } - break; - - case Syntax.UpdateExpression: - if (expr.prefix) { - result = parenthesize( - [ - expr.operator, - generateExpression(expr.argument, { - precedence: Precedence.Unary, - allowIn: true, - allowCall: true - }) - ], - Precedence.Unary, - precedence - ); - } else { - result = parenthesize( - [ - generateExpression(expr.argument, { - precedence: Precedence.Postfix, - allowIn: true, - allowCall: true - }), - expr.operator - ], - Precedence.Postfix, - precedence - ); - } - break; - - case Syntax.FunctionExpression: - result = 'function'; - - if (expr.id) { - result = [result, noEmptySpace(), - generateIdentifier(expr.id), - generateFunctionBody(expr)]; - } else { - result = [result + space, generateFunctionBody(expr)]; - } - - break; - - case Syntax.ArrayPattern: - case Syntax.ArrayExpression: - if (!expr.elements.length) { - result = '[]'; - break; - } - multiline = expr.elements.length > 1; - result = ['[', multiline ? newline : '']; - withIndent(function (indent) { - for (i = 0, len = expr.elements.length; i < len; i += 1) { - if (!expr.elements[i]) { - if (multiline) { - result.push(indent); - } - if (i + 1 === len) { - result.push(','); - } - } else { - result.push(multiline ? indent : '', generateExpression(expr.elements[i], { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - })); - } - if (i + 1 < len) { - result.push(',' + (multiline ? newline : space)); - } - } - }); - if (multiline && !endsWithLineTerminator(toSourceNode(result).toString())) { - result.push(newline); - } - result.push(multiline ? base : '', ']'); - break; - - case Syntax.Property: - if (expr.kind === 'get' || expr.kind === 'set') { - result = [ - expr.kind, noEmptySpace(), - generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - generateFunctionBody(expr.value) - ]; - } else { - if (expr.shorthand) { - result = generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - } else if (expr.method) { - result = []; - if (expr.value.generator) { - result.push('*'); - } - result.push(generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), generateFunctionBody(expr.value)); - } else { - result = [ - generateExpression(expr.key, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ':' + space, - generateExpression(expr.value, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }) - ]; - } - } - break; - - case Syntax.ObjectExpression: - if (!expr.properties.length) { - result = '{}'; - break; - } - multiline = expr.properties.length > 1; - - withIndent(function () { - fragment = generateExpression(expr.properties[0], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true, - type: Syntax.Property - }); - }); - - if (!multiline) { - // issues 4 - // Do not transform from - // dejavu.Class.declare({ - // method2: function () {} - // }); - // to - // dejavu.Class.declare({method2: function () { - // }}); - if (!hasLineTerminator(toSourceNode(fragment).toString())) { - result = [ '{', space, fragment, space, '}' ]; - break; - } - } - - withIndent(function (indent) { - result = [ '{', newline, indent, fragment ]; - - if (multiline) { - result.push(',' + newline); - for (i = 1, len = expr.properties.length; i < len; i += 1) { - result.push(indent, generateExpression(expr.properties[i], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true, - type: Syntax.Property - })); - if (i + 1 < len) { - result.push(',' + newline); - } - } - } - }); - - if (!endsWithLineTerminator(toSourceNode(result).toString())) { - result.push(newline); - } - result.push(base, '}'); - break; - - case Syntax.ObjectPattern: - if (!expr.properties.length) { - result = '{}'; - break; - } - - multiline = false; - if (expr.properties.length === 1) { - property = expr.properties[0]; - if (property.value.type !== Syntax.Identifier) { - multiline = true; - } - } else { - for (i = 0, len = expr.properties.length; i < len; i += 1) { - property = expr.properties[i]; - if (!property.shorthand) { - multiline = true; - break; - } - } - } - result = ['{', multiline ? newline : '' ]; - - withIndent(function (indent) { - for (i = 0, len = expr.properties.length; i < len; i += 1) { - result.push(multiline ? indent : '', generateExpression(expr.properties[i], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - if (i + 1 < len) { - result.push(',' + (multiline ? newline : space)); - } - } - }); - - if (multiline && !endsWithLineTerminator(toSourceNode(result).toString())) { - result.push(newline); - } - result.push(multiline ? base : '', '}'); - break; - - case Syntax.ThisExpression: - result = 'this'; - break; - - case Syntax.Identifier: - result = generateIdentifier(expr); - break; - - case Syntax.Literal: - if (expr.hasOwnProperty('raw') && parse) { - try { - raw = parse(expr.raw).body[0].expression; - if (raw.type === Syntax.Literal) { - if (raw.value === expr.value) { - result = expr.raw; - break; - } - } - } catch (e) { - // not use raw property - } - } - - if (expr.value === null) { - result = 'null'; - break; - } - - if (typeof expr.value === 'string') { - result = escapeString(expr.value); - break; - } - - if (typeof expr.value === 'number') { - result = generateNumber(expr.value); - break; - } - - if (typeof expr.value === 'boolean') { - result = expr.value ? 'true' : 'false'; - break; - } - - result = generateRegExp(expr.value); - break; - - case Syntax.ComprehensionExpression: - result = [ - '[', - generateExpression(expr.body, { - precedence: Precedence.Assignment, - allowIn: true, - allowCall: true - }) - ]; - - if (expr.blocks) { - for (i = 0, len = expr.blocks.length; i < len; i += 1) { - fragment = generateExpression(expr.blocks[i], { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - result = join(result, fragment); - } - } - - if (expr.filter) { - result = join(result, 'if' + space); - fragment = generateExpression(expr.filter, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - if (extra.moz.parenthesizedComprehensionBlock) { - result = join(result, [ '(', fragment, ')' ]); - } else { - result = join(result, fragment); - } - } - result.push(']'); - break; - - case Syntax.ComprehensionBlock: - if (expr.left.type === Syntax.VariableDeclaration) { - fragment = [ - expr.left.kind, noEmptySpace(), - generateStatement(expr.left.declarations[0], { - allowIn: false - }) - ]; - } else { - fragment = generateExpression(expr.left, { - precedence: Precedence.Call, - allowIn: true, - allowCall: true - }); - } - - fragment = join(fragment, expr.of ? 'of' : 'in'); - fragment = join(fragment, generateExpression(expr.right, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })); - - if (extra.moz.parenthesizedComprehensionBlock) { - result = [ 'for' + space + '(', fragment, ')' ]; - } else { - result = join('for' + space, fragment); - } - break; - - default: - throw new Error('Unknown expression type: ' + expr.type); - } - - return toSourceNode(result, expr); - } - - function generateStatement(stmt, option) { - var i, len, result, node, allowIn, functionBody, directiveContext, fragment, semicolon; - - allowIn = true; - semicolon = ';'; - functionBody = false; - directiveContext = false; - if (option) { - allowIn = option.allowIn === undefined || option.allowIn; - if (!semicolons && option.semicolonOptional === true) { - semicolon = ''; - } - functionBody = option.functionBody; - directiveContext = option.directiveContext; - } - - switch (stmt.type) { - case Syntax.BlockStatement: - result = ['{', newline]; - - withIndent(function () { - for (i = 0, len = stmt.body.length; i < len; i += 1) { - fragment = addIndent(generateStatement(stmt.body[i], { - semicolonOptional: i === len - 1, - directiveContext: functionBody - })); - result.push(fragment); - if (!endsWithLineTerminator(toSourceNode(fragment).toString())) { - result.push(newline); - } - } - }); - - result.push(addIndent('}')); - break; - - case Syntax.BreakStatement: - if (stmt.label) { - result = 'break ' + stmt.label.name + semicolon; - } else { - result = 'break' + semicolon; - } - break; - - case Syntax.ContinueStatement: - if (stmt.label) { - result = 'continue ' + stmt.label.name + semicolon; - } else { - result = 'continue' + semicolon; - } - break; - - case Syntax.DirectiveStatement: - if (stmt.raw) { - result = stmt.raw + semicolon; - } else { - result = escapeDirective(stmt.directive) + semicolon; - } - break; - - case Syntax.DoWhileStatement: - // Because `do 42 while (cond)` is Syntax Error. We need semicolon. - result = join('do', maybeBlock(stmt.body)); - result = maybeBlockSuffix(stmt.body, result); - result = join(result, [ - 'while' + space + '(', - generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' + semicolon - ]); - break; - - case Syntax.CatchClause: - withIndent(function () { - result = [ - 'catch' + space + '(', - generateExpression(stmt.param, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - result.push(maybeBlock(stmt.body)); - break; - - case Syntax.DebuggerStatement: - result = 'debugger' + semicolon; - break; - - case Syntax.EmptyStatement: - result = ';'; - break; - - case Syntax.ExpressionStatement: - result = [generateExpression(stmt.expression, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })]; - // 12.4 '{', 'function' is not allowed in this position. - // wrap expression with parentheses - fragment = toSourceNode(result).toString(); - if (fragment.charAt(0) === '{' || (fragment.slice(0, 8) === 'function' && ' ('.indexOf(fragment.charAt(8)) >= 0) || (directive && directiveContext && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) { - result = ['(', result, ')' + semicolon]; - } else { - result.push(semicolon); - } - break; - - case Syntax.VariableDeclarator: - if (stmt.init) { - result = [ - generateExpression(stmt.id, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }), - space, - '=', - space, - generateExpression(stmt.init, { - precedence: Precedence.Assignment, - allowIn: allowIn, - allowCall: true - }) - ]; - } else { - result = generateIdentifier(stmt.id); - } - break; - - case Syntax.VariableDeclaration: - result = [stmt.kind]; - // special path for - // var x = function () { - // }; - if (stmt.declarations.length === 1 && stmt.declarations[0].init && - stmt.declarations[0].init.type === Syntax.FunctionExpression) { - result.push(noEmptySpace(), generateStatement(stmt.declarations[0], { - allowIn: allowIn - })); - } else { - // VariableDeclarator is typed as Statement, - // but joined with comma (not LineTerminator). - // So if comment is attached to target node, we should specialize. - withIndent(function () { - node = stmt.declarations[0]; - if (extra.comment && node.leadingComments) { - result.push('\n', addIndent(generateStatement(node, { - allowIn: allowIn - }))); - } else { - result.push(noEmptySpace(), generateStatement(node, { - allowIn: allowIn - })); - } - - for (i = 1, len = stmt.declarations.length; i < len; i += 1) { - node = stmt.declarations[i]; - if (extra.comment && node.leadingComments) { - result.push(',' + newline, addIndent(generateStatement(node, { - allowIn: allowIn - }))); - } else { - result.push(',' + space, generateStatement(node, { - allowIn: allowIn - })); - } - } - }); - } - result.push(semicolon); - break; - - case Syntax.ThrowStatement: - result = [join( - 'throw', - generateExpression(stmt.argument, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }) - ), semicolon]; - break; - - case Syntax.TryStatement: - result = ['try', maybeBlock(stmt.block)]; - result = maybeBlockSuffix(stmt.block, result); - if (stmt.handlers) { - // old interface - for (i = 0, len = stmt.handlers.length; i < len; i += 1) { - result = join(result, generateStatement(stmt.handlers[i])); - if (stmt.finalizer || i + 1 !== len) { - result = maybeBlockSuffix(stmt.handlers[i].body, result); - } - } - } else { - // new interface - if (stmt.handler) { - result = join(result, generateStatement(stmt.handler)); - if (stmt.finalizer || stmt.guardedHandlers.length > 0) { - result = maybeBlockSuffix(stmt.handler.body, result); - } - } - - for (i = 0, len = stmt.guardedHandlers.length; i < len; i += 1) { - result = join(result, generateStatement(stmt.guardedHandlers[i])); - if (stmt.finalizer || i + 1 !== len) { - result = maybeBlockSuffix(stmt.guardedHandlers[i].body, result); - } - } - } - if (stmt.finalizer) { - result = join(result, ['finally', maybeBlock(stmt.finalizer)]); - } - break; - - case Syntax.SwitchStatement: - withIndent(function () { - result = [ - 'switch' + space + '(', - generateExpression(stmt.discriminant, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' + space + '{' + newline - ]; - }); - if (stmt.cases) { - for (i = 0, len = stmt.cases.length; i < len; i += 1) { - fragment = addIndent(generateStatement(stmt.cases[i], {semicolonOptional: i === len - 1})); - result.push(fragment); - if (!endsWithLineTerminator(toSourceNode(fragment).toString())) { - result.push(newline); - } - } - } - result.push(addIndent('}')); - break; - - case Syntax.SwitchCase: - withIndent(function () { - if (stmt.test) { - result = [ - join('case', generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - })), - ':' - ]; - } else { - result = ['default:']; - } - - i = 0; - len = stmt.consequent.length; - if (len && stmt.consequent[0].type === Syntax.BlockStatement) { - fragment = maybeBlock(stmt.consequent[0]); - result.push(fragment); - i = 1; - } - - if (i !== len && !endsWithLineTerminator(toSourceNode(result).toString())) { - result.push(newline); - } - - for (; i < len; i += 1) { - fragment = addIndent(generateStatement(stmt.consequent[i], {semicolonOptional: i === len - 1 && semicolon === ''})); - result.push(fragment); - if (i + 1 !== len && !endsWithLineTerminator(toSourceNode(fragment).toString())) { - result.push(newline); - } - } - }); - break; - - case Syntax.IfStatement: - withIndent(function () { - result = [ - 'if' + space + '(', - generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - if (stmt.alternate) { - result.push(maybeBlock(stmt.consequent)); - result = maybeBlockSuffix(stmt.consequent, result); - if (stmt.alternate.type === Syntax.IfStatement) { - result = join(result, ['else ', generateStatement(stmt.alternate, {semicolonOptional: semicolon === ''})]); - } else { - result = join(result, join('else', maybeBlock(stmt.alternate, semicolon === ''))); - } - } else { - result.push(maybeBlock(stmt.consequent, semicolon === '')); - } - break; - - case Syntax.ForStatement: - withIndent(function () { - result = ['for' + space + '(']; - if (stmt.init) { - if (stmt.init.type === Syntax.VariableDeclaration) { - result.push(generateStatement(stmt.init, {allowIn: false})); - } else { - result.push(generateExpression(stmt.init, { - precedence: Precedence.Sequence, - allowIn: false, - allowCall: true - }), ';'); - } - } else { - result.push(';'); - } - - if (stmt.test) { - result.push(space, generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), ';'); - } else { - result.push(';'); - } - - if (stmt.update) { - result.push(space, generateExpression(stmt.update, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), ')'); - } else { - result.push(')'); - } - }); - - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - case Syntax.ForInStatement: - result = ['for' + space + '(']; - withIndent(function () { - if (stmt.left.type === Syntax.VariableDeclaration) { - withIndent(function () { - result.push(stmt.left.kind + noEmptySpace(), generateStatement(stmt.left.declarations[0], { - allowIn: false - })); - }); - } else { - result.push(generateExpression(stmt.left, { - precedence: Precedence.Call, - allowIn: true, - allowCall: true - })); - } - - result = join(result, 'in'); - result = [join( - result, - generateExpression(stmt.right, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }) - ), ')']; - }); - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - case Syntax.LabeledStatement: - result = [stmt.label.name + ':', maybeBlock(stmt.body, semicolon === '')]; - break; - - case Syntax.Program: - len = stmt.body.length; - result = [safeConcatenation && len > 0 ? '\n' : '']; - for (i = 0; i < len; i += 1) { - fragment = addIndent( - generateStatement(stmt.body[i], { - semicolonOptional: !safeConcatenation && i === len - 1, - directiveContext: true - }) - ); - result.push(fragment); - if (i + 1 < len && !endsWithLineTerminator(toSourceNode(fragment).toString())) { - result.push(newline); - } - } - break; - - case Syntax.FunctionDeclaration: - result = [(stmt.generator && !extra.moz.starlessGenerator ? 'function* ' : 'function '), - generateIdentifier(stmt.id), - generateFunctionBody(stmt)]; - break; - - case Syntax.ReturnStatement: - if (stmt.argument) { - result = [join( - 'return', - generateExpression(stmt.argument, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }) - ), semicolon]; - } else { - result = ['return' + semicolon]; - } - break; - - case Syntax.WhileStatement: - withIndent(function () { - result = [ - 'while' + space + '(', - generateExpression(stmt.test, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - case Syntax.WithStatement: - withIndent(function () { - result = [ - 'with' + space + '(', - generateExpression(stmt.object, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }), - ')' - ]; - }); - result.push(maybeBlock(stmt.body, semicolon === '')); - break; - - default: - throw new Error('Unknown statement type: ' + stmt.type); - } - - // Attach comments - - if (extra.comment) { - result = addCommentsToStatement(stmt, result); - } - - fragment = toSourceNode(result).toString(); - if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' && fragment.charAt(fragment.length - 1) === '\n') { - result = toSourceNode(result).replaceRight(/\s+$/, ''); - } - - return toSourceNode(result, stmt); - } - - function generate(node, options) { - var defaultOptions = getDefaultOptions(), result, pair; - - if (options != null) { - // Obsolete options - // - // `options.indent` - // `options.base` - // - // Instead of them, we can use `option.format.indent`. - if (typeof options.indent === 'string') { - defaultOptions.format.indent.style = options.indent; - } - if (typeof options.base === 'number') { - defaultOptions.format.indent.base = options.base; - } - options = updateDeeply(defaultOptions, options); - indent = options.format.indent.style; - if (typeof options.base === 'string') { - base = options.base; - } else { - base = stringRepeat(indent, options.format.indent.base); - } - } else { - options = defaultOptions; - indent = options.format.indent.style; - base = stringRepeat(indent, options.format.indent.base); - } - json = options.format.json; - renumber = options.format.renumber; - hexadecimal = json ? false : options.format.hexadecimal; - quotes = json ? 'double' : options.format.quotes; - escapeless = options.format.escapeless; - newline = options.format.newline; - space = options.format.space; - if (options.format.compact) { - newline = space = indent = base = ''; - } - parentheses = options.format.parentheses; - semicolons = options.format.semicolons; - safeConcatenation = options.format.safeConcatenation; - directive = options.directive; - parse = json ? null : options.parse; - sourceMap = options.sourceMap; - extra = options; - - if (sourceMap) { - if (!exports.browser) { - // We assume environment is node.js - // And prevent from including source-map by browserify - SourceNode = require('source-map').SourceNode; - } else { - SourceNode = global.sourceMap.SourceNode; - } - } else { - SourceNode = SourceNodeMock; - } - - switch (node.type) { - case Syntax.BlockStatement: - case Syntax.BreakStatement: - case Syntax.CatchClause: - case Syntax.ContinueStatement: - case Syntax.DirectiveStatement: - case Syntax.DoWhileStatement: - case Syntax.DebuggerStatement: - case Syntax.EmptyStatement: - case Syntax.ExpressionStatement: - case Syntax.ForStatement: - case Syntax.ForInStatement: - case Syntax.FunctionDeclaration: - case Syntax.IfStatement: - case Syntax.LabeledStatement: - case Syntax.Program: - case Syntax.ReturnStatement: - case Syntax.SwitchStatement: - case Syntax.SwitchCase: - case Syntax.ThrowStatement: - case Syntax.TryStatement: - case Syntax.VariableDeclaration: - case Syntax.VariableDeclarator: - case Syntax.WhileStatement: - case Syntax.WithStatement: - result = generateStatement(node); - break; - - case Syntax.AssignmentExpression: - case Syntax.ArrayExpression: - case Syntax.ArrayPattern: - case Syntax.BinaryExpression: - case Syntax.CallExpression: - case Syntax.ConditionalExpression: - case Syntax.FunctionExpression: - case Syntax.Identifier: - case Syntax.Literal: - case Syntax.LogicalExpression: - case Syntax.MemberExpression: - case Syntax.NewExpression: - case Syntax.ObjectExpression: - case Syntax.ObjectPattern: - case Syntax.Property: - case Syntax.SequenceExpression: - case Syntax.ThisExpression: - case Syntax.UnaryExpression: - case Syntax.UpdateExpression: - case Syntax.YieldExpression: - - result = generateExpression(node, { - precedence: Precedence.Sequence, - allowIn: true, - allowCall: true - }); - break; - - default: - throw new Error('Unknown node type: ' + node.type); - } - - if (!sourceMap) { - return result.toString(); - } - - pair = result.toStringWithSourceMap({ - file: options.file, - sourceRoot: options.sourceMapRoot - }); - - if (options.sourceMapWithCode) { - return pair; - } - return pair.map.toString(); - } - - FORMAT_MINIFY = { - indent: { - style: '', - base: 0 - }, - renumber: true, - hexadecimal: true, - quotes: 'auto', - escapeless: true, - compact: true, - parentheses: false, - semicolons: false - }; - - FORMAT_DEFAULTS = getDefaultOptions().format; - - exports.version = require('./package.json').version; - exports.generate = generate; - exports.attachComments = estraverse.attachComments; - exports.browser = false; - exports.FORMAT_MINIFY = FORMAT_MINIFY; - exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/.bin/esparse b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/.bin/esparse deleted file mode 100755 index 3e7bb81..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/.bin/esparse +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, null, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/.bin/esvalidate b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/.bin/esvalidate deleted file mode 100755 index e0af3f7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/.bin/esvalidate +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ - -var fs, esprima, options, fnames, count; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/README.md b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/README.md deleted file mode 100644 index a74bd12..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/README.md +++ /dev/null @@ -1,73 +0,0 @@ -**Esprima** ([esprima.org](http://esprima.org)) is a high performance, -standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -parser written in ECMAScript (also popularly known as -[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)). -Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat), -with the help of [many contributors](https://github.com/ariya/esprima/contributors). - -Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -[Node.js](http://nodejs.org). - -### Features - -- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262) -- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla -[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) -- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage) -- Optional tracking of syntax node location (index-based and line-column) -- Experimental support for ES6/Harmony (module, class, destructuring, ...) - -Esprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)). -It is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html) -with the new generation of fast parsers. - -### Applications - -Esprima serves as the basis for many popular JavaScript development tools: - -- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul) -- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck) -- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS), -[Sweet.js](http://sweetjs.org/) (macro) -- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr) -- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html)) -- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter), -- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen) - -### Questions? -- [Documentation](http://esprima.org/doc) -- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect) -and [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement) -- [Mailing list](http://groups.google.com/group/esprima) -- [Contribution guide](http://esprima.org/doc/index.html#contribution) - -Follow [@Esprima](http://twitter.com/Esprima) on Twitter to get the -development updates. -Feedback and contribution are welcomed! - -### License - -Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) - and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/bin/esparse.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/bin/esparse.js deleted file mode 100755 index 3e7bb81..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/bin/esparse.js +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, null, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/bin/esvalidate.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/bin/esvalidate.js deleted file mode 100755 index e0af3f7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/bin/esvalidate.js +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ - -var fs, esprima, options, fnames, count; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/esprima.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/esprima.js deleted file mode 100644 index f1320da..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/esprima.js +++ /dev/null @@ -1,3908 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, define:true, exports:true, window: true, -throwError: true, createLiteral: true, generateStatement: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseStatement: true, parseSourceElement: true */ - -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // Rhino, and plain browser loading. - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.esprima = {})); - } -}(this, function (exports) { - 'use strict'; - - var Token, - TokenName, - Syntax, - PropertyKind, - Messages, - Regex, - source, - strict, - index, - lineNumber, - lineStart, - length, - buffer, - state, - extra; - - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8 - }; - - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; - - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; - - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - MultipleDefaultsInSwitch: 'More than one default clause in switch statement', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), - NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') - }; - - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. - - function assert(condition, message) { - if (!condition) { - throw new Error('ASSERT: ' + message); - } - } - - function sliceSource(from, to) { - return source.slice(from, to); - } - - if (typeof 'esprima'[0] === 'undefined') { - sliceSource = function sliceArraySource(from, to) { - return source.slice(from, to).join(''); - }; - } - - function isDecimalDigit(ch) { - return '0123456789'.indexOf(ch) >= 0; - } - - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; - } - - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } - - - // 7.2 White Space - - function isWhiteSpace(ch) { - return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') || - (ch === '\u000C') || (ch === '\u00A0') || - (ch.charCodeAt(0) >= 0x1680 && - '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0); - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029'); - } - - // 7.6 Identifier Names and Identifiers - - function isIdentifierStart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch)); - } - - function isIdentifierPart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch >= '0') && (ch <= '9')) || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); - } - - // 7.6.1.2 Future Reserved Words - - function isFutureReservedWord(id) { - switch (id) { - - // Future reserved words. - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - } - - return false; - } - - function isStrictModeReservedWord(id) { - switch (id) { - - // Strict Mode reserved words. - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - } - - return false; - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - // 7.6.1.1 Keywords - - function isKeyword(id) { - var keyword = false; - switch (id.length) { - case 2: - keyword = (id === 'if') || (id === 'in') || (id === 'do'); - break; - case 3: - keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - break; - case 4: - keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with'); - break; - case 5: - keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw'); - break; - case 6: - keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch'); - break; - case 7: - keyword = (id === 'default') || (id === 'finally'); - break; - case 8: - keyword = (id === 'function') || (id === 'continue') || (id === 'debugger'); - break; - case 10: - keyword = (id === 'instanceof'); - break; - } - - if (keyword) { - return true; - } - - switch (id) { - // Future reserved words. - // 'const' is specialized as Keyword in V8. - case 'const': - return true; - - // For compatiblity to SpiderMonkey and ES.next - case 'yield': - case 'let': - return true; - } - - if (strict && isStrictModeReservedWord(id)) { - return true; - } - - return isFutureReservedWord(id); - } - - // 7.4 Comments - - function skipComment() { - var ch, blockComment, lineComment; - - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = source[index++]; - if (isLineTerminator(ch)) { - lineComment = false; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = source[index++]; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - ++index; - blockComment = false; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - index += 2; - lineComment = true; - } else if (ch === '*') { - index += 2; - blockComment = true; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function scanHexEscape(prefix) { - var i, len, ch, code = 0; - - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; - } - } - return String.fromCharCode(code); - } - - function scanIdentifier() { - var ch, start, id, restore; - - ch = source[index]; - if (!isIdentifierStart(ch)) { - return; - } - - start = index; - if (ch === '\\') { - ++index; - if (source[index] !== 'u') { - return; - } - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - if (ch === '\\' || !isIdentifierStart(ch)) { - return; - } - id = ch; - } else { - index = restore; - id = 'u'; - } - } else { - id = source[index++]; - } - - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch)) { - break; - } - if (ch === '\\') { - ++index; - if (source[index] !== 'u') { - return; - } - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - if (ch === '\\' || !isIdentifierPart(ch)) { - return; - } - id += ch; - } else { - index = restore; - id += 'u'; - } - } else { - id += source[index++]; - } - } - - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - return { - type: Token.Identifier, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (isKeyword(id)) { - return { - type: Token.Keyword, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.1 Null Literals - - if (id === 'null') { - return { - type: Token.NullLiteral, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.2 Boolean Literals - - if (id === 'true' || id === 'false') { - return { - type: Token.BooleanLiteral, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - return { - type: Token.Identifier, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.7 Punctuators - - function scanPunctuator() { - var start = index, - ch1 = source[index], - ch2, - ch3, - ch4; - - // Check for most common single-character punctuators. - - if (ch1 === ';' || ch1 === '{' || ch1 === '}') { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === ',' || ch1 === '(' || ch1 === ')') { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Dot (.) can also start a floating-point number, hence the need - // to check the next character. - - ch2 = source[index + 1]; - if (ch1 === '.' && !isDecimalDigit(ch2)) { - return { - type: Token.Punctuator, - value: source[index++], - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Peek more characters. - - ch3 = source[index + 2]; - ch4 = source[index + 3]; - - // 4-character punctuator: >>>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - if (ch4 === '=') { - index += 4; - return { - type: Token.Punctuator, - value: '>>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 3-character punctuators: === !== >>> <<= >>= - - if (ch1 === '=' && ch2 === '=' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '===', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '!' && ch2 === '=' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '!==', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - index += 3; - return { - type: Token.Punctuator, - value: '>>>', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '<' && ch2 === '<' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '<<=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 2-character punctuators: <= >= == != ++ -- << >> && || - // += -= *= %= &= |= ^= /= - - if (ch2 === '=') { - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { - if ('+-<>&|'.indexOf(ch2) >= 0) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // The remaining 1-character punctuators. - - if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) { - return { - type: Token.Punctuator, - value: source[index++], - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 7.8.3 Numeric Literals - - function scanNumericLiteral() { - var number, start, ch; - - ch = source[index]; - assert(isDecimalDigit(ch) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); - - start = index; - number = ''; - if (ch !== '.') { - number = source[index++]; - ch = source[index]; - - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isHexDigit(ch)) { - break; - } - number += source[index++]; - } - - if (number.length <= 2) { - // only 0x - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - return { - type: Token.NumericLiteral, - value: parseInt(number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } else if (isOctalDigit(ch)) { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isOctalDigit(ch)) { - break; - } - number += source[index++]; - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch) || isDecimalDigit(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // decimal number starts with '0' such as '09' is illegal. - if (isDecimalDigit(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += source[index++]; - } - } - - if (ch === '.') { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += source[index++]; - } - } - - if (ch === 'e' || ch === 'E') { - number += source[index++]; - - ch = source[index]; - if (ch === '+' || ch === '-') { - number += source[index++]; - } - - ch = source[index]; - if (isDecimalDigit(ch)) { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += source[index++]; - } - } else { - ch = 'character ' + ch; - if (index >= length) { - ch = ''; - } - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.4 String Literals - - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false; - - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); - - start = index; - ++index; - - while (index < length) { - ch = source[index++]; - - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = source[index++]; - if (!isLineTerminator(ch)) { - switch (ch) { - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\x0B'; - break; - - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); - - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } - - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(source[index++]); - - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(source[index++]); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - } - } else if (isLineTerminator(ch)) { - break; - } else { - str += ch; - } - } - - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.StringLiteral, - value: str, - octal: octal, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanRegExp() { - var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; - - buffer = null; - skipComment(); - - start = index; - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = source[index++]; - - while (index < length) { - ch = source[index++]; - str += ch; - if (ch === '\\') { - ch = source[index++]; - // ECMA-262 7.8.5 - if (isLineTerminator(ch)) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (classMarker) { - if (ch === ']') { - classMarker = false; - } - } else { - if (ch === '/') { - terminated = true; - break; - } else if (ch === '[') { - classMarker = true; - } else if (isLineTerminator(ch)) { - throwError({}, Messages.UnterminatedRegExp); - } - } - } - - if (!terminated) { - throwError({}, Messages.UnterminatedRegExp); - } - - // Exclude leading and trailing slash. - pattern = str.substr(1, str.length - 2); - - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch)) { - break; - } - - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - str += '\\u'; - for (; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - } else { - str += '\\'; - } - } else { - flags += ch; - str += ch; - } - } - - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); - } - - return { - literal: str, - value: value, - range: [start, index] - }; - } - - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } - - function advance() { - var ch, token; - - skipComment(); - - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - range: [index, index] - }; - } - - token = scanPunctuator(); - if (typeof token !== 'undefined') { - return token; - } - - ch = source[index]; - - if (ch === '\'' || ch === '"') { - return scanStringLiteral(); - } - - if (ch === '.' || isDecimalDigit(ch)) { - return scanNumericLiteral(); - } - - token = scanIdentifier(); - if (typeof token !== 'undefined') { - return token; - } - - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - function lex() { - var token; - - if (buffer) { - index = buffer.range[1]; - lineNumber = buffer.lineNumber; - lineStart = buffer.lineStart; - token = buffer; - buffer = null; - return token; - } - - buffer = null; - return advance(); - } - - function lookahead() { - var pos, line, start; - - if (buffer !== null) { - return buffer; - } - - pos = index; - line = lineNumber; - start = lineStart; - buffer = advance(); - index = pos; - lineNumber = line; - lineStart = start; - - return buffer; - } - - // Return true if there is a line terminator before the next token. - - function peekLineTerminator() { - var pos, line, start, found; - - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; - - return found; - } - - // Throw an exception - - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - return args[index] || ''; - } - ); - - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.range[0]; - error.lineNumber = token.lineNumber; - error.column = token.range[0] - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; - } - - throw error; - } - - function throwErrorTolerant() { - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; - } - } - } - - - // Throw an exception because of the token. - - function throwUnexpected(token) { - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); - } - - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); - } - - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); - } - - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); - } - - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictReservedWord); - return; - } - throwError(token, Messages.UnexpectedToken, token.value); - } - - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); - } - - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. - - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); - } - } - - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. - - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); - } - } - - // Return true if the next token matches the specified punctuator. - - function match(value) { - var token = lookahead(); - return token.type === Token.Punctuator && token.value === value; - } - - // Return true if the next token matches the specified keyword - - function matchKeyword(keyword) { - var token = lookahead(); - return token.type === Token.Keyword && token.value === keyword; - } - - // Return true if the next token is an assignment operator - - function matchAssign() { - var token = lookahead(), - op = token.value; - - if (token.type !== Token.Punctuator) { - return false; - } - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; - } - - function consumeSemicolon() { - var token, line; - - // Catch the very common case first. - if (source[index] === ';') { - lex(); - return; - } - - line = lineNumber; - skipComment(); - if (lineNumber !== line) { - return; - } - - if (match(';')) { - lex(); - return; - } - - token = lookahead(); - if (token.type !== Token.EOF && !match('}')) { - throwUnexpected(token); - } - } - - // Return true if provided expression is LeftHandSideExpression - - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } - - // 11.1.4 Array Initialiser - - function parseArrayInitialiser() { - var elements = []; - - expect('['); - - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(null); - } else { - elements.push(parseAssignmentExpression()); - - if (!match(']')) { - expect(','); - } - } - } - - expect(']'); - - return { - type: Syntax.ArrayExpression, - elements: elements - }; - } - - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body; - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwErrorTolerant(first, Messages.StrictParamName); - } - strict = previousStrict; - - return { - type: Syntax.FunctionExpression, - id: null, - params: param, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }; - } - - function parseObjectPropertyKey() { - var token = lex(); - - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return createLiteral(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseObjectProperty() { - var token, key, id, param; - - token = lookahead(); - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); - - // Property Assignment: Getter and Setter. - - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction([]), - kind: 'get' - }; - } else if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead(); - if (token.type !== Token.Identifier) { - expect(')'); - throwErrorTolerant(token, Messages.UnexpectedToken, token.value); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction([]), - kind: 'set' - }; - } else { - param = [ parseVariableIdentifier() ]; - expect(')'); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction(param, token), - kind: 'set' - }; - } - } else { - expect(':'); - return { - type: Syntax.Property, - key: id, - value: parseAssignmentExpression(), - kind: 'init' - }; - } - } else if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - return { - type: Syntax.Property, - key: key, - value: parseAssignmentExpression(), - kind: 'init' - }; - } - } - - function parseObjectInitialiser() { - var properties = [], property, name, kind, map = {}, toString = String; - - expect('{'); - - while (!match('}')) { - property = parseObjectProperty(); - - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); - } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - if (Object.prototype.hasOwnProperty.call(map, name)) { - if (map[name] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } else if (map[name] & kind) { - throwErrorTolerant({}, Messages.AccessorGetSet); - } - } - map[name] |= kind; - } else { - map[name] = kind; - } - - properties.push(property); - - if (!match('}')) { - expect(','); - } - } - - expect('}'); - - return { - type: Syntax.ObjectExpression, - properties: properties - }; - } - - // 11.1.6 The Grouping Operator - - function parseGroupExpression() { - var expr; - - expect('('); - - expr = parseExpression(); - - expect(')'); - - return expr; - } - - - // 11.1 Primary Expressions - - function parsePrimaryExpression() { - var token = lookahead(), - type = token.type; - - if (type === Token.Identifier) { - return { - type: Syntax.Identifier, - name: lex().value - }; - } - - if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return createLiteral(lex()); - } - - if (type === Token.Keyword) { - if (matchKeyword('this')) { - lex(); - return { - type: Syntax.ThisExpression - }; - } - - if (matchKeyword('function')) { - return parseFunctionExpression(); - } - } - - if (type === Token.BooleanLiteral) { - lex(); - token.value = (token.value === 'true'); - return createLiteral(token); - } - - if (type === Token.NullLiteral) { - lex(); - token.value = null; - return createLiteral(token); - } - - if (match('[')) { - return parseArrayInitialiser(); - } - - if (match('{')) { - return parseObjectInitialiser(); - } - - if (match('(')) { - return parseGroupExpression(); - } - - if (match('/') || match('/=')) { - return createLiteral(scanRegExp()); - } - - return throwUnexpected(lex()); - } - - // 11.2 Left-Hand-Side Expressions - - function parseArguments() { - var args = []; - - expect('('); - - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return args; - } - - function parseNonComputedProperty() { - var token = lex(); - - if (!isIdentifierName(token)) { - throwUnexpected(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseNonComputedMember() { - expect('.'); - - return parseNonComputedProperty(); - } - - function parseComputedMember() { - var expr; - - expect('['); - - expr = parseExpression(); - - expect(']'); - - return expr; - } - - function parseNewExpression() { - var expr; - - expectKeyword('new'); - - expr = { - type: Syntax.NewExpression, - callee: parseLeftHandSideExpression(), - 'arguments': [] - }; - - if (match('(')) { - expr['arguments'] = parseArguments(); - } - - return expr; - } - - function parseLeftHandSideExpressionAllowCall() { - var expr; - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - expr = { - type: Syntax.CallExpression, - callee: expr, - 'arguments': parseArguments() - }; - } else if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - } - } - - return expr; - } - - - function parseLeftHandSideExpression() { - var expr; - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[')) { - if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - } - } - - return expr; - } - - // 11.3 Postfix Expressions - - function parsePostfixExpression() { - var expr = parseLeftHandSideExpressionAllowCall(), token; - - token = lookahead(); - if (token.type !== Token.Punctuator) { - return expr; - } - - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPostfix); - } - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - expr = { - type: Syntax.UpdateExpression, - operator: lex().value, - argument: expr, - prefix: false - }; - } - - return expr; - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr; - - token = lookahead(); - if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { - return parsePostfixExpression(); - } - - if (match('++') || match('--')) { - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPrefix); - } - - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - expr = { - type: Syntax.UpdateExpression, - operator: token.value, - argument: expr, - prefix: true - }; - return expr; - } - - if (match('+') || match('-') || match('~') || match('!')) { - expr = { - type: Syntax.UnaryExpression, - operator: lex().value, - argument: parseUnaryExpression(), - prefix: true - }; - return expr; - } - - if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - expr = { - type: Syntax.UnaryExpression, - operator: lex().value, - argument: parseUnaryExpression(), - prefix: true - }; - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); - } - return expr; - } - - return parsePostfixExpression(); - } - - // 11.5 Multiplicative Operators - - function parseMultiplicativeExpression() { - var expr = parseUnaryExpression(); - - while (match('*') || match('/') || match('%')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseUnaryExpression() - }; - } - - return expr; - } - - // 11.6 Additive Operators - - function parseAdditiveExpression() { - var expr = parseMultiplicativeExpression(); - - while (match('+') || match('-')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseMultiplicativeExpression() - }; - } - - return expr; - } - - // 11.7 Bitwise Shift Operators - - function parseShiftExpression() { - var expr = parseAdditiveExpression(); - - while (match('<<') || match('>>') || match('>>>')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseAdditiveExpression() - }; - } - - return expr; - } - // 11.8 Relational Operators - - function parseRelationalExpression() { - var expr, previousAllowIn; - - previousAllowIn = state.allowIn; - state.allowIn = true; - - expr = parseShiftExpression(); - - while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseShiftExpression() - }; - } - - state.allowIn = previousAllowIn; - return expr; - } - - // 11.9 Equality Operators - - function parseEqualityExpression() { - var expr = parseRelationalExpression(); - - while (match('==') || match('!=') || match('===') || match('!==')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseRelationalExpression() - }; - } - - return expr; - } - - // 11.10 Binary Bitwise Operators - - function parseBitwiseANDExpression() { - var expr = parseEqualityExpression(); - - while (match('&')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '&', - left: expr, - right: parseEqualityExpression() - }; - } - - return expr; - } - - function parseBitwiseXORExpression() { - var expr = parseBitwiseANDExpression(); - - while (match('^')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '^', - left: expr, - right: parseBitwiseANDExpression() - }; - } - - return expr; - } - - function parseBitwiseORExpression() { - var expr = parseBitwiseXORExpression(); - - while (match('|')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '|', - left: expr, - right: parseBitwiseXORExpression() - }; - } - - return expr; - } - - // 11.11 Binary Logical Operators - - function parseLogicalANDExpression() { - var expr = parseBitwiseORExpression(); - - while (match('&&')) { - lex(); - expr = { - type: Syntax.LogicalExpression, - operator: '&&', - left: expr, - right: parseBitwiseORExpression() - }; - } - - return expr; - } - - function parseLogicalORExpression() { - var expr = parseLogicalANDExpression(); - - while (match('||')) { - lex(); - expr = { - type: Syntax.LogicalExpression, - operator: '||', - left: expr, - right: parseLogicalANDExpression() - }; - } - - return expr; - } - - // 11.12 Conditional Operator - - function parseConditionalExpression() { - var expr, previousAllowIn, consequent; - - expr = parseLogicalORExpression(); - - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - - expr = { - type: Syntax.ConditionalExpression, - test: expr, - consequent: consequent, - alternate: parseAssignmentExpression() - }; - } - - return expr; - } - - // 11.13 Assignment Operators - - function parseAssignmentExpression() { - var token, expr; - - token = lookahead(); - expr = parseConditionalExpression(); - - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - // 11.13.1 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant(token, Messages.StrictLHSAssignment); - } - - expr = { - type: Syntax.AssignmentExpression, - operator: lex().value, - left: expr, - right: parseAssignmentExpression() - }; - } - - return expr; - } - - // 11.14 Comma Operator - - function parseExpression() { - var expr = parseAssignmentExpression(); - - if (match(',')) { - expr = { - type: Syntax.SequenceExpression, - expressions: [ expr ] - }; - - while (index < length) { - if (!match(',')) { - break; - } - lex(); - expr.expressions.push(parseAssignmentExpression()); - } - - } - return expr; - } - - // 12.1 Block - - function parseStatementList() { - var list = [], - statement; - - while (index < length) { - if (match('}')) { - break; - } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; - } - list.push(statement); - } - - return list; - } - - function parseBlock() { - var block; - - expect('{'); - - block = parseStatementList(); - - expect('}'); - - return { - type: Syntax.BlockStatement, - body: block - }; - } - - // 12.2 Variable Statement - - function parseVariableIdentifier() { - var token = lex(); - - if (token.type !== Token.Identifier) { - throwUnexpected(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseVariableDeclaration(kind) { - var id = parseVariableIdentifier(), - init = null; - - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); - } - - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); - } - - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - } - - function parseVariableDeclarationList(kind) { - var list = []; - - do { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; - } - lex(); - } while (index < length); - - return list; - } - - function parseVariableStatement() { - var declarations; - - expectKeyword('var'); - - declarations = parseVariableDeclarationList(); - - consumeSemicolon(); - - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: 'var' - }; - } - - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations; - - expectKeyword(kind); - - declarations = parseVariableDeclarationList(kind); - - consumeSemicolon(); - - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - } - - // 12.3 Empty Statement - - function parseEmptyStatement() { - expect(';'); - - return { - type: Syntax.EmptyStatement - }; - } - - // 12.4 Expression Statement - - function parseExpressionStatement() { - var expr = parseExpression(); - - consumeSemicolon(); - - return { - type: Syntax.ExpressionStatement, - expression: expr - }; - } - - // 12.5 If statement - - function parseIfStatement() { - var test, consequent, alternate; - - expectKeyword('if'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - consequent = parseStatement(); - - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } - - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - } - - // 12.6 Iteration Statements - - function parseDoWhileStatement() { - var body, test, oldInIteration; - - expectKeyword('do'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - if (match(';')) { - lex(); - } - - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - } - - function parseWhileStatement() { - var test, body, oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - } - - function parseForVariableDeclaration() { - var token = lex(); - - return { - type: Syntax.VariableDeclaration, - declarations: parseVariableDeclarationList(), - kind: token.value - }; - } - - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; - - init = test = update = null; - - expectKeyword('for'); - - expect('('); - - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; - - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; - - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwErrorTolerant({}, Messages.InvalidLHSInForIn); - } - - lex(); - left = init; - right = parseExpression(); - init = null; - } - } - - if (typeof left === 'undefined') { - expect(';'); - } - } - - if (typeof left === 'undefined') { - - if (!match(';')) { - test = parseExpression(); - } - expect(';'); - - if (!match(')')) { - update = parseExpression(); - } - } - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - if (typeof left === 'undefined') { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - } - - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - } - - // 12.7 The continue statement - - function parseContinueStatement() { - var token, label = null; - - expectKeyword('continue'); - - // Optimize the most common form: 'continue;'. - if (source[index] === ';') { - lex(); - - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: null - }; - } - - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: null - }; - } - - token = lookahead(); - if (token.type === Token.Identifier) { - label = parseVariableIdentifier(); - - if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: label - }; - } - - // 12.8 The break statement - - function parseBreakStatement() { - var token, label = null; - - expectKeyword('break'); - - // Optimize the most common form: 'break;'. - if (source[index] === ';') { - lex(); - - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: null - }; - } - - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: null - }; - } - - token = lookahead(); - if (token.type === Token.Identifier) { - label = parseVariableIdentifier(); - - if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: label - }; - } - - // 12.9 The return statement - - function parseReturnStatement() { - var token, argument = null; - - expectKeyword('return'); - - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); - } - - // 'return' followed by a space and an identifier is very common. - if (source[index] === ' ') { - if (isIdentifierStart(source[index + 1])) { - argument = parseExpression(); - consumeSemicolon(); - return { - type: Syntax.ReturnStatement, - argument: argument - }; - } - } - - if (peekLineTerminator()) { - return { - type: Syntax.ReturnStatement, - argument: null - }; - } - - if (!match(';')) { - token = lookahead(); - if (!match('}') && token.type !== Token.EOF) { - argument = parseExpression(); - } - } - - consumeSemicolon(); - - return { - type: Syntax.ReturnStatement, - argument: argument - }; - } - - // 12.10 The with statement - - function parseWithStatement() { - var object, body; - - if (strict) { - throwErrorTolerant({}, Messages.StrictModeWith); - } - - expectKeyword('with'); - - expect('('); - - object = parseExpression(); - - expect(')'); - - body = parseStatement(); - - return { - type: Syntax.WithStatement, - object: object, - body: body - }; - } - - // 12.10 The swith statement - - function parseSwitchCase() { - var test, - consequent = [], - statement; - - if (matchKeyword('default')) { - lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); - } - expect(':'); - - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - if (typeof statement === 'undefined') { - break; - } - consequent.push(statement); - } - - return { - type: Syntax.SwitchCase, - test: test, - consequent: consequent - }; - } - - function parseSwitchStatement() { - var discriminant, cases, clause, oldInSwitch, defaultFound; - - expectKeyword('switch'); - - expect('('); - - discriminant = parseExpression(); - - expect(')'); - - expect('{'); - - cases = []; - - if (match('}')) { - lex(); - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - } - - oldInSwitch = state.inSwitch; - state.inSwitch = true; - defaultFound = false; - - while (index < length) { - if (match('}')) { - break; - } - clause = parseSwitchCase(); - if (clause.test === null) { - if (defaultFound) { - throwError({}, Messages.MultipleDefaultsInSwitch); - } - defaultFound = true; - } - cases.push(clause); - } - - state.inSwitch = oldInSwitch; - - expect('}'); - - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - } - - // 12.13 The throw statement - - function parseThrowStatement() { - var argument; - - expectKeyword('throw'); - - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); - } - - argument = parseExpression(); - - consumeSemicolon(); - - return { - type: Syntax.ThrowStatement, - argument: argument - }; - } - - // 12.14 The try statement - - function parseCatchClause() { - var param; - - expectKeyword('catch'); - - expect('('); - if (match(')')) { - throwUnexpected(lookahead()); - } - - param = parseVariableIdentifier(); - // 12.14.1 - if (strict && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); - } - - expect(')'); - - return { - type: Syntax.CatchClause, - param: param, - body: parseBlock() - }; - } - - function parseTryStatement() { - var block, handlers = [], finalizer = null; - - expectKeyword('try'); - - block = parseBlock(); - - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } - - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } - - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); - } - - return { - type: Syntax.TryStatement, - block: block, - guardedHandlers: [], - handlers: handlers, - finalizer: finalizer - }; - } - - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); - - return { - type: Syntax.DebuggerStatement - }; - } - - // 12 Statements - - function parseStatement() { - var token = lookahead(), - expr, - labeledBody; - - if (token.type === Token.EOF) { - throwUnexpected(token); - } - - if (token.type === Token.Punctuator) { - switch (token.value) { - case ';': - return parseEmptyStatement(); - case '{': - return parseBlock(); - case '(': - return parseExpressionStatement(); - default: - break; - } - } - - if (token.type === Token.Keyword) { - switch (token.value) { - case 'break': - return parseBreakStatement(); - case 'continue': - return parseContinueStatement(); - case 'debugger': - return parseDebuggerStatement(); - case 'do': - return parseDoWhileStatement(); - case 'for': - return parseForStatement(); - case 'function': - return parseFunctionDeclaration(); - case 'if': - return parseIfStatement(); - case 'return': - return parseReturnStatement(); - case 'switch': - return parseSwitchStatement(); - case 'throw': - return parseThrowStatement(); - case 'try': - return parseTryStatement(); - case 'var': - return parseVariableStatement(); - case 'while': - return parseWhileStatement(); - case 'with': - return parseWithStatement(); - default: - break; - } - } - - expr = parseExpression(); - - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); - - if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } - - state.labelSet[expr.name] = true; - labeledBody = parseStatement(); - delete state.labelSet[expr.name]; - - return { - type: Syntax.LabeledStatement, - label: expr, - body: labeledBody - }; - } - - consumeSemicolon(); - - return { - type: Syntax.ExpressionStatement, - expression: expr - }; - } - - // 13 Function Definition - - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; - - expect('{'); - - while (index < length) { - token = lookahead(); - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = sliceSource(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; - - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; - - while (index < length) { - if (match('}')) { - break; - } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - - expect('}'); - - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; - - return { - type: Syntax.BlockStatement, - body: sourceElements - }; - } - - function parseFunctionDeclaration() { - var id, param, params = [], body, token, stricted, firstRestricted, message, previousStrict, paramSet; - - expectKeyword('function'); - token = lookahead(); - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead(); - param = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[param.name] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }; - } - - function parseFunctionExpression() { - var token, id = null, stricted, firstRestricted, message, param, params = [], body, previousStrict, paramSet; - - expectKeyword('function'); - - if (!match('(')) { - token = lookahead(); - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - } - - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead(); - param = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[param.name] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }; - } - - // 14 Program - - function parseSourceElement() { - var token = lookahead(); - - if (token.type === Token.Keyword) { - switch (token.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(token.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); - } - } - - if (token.type !== Token.EOF) { - return parseStatement(); - } - } - - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; - - while (index < length) { - token = lookahead(); - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = sliceSource(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - while (index < length) { - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - return sourceElements; - } - - function parseProgram() { - var program; - strict = false; - program = { - type: Syntax.Program, - body: parseSourceElements() - }; - return program; - } - - // The following functions are needed only when the option to preserve - // the comments is active. - - function addComment(type, value, start, end, loc) { - assert(typeof start === 'number', 'Comment must have valid position'); - - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (extra.comments.length > 0) { - if (extra.comments[extra.comments.length - 1].range[1] > start) { - return; - } - } - - extra.comments.push({ - type: type, - value: value, - range: [start, end], - loc: loc - }); - } - - function scanComment() { - var comment, ch, loc, start, blockComment, lineComment; - - comment = ''; - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = source[index++]; - if (isLineTerminator(ch)) { - loc.end = { - line: lineNumber, - column: index - lineStart - 1 - }; - lineComment = false; - addComment('Line', comment, start, index - 1, loc); - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - comment = ''; - } else if (index >= length) { - lineComment = false; - comment += ch; - loc.end = { - line: lineNumber, - column: length - lineStart - }; - addComment('Line', comment, start, length, loc); - } else { - comment += ch; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - comment += '\r\n'; - } else { - comment += ch; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = source[index++]; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - comment += ch; - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - comment = comment.substr(0, comment.length - 1); - blockComment = false; - ++index; - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Block', comment, start, index, loc); - comment = ''; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - start = index; - index += 2; - lineComment = true; - if (index >= length) { - loc.end = { - line: lineNumber, - column: index - lineStart - }; - lineComment = false; - addComment('Line', comment, start, index, loc); - } - } else if (ch === '*') { - start = index; - index += 2; - blockComment = true; - loc = { - start: { - line: lineNumber, - column: index - lineStart - 2 - } - }; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function filterCommentLocation() { - var i, entry, comment, comments = []; - - for (i = 0; i < extra.comments.length; ++i) { - entry = extra.comments[i]; - comment = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - comment.range = entry.range; - } - if (extra.loc) { - comment.loc = entry.loc; - } - comments.push(comment); - } - - extra.comments = comments; - } - - function collectToken() { - var start, loc, token, range, value; - - skipComment(); - start = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - token = extra.advance(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - if (token.type !== Token.EOF) { - range = [token.range[0], token.range[1]]; - value = sliceSource(token.range[0], token.range[1]); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: range, - loc: loc - }); - } - - return token; - } - - function collectRegex() { - var pos, loc, regex, token; - - skipComment(); - - pos = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - regex = extra.scanRegExp(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } - } - - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index], - loc: loc - }); - - return regex; - } - - function filterTokenLocation() { - var i, entry, token, tokens = []; - - for (i = 0; i < extra.tokens.length; ++i) { - entry = extra.tokens[i]; - token = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - token.range = entry.range; - } - if (extra.loc) { - token.loc = entry.loc; - } - tokens.push(token); - } - - extra.tokens = tokens; - } - - function createLiteral(token) { - return { - type: Syntax.Literal, - value: token.value - }; - } - - function createRawLiteral(token) { - return { - type: Syntax.Literal, - value: token.value, - raw: sliceSource(token.range[0], token.range[1]) - }; - } - - function createLocationMarker() { - var marker = {}; - - marker.range = [index, index]; - marker.loc = { - start: { - line: lineNumber, - column: index - lineStart - }, - end: { - line: lineNumber, - column: index - lineStart - } - }; - - marker.end = function () { - this.range[1] = index; - this.loc.end.line = lineNumber; - this.loc.end.column = index - lineStart; - }; - - marker.applyGroup = function (node) { - if (extra.range) { - node.groupRange = [this.range[0], this.range[1]]; - } - if (extra.loc) { - node.groupLoc = { - start: { - line: this.loc.start.line, - column: this.loc.start.column - }, - end: { - line: this.loc.end.line, - column: this.loc.end.column - } - }; - } - }; - - marker.apply = function (node) { - if (extra.range) { - node.range = [this.range[0], this.range[1]]; - } - if (extra.loc) { - node.loc = { - start: { - line: this.loc.start.line, - column: this.loc.start.column - }, - end: { - line: this.loc.end.line, - column: this.loc.end.column - } - }; - } - }; - - return marker; - } - - function trackGroupExpression() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - expect('('); - - expr = parseExpression(); - - expect(')'); - - marker.end(); - marker.applyGroup(expr); - - return expr; - } - - function trackLeftHandSideExpression() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[')) { - if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - marker.end(); - marker.apply(expr); - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - marker.end(); - marker.apply(expr); - } - } - - return expr; - } - - function trackLeftHandSideExpressionAllowCall() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - expr = { - type: Syntax.CallExpression, - callee: expr, - 'arguments': parseArguments() - }; - marker.end(); - marker.apply(expr); - } else if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - marker.end(); - marker.apply(expr); - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - marker.end(); - marker.apply(expr); - } - } - - return expr; - } - - function filterGroup(node) { - var n, i, entry; - - n = (Object.prototype.toString.apply(node) === '[object Array]') ? [] : {}; - for (i in node) { - if (node.hasOwnProperty(i) && i !== 'groupRange' && i !== 'groupLoc') { - entry = node[i]; - if (entry === null || typeof entry !== 'object' || entry instanceof RegExp) { - n[i] = entry; - } else { - n[i] = filterGroup(entry); - } - } - } - return n; - } - - function wrapTrackingFunction(range, loc) { - - return function (parseFunction) { - - function isBinary(node) { - return node.type === Syntax.LogicalExpression || - node.type === Syntax.BinaryExpression; - } - - function visit(node) { - var start, end; - - if (isBinary(node.left)) { - visit(node.left); - } - if (isBinary(node.right)) { - visit(node.right); - } - - if (range) { - if (node.left.groupRange || node.right.groupRange) { - start = node.left.groupRange ? node.left.groupRange[0] : node.left.range[0]; - end = node.right.groupRange ? node.right.groupRange[1] : node.right.range[1]; - node.range = [start, end]; - } else if (typeof node.range === 'undefined') { - start = node.left.range[0]; - end = node.right.range[1]; - node.range = [start, end]; - } - } - if (loc) { - if (node.left.groupLoc || node.right.groupLoc) { - start = node.left.groupLoc ? node.left.groupLoc.start : node.left.loc.start; - end = node.right.groupLoc ? node.right.groupLoc.end : node.right.loc.end; - node.loc = { - start: start, - end: end - }; - } else if (typeof node.loc === 'undefined') { - node.loc = { - start: node.left.loc.start, - end: node.right.loc.end - }; - } - } - } - - return function () { - var marker, node; - - skipComment(); - - marker = createLocationMarker(); - node = parseFunction.apply(null, arguments); - marker.end(); - - if (range && typeof node.range === 'undefined') { - marker.apply(node); - } - - if (loc && typeof node.loc === 'undefined') { - marker.apply(node); - } - - if (isBinary(node)) { - visit(node); - } - - return node; - }; - }; - } - - function patch() { - - var wrapTracking; - - if (extra.comments) { - extra.skipComment = skipComment; - skipComment = scanComment; - } - - if (extra.raw) { - extra.createLiteral = createLiteral; - createLiteral = createRawLiteral; - } - - if (extra.range || extra.loc) { - - extra.parseGroupExpression = parseGroupExpression; - extra.parseLeftHandSideExpression = parseLeftHandSideExpression; - extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall; - parseGroupExpression = trackGroupExpression; - parseLeftHandSideExpression = trackLeftHandSideExpression; - parseLeftHandSideExpressionAllowCall = trackLeftHandSideExpressionAllowCall; - - wrapTracking = wrapTrackingFunction(extra.range, extra.loc); - - extra.parseAdditiveExpression = parseAdditiveExpression; - extra.parseAssignmentExpression = parseAssignmentExpression; - extra.parseBitwiseANDExpression = parseBitwiseANDExpression; - extra.parseBitwiseORExpression = parseBitwiseORExpression; - extra.parseBitwiseXORExpression = parseBitwiseXORExpression; - extra.parseBlock = parseBlock; - extra.parseFunctionSourceElements = parseFunctionSourceElements; - extra.parseCatchClause = parseCatchClause; - extra.parseComputedMember = parseComputedMember; - extra.parseConditionalExpression = parseConditionalExpression; - extra.parseConstLetDeclaration = parseConstLetDeclaration; - extra.parseEqualityExpression = parseEqualityExpression; - extra.parseExpression = parseExpression; - extra.parseForVariableDeclaration = parseForVariableDeclaration; - extra.parseFunctionDeclaration = parseFunctionDeclaration; - extra.parseFunctionExpression = parseFunctionExpression; - extra.parseLogicalANDExpression = parseLogicalANDExpression; - extra.parseLogicalORExpression = parseLogicalORExpression; - extra.parseMultiplicativeExpression = parseMultiplicativeExpression; - extra.parseNewExpression = parseNewExpression; - extra.parseNonComputedProperty = parseNonComputedProperty; - extra.parseObjectProperty = parseObjectProperty; - extra.parseObjectPropertyKey = parseObjectPropertyKey; - extra.parsePostfixExpression = parsePostfixExpression; - extra.parsePrimaryExpression = parsePrimaryExpression; - extra.parseProgram = parseProgram; - extra.parsePropertyFunction = parsePropertyFunction; - extra.parseRelationalExpression = parseRelationalExpression; - extra.parseStatement = parseStatement; - extra.parseShiftExpression = parseShiftExpression; - extra.parseSwitchCase = parseSwitchCase; - extra.parseUnaryExpression = parseUnaryExpression; - extra.parseVariableDeclaration = parseVariableDeclaration; - extra.parseVariableIdentifier = parseVariableIdentifier; - - parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression); - parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression); - parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression); - parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression); - parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression); - parseBlock = wrapTracking(extra.parseBlock); - parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements); - parseCatchClause = wrapTracking(extra.parseCatchClause); - parseComputedMember = wrapTracking(extra.parseComputedMember); - parseConditionalExpression = wrapTracking(extra.parseConditionalExpression); - parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration); - parseEqualityExpression = wrapTracking(extra.parseEqualityExpression); - parseExpression = wrapTracking(extra.parseExpression); - parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration); - parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration); - parseFunctionExpression = wrapTracking(extra.parseFunctionExpression); - parseLeftHandSideExpression = wrapTracking(parseLeftHandSideExpression); - parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression); - parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression); - parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression); - parseNewExpression = wrapTracking(extra.parseNewExpression); - parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty); - parseObjectProperty = wrapTracking(extra.parseObjectProperty); - parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey); - parsePostfixExpression = wrapTracking(extra.parsePostfixExpression); - parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression); - parseProgram = wrapTracking(extra.parseProgram); - parsePropertyFunction = wrapTracking(extra.parsePropertyFunction); - parseRelationalExpression = wrapTracking(extra.parseRelationalExpression); - parseStatement = wrapTracking(extra.parseStatement); - parseShiftExpression = wrapTracking(extra.parseShiftExpression); - parseSwitchCase = wrapTracking(extra.parseSwitchCase); - parseUnaryExpression = wrapTracking(extra.parseUnaryExpression); - parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration); - parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier); - } - - if (typeof extra.tokens !== 'undefined') { - extra.advance = advance; - extra.scanRegExp = scanRegExp; - - advance = collectToken; - scanRegExp = collectRegex; - } - } - - function unpatch() { - if (typeof extra.skipComment === 'function') { - skipComment = extra.skipComment; - } - - if (extra.raw) { - createLiteral = extra.createLiteral; - } - - if (extra.range || extra.loc) { - parseAdditiveExpression = extra.parseAdditiveExpression; - parseAssignmentExpression = extra.parseAssignmentExpression; - parseBitwiseANDExpression = extra.parseBitwiseANDExpression; - parseBitwiseORExpression = extra.parseBitwiseORExpression; - parseBitwiseXORExpression = extra.parseBitwiseXORExpression; - parseBlock = extra.parseBlock; - parseFunctionSourceElements = extra.parseFunctionSourceElements; - parseCatchClause = extra.parseCatchClause; - parseComputedMember = extra.parseComputedMember; - parseConditionalExpression = extra.parseConditionalExpression; - parseConstLetDeclaration = extra.parseConstLetDeclaration; - parseEqualityExpression = extra.parseEqualityExpression; - parseExpression = extra.parseExpression; - parseForVariableDeclaration = extra.parseForVariableDeclaration; - parseFunctionDeclaration = extra.parseFunctionDeclaration; - parseFunctionExpression = extra.parseFunctionExpression; - parseGroupExpression = extra.parseGroupExpression; - parseLeftHandSideExpression = extra.parseLeftHandSideExpression; - parseLeftHandSideExpressionAllowCall = extra.parseLeftHandSideExpressionAllowCall; - parseLogicalANDExpression = extra.parseLogicalANDExpression; - parseLogicalORExpression = extra.parseLogicalORExpression; - parseMultiplicativeExpression = extra.parseMultiplicativeExpression; - parseNewExpression = extra.parseNewExpression; - parseNonComputedProperty = extra.parseNonComputedProperty; - parseObjectProperty = extra.parseObjectProperty; - parseObjectPropertyKey = extra.parseObjectPropertyKey; - parsePrimaryExpression = extra.parsePrimaryExpression; - parsePostfixExpression = extra.parsePostfixExpression; - parseProgram = extra.parseProgram; - parsePropertyFunction = extra.parsePropertyFunction; - parseRelationalExpression = extra.parseRelationalExpression; - parseStatement = extra.parseStatement; - parseShiftExpression = extra.parseShiftExpression; - parseSwitchCase = extra.parseSwitchCase; - parseUnaryExpression = extra.parseUnaryExpression; - parseVariableDeclaration = extra.parseVariableDeclaration; - parseVariableIdentifier = extra.parseVariableIdentifier; - } - - if (typeof extra.scanRegExp === 'function') { - advance = extra.advance; - scanRegExp = extra.scanRegExp; - } - } - - function stringToArray(str) { - var length = str.length, - result = [], - i; - for (i = 0; i < length; ++i) { - result[i] = str.charAt(i); - } - return result; - } - - function parse(code, options) { - var program, toString; - - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } - - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - buffer = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false - }; - - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.raw = (typeof options.raw === 'boolean') && options.raw; - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - } - - if (length > 0) { - if (typeof source[0] === 'undefined') { - // Try first to convert to a string. This is good as fast path - // for old IE which understands string indexing for string - // literals only and not for string object. - if (code instanceof String) { - source = code.valueOf(); - } - - // Force accessing the characters via an array. - if (typeof source[0] === 'undefined') { - source = stringToArray(code); - } - } - } - - patch(); - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - filterCommentLocation(); - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - filterTokenLocation(); - program.tokens = extra.tokens; - } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; - } - if (extra.range || extra.loc) { - program.body = filterGroup(program.body); - } - } catch (e) { - throw e; - } finally { - unpatch(); - extra = {}; - } - - return program; - } - - // Sync with package.json. - exports.version = '1.0.4'; - - exports.parse = parse; - - // Deep copy. - exports.Syntax = (function () { - var name, types = {}; - - if (typeof Object.create === 'function') { - types = Object.create(null); - } - - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } - - if (typeof Object.freeze === 'function') { - Object.freeze(types); - } - - return types; - }()); - -})); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/package.json b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/package.json deleted file mode 100644 index b1c65c5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "esprima", - "description": "ECMAScript parsing infrastructure for multipurpose analysis", - "homepage": "http://esprima.org", - "main": "esprima.js", - "bin": { - "esparse": "./bin/esparse.js", - "esvalidate": "./bin/esvalidate.js" - }, - "files": [ - "bin", - "test/run.js", - "test/runner.js", - "test/test.js", - "test/compat.js", - "test/reflect.js", - "esprima.js" - ], - "version": "1.0.4", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "Ariya Hidayat", - "email": "ariya.hidayat@gmail.com", - "url": "http://ariya.ofilabs.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/ariya/esprima.git" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" - } - ], - "keywords": [ - "ast", - "ecmascript", - "javascript", - "parser", - "syntax" - ], - "scripts": { - "test": "node test/run.js", - "benchmark": "node test/benchmarks.js", - "benchmark-quick": "node test/benchmarks.js quick" - }, - "readme": "**Esprima** ([esprima.org](http://esprima.org)) is a high performance,\nstandard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\nparser written in ECMAScript (also popularly known as\n[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).\nEsprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),\nwith the help of [many contributors](https://github.com/ariya/esprima/contributors).\n\nEsprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as\n[Node.js](http://nodejs.org).\n\n### Features\n\n- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262)\n- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla\n[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)\n- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage)\n- Optional tracking of syntax node location (index-based and line-column)\n- Experimental support for ES6/Harmony (module, class, destructuring, ...)\n\nEsprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)).\nIt is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html)\nwith the new generation of fast parsers.\n\n### Applications\n\nEsprima serves as the basis for many popular JavaScript development tools:\n\n- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul)\n- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck)\n- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS),\n[Sweet.js](http://sweetjs.org/) (macro)\n- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr)\n- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html))\n- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter),\n- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen)\n\n### Questions?\n- [Documentation](http://esprima.org/doc)\n- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect)\nand [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement)\n- [Mailing list](http://groups.google.com/group/esprima)\n- [Contribution guide](http://esprima.org/doc/index.html#contribution)\n\nFollow [@Esprima](http://twitter.com/Esprima) on Twitter to get the\ndevelopment updates.\nFeedback and contribution are welcomed!\n\n### License\n\nCopyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about)\n and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ariya/esprima/issues" - }, - "_id": "esprima@1.0.4", - "_from": "esprima@>=1.0.2 <1.1.0" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/compat.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/compat.js deleted file mode 100644 index ee3a629..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/compat.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node: true */ -/*global document: true, window:true, esprima: true, testReflect: true */ - -var runTests; - -function getContext(esprima, reportCase, reportFailure) { - 'use strict'; - - var Reflect, Pattern; - - // Maps Mozilla Reflect object to our Esprima parser. - Reflect = { - parse: function (code) { - var result; - - reportCase(code); - - try { - result = esprima.parse(code); - } catch (error) { - result = error; - } - - return result; - } - }; - - // This is used by Reflect test suite to match a syntax tree. - Pattern = function (obj) { - var pattern; - - // Poor man's deep object cloning. - pattern = JSON.parse(JSON.stringify(obj)); - - // Special handling for regular expression literal since we need to - // convert it to a string literal, otherwise it will be decoded - // as object "{}" and the regular expression would be lost. - if (obj.type && obj.type === 'Literal') { - if (obj.value instanceof RegExp) { - pattern = { - type: obj.type, - value: obj.value.toString() - }; - } - } - - // Special handling for branch statement because SpiderMonkey - // prefers to put the 'alternate' property before 'consequent'. - if (obj.type && obj.type === 'IfStatement') { - pattern = { - type: pattern.type, - test: pattern.test, - consequent: pattern.consequent, - alternate: pattern.alternate - }; - } - - // Special handling for do while statement because SpiderMonkey - // prefers to put the 'test' property before 'body'. - if (obj.type && obj.type === 'DoWhileStatement') { - pattern = { - type: pattern.type, - body: pattern.body, - test: pattern.test - }; - } - - function adjustRegexLiteralAndRaw(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } else if (key === 'raw' && typeof value === "string") { - // Ignore Esprima-specific 'raw' property. - return undefined; - } - return value; - } - - if (obj.type && (obj.type === 'Program')) { - pattern.assert = function (tree) { - var actual, expected; - actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4); - expected = JSON.stringify(obj, null, 4); - - if (expected !== actual) { - reportFailure(expected, actual); - } - }; - } - - return pattern; - }; - - return { - Reflect: Reflect, - Pattern: Pattern - }; -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - - var total = 0, - failures = 0; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function reportCase(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - total += 1; - } - - function reportFailure(expected, actual) { - var report, e; - - failures += 1; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - window.setTimeout(function () { - var tick, context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }, 513); - }; -} else { - (function (global) { - 'use strict'; - var esprima = require('../esprima'), - tick, - total = 0, - failures = [], - header, - current, - context; - - function reportCase(code) { - total += 1; - current = code; - } - - function reportFailure(expected, actual) { - failures.push({ - source: current, - expected: expected.toString(), - actual: actual.toString() - }); - } - - context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - require('./reflect').testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }(this)); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/reflect.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/reflect.js deleted file mode 100644 index dba1ba8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/reflect.js +++ /dev/null @@ -1,422 +0,0 @@ -// This is modified from Mozilla Reflect.parse test suite (the file is located -// at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree). -// -// Some notable changes: -// * Removed unsupported features (destructuring, let, comprehensions...). -// * Removed tests for E4X (ECMAScript for XML). -// * Removed everything related to builder. -// * Enclosed every 'Pattern' construct with a scope. -// * Tweaked some expected tree to remove generator field. -// * Removed the test for bug 632030 and bug 632024. - -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/licenses/publicdomain/ - */ - -(function (exports) { - -function testReflect(Reflect, Pattern) { - -function program(elts) { return Pattern({ type: "Program", body: elts }) } -function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) } -function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) } -function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) } -function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) } -function lit(val) { return Pattern({ type: "Literal", value: val }) } -var thisExpr = Pattern({ type: "ThisExpression" }); -function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) } -function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) } -function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) } -function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) } -function ident(name) { return Pattern({ type: "Identifier", name: name }) } -function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) } -function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) } -function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) } -function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) } -function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) } -function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) } -function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) } -function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) } -var emptyStmt = Pattern({ type: "EmptyStatement" }); -function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) } -function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) } -function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) } -function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) } -function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) } -function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) } -function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) } -function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) } -function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } } -function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) } -function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) } -function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } - -function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg, prefix: true }) } -function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) } -function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) } -function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) } -function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) } - -function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) } -function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) } -function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) } -function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) } -function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) } -function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) } -function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) } - -function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) } -function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) } - -function localSrc(src) { return "(function(){ " + src + " })" } -function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) } -function blockSrc(src) { return "(function(){ { " + src + " } })" } -function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) } - -function assertBlockStmt(src, patt) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src))); -} - -function assertBlockExpr(src, patt) { - assertBlockStmt(src, exprStmt(patt)); -} - -function assertBlockDecl(src, patt, builder) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder})); -} - -function assertLocalStmt(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertLocalExpr(src, patt) { - assertLocalStmt(src, exprStmt(patt)); -} - -function assertLocalDecl(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertGlobalStmt(src, patt, builder) { - program([patt]).assert(Reflect.parse(src, {builder: builder})); -} - -function assertGlobalExpr(src, patt, builder) { - program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder})); - //assertStmt(src, exprStmt(patt)); -} - -function assertGlobalDecl(src, patt) { - program([patt]).assert(Reflect.parse(src)); -} - -function assertProg(src, patt) { - program(patt).assert(Reflect.parse(src)); -} - -function assertStmt(src, patt) { - assertLocalStmt(src, patt); - assertGlobalStmt(src, patt); - assertBlockStmt(src, patt); -} - -function assertExpr(src, patt) { - assertLocalExpr(src, patt); - assertGlobalExpr(src, patt); - assertBlockExpr(src, patt); -} - -function assertDecl(src, patt) { - assertLocalDecl(src, patt); - assertGlobalDecl(src, patt); - assertBlockDecl(src, patt); -} - -function assertError(src, errorType) { - try { - Reflect.parse(src); - } catch (e) { - return; - } - throw new Error("expected " + errorType.name + " for " + uneval(src)); -} - - -// general tests - -// NB: These are useful but for now jit-test doesn't do I/O reliably. - -//program(_).assert(Reflect.parse(snarf('data/flapjax.txt'))); -//program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt'))); -//program(_).assert(Reflect.parse(snarf('data/prototype.js'))); -//program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js'))); -//program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js'))); - - -// declarations - -assertDecl("var x = 1, y = 2, z = 3", - varDecl([declarator(ident("x"), lit(1)), - declarator(ident("y"), lit(2)), - declarator(ident("z"), lit(3))])); -assertDecl("var x, y, z", - varDecl([declarator(ident("x"), null), - declarator(ident("y"), null), - declarator(ident("z"), null)])); -assertDecl("function foo() { }", - funDecl(ident("foo"), [], blockStmt([]))); -assertDecl("function foo() { return 42 }", - funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))]))); - - -// Bug 591437: rebound args have their defs turned into uses -assertDecl("function f(a) { function a() { } }", - funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))]))); -assertDecl("function f(a,b,c) { function b() { } }", - funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))]))); - -// expressions - -assertExpr("true", lit(true)); -assertExpr("false", lit(false)); -assertExpr("42", lit(42)); -assertExpr("(/asdf/)", lit(/asdf/)); -assertExpr("this", thisExpr); -assertExpr("foo", ident("foo")); -assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar"))); -assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar"))); -assertExpr("(function(){})", funExpr(null, [], blockStmt([]))); -assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([]))); -assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([]))); -assertExpr("(++x)", updExpr("++", ident("x"), true)); -assertExpr("(x++)", updExpr("++", ident("x"), false)); -assertExpr("(+x)", unExpr("+", ident("x"))); -assertExpr("(-x)", unExpr("-", ident("x"))); -assertExpr("(!x)", unExpr("!", ident("x"))); -assertExpr("(~x)", unExpr("~", ident("x"))); -assertExpr("(delete x)", unExpr("delete", ident("x"))); -assertExpr("(typeof x)", unExpr("typeof", ident("x"))); -assertExpr("(void x)", unExpr("void", ident("x"))); -assertExpr("(x == y)", binExpr("==", ident("x"), ident("y"))); -assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y"))); -assertExpr("(x === y)", binExpr("===", ident("x"), ident("y"))); -assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y"))); -assertExpr("(x < y)", binExpr("<", ident("x"), ident("y"))); -assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y"))); -assertExpr("(x > y)", binExpr(">", ident("x"), ident("y"))); -assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y"))); -assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y"))); -assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y"))); -assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y"))); -assertExpr("(x + y)", binExpr("+", ident("x"), ident("y"))); -assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x - y)", binExpr("-", ident("x"), ident("y"))); -assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x * y)", binExpr("*", ident("x"), ident("y"))); -assertExpr("(x / y)", binExpr("/", ident("x"), ident("y"))); -assertExpr("(x % y)", binExpr("%", ident("x"), ident("y"))); -assertExpr("(x | y)", binExpr("|", ident("x"), ident("y"))); -assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y"))); -assertExpr("(x & y)", binExpr("&", ident("x"), ident("y"))); -assertExpr("(x in y)", binExpr("in", ident("x"), ident("y"))); -assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y"))); -assertExpr("(x = y)", aExpr("=", ident("x"), ident("y"))); -assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y"))); -assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y"))); -assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y"))); -assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y"))); -assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y"))); -assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y"))); -assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y"))); -assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y"))); -assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y"))); -assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y"))); -assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y"))); -assertExpr("(x || y)", logExpr("||", ident("x"), ident("y"))); -assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y"))); -assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z"))) -assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z"))); -assertExpr("(x,y)", seqExpr([ident("x"),ident("y")])) -assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")])) -assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")])); -assertExpr("(new Object)", newExpr(ident("Object"), [])); -assertExpr("(new Object())", newExpr(ident("Object"), [])); -assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)])); -assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)])); -assertExpr("(String())", callExpr(ident("String"), [])); -assertExpr("(String(42))", callExpr(ident("String"), [lit(42)])); -assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)])); -assertExpr("[]", arrExpr([])); -assertExpr("[1]", arrExpr([lit(1)])); -assertExpr("[1,2]", arrExpr([lit(1),lit(2)])); -assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)])); -assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)])); -assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)])); -assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)])); -assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)])); -assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)])); -assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined])); -assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined])); -assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined])); -assertExpr("({})", objExpr([])); -assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")])); -assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init")])); -assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(lit(3), lit(3), "init") ])); - -// Bug 571617: eliminate constant-folding -assertExpr("2 + 3", binExpr("+", lit(2), lit(3))); - -// Bug 632026: constant-folding -assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a")))); - -// Bug 632056: constant-folding -program([exprStmt(ident("f")), - ifStmt(lit(1), - funDecl(ident("f"), [], blockStmt([])), - null)]).assert(Reflect.parse("f; if (1) function f(){}")); - -// statements - -assertStmt("throw 42", throwStmt(lit(42))); -assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null))); -assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null))); -assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null))); -assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null))); -assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null))); -assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null))); -assertStmt("{ }", blockStmt([])); -assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))])); -assertStmt(";", emptyStmt); -assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null)); -assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true)))); -assertStmt("if (foo) { throw 1; throw 2; throw 3; }", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - null)); -assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - exprStmt(lit(true)))); -assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo"))))); -assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo"))))); -assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([]))); -assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))]))); -assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([]))); -assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))]))); -assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo"))); -assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo"))); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]) ])); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]), - caseClause(lit(42), [ exprStmt(lit(42)) ]) ])); -assertStmt("try { } catch (e) { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - null)); -assertStmt("try { } catch (e) { } finally { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - blockStmt([]))); -assertStmt("try { } finally { }", - tryStmt(blockStmt([]), - [], - [], - blockStmt([]))); - -// redeclarations (TOK_NAME nodes with lexdef) - -assertStmt("function f() { function g() { } function g() { } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([]))]))); - -assertStmt("function f() { function g() { } function g() { return 42 } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))]))); - -assertStmt("function f() { var x = 42; var x = 43; }", - funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]), - varDecl([declarator(ident("x"),lit(43))])]))); - -// getters and setters - - assertExpr("({ get x() { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [], blockStmt([returnStmt(lit(42))])), - "get" ) ])); - assertExpr("({ set x(v) { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])), - "set" ) ])); - -} - -exports.testReflect = testReflect; - -}(typeof exports === 'undefined' ? this : exports)); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/run.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/run.js deleted file mode 100644 index 32ca3fa..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/run.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node:true */ - -(function () { - 'use strict'; - - var child = require('child_process'), - nodejs = '"' + process.execPath + '"', - ret = 0, - suites, - index; - - suites = [ - 'runner', - 'compat' - ]; - - function nextTest() { - var suite = suites[index]; - - if (index < suites.length) { - child.exec(nodejs + ' ./test/' + suite + '.js', function (err, stdout, stderr) { - if (stdout) { - process.stdout.write(suite + ': ' + stdout); - } - if (stderr) { - process.stderr.write(suite + ': ' + stderr); - } - if (err) { - ret = err.code; - } - index += 1; - nextTest(); - }); - } else { - process.exit(ret); - } - } - - index = 0; - nextTest(); -}()); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/runner.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/runner.js deleted file mode 100644 index c1a3fc9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/runner.js +++ /dev/null @@ -1,387 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint browser:true node:true */ -/*global esprima:true, testFixture:true */ - -var runTests; - -// Special handling for regular expression literal since we need to -// convert it to a string literal, otherwise it will be decoded -// as object "{}" and the regular expression would be lost. -function adjustRegexLiteral(key, value) { - 'use strict'; - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return value; -} - -function NotMatchingError(expected, actual) { - 'use strict'; - Error.call(this, 'Expected '); - this.expected = expected; - this.actual = actual; -} -NotMatchingError.prototype = new Error(); - -function errorToObject(e) { - 'use strict'; - var msg = e.toString(); - - // Opera 9.64 produces an non-standard string in toString(). - if (msg.substr(0, 6) !== 'Error:') { - if (typeof e.message === 'string') { - msg = 'Error: ' + e.message; - } - } - - return { - index: e.index, - lineNumber: e.lineNumber, - column: e.column, - message: msg - }; -} - -function testParse(esprima, code, syntax) { - 'use strict'; - var expected, tree, actual, options, StringObject, i, len, err; - - // alias, so that JSLint does not complain. - StringObject = String; - - options = { - comment: (typeof syntax.comments !== 'undefined'), - range: true, - loc: true, - tokens: (typeof syntax.tokens !== 'undefined'), - raw: true, - tolerant: (typeof syntax.errors !== 'undefined') - }; - - if (typeof syntax.tokens !== 'undefined') { - if (syntax.tokens.length > 0) { - options.range = (typeof syntax.tokens[0].range !== 'undefined'); - options.loc = (typeof syntax.tokens[0].loc !== 'undefined'); - } - } - - if (typeof syntax.comments !== 'undefined') { - if (syntax.comments.length > 0) { - options.range = (typeof syntax.comments[0].range !== 'undefined'); - options.loc = (typeof syntax.comments[0].loc !== 'undefined'); - } - } - - expected = JSON.stringify(syntax, null, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens || options.tolerant) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, adjustRegexLiteral, 4); - - // Only to ensure that there is no error when using string object. - esprima.parse(new StringObject(code), options); - - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } - - function filter(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return (key === 'loc' || key === 'range') ? undefined : value; - } - - if (options.tolerant) { - return; - } - - - // Check again without any location info. - options.range = false; - options.loc = false; - expected = JSON.stringify(syntax, filter, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, filter, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function testError(esprima, code, exception) { - 'use strict'; - var i, options, expected, actual, handleInvalidRegexFlag; - - // Different parsing options should give the same error. - options = [ - {}, - { comment: true }, - { raw: true }, - { raw: true, comment: true } - ]; - - // If handleInvalidRegexFlag is true, an invalid flag in a regular expression - // will throw an exception. In some old version V8, this is not the case - // and hence handleInvalidRegexFlag is false. - handleInvalidRegexFlag = false; - try { - 'test'.match(new RegExp('[a-z]', 'x')); - } catch (e) { - handleInvalidRegexFlag = true; - } - - expected = JSON.stringify(exception); - - for (i = 0; i < options.length; i += 1) { - - try { - esprima.parse(code, options[i]); - } catch (e) { - actual = JSON.stringify(errorToObject(e)); - } - - if (expected !== actual) { - - // Compensate for old V8 which does not handle invalid flag. - if (exception.message.indexOf('Invalid regular expression') > 0) { - if (typeof actual === 'undefined' && !handleInvalidRegexFlag) { - return; - } - } - - throw new NotMatchingError(expected, actual); - } - - } -} - -function testAPI(esprima, code, result) { - 'use strict'; - var expected, res, actual; - - expected = JSON.stringify(result.result, null, 4); - try { - if (typeof result.property !== 'undefined') { - res = esprima[result.property]; - } else { - res = esprima[result.call].apply(esprima, result.args); - } - actual = JSON.stringify(res, adjustRegexLiteral, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function runTest(esprima, code, result) { - 'use strict'; - if (result.hasOwnProperty('lineNumber')) { - testError(esprima, code, result); - } else if (result.hasOwnProperty('result')) { - testAPI(esprima, code, result); - } else { - testParse(esprima, code, result); - } -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - var total = 0, - failures = 0, - category, - fixture, - source, - tick, - expected, - index, - len; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function startCategory(category) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('h4'); - setText(e, category); - report.appendChild(e); - } - - function reportSuccess(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - } - - function reportFailure(code, expected, actual) { - var report, e; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Code:'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - tick = new Date(); - for (category in testFixture) { - if (testFixture.hasOwnProperty(category)) { - startCategory(category); - fixture = testFixture[category]; - for (source in fixture) { - if (fixture.hasOwnProperty(source)) { - expected = fixture[source]; - total += 1; - try { - runTest(esprima, source, expected); - reportSuccess(source, JSON.stringify(expected, null, 4)); - } catch (e) { - failures += 1; - reportFailure(source, e.expected, e.actual); - } - } - } - } - } - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }; -} else { - (function () { - 'use strict'; - - var esprima = require('../esprima'), - vm = require('vm'), - fs = require('fs'), - total = 0, - failures = [], - tick = new Date(), - expected, - header; - - vm.runInThisContext(fs.readFileSync(__dirname + '/test.js', 'utf-8')); - - Object.keys(testFixture).forEach(function (category) { - Object.keys(testFixture[category]).forEach(function (source) { - total += 1; - expected = testFixture[category][source]; - try { - runTest(esprima, source, expected); - } catch (e) { - e.source = source; - failures.push(e); - } - }); - }); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }()); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/test.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/test.js deleted file mode 100644 index 8ceee54..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/esprima/test/test.js +++ /dev/null @@ -1,20238 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -var testFixture = { - - 'Primary Expression': { - - 'this\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'ThisExpression', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Keyword', - value: 'this', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - 'null\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null, - raw: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Null', - value: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '\n 42\n\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - } - }], - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - }, - tokens: [{ - type: 'Numeric', - value: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }] - }, - - '(1 + 2 ) * 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [1, 6], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Grouping Operator': { - - '(1) + (2 ) + 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '4 + 5 << (6)': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 4, - raw: '4', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 5, - raw: '5', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 6, - raw: '6', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Array Initializer': { - - 'x = []': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - tokens: [{ - type: 'Identifier', - value: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Punctuator', - value: '=', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Punctuator', - value: '[', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: ']', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }] - }, - - 'x = [ ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = [ 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'x = [ 42, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x = [ ,, 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [ - null, - null, - { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'x = [ 1, 2, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = [ 1, 2,, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, null, { - type: 'Literal', - value: 3, - raw: '3', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '日本語 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '日本語', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'T\u203F = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u203F', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200C = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200C', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200D = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200D', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161\u200A=\u2009[]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Object Initializer': { - - 'x = {}': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x = { }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = { answer: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'answer', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [6, 16], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 16 } - } - }], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { if: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - kind: 'init', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x = { true: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { false: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - kind: 'init', - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'x = { null: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { "answer": 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'answer', - raw: '"answer"', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 18 } - } - }, - kind: 'init', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }], - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'x = { x: 1, x: 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [ - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - kind: 'init', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [12, 16], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 16 } - } - } - ], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { get width() { return m_width } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'm_width', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - range: [20, 35], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 35 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - kind: 'get', - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }], - range: [4, 38], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'x = { get undef() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'undef', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get if() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { get true() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get false() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get null() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get "undef"() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'undef', - raw: '"undef"', - range: [10, 17], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - kind: 'get', - range: [6, 22], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 22 } - } - }], - range: [4, 24], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'x = { get 10() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { set width(w) { m_width = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_width', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set if(w) { m_if = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_if', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 26], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - kind: 'set', - range: [6, 28], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 28 } - } - }], - range: [4, 30], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'x = { set true(w) { m_true = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_true', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set false(w) { m_false = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_false', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set null(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set "null"(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'null', - raw: '"null"', - range: [10, 16], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 16 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [22, 28], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 32], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 33], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 33 } - } - }], - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set 10(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [18, 24], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 24 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }], - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - kind: 'set', - range: [6, 30], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 30 } - } - }], - range: [4, 32], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'x = { get: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'get', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'x = { set: 43 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'set', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 43, - raw: '43', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - } - - }, - - 'Comments': { - - '/* block comment */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - - '42 /*The*/ /*Answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - comments: [{ - type: 'Block', - value: 'The', - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Block', - value: 'Answer', - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }] - }, - - '42 /*the*/ /*answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2] - }, - range: [0, 21] - }], - range: [0, 21], - comments: [{ - type: 'Block', - value: 'the', - range: [3, 10] - }, { - type: 'Block', - value: 'answer', - range: [11, 21] - }] - }, - - '/* multiline\ncomment\nshould\nbe\nignored */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - - '/*a\r\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\r\nb', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\rb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\rb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nc*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nc', - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '// line comment\n42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - - '42 // line comment': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - comments: [{ - type: 'Line', - value: ' line comment', - range: [3, 18], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 18 } - } - }] - }, - - '// Hello, world!\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hello, world!\n': { - type: 'Program', - body: [], - range: [17, 17], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hallo, world!\n': { - type: 'Program', - body: [], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hallo, world!', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '//\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '//': { - type: 'Program', - body: [], - range: [2, 2], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '// ': { - type: 'Program', - body: [], - range: [3, 3], - comments: [{ - type: 'Line', - value: ' ', - range: [0, 3] - }] - }, - - '/**/42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - }, - comments: [{ - type: 'Block', - value: '', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '// Hello, world!\n\n// Another hello\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }, - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }], - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Line', - value: ' Another hello', - range: [18, 36], - loc: { - start: { line: 3, column: 0 }, - end: { line: 3, column: 18 } - } - }] - }, - - 'if (x) { // Some comment\ndoThat(); }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [25, 31], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }, - 'arguments': [], - range: [25, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 8 } - } - }, - range: [25, 34], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 9 } - } - }], - range: [7, 36], - loc: { - start: { line: 1, column: 7 }, - end: { line: 2, column: 11 } - } - }, - alternate: null, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - }, - comments: [{ - type: 'Line', - value: ' Some comment', - range: [9, 24], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 24 } - } - }] - }, - - 'switch (answer) { case 42: /* perfect */ bingo() }': { - type: 'Program', - body: [{ - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'bingo', - range: [41, 46], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 46 } - } - }, - 'arguments': [], - range: [41, 48], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 48 } - } - }, - range: [41, 49], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 49 } - } - }], - range: [18, 49], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 49 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - }, - comments: [{ - type: 'Block', - value: ' perfect ', - range: [27, 40], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 40 } - } - }] - } - - }, - - 'Numeric Literals': { - - '0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - '42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '3': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3, - raw: '3', - range: [0, 1] - }, - range: [0, 1] - }], - range: [0, 1], - tokens: [{ - type: 'Numeric', - value: '3', - range: [0, 1] - }] - }, - - '5': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 5, - raw: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - }, - tokens: [{ - type: 'Numeric', - value: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }] - }, - - '.14': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0.14, - raw: '.14', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '3.14159': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3.14159, - raw: '3.14159', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '6.02214179e+23': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 6.02214179e+23, - raw: '6.02214179e+23', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '1.492417830e-10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 1.49241783e-10, - raw: '1.492417830e-10', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '0x0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0x0', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0e+100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0e+100', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '0xabc': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xabc, - raw: '0xabc', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0xdef': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xdef, - raw: '0xdef', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X1A': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x1A, - raw: '0X1A', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x10, - raw: '0x10', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x100, - raw: '0x100', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X04': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0X04, - raw: '0X04', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '02': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 2, - raw: '02', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '012', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '0012', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - } - - }, - - 'String Literals': { - - '"Hello"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello', - raw: '"Hello"', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\n\r\t\x0B\b\f\\\'"\x00', - raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '"\\u0061"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\u0061"', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - '"\\x61"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\x61"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\u00"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'u00', - raw: '"\\u00"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\xt"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'xt', - raw: '"\\xt"', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '"Hello\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\nworld', - raw: '"Hello\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 14 } - } - }, - - '"Hello\\02World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0002World', - raw: '"Hello\\02World"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '"Hello\\012World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000AWorld', - raw: '"Hello\\012World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\122World', - raw: '"Hello\\122World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000A2World', - raw: '"Hello\\0122World"', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '"Hello\\312World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u00CAWorld', - raw: '"Hello\\312World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\412World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\412World', - raw: '"Hello\\412World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\812World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello812World', - raw: '"Hello\\812World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\712World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\712World', - raw: '"Hello\\712World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0000World', - raw: '"Hello\\0World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\r\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\r\nworld"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '"Hello\\1World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0001World', - raw: '"Hello\\1World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - }, - - 'Regular Expression Literals': { - - 'var x = /[a-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-z]/i', - raw: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[x-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5] - }, - init: { - type: 'Literal', - value: '/[x-z]/i', - raw: '/[x-z]/i', - range: [8, 16] - }, - range: [4, 16] - }], - kind: 'var', - range: [0, 16] - }], - range: [0, 16], - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3] - }, { - type: 'Identifier', - value: 'x', - range: [4, 5] - }, { - type: 'Punctuator', - value: '=', - range: [6, 7] - }, { - type: 'RegularExpression', - value: '/[x-z]/i', - range: [8, 16] - }] - }, - - 'var x = /[a-c]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-c]/i', - raw: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[P QR]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/i', - raw: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }, - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }], - kind: 'var', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }], - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }] - }, - - 'var x = /[\\]/]/': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: new RegExp('[\\]/]').toString(), - raw: '/[\\]/]/', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }, - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }], - kind: 'var', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }], - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[\\]/]/', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }] - }, - - 'var x = /foo\\/bar/': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/foo\\/bar/', - raw: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - }, - - 'var x = /=([^=\\s])+/g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/=([^=\\s])+/g', - raw: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }, - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }], - kind: 'var', - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }] - }, - - 'var x = /[P QR]/\\u0067': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }, - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }] - }, - - 'var x = /[P QR]/\\g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - } - - }, - - 'Left-Hand-Side Expression': { - - 'new Button': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'new Button()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new new foo': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'new new foo()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'new foo().bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'new foo[bar]': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 12], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new foo.bar()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( new foo).bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - 'arguments': [], - range: [2, 9], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - 'arguments': [], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'foo(bar, baz)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'bar', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Identifier', - name: 'baz', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( foo )()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'universe.milkyway.solarsystem': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'universe.milkyway.solarsystem.Earth': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - property: { - type: 'Identifier', - name: 'Earth', - range: [30, 35], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'universe[galaxyName, otherUselessName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Identifier', - name: 'otherUselessName', - range: [21, 37], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 37 } - } - }], - range: [9, 37], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'universe[galaxyName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'universe[42].galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies(14, 3, 77).milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 14, - raw: '14', - range: [22, 24], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 24 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, { - type: 'Literal', - value: 77, - raw: '77', - range: [29, 31], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'earth.asia.Indonesia.prepareForElection(2014)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'earth', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - property: { - type: 'Identifier', - name: 'asia', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - property: { - type: 'Identifier', - name: 'Indonesia', - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - property: { - type: 'Identifier', - name: 'prepareForElection', - range: [21, 39], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 39 } - } - }, - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 2014, - raw: '2014', - range: [40, 44], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - - 'universe.if': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'if', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'universe.true': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'true', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.false': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'false', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'universe.null': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'null', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - } - - }, - - 'Postfix Expressions': { - - 'x++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'x--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'eval++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'arguments++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'arguments--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - } - - }, - - 'Unary Operators': { - - '++x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '--x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '++eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '--eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '++arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '--arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '+x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '+', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '-x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '-', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '~x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '~', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '!x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '!', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - prefix: true, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - 'void x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'void', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'delete x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - prefix: true, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'typeof x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'typeof', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - prefix: true, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - } - - }, - - 'Multiplicative Operators': { - - 'x * y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x / y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x % y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Additive Operators': { - - 'x + y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x - y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Bitwise Shift Operator': { - - 'x << y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >>> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Relational Operators': { - - 'x < y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x > y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x <= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x in y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x instanceof y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'instanceof', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x < y < z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Equality Operators': { - - 'x == y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x != y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x === y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '===', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x !== y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Binary Bitwise Operators': { - - 'x & y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x ^ y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x | y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Binary Expressions': { - - 'x + y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x % y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x << y << z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x | y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x ^ y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Binary Logical Operators': { - - 'x || y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x && y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x || y || z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x && y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [5, 11], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - } - - }, - - 'Conditional Operator': { - - 'y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'Identifier', - name: 'y', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x && y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - - }, - - 'Assignment Operators': { - - 'x = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'arguments = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x *= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '*=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x /= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '/=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x %= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '%=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x += 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '+=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x -= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '-=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x <<= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '<<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x &= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '&=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x ^= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '^=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x |= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '|=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Block': { - - '{ foo }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'foo', - range: [2, 5], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 5 } - } - }, - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '{ doThis(); doThat(); }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThis', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [2, 10], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 10 } - } - }, - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [12, 18], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 18 } - } - }, - 'arguments': [], - range: [12, 20], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 20 } - } - }, - range: [12, 21], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '{}': { - type: 'BlockStatement', - body: [], - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - } - - }, - - 'Variable Statement': { - - 'var x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'var x, y;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - init: null, - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }], - kind: 'var', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'var x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'var eval = 42, arguments = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [4, 8], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 8 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var x = 14, y = 3, z = 1977': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [12, 17], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 17 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'var implements, interface, package': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'implements', - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - init: null, - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'interface', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - init: null, - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'package', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - init: null, - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var private, protected, public, static': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'private', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - init: null, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'protected', - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'public', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - init: null, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'static', - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }, - init: null, - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - } - - }, - - 'Let Statement': { - - 'let x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'let', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '{ let x }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: null, - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }], - kind: 'let', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - '{ let x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'let', - range: [2, 13], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 13 } - } - }], - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '{ let x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }, - range: [21, 29], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 29 } - } - }], - kind: 'let', - range: [2, 30], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 30 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - } - - }, - - 'Const Statement': { - - 'const x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'const', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - '{ const x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }], - kind: 'const', - range: [2, 15], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 15 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '{ const x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - kind: 'const', - range: [2, 32], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 32 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - } - - }, - - 'Empty Statement': { - - ';': { - type: 'EmptyStatement', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - } - - }, - - 'Expression Statement': { - - 'x': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - 'x, y': { - type: 'ExpressionStatement', - expression: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Identifier', - name: 'y', - range: [3, 4], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 4 } - } - }], - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'a', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'a\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\\ua': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'ua', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'a\\u': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'au', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - } - - }, - - 'If Statement': { - - 'if (morning) goodMorning()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - alternate: null, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'if (morning) (function(){})': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [24, 26], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 26 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) var x = 0;': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [17, 22], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [13, 23], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 23 } - } - }, - alternate: null, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'if (morning) function a(){}': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'a', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 27], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) goodMorning(); else goodDay()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodDay', - range: [33, 40], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 42], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 42 } - } - } - - }, - - 'Iteration Statements': { - - 'do keep(); while (true)': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'do keep(); while (true);': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'do { x++; y--; } while (x < 10)': { - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - prefix: false, - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - range: [5, 9], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 9 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - prefix: false, - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }], - range: [3, 16], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 16 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [28, 30], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 30 } - } - }, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - '{ do { } while (false) false }': { - type: 'BlockStatement', - body: [{ - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [], - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - test: { - type: 'Literal', - value: false, - raw: 'false', - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, - range: [2, 22], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 22 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: false, - raw: 'false', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - range: [23, 29], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 29 } - } - }], - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'while (true) doSomething()': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doSomething', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (x < 10) { x++; y--; }': { - type: 'WhileStatement', - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [7, 13], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [17, 21], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 21 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [22, 25], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 25 } - } - }, - range: [22, 26], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 26 } - } - }], - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'for(;;);': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'for(;;){}': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BlockStatement', - body: [], - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'for(x = 0;;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'for(var x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'var', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(let x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'let', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(var x = 0, y = 1;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - init: { - type: 'Literal', - value: 1, - raw: '1', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }], - kind: 'var', - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: null, - body: { - type: 'EmptyStatement', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'for(x = 0; x < 42; x++);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42; x++) process(x);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [24, 31], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 31 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'for(x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [15, 22], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 22 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }], - range: [15, 25], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 25 } - } - }, - range: [15, 26], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 26 } - } - }, - each: false, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'for (var x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (var x = 42 in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }], - kind: 'var', - range: [5, 15], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [19, 23], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [25, 32], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [25, 35], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 35 } - } - }, - range: [25, 36], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (let x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'let', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (let x = 42 in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }], - kind: 'let', - range: [5, 15], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [19, 23], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [25, 32], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [25, 35], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 35 } - } - }, - range: [25, 36], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (var i = function() { return 10 in [] } in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'i', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Literal', - value: 10, - raw: '10', - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 43], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 43 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 43 } - } - }, - range: [9, 43], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [5, 43], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 43 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [47, 51], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 51 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [53, 60], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 60 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [61, 62], - loc: { - start: { line: 1, column: 61 }, - end: { line: 1, column: 62 } - } - }], - range: [53, 63], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 63 } - } - }, - range: [53, 64], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 64 } - } - }, - each: false, - range: [0, 64], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 64 } - } - } - - }, - - 'continue statement': { - - 'while (true) { continue; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (true) { continue }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 25], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 25 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'done: while (true) { continue done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 36], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 36 } - } - }, - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'done: while (true) { continue done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 37], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 37 } - } - }, - range: [6, 37], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - } - - }, - - 'break statement': { - - 'while (true) { break }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: null, - range: [15, 21], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 21 } - } - } - ], - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'done: while (true) { break done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 33], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 33 } - } - }, - range: [6, 33], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 33 } - } - }, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'done: while (true) { break done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - } - - }, - - 'return statement': { - - '(function(){ return })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 21], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '(function(){ return; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 22], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 22], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function(){ return x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - '(function(){ return x * y })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - } - ], - range: [11, 27], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 27], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - } - }, - - 'with statement': { - - 'with (x) foo = bar': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'with (x) foo = bar;': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'with (x) { foo = bar }': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }], - range: [9, 22], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - } - - }, - - 'switch statement': { - - 'switch (x) {}': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - cases:[], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'switch (answer) { case 42: hi(); break; }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'switch (answer) { case 42: hi(); break; default: break }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }, { - type: 'SwitchCase', - test: null, - consequent: [{ - type: 'BreakStatement', - label: null, - range: [49, 55], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 55 } - } - }], - range: [40, 55], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 56], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 56 } - } - } - - }, - - 'Labelled Statements': { - - 'start: for (;;) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - range: [16, 27], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 27 } - } - }, - range: [7, 27], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'start: while (true) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - range: [7, 31], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 31 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - } - - }, - - 'throw statement': { - - 'throw x;': { - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'throw x * y': { - type: 'ThrowStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'throw { message: "Error" }': { - type: 'ThrowStatement', - argument: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'message', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'Literal', - value: 'Error', - raw: '"Error"', - range: [17, 24], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 24 } - } - }, - kind: 'init', - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - range: [6, 26], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - } - - }, - - 'try statement': { - - 'try { } catch (e) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [18, 21], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 21 } - } - }, - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }], - finalizer: null, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'try { } catch (eval) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [15, 19], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 19 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - finalizer: null, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'try { } catch (arguments) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, - range: [8, 29], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 29 } - } - }], - finalizer: null, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'try { } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }], - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }], - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [8, 28], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 28 } - } - }], - finalizer: null, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'try { } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [18, 25], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - range: [18, 33], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 33 } - } - }], - range: [16, 34], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'try { doThat(); } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: null, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [49, 56], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 56 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [57, 62], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 62 } - } - }], - range: [49, 63], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 63 } - } - }, - range: [49, 64], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 64 } - } - }], - range: [47, 65], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 65 } - } - }, - range: [0, 65], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 65 } - } - } - - }, - - 'debugger statement': { - - 'debugger;': { - type: 'DebuggerStatement', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Function Definition': { - - 'function hello() { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [19, 24], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [19, 26], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 26 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - range: [17, 29], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 29 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'function eval() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'function arguments() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'function test(t, t) { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'test', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, { - type: 'Identifier', - name: 't', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function test(t, t) { })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'test', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 't', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'function eval() { function inner() { "use strict" } }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'inner', - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\"use strict\"', - range: [37, 49], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 49 } - } - }, - range: [37, 50], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 50 } - } - }], - range: [35, 51], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 51 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 51], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 51 } - } - }], - range: [16, 53], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 53 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 53], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 53 } - } - }, - - 'function hello(a) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [], - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - range: [20, 28], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 28 } - } - }], - range: [18, 30], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'function hello(a, b) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 'b', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - 'arguments': [], - range: [23, 30], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 30 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'var hi = function() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [], - range: [22, 29], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 29 } - } - }, - range: [22, 30], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 30 } - } - }], - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 31], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 31 } - } - }, - range: [4, 31], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'var hi = function eval() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 28], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 28 } - } - }, - range: [4, 28], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 28 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var hi = function arguments() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 33], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 33 } - } - }, - range: [4, 33], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 33 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var hello = function hi() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hello', - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'hi', - range: [21, 23], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [28, 33], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [], - range: [28, 35], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 35 } - } - }, - range: [28, 36], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 36 } - } - }], - range: [26, 37], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [12, 37], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 37 } - } - }, - range: [4, 37], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 37 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - '(function(){})': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 13], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - - }, - - 'Automatic semicolon insertion': { - - '{ x\n++y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '{ x\n--y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - 'var x /* comment */;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - '{ var x = 14, y = 3\nz; }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }], - kind: 'var', - range: [2, 20], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'z', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 4 } - } - }, - - 'while (true) { continue\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 32], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [35, 40], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [35, 41], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [47, 52], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [47, 53], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 55], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - 'while (true) { break\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [21, 26], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [21, 27], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 29], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [32, 37], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [32, 38], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [44, 49], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [44, 50], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 52], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 52], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - '(function(){ return\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return // Comment\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [31, 32], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [31, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 35], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 35], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return/* Multiline\nComment */x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [42, 43], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 11 } - } - }, - range: [42, 44], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 12 } - } - } - ], - range: [11, 46], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 14 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 46], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 47], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '{ throw error\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 14], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [14, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [14, 20], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error// Comment\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 24], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error/* Multiline\nComment */error; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 36], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 10 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [36, 41], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [36, 42], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - } - - }, - - 'Source elements': { - - '': { - type: 'Program', - body: [], - range: [0, 0], - loc: { - start: { line: 0, column: 0 }, - end: { line: 0, column: 0 } - }, - tokens: [] - } - }, - - 'Invalid syntax': { - - '{': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '}': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token }' - }, - - '3ea': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in []': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e+': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e-': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x0': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '09': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '018': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '01a': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in[]': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x3in[]': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"Hello\nWorld"': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u005c': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u002a': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var x = /(s/g': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Invalid regular expression' - }, - - '/': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '/test': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = /[a-z]/\\ux': { - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Invalid regular expression' - }, - - '3 = 4': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'func() = 4': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '(1 + 1) = 10': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1++': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1--': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '++1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '--1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'for((1 + 1) in list) process(x);': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - '[': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '[,': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + {': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t ': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t,': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'var x = /\n/': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = "\n': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var if = 42': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token if' - }, - - 'i + 2 = 42': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '+i = 42': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1 + (': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '\n\n\n{': { - index: 4, - lineNumber: 4, - column: 2, - message: 'Error: Line 4: Unexpected end of input' - }, - - '\n/* Some multiline\ncomment */\n)': { - index: 30, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token )' - }, - - '{ set 1 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '{ get 2 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '({ set: s(if) { } })': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token if' - }, - - '({ set s(.) { } })': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token .' - }, - - '({ set s() { } })': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token )' - }, - - '({ set: s() { } })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ set: s(a, b) { } })': { - index: 16, - lineNumber: 1, - column: 17, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get: g(d) { } })': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get i() { }, i: 42 })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, get i() { } })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ set i(x) { }, i: 42 })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, set i(x) { } })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ get i() { }, get i() { } })': { - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - '({ set i(x) { }, set i(x) { } })': { - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - 'function t(if) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token if' - }, - - 'function t(true) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function t(false) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function t(null) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function null() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function true() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function false() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function if() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a b;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected identifier' - }, - - 'if.a;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token .' - }, - - 'a if;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a class;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected reserved word' - }, - - 'break\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'break 1;': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - 'continue\n': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'continue 2;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected number' - }, - - 'throw': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'throw;': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'throw\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal newline after throw' - }, - - 'for (var i, i2 in {});': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token in' - }, - - 'for ((i in {}));': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'for (i + 1 in {});': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'for (+i in {});': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'if(false)': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'if(false) doThis(); else': { - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'do': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'while(false)': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'for(;;)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'with(x)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'try { }': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Missing catch or finally after try' - }, - - 'try {} catch (42) {} ': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected number' - }, - - 'try {} catch (answer()) {} ': { - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Unexpected token (' - }, - - 'try {} catch (-x) {} ': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token -' - }, - - - '\u203F = 10': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'const x = 12, y;': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'const x, y = 12;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ,' - }, - - 'const x;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'if(true) let a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token let' - }, - - 'if(true) const a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token const' - }, - - 'switch (c) { default: default: }': { - index: 30, - lineNumber: 1, - column: 31, - message: 'Error: Line 1: More than one default clause in switch statement' - }, - - 'new X()."s"': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Unexpected string' - }, - - '/*': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n\n': { - index: 5, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token ILLEGAL' - }, - - '/**': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n*': { - index: 5, - lineNumber: 3, - column: 2, - message: 'Error: Line 3: Unexpected token ILLEGAL' - }, - - '/*hello': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*hello *': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\n]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r\n]': { - index: 2, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\n\r]': { - index: 2, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '//\r\n]': { - index: 4, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '//\n\r]': { - index: 4, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/a\\\n/': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '//\r \n]': { - index: 5, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r\n*/]': { - index: 6, - lineNumber: 2, - column: 3, - message: 'Error: Line 2: Unexpected token ]' - }, - - '/*\n\r*/]': { - index: 6, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r \n*/]': { - index: 7, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '\\\\': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u005c': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - - '\\x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u0000': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200C = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200D = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\u': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'try { } catch() {}': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'return': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }, - - 'break': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'continue': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'switch (x) { default: continue; }': { - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'do { x } *': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token *' - }, - - 'while (true) { break x; }': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'while (true) { continue x; }': { - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break x; }); }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { continue x; }); }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break; }); }': { - index: 39, - lineNumber: 1, - column: 40, - message: 'Error: Line 1: Illegal break statement' - }, - - 'x: while (true) { (function () { continue; }); }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'x: while (true) { x: while (true) { } }': { - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Label \'x\' has already been declared' - }, - - '(function () { \'use strict\'; delete i; }())': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }, - - '(function () { \'use strict\'; with (i); }())': { - index: 28, - lineNumber: 1, - column: 29, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }, - - 'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': { - index: 73, - lineNumber: 1, - column: 74, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; var eval = 10; }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; var arguments = 10; }': { - index: 45, - lineNumber: 1, - column: 46, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (eval) { } }': { - index: 51, - lineNumber: 1, - column: 52, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (arguments) { } }': { - index: 56, - lineNumber: 1, - column: 57, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; eval = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; arguments = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ++eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; ++arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval++; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval--; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments++; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments--; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; function eval() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; function arguments() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function eval() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function arguments() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function eval() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function arguments() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function eval() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function arguments() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function eval() { } }); }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function package() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ set s(eval) { } }); }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': { - index: 49, - lineNumber: 1, - column: 50, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(eval) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(arguments) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(eval) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(arguments) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - ' "\\1"; \'use strict\';': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; "\\1"; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; 021; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ "\\1": 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ 021: 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': { - index: 52, - lineNumber: 1, - column: 53, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; var implements; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var interface; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var package; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var private; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var protected; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var public; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var static; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var yield; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var let; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello(static) { "use strict"; }': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function static() { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'var yield': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token yield' - }, - - 'var let': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token let' - }, - - '"use strict"; function static() { }': { - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a(t, t) { "use strict"; }': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a(eval) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function a(package) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a() { "use strict"; function b(t, t) { }; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(t, t) { "use strict"; })': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a() { "use strict"; (function b(t, t) { }); }': { - index: 44, - lineNumber: 1, - column: 45, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(eval) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - '(function a(package) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'var': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'let': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'const': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - } - - }, - - 'API': { - 'parse()': { - call: 'parse', - args: [], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(null)': { - call: 'parse', - args: [null], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null - } - }] - } - }, - - 'parse(42)': { - call: 'parse', - args: [42], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42 - } - }] - } - }, - - 'parse(true)': { - call: 'parse', - args: [true], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true - } - }] - } - }, - - 'parse(undefined)': { - call: 'parse', - args: [void 0], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(new String("test"))': { - call: 'parse', - args: [new String('test')], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'test' - } - }] - } - }, - - 'parse(new Number(42))': { - call: 'parse', - args: [new Number(42)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42 - } - }] - } - }, - - 'parse(new Boolean(true))': { - call: 'parse', - args: [new Boolean(true)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true - } - }] - } - }, - - 'Syntax': { - property: 'Syntax', - result: { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - } - } - - }, - - 'Tolerant parse': { - 'return': { - type: 'Program', - body: [{ - type: 'ReturnStatement', - 'argument': null, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - errors: [{ - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }] - }, - - '(function () { \'use strict\'; with (i); }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - body: { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - range: [29, 38], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 38 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 40 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 40], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [1, 42], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }] - }, - - '(function () { \'use strict\'; 021 }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 17, - raw: "021", - range: [29, 32], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 32 } - } - }, - range: [29, 33], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 33 } - } - }], - range: [13, 34], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 34], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 34 } - } - }, - 'arguments': [], - range: [1, 36], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - }], - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; delete x': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - prefix: true, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }] - }, - - '"use strict"; try {} catch (eval) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [28, 32], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 32 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [34, 36], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 36 } - } - }, - range: [21, 36], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 36 } - } - }], - finalizer: null, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; try {} catch (arguments) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [28, 37], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 37 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [21, 41], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 41 } - } - }], - finalizer: null, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - init: null, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; eval = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; eval++;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; --eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [16, 20], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 20 } - } - }, - prefix: true, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; arguments = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 27], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; arguments--;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; ++arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - prefix: true, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - - '"use strict";x={y:1,y:1}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - kind: 'init', - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - kind: 'init', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }], - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }] - }, - - '"use strict"; function eval() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 32], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 32], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 32 } - } - }, { - type: 'EmptyStatement', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function arguments() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function interface() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'interface', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; (function eval() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [24, 28], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 28 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 33], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 33 } - } - }, - range: [14, 35], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 35 } - } - }], - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function arguments() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function interface() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'interface', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; function f(eval) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 33], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 33 } - } - }, { - type: 'EmptyStatement', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(arguments) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [25, 34], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(foo, foo) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [31, 34], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; (function f(eval) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 34], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 34 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - - '"use strict"; (function f(arguments) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [26, 35], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; (function f(foo, foo) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [32, 35], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; x = { set f(eval) {} }' : { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value : { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - type: 'Program', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'octal directive\u0001', - raw: '"octal directive\\1"', - range: [19, 38], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 38 } - } - }, - range: [19, 39], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 39 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [40, 52], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 52 } - } - }, - range: [40, 53], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 53 } - } - }], - range: [17, 55], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 55 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - }, - errors: [{ - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"\\1"; \'use strict\';': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\u0001', - raw: '"\\1"', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }, - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - }, - errors: [{ - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { 014: 3}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 12, - raw: '014', - range: [24, 27], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 27 } - } - }, - value: { - type: 'Literal', - value: 3, - raw: '3', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - kind: 'init', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }], - range: [22, 31], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 31 } - } - }, - range: [18, 31], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [14, 31], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { get i() {}, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'get', - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [40, 41], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 41 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - rest: null, - generator: false, - expression: false, - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - kind: 'get', - range: [36, 46], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 46 } - } - }], - range: [22, 48], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 48 } - } - }, - range: [18, 48], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 48 } - } - }], - kind: 'var', - range: [14, 48], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 48 } - } - }], - range: [0, 48], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 48 } - }, - errors: [{ - index: 46, - lineNumber: 1, - column: 47, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }] - }, - - '"use strict"; var x = { i: 42, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - kind: 'init', - range: [24, 29], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - rest: null, - generator: false, - expression: false, - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - kind: 'get', - range: [31, 41], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 41 } - } - }], - range: [22, 43], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 43 } - } - }, - range: [18, 43], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [14, 43], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - }, - - '"use strict"; var x = { set i(x) {}, i: 42 }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'x', - range: [30, 31], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 31 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - rest: null, - generator: false, - expression: false, - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - kind: 'set', - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [40, 42], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 42 } - } - }, - kind: 'init', - range: [37, 42], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 42 } - } - }], - range: [22, 44], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 44 } - } - }, - range: [18, 44], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 44 } - } - }], - kind: 'var', - range: [14, 44], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - }, - errors: [{ - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - - - }, - - '({ set s() { } })': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 's', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - rest: null, - generator: false, - expression: false, - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - kind: 'set', - range: [3, 14], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 14 } - } - }], - range: [1, 16], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }], - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - }, - errors: [{ - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token )' - }] - }, - - 'foo("bar") = baz': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 'bar', - raw: '"bar"', - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }], - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'baz', - range: [13, 16], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - errors: [{ - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - '1 = 2': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - }, - errors: [{ - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - '3++': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Literal', - value: 3, - raw: '3', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }], - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - }, - errors: [{ - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - '--4': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Literal', - value: 4, - raw: '4', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }], - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - }, - errors: [{ - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }] - }, - - 'for (5 in []) {}': { - type: 'Program', - body: [{ - type: 'ForInStatement', - left: { - type: 'Literal', - value: 5, - raw: '5', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - each: false, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - errors: [{ - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }] - } - - - } -}; - diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/.jshintrc b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/.jshintrc deleted file mode 100644 index f642dae..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/.jshintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "eqnull": true, - "latedef": true, - "noarg": true, - "noempty": true, - "quotmark": "single", - "undef": true, - "unused": true, - "strict": true, - "trailing": true, - - "node": true -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD deleted file mode 100644 index 3e580c3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD +++ /dev/null @@ -1,19 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/README.md b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/README.md deleted file mode 100644 index cf830c3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/README.md +++ /dev/null @@ -1,48 +0,0 @@ -### Estraverse [![Build Status](https://secure.travis-ci.org/Constellation/estraverse.png)](http://travis-ci.org/Constellation/estraverse) - -Estraverse ([estraverse](http://github.com/Constellation/estraverse)) is -[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -traversal functions from [esmangle project](http://github.com/Constellation/esmangle). - -### Example Usage - -The following code will output all variables declared at the root of a file. - -```javascript -estraverse.traverse(ast, { - enter: function(node, parent) { - if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration') - return estraverse.VisitorOption.Skip; - }, - leave: function(node, parent) { - if (node.type == 'VariableDeclarator') - console.log(node.id.name); - } -}); -``` - -### License - -Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation) - (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/estraverse.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/estraverse.js deleted file mode 100644 index 098e3ae..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/estraverse.js +++ /dev/null @@ -1,684 +0,0 @@ -/* - Copyright (C) 2012-2013 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -/*jslint vars:false, bitwise:true*/ -/*jshint indent:4*/ -/*global exports:true, define:true*/ -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // and plain browser loading, - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.estraverse = {})); - } -}(this, function (exports) { - 'use strict'; - - var Syntax, - isArray, - VisitorOption, - VisitorKeys, - BREAK, - SKIP; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - ArrowFunctionExpression: 'ArrowFunctionExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ClassBody: 'ClassBody', - ClassDeclaration: 'ClassDeclaration', - ClassExpression: 'ClassExpression', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DebuggerStatement: 'DebuggerStatement', - DirectiveStatement: 'DirectiveStatement', - DoWhileStatement: 'DoWhileStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - MethodDefinition: 'MethodDefinition', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement', - YieldExpression: 'YieldExpression' - }; - - function ignoreJSHintError() { } - - isArray = Array.isArray; - if (!isArray) { - isArray = function isArray(array) { - return Object.prototype.toString.call(array) === '[object Array]'; - }; - } - - function deepCopy(obj) { - var ret = {}, key, val; - for (key in obj) { - if (obj.hasOwnProperty(key)) { - val = obj[key]; - if (typeof val === 'object' && val !== null) { - ret[key] = deepCopy(val); - } else { - ret[key] = val; - } - } - } - return ret; - } - - function shallowCopy(obj) { - var ret = {}, key; - for (key in obj) { - if (obj.hasOwnProperty(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - ignoreJSHintError(shallowCopy); - - // based on LLVM libc++ upper_bound / lower_bound - // MIT License - - function upperBound(array, func) { - var diff, len, i, current; - - len = array.length; - i = 0; - - while (len) { - diff = len >>> 1; - current = i + diff; - if (func(array[current])) { - len = diff; - } else { - i = current + 1; - len -= diff + 1; - } - } - return i; - } - - function lowerBound(array, func) { - var diff, len, i, current; - - len = array.length; - i = 0; - - while (len) { - diff = len >>> 1; - current = i + diff; - if (func(array[current])) { - i = current + 1; - len -= diff + 1; - } else { - len = diff; - } - } - return i; - } - ignoreJSHintError(lowerBound); - - VisitorKeys = { - AssignmentExpression: ['left', 'right'], - ArrayExpression: ['elements'], - ArrowFunctionExpression: ['params', 'body'], - BlockStatement: ['body'], - BinaryExpression: ['left', 'right'], - BreakStatement: ['label'], - CallExpression: ['callee', 'arguments'], - CatchClause: ['param', 'body'], - ClassBody: ['body'], - ClassDeclaration: ['id', 'body', 'superClass'], - ClassExpression: ['id', 'body', 'superClass'], - ConditionalExpression: ['test', 'consequent', 'alternate'], - ContinueStatement: ['label'], - DebuggerStatement: [], - DirectiveStatement: [], - DoWhileStatement: ['body', 'test'], - EmptyStatement: [], - ExpressionStatement: ['expression'], - ForStatement: ['init', 'test', 'update', 'body'], - ForInStatement: ['left', 'right', 'body'], - FunctionDeclaration: ['id', 'params', 'body'], - FunctionExpression: ['id', 'params', 'body'], - Identifier: [], - IfStatement: ['test', 'consequent', 'alternate'], - Literal: [], - LabeledStatement: ['label', 'body'], - LogicalExpression: ['left', 'right'], - MemberExpression: ['object', 'property'], - MethodDefinition: ['key', 'value'], - NewExpression: ['callee', 'arguments'], - ObjectExpression: ['properties'], - Program: ['body'], - Property: ['key', 'value'], - ReturnStatement: ['argument'], - SequenceExpression: ['expressions'], - SwitchStatement: ['discriminant', 'cases'], - SwitchCase: ['test', 'consequent'], - ThisExpression: [], - ThrowStatement: ['argument'], - TryStatement: ['block', 'handlers', 'handler', 'guardedHandlers', 'finalizer'], - UnaryExpression: ['argument'], - UpdateExpression: ['argument'], - VariableDeclaration: ['declarations'], - VariableDeclarator: ['id', 'init'], - WhileStatement: ['test', 'body'], - WithStatement: ['object', 'body'], - YieldExpression: ['argument'] - }; - - // unique id - BREAK = {}; - SKIP = {}; - - VisitorOption = { - Break: BREAK, - Skip: SKIP - }; - - function Reference(parent, key) { - this.parent = parent; - this.key = key; - } - - Reference.prototype.replace = function replace(node) { - this.parent[this.key] = node; - }; - - function Element(node, path, wrap, ref) { - this.node = node; - this.path = path; - this.wrap = wrap; - this.ref = ref; - } - - function Controller() { } - - // API: - // return property path array from root to current node - Controller.prototype.path = function path() { - var i, iz, j, jz, result, element; - - function addToPath(result, path) { - if (isArray(path)) { - for (j = 0, jz = path.length; j < jz; ++j) { - result.push(path[j]); - } - } else { - result.push(path); - } - } - - // root node - if (!this.__current.path) { - return null; - } - - // first node is sentinel, second node is root element - result = []; - for (i = 2, iz = this.__leavelist.length; i < iz; ++i) { - element = this.__leavelist[i]; - addToPath(result, element.path); - } - addToPath(result, this.__current.path); - return result; - }; - - // API: - // return array of parent elements - Controller.prototype.parents = function parents() { - var i, iz, result; - - // first node is sentinel - result = []; - for (i = 1, iz = this.__leavelist.length; i < iz; ++i) { - result.push(this.__leavelist[i].node); - } - - return result; - }; - - // API: - // return current node - Controller.prototype.current = function current() { - return this.__current.node; - }; - - Controller.prototype.__execute = function __execute(callback, element) { - var previous, result; - - result = undefined; - - previous = this.__current; - this.__current = element; - this.__state = null; - if (callback) { - result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node); - } - this.__current = previous; - - return result; - }; - - // API: - // notify control skip / break - Controller.prototype.notify = function notify(flag) { - this.__state = flag; - }; - - // API: - // skip child nodes of current node - Controller.prototype.skip = function () { - this.notify(SKIP); - }; - - // API: - // break traversals - Controller.prototype['break'] = function () { - this.notify(BREAK); - }; - - Controller.prototype.__initialize = function(root, visitor) { - this.visitor = visitor; - this.root = root; - this.__worklist = []; - this.__leavelist = []; - this.__current = null; - this.__state = null; - }; - - Controller.prototype.traverse = function traverse(root, visitor) { - var worklist, - leavelist, - element, - node, - nodeType, - ret, - key, - current, - current2, - candidates, - candidate, - sentinel; - - this.__initialize(root, visitor); - - sentinel = {}; - - // reference - worklist = this.__worklist; - leavelist = this.__leavelist; - - // initialize - worklist.push(new Element(root, null, null, null)); - leavelist.push(new Element(null, null, null, null)); - - while (worklist.length) { - element = worklist.pop(); - - if (element === sentinel) { - element = leavelist.pop(); - - ret = this.__execute(visitor.leave, element); - - if (this.__state === BREAK || ret === BREAK) { - return; - } - continue; - } - - if (element.node) { - - ret = this.__execute(visitor.enter, element); - - if (this.__state === BREAK || ret === BREAK) { - return; - } - - worklist.push(sentinel); - leavelist.push(element); - - if (this.__state === SKIP || ret === SKIP) { - continue; - } - - node = element.node; - nodeType = element.wrap || node.type; - candidates = VisitorKeys[nodeType]; - - current = candidates.length; - while ((current -= 1) >= 0) { - key = candidates[current]; - candidate = node[key]; - if (!candidate) { - continue; - } - - if (!isArray(candidate)) { - worklist.push(new Element(candidate, key, null, null)); - continue; - } - - current2 = candidate.length; - while ((current2 -= 1) >= 0) { - if (!candidate[current2]) { - continue; - } - if (nodeType === Syntax.ObjectExpression && 'properties' === candidates[current]) { - element = new Element(candidate[current2], [key, current2], 'Property', null); - } else { - element = new Element(candidate[current2], [key, current2], null, null); - } - worklist.push(element); - } - } - } - } - }; - - Controller.prototype.replace = function replace(root, visitor) { - var worklist, - leavelist, - node, - nodeType, - target, - element, - current, - current2, - candidates, - candidate, - sentinel, - outer, - key; - - this.__initialize(root, visitor); - - sentinel = {}; - - // reference - worklist = this.__worklist; - leavelist = this.__leavelist; - - // initialize - outer = { - root: root - }; - element = new Element(root, null, null, new Reference(outer, 'root')); - worklist.push(element); - leavelist.push(element); - - while (worklist.length) { - element = worklist.pop(); - - if (element === sentinel) { - element = leavelist.pop(); - - target = this.__execute(visitor.leave, element); - - // node may be replaced with null, - // so distinguish between undefined and null in this place - if (target !== undefined && target !== BREAK && target !== SKIP) { - // replace - element.ref.replace(target); - } - - if (this.__state === BREAK || target === BREAK) { - return outer.root; - } - continue; - } - - target = this.__execute(visitor.enter, element); - - // node may be replaced with null, - // so distinguish between undefined and null in this place - if (target !== undefined && target !== BREAK && target !== SKIP) { - // replace - element.ref.replace(target); - element.node = target; - } - - if (this.__state === BREAK || target === BREAK) { - return outer.root; - } - - // node may be null - node = element.node; - if (!node) { - continue; - } - - worklist.push(sentinel); - leavelist.push(element); - - if (this.__state === SKIP || target === SKIP) { - continue; - } - - nodeType = element.wrap || node.type; - candidates = VisitorKeys[nodeType]; - - current = candidates.length; - while ((current -= 1) >= 0) { - key = candidates[current]; - candidate = node[key]; - if (!candidate) { - continue; - } - - if (!isArray(candidate)) { - worklist.push(new Element(candidate, key, null, new Reference(node, key))); - continue; - } - - current2 = candidate.length; - while ((current2 -= 1) >= 0) { - if (!candidate[current2]) { - continue; - } - if (nodeType === Syntax.ObjectExpression && 'properties' === candidates[current]) { - element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2)); - } else { - element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2)); - } - worklist.push(element); - } - } - } - - return outer.root; - }; - - function traverse(root, visitor) { - var controller = new Controller(); - return controller.traverse(root, visitor); - } - - function replace(root, visitor) { - var controller = new Controller(); - return controller.replace(root, visitor); - } - - function extendCommentRange(comment, tokens) { - var target; - - target = upperBound(tokens, function search(token) { - return token.range[0] > comment.range[0]; - }); - - comment.extendedRange = [comment.range[0], comment.range[1]]; - - if (target !== tokens.length) { - comment.extendedRange[1] = tokens[target].range[0]; - } - - target -= 1; - if (target >= 0) { - comment.extendedRange[0] = tokens[target].range[1]; - } - - return comment; - } - - function attachComments(tree, providedComments, tokens) { - // At first, we should calculate extended comment ranges. - var comments = [], comment, len, i, cursor; - - if (!tree.range) { - throw new Error('attachComments needs range information'); - } - - // tokens array is empty, we attach comments to tree as 'leadingComments' - if (!tokens.length) { - if (providedComments.length) { - for (i = 0, len = providedComments.length; i < len; i += 1) { - comment = deepCopy(providedComments[i]); - comment.extendedRange = [0, tree.range[0]]; - comments.push(comment); - } - tree.leadingComments = comments; - } - return tree; - } - - for (i = 0, len = providedComments.length; i < len; i += 1) { - comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens)); - } - - // This is based on John Freeman's implementation. - cursor = 0; - traverse(tree, { - enter: function (node) { - var comment; - - while (cursor < comments.length) { - comment = comments[cursor]; - if (comment.extendedRange[1] > node.range[0]) { - break; - } - - if (comment.extendedRange[1] === node.range[0]) { - if (!node.leadingComments) { - node.leadingComments = []; - } - node.leadingComments.push(comment); - comments.splice(cursor, 1); - } else { - cursor += 1; - } - } - - // already out of owned node - if (cursor === comments.length) { - return VisitorOption.Break; - } - - if (comments[cursor].extendedRange[0] > node.range[1]) { - return VisitorOption.Skip; - } - } - }); - - cursor = 0; - traverse(tree, { - leave: function (node) { - var comment; - - while (cursor < comments.length) { - comment = comments[cursor]; - if (node.range[1] < comment.extendedRange[0]) { - break; - } - - if (node.range[1] === comment.extendedRange[0]) { - if (!node.trailingComments) { - node.trailingComments = []; - } - node.trailingComments.push(comment); - comments.splice(cursor, 1); - } else { - cursor += 1; - } - } - - // already out of owned node - if (cursor === comments.length) { - return VisitorOption.Break; - } - - if (comments[cursor].extendedRange[0] > node.range[1]) { - return VisitorOption.Skip; - } - } - }); - - return tree; - } - - exports.version = '1.3.2'; - exports.Syntax = Syntax; - exports.traverse = traverse; - exports.replace = replace; - exports.attachComments = attachComments; - exports.VisitorKeys = VisitorKeys; - exports.VisitorOption = VisitorOption; - exports.Controller = Controller; -})); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/package.json b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/package.json deleted file mode 100644 index 9a0bef2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/estraverse/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "estraverse", - "description": "ECMAScript JS AST traversal functions", - "homepage": "https://github.com/Constellation/estraverse", - "main": "estraverse.js", - "version": "1.3.2", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "Yusuke Suzuki", - "email": "utatane.tea@gmail.com", - "url": "http://github.com/Constellation" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/Constellation/estraverse.git" - }, - "devDependencies": { - "mocha": "~1.12.0", - "chai": "~1.7.2", - "jshint": "2.1.5", - "coffee-script": "~1.6.3" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/Constellation/estraverse/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "npm run-script lint && npm run-script unit-test", - "lint": "jshint estraverse.js", - "unit-test": "mocha --compilers coffee:coffee-script" - }, - "readme": "### Estraverse [![Build Status](https://secure.travis-ci.org/Constellation/estraverse.png)](http://travis-ci.org/Constellation/estraverse)\n\nEstraverse ([estraverse](http://github.com/Constellation/estraverse)) is\n[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\ntraversal functions from [esmangle project](http://github.com/Constellation/esmangle).\n\n### Example Usage\n\nThe following code will output all variables declared at the root of a file.\n\n```javascript\nestraverse.traverse(ast, {\n enter: function(node, parent) {\n if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration')\n return estraverse.VisitorOption.Skip;\n },\n leave: function(node, parent) {\n if (node.type == 'VariableDeclarator')\n console.log(node.id.name);\n }\n});\n```\n\n### License\n\nCopyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation)\n (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/Constellation/estraverse/issues" - }, - "_id": "estraverse@1.3.2", - "_shasum": "37c2b893ef13d723f276d878d60d8535152a6c42", - "_from": "estraverse@>=1.3.0 <1.4.0", - "_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/.npmignore b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/.npmignore deleted file mode 100644 index 3dddf3f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/* -node_modules/* diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/.travis.yml b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/.travis.yml deleted file mode 100644 index ddc9c4f..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" \ No newline at end of file diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/CHANGELOG.md b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index 518bed4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,173 +0,0 @@ -# Change Log - -## 0.1.40 - -* Performance improvements for parsing source maps in SourceMapConsumer. - -## 0.1.39 - -* Fix a bug where setting a source's contents to null before any source content - had been set before threw a TypeError. See issue #131. - -## 0.1.38 - -* Fix a bug where finding relative paths from an empty path were creating - absolute paths. See issue #129. - -## 0.1.37 - -* Fix a bug where if the source root was an empty string, relative source paths - would turn into absolute source paths. Issue #124. - -## 0.1.36 - -* Allow the `names` mapping property to be an empty string. Issue #121. - -## 0.1.35 - -* A third optional parameter was added to `SourceNode.fromStringWithSourceMap` - to specify a path that relative sources in the second parameter should be - relative to. Issue #105. - -* If no file property is given to a `SourceMapGenerator`, then the resulting - source map will no longer have a `null` file property. The property will - simply not exist. Issue #104. - -* Fixed a bug where consecutive newlines were ignored in `SourceNode`s. - Issue #116. - -## 0.1.34 - -* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103. - -* Fix bug involving source contents and the - `SourceMapGenerator.prototype.applySourceMap`. Issue #100. - -## 0.1.33 - -* Fix some edge cases surrounding path joining and URL resolution. - -* Add a third parameter for relative path to - `SourceMapGenerator.prototype.applySourceMap`. - -* Fix issues with mappings and EOLs. - -## 0.1.32 - -* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns - (issue 92). - -* Fixed test runner to actually report number of failed tests as its process - exit code. - -* Fixed a typo when reporting bad mappings (issue 87). - -## 0.1.31 - -* Delay parsing the mappings in SourceMapConsumer until queried for a source - location. - -* Support Sass source maps (which at the time of writing deviate from the spec - in small ways) in SourceMapConsumer. - -## 0.1.30 - -* Do not join source root with a source, when the source is a data URI. - -* Extend the test runner to allow running single specific test files at a time. - -* Performance improvements in `SourceNode.prototype.walk` and - `SourceMapConsumer.prototype.eachMapping`. - -* Source map browser builds will now work inside Workers. - -* Better error messages when attempting to add an invalid mapping to a - `SourceMapGenerator`. - -## 0.1.29 - -* Allow duplicate entries in the `names` and `sources` arrays of source maps - (usually from TypeScript) we are parsing. Fixes github issue 72. - -## 0.1.28 - -* Skip duplicate mappings when creating source maps from SourceNode; github - issue 75. - -## 0.1.27 - -* Don't throw an error when the `file` property is missing in SourceMapConsumer, - we don't use it anyway. - -## 0.1.26 - -* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. - -## 0.1.25 - -* Make compatible with browserify - -## 0.1.24 - -* Fix issue with absolute paths and `file://` URIs. See - https://bugzilla.mozilla.org/show_bug.cgi?id=885597 - -## 0.1.23 - -* Fix issue with absolute paths and sourcesContent, github issue 64. - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js deleted file mode 100644 index d6fc26a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var path = require('path'); -var fs = require('fs'); -var copy = require('dryice').copy; - -function removeAmdefine(src) { - src = String(src).replace( - /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module,\s*require\);\s*}\s*/g, - ''); - src = src.replace( - /\b(define\(.*)('amdefine',?)/gm, - '$1'); - return src; -} -removeAmdefine.onRead = true; - -function makeNonRelative(src) { - return src - .replace(/require\('.\//g, 'require(\'source-map/') - .replace(/\.\.\/\.\.\/lib\//g, ''); -} -makeNonRelative.onRead = true; - -function buildBrowser() { - console.log('\nCreating dist/source-map.js'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/mini-require.js', - { - project: project, - require: [ 'source-map/source-map-generator', - 'source-map/source-map-consumer', - 'source-map/source-node'] - }, - 'build/suffix-browser.js' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine - ], - dest: 'dist/source-map.js' - }); -} - -function buildBrowserMin() { - console.log('\nCreating dist/source-map.min.js'); - - copy({ - source: 'dist/source-map.js', - filter: copy.filter.uglifyjs, - dest: 'dist/source-map.min.js' - }); -} - -function buildFirefox() { - console.log('\nCreating dist/SourceMap.jsm'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-source-map.jsm', - { - project: project, - require: [ 'source-map/source-map-consumer', - 'source-map/source-map-generator', - 'source-map/source-node' ] - }, - 'build/suffix-source-map.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/SourceMap.jsm' - }); - - // Create dist/test/Utils.jsm - console.log('\nCreating dist/test/Utils.jsm'); - - project = copy.createCommonJsProject({ - roots: [ __dirname, path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-utils.jsm', - 'build/assert-shim.js', - { - project: project, - require: [ 'test/source-map/util' ] - }, - 'build/suffix-utils.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/test/Utils.jsm' - }); - - function isTestFile(f) { - return /^test\-.*?\.js/.test(f); - } - - var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile); - - testFiles.forEach(function (testFile) { - console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_'))); - - copy({ - source: [ - 'build/test-prefix.js', - path.join('test', 'source-map', testFile), - 'build/test-suffix.js' - ], - filter: [ - removeAmdefine, - makeNonRelative, - function (input, source) { - return input.replace('define(', - 'define("' - + path.join('test', 'source-map', testFile.replace(/\.js$/, '')) - + '", ["require", "exports", "module"], '); - }, - function (input, source) { - return input.replace('{THIS_MODULE}', function () { - return "test/source-map/" + testFile.replace(/\.js$/, ''); - }); - } - ], - dest: path.join('dist', 'test', testFile.replace(/\-/g, '_')) - }); - }); -} - -function ensureDir(name) { - var dirExists = false; - try { - dirExists = fs.statSync(name).isDirectory(); - } catch (err) {} - - if (!dirExists) { - fs.mkdirSync(name, 0777); - } -} - -ensureDir("dist"); -ensureDir("dist/test"); -buildFirefox(); -buildBrowser(); -buildBrowserMin(); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/README.md b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/README.md deleted file mode 100644 index 1a1c7d8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/README.md +++ /dev/null @@ -1,449 +0,0 @@ -# Source Map - -This is a library to generate and consume the source map format -[described here][format]. - -This library is written in the Asynchronous Module Definition format, and works -in the following environments: - -* Modern Browsers supporting ECMAScript 5 (either after the build, or with an - AMD loader such as RequireJS) - -* Inside Firefox (as a JSM file, after the build) - -* With NodeJS versions 0.8.X and higher - -## Node - - $ npm install source-map - -## Building from Source (for everywhere else) - -Install Node and then run - - $ git clone https://fitzgen@github.com/mozilla/source-map.git - $ cd source-map - $ npm link . - -Next, run - - $ node Makefile.dryice.js - -This should spew a bunch of stuff to stdout, and create the following files: - -* `dist/source-map.js` - The unminified browser version. - -* `dist/source-map.min.js` - The minified browser version. - -* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox source. - -## Examples - -### Consuming a source map - - var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - - var smc = new SourceMapConsumer(rawSourceMap); - - console.log(smc.sources); - // [ 'http://example.com/www/js/one.js', - // 'http://example.com/www/js/two.js' ] - - console.log(smc.originalPositionFor({ - line: 2, - column: 28 - })); - // { source: 'http://example.com/www/js/two.js', - // line: 2, - // column: 10, - // name: 'n' } - - console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 - })); - // { line: 2, column: 28 } - - smc.eachMapping(function (m) { - // ... - }); - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - - function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } - } - - var ast = parse("40 + 2", "add.js"); - console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' - })); - // { code: '40 + 2', - // map: [object SourceMapGenerator] } - -#### With SourceMapGenerator (low level API) - - var map = new SourceMapGenerator({ - file: "source-mapped.js" - }); - - map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" - }); - - console.log(map.toString()); - // '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' - -## API - -Get a reference to the module: - - // NodeJS - var sourceMap = require('source-map'); - - // Browser builds - var sourceMap = window.sourceMap; - - // Inside Firefox - let sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referrenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. - -* `column`: The column number in the generated source. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. - -* `column`: The column number in the original source, or null or null if this - information is not available. - -* `name`: The original identifier, or null if this information is not available. - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: The column number in the original source. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -#### SourceMapConsumer.prototype.sourceContentFor(source) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -You may pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: A root for all relative URLs in this source map. - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new SourceMapGenerator based on a SourceMapConsumer - -* `sourceMapConsumer` The SourceMap. - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimium of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used, if it exists. - Otherwise an error will be thrown. - -* `sourceMapPath`: Optional. The dirname of the path to the SourceMap - to be applied. If relative, it is relative to the SourceMap. - - This parameter is needed when the two SourceMaps aren't in the same - directory, and the SourceMap to be applied contains relative source - paths. If so, those relative source paths need to be rewritten - relative to the SourceMap. - - If omitted, it is assumed that both SourceMaps are in the same directory, - thus not needing any rewriting. (Supplying `'.'` has the same effect.) - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode([line, column, source[, chunk[, name]]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. - -* `source`: The original source's filename; null if no filename is provided. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -* `relativePath` The optional path that relative sources in `sourceMapConsumer` - should be relative to. - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming whitespace from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -## Tests - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`. - -To add new tests, create a new file named `test/test-.js` -and export your test functions with names that start with "test", for example - - exports["test doing the foo bar"] = function (assert, util) { - ... - }; - -The new test will be located automatically when you run the suite. - -The `util` argument is the test utility module located at `test/source-map/util`. - -The `assert` argument is a cut down version of node's assert module. You have -access to the following assertion functions: - -* `doesNotThrow` - -* `equal` - -* `ok` - -* `strictEqual` - -* `throws` - -(The reason for the restricted set of test functions is because we need the -tests to run inside Firefox's test suite as well and so the assert module is -shimmed in that environment. See `build/assert-shim.js`.) - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit -[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap -[Dryice]: https://github.com/mozilla/dryice diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/assert-shim.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/assert-shim.js deleted file mode 100644 index daa1a62..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/assert-shim.js +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -define('test/source-map/assert', ['exports'], function (exports) { - - let do_throw = function (msg) { - throw new Error(msg); - }; - - exports.init = function (throw_fn) { - do_throw = throw_fn; - }; - - exports.doesNotThrow = function (fn) { - try { - fn(); - } - catch (e) { - do_throw(e.message); - } - }; - - exports.equal = function (actual, expected, msg) { - msg = msg || String(actual) + ' != ' + String(expected); - if (actual != expected) { - do_throw(msg); - } - }; - - exports.ok = function (val, msg) { - msg = msg || String(val) + ' is falsey'; - if (!Boolean(val)) { - do_throw(msg); - } - }; - - exports.strictEqual = function (actual, expected, msg) { - msg = msg || String(actual) + ' !== ' + String(expected); - if (actual !== expected) { - do_throw(msg); - } - }; - - exports.throws = function (fn) { - try { - fn(); - do_throw('Expected an error to be thrown, but it wasn\'t.'); - } - catch (e) { - } - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/mini-require.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/mini-require.js deleted file mode 100644 index 0daf453..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/mini-require.js +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * Define a module along with a payload. - * @param {string} moduleName Name for the payload - * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec - * @param {function} payload Function with (require, exports, module) params - */ -function define(moduleName, deps, payload) { - if (typeof moduleName != "string") { - throw new TypeError('Expected string, got: ' + moduleName); - } - - if (arguments.length == 2) { - payload = deps; - } - - if (moduleName in define.modules) { - throw new Error("Module already defined: " + moduleName); - } - define.modules[moduleName] = payload; -}; - -/** - * The global store of un-instantiated modules - */ -define.modules = {}; - - -/** - * We invoke require() in the context of a Domain so we can have multiple - * sets of modules running separate from each other. - * This contrasts with JSMs which are singletons, Domains allows us to - * optionally load a CommonJS module twice with separate data each time. - * Perhaps you want 2 command lines with a different set of commands in each, - * for example. - */ -function Domain() { - this.modules = {}; - this._currentModule = null; -} - -(function () { - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * There are 2 ways to call this, either with an array of dependencies and a - * callback to call when the dependencies are found (which can happen - * asynchronously in an in-page context) or with a single string an no callback - * where the dependency is resolved synchronously and returned. - * The API is designed to be compatible with the CommonJS AMD spec and - * RequireJS. - * @param {string[]|string} deps A name, or names for the payload - * @param {function|undefined} callback Function to call when the dependencies - * are resolved - * @return {undefined|object} The module required or undefined for - * array/callback method - */ - Domain.prototype.require = function(deps, callback) { - if (Array.isArray(deps)) { - var params = deps.map(function(dep) { - return this.lookup(dep); - }, this); - if (callback) { - callback.apply(null, params); - } - return undefined; - } - else { - return this.lookup(deps); - } - }; - - function normalize(path) { - var bits = path.split('/'); - var i = 1; - while (i < bits.length) { - if (bits[i] === '..') { - bits.splice(i-1, 1); - } else if (bits[i] === '.') { - bits.splice(i, 1); - } else { - i++; - } - } - return bits.join('/'); - } - - function join(a, b) { - a = a.trim(); - b = b.trim(); - if (/^\//.test(b)) { - return b; - } else { - return a.replace(/\/*$/, '/') + b; - } - } - - function dirname(path) { - var bits = path.split('/'); - bits.pop(); - return bits.join('/'); - } - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * @param {string} moduleName A name for the payload to lookup - * @return {object} The module specified by aModuleName or null if not found. - */ - Domain.prototype.lookup = function(moduleName) { - if (/^\./.test(moduleName)) { - moduleName = normalize(join(dirname(this._currentModule), moduleName)); - } - - if (moduleName in this.modules) { - var module = this.modules[moduleName]; - return module; - } - - if (!(moduleName in define.modules)) { - throw new Error("Module not defined: " + moduleName); - } - - var module = define.modules[moduleName]; - - if (typeof module == "function") { - var exports = {}; - var previousModule = this._currentModule; - this._currentModule = moduleName; - module(this.require.bind(this), exports, { id: moduleName, uri: "" }); - this._currentModule = previousModule; - module = exports; - } - - // cache the resulting module object for next time - this.modules[moduleName] = module; - - return module; - }; - -}()); - -define.Domain = Domain; -define.globalDomain = new Domain(); -var require = define.globalDomain.require.bind(define.globalDomain); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm deleted file mode 100644 index ee2539d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -/////////////////////////////////////////////////////////////////////////////// - - -this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ]; - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm deleted file mode 100644 index 80341d4..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); -Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm'); - -this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ]; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js deleted file mode 100644 index fb29ff5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.sourceMap = { - SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer, - SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator, - SourceNode: require('source-map/source-node').SourceNode -}; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm deleted file mode 100644 index cf3c2d8..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm +++ /dev/null @@ -1,6 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer; -this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator; -this.SourceNode = require('source-map/source-node').SourceNode; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm deleted file mode 100644 index b31b84c..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -function runSourceMapTests(modName, do_throw) { - let mod = require(modName); - let assert = require('test/source-map/assert'); - let util = require('test/source-map/util'); - - assert.init(do_throw); - - for (let k in mod) { - if (/^test/.test(k)) { - mod[k](assert, util); - } - } - -} -this.runSourceMapTests = runSourceMapTests; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/test-prefix.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/test-prefix.js deleted file mode 100644 index 1b13f30..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/test-prefix.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://test/Utils.jsm'); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/test-suffix.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/test-suffix.js deleted file mode 100644 index bec2de3..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/build/test-suffix.js +++ /dev/null @@ -1,3 +0,0 @@ -function run_test() { - runSourceMapTests('{THIS_MODULE}', do_throw); -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map.js deleted file mode 100644 index 121ad24..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./source-map/source-node').SourceNode; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js deleted file mode 100644 index 40f9a18..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = {}; - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var isDuplicate = this.has(aStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - this._set[util.toSetString(aStr)] = idx; - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - return Object.prototype.hasOwnProperty.call(this._set, - util.toSetString(aStr)); - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (this.has(aStr)) { - return this._set[util.toSetString(aStr)]; - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js deleted file mode 100644 index b4ff136..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js +++ /dev/null @@ -1,142 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('./base64'); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aOutParam) { - var i = 0; - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (i >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charAt(i++)); - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aStr.slice(i); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js deleted file mode 100644 index 863cc46..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var charToIntMap = {}; - var intToCharMap = {}; - - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - .split('') - .forEach(function (ch, index) { - charToIntMap[ch] = index; - intToCharMap[index] = ch; - }); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function base64_encode(aNumber) { - if (aNumber in intToCharMap) { - return intToCharMap[aNumber]; - } - throw new TypeError("Must be between 0 and 63: " + aNumber); - }; - - /** - * Decode a single base 64 digit to an integer. - */ - exports.decode = function base64_decode(aChar) { - if (aChar in charToIntMap) { - return charToIntMap[aChar]; - } - throw new TypeError("Not a valid base 64 digit: " + aChar); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js deleted file mode 100644 index ff347c6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the next - // closest element that is less than that element. - // - // 3. We did not find the exact element, and there is no next-closest - // element which is less than the one we are searching for, so we - // return null. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return aHaystack[mid]; - } - else if (cmp > 0) { - // aHaystack[mid] is greater than our needle. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); - } - // We did not find an exact match, return the next closest one - // (termination case 2). - return aHaystack[mid]; - } - else { - // aHaystack[mid] is less than our needle. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); - } - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (2) or (3) and return the appropriate thing. - return aLow < 0 - ? null - : aHaystack[aLow]; - } - } - - /** - * This is an implementation of binary search which will always try and return - * the next lowest value checked if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - */ - exports.search = function search(aNeedle, aHaystack, aCompare) { - return aHaystack.length > 0 - ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) - : null; - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js deleted file mode 100644 index ea643bf..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js +++ /dev/null @@ -1,483 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - var binarySearch = require('./binary-search'); - var ArraySet = require('./array-set').ArraySet; - var base64VLQ = require('./base64-vlq'); - - /** - * A SourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names, true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - /** - * Create a SourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns SourceMapConsumer - */ - SourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(SourceMapConsumer.prototype); - - smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - smc.__generatedMappings = aSourceMap._mappings.slice() - .sort(util.compareByGeneratedPositions); - smc.__originalMappings = aSourceMap._mappings.slice() - .sort(util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(SourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._nextCharIsMappingSeparator = - function SourceMapConsumer_nextCharIsMappingSeparator(aStr) { - var c = aStr.charAt(0); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var str = aStr; - var temp = {}; - var mapping; - - while (str.length > 0) { - if (str.charAt(0) === ';') { - generatedLine++; - str = str.slice(1); - previousGeneratedColumn = 0; - } - else if (str.charAt(0) === ',') { - str = str.slice(1); - } - else { - mapping = {}; - mapping.generatedLine = generatedLine; - - // Generated column. - base64VLQ.decode(str, temp); - mapping.generatedColumn = previousGeneratedColumn + temp.value; - previousGeneratedColumn = mapping.generatedColumn; - str = temp.rest; - - if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) { - // Original source. - base64VLQ.decode(str, temp); - mapping.source = this._sources.at(previousSource + temp.value); - previousSource += temp.value; - str = temp.rest; - if (str.length === 0 || this._nextCharIsMappingSeparator(str)) { - throw new Error('Found a source, but no line and column'); - } - - // Original line. - base64VLQ.decode(str, temp); - mapping.originalLine = previousOriginalLine + temp.value; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - str = temp.rest; - if (str.length === 0 || this._nextCharIsMappingSeparator(str)) { - throw new Error('Found a source and line, but no column'); - } - - // Original column. - base64VLQ.decode(str, temp); - mapping.originalColumn = previousOriginalColumn + temp.value; - previousOriginalColumn = mapping.originalColumn; - str = temp.rest; - - if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) { - // Original name. - base64VLQ.decode(str, temp); - mapping.name = this._names.at(previousName + temp.value); - previousName += temp.value; - str = temp.rest; - } - } - - this.__generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - this.__originalMappings.push(mapping); - } - } - } - - this.__generatedMappings.sort(util.compareByGeneratedPositions); - this.__originalMappings.sort(util.compareByOriginalPositions); - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - SourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator); - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - SourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositions); - - if (mapping && mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source != null && this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: util.getArg(mapping, 'name', null) - }; - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * availible. - */ - SourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - throw new Error('"' + aSource + '" is not in the SourceMap.'); - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - - var mapping = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions); - - if (mapping) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null) - }; - } - - return { - line: null, - column: null - }; - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source; - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name - }; - }).forEach(aCallback, context); - }; - - exports.SourceMapConsumer = SourceMapConsumer; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js deleted file mode 100644 index 5387fa1..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js +++ /dev/null @@ -1,401 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('./base64-vlq'); - var util = require('./util'); - var ArraySet = require('./array-set').ArraySet; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = []; - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - this._validateMapping(generated, original, source, name); - - if (source != null && !this._sources.has(source)) { - this._sources.add(source); - } - - if (name != null && !this._names.has(name)) { - this._names.add(name); - } - - this._mappings.push({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = {}; - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.forEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var mapping; - - // The mappings must be guaranteed to be in sorted order before we start - // serializing them or else the generated line numbers (which are defined - // via the ';' separators) will be all messed up. Note: it might be more - // performant to maintain the sorting as we insert them, rather than as we - // serialize them, but the big O is the same either way. - this._mappings.sort(util.compareByGeneratedPositions); - - for (var i = 0, len = this._mappings.length; i < len; i++) { - mapping = this._mappings[i]; - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - result += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) { - continue; - } - result += ','; - } - } - - result += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - result += base64VLQ.encode(this._sources.indexOf(mapping.source) - - previousSource); - previousSource = this._sources.indexOf(mapping.source); - - // lines are stored 0-based in SourceMap spec version 3 - result += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - result += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - result += base64VLQ.encode(this._names.indexOf(mapping.name) - - previousName); - previousName = this._names.indexOf(mapping.name); - } - } - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, - key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js deleted file mode 100644 index baa5f40..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js +++ /dev/null @@ -1,408 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; - var util = require('./util'); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Matches a Windows-style newline, or any character. - var REGEX_CHARACTER = /\r\n|[\s\S]/g; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are removed from this array, by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var shiftNextLine = function() { - var lineContents = remainingLines.shift(); - // The last line of a file might not have a newline. - var newLine = remainingLines.shift() || ""; - return lineContents + newLine; - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - var code = ""; - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[0]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[0] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLines.length > 0) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk instanceof SourceNode) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild instanceof SourceNode) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i] instanceof SourceNode) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - chunk.match(REGEX_CHARACTER).forEach(function (ch, idx, array) { - if (REGEX_NEWLINE.test(ch)) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === array.length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column += ch.length; - } - }); - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js deleted file mode 100644 index 976f6ca..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js +++ /dev/null @@ -1,319 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consequtive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = (path.charAt(0) === '/'); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // XXX: It is possible to remove this block, and the tests still pass! - var url = urlParse(aRoot); - if (aPath.charAt(0) == "/" && url && url.path == "/") { - return aPath.slice(1); - } - - return aPath.indexOf(aRoot + '/') === 0 - ? aPath.substr(aRoot.length + 1) - : aPath; - } - exports.relative = relative; - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - return '$' + aStr; - } - exports.toSetString = toSetString; - - function fromSetString(aStr) { - return aStr.substr(1); - } - exports.fromSetString = fromSetString; - - function strcmp(aStr1, aStr2) { - var s1 = aStr1 || ""; - var s2 = aStr2 || ""; - return (s1 > s2) - (s1 < s2); - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp; - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp || onlyCompareOriginal) { - return cmp; - } - - cmp = strcmp(mappingA.name, mappingB.name); - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - return mappingA.generatedColumn - mappingB.generatedColumn; - }; - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings where the generated positions are - * compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) { - var cmp; - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - }; - exports.compareByGeneratedPositions = compareByGeneratedPositions; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE deleted file mode 100644 index f33d665..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -amdefine is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2011, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -MIT License ------------ - -Copyright (c) 2011, The Dojo Foundation - -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/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md deleted file mode 100644 index c6995c0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# amdefine - -A module that can be used to implement AMD's define() in Node. This allows you -to code to the AMD API and have the module work in node programs without -requiring those other programs to use AMD. - -## Usage - -**1)** Update your package.json to indicate amdefine as a dependency: - -```javascript - "dependencies": { - "amdefine": ">=0.1.0" - } -``` - -Then run `npm install` to get amdefine into your project. - -**2)** At the top of each module that uses define(), place this code: - -```javascript -if (typeof define !== 'function') { var define = require('amdefine')(module) } -``` - -**Only use these snippets** when loading amdefine. If you preserve the basic structure, -with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer). - -You can add spaces, line breaks and even require amdefine with a local path, but -keep the rest of the structure to get the stripping behavior. - -As you may know, because `if` statements in JavaScript don't have their own scope, the var -declaration in the above snippet is made whether the `if` expression is truthy or not. If -RequireJS is loaded then the declaration is superfluous because `define` is already already -declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var` -declarations of the same variable in the same scope gracefully. - -If you want to deliver amdefine.js with your code rather than specifying it as a dependency -with npm, then just download the latest release and refer to it using a relative path: - -[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js) - -### amdefine/intercept - -Consider this very experimental. - -Instead of pasting the piece of text for the amdefine setup of a `define` -variable in each module you create or consume, you can use `amdefine/intercept` -instead. It will automatically insert the above snippet in each .js file loaded -by Node. - -**Warning**: you should only use this if you are creating an application that -is consuming AMD style defined()'d modules that are distributed via npm and want -to run that code in Node. - -For library code where you are not sure if it will be used by others in Node or -in the browser, then explicitly depending on amdefine and placing the code -snippet above is suggested path, instead of using `amdefine/intercept`. The -intercept module affects all .js files loaded in the Node app, and it is -inconsiderate to modify global state like that unless you are also controlling -the top level app. - -#### Why distribute AMD-style nodes via npm? - -npm has a lot of weaknesses for front-end use (installed layout is not great, -should have better support for the `baseUrl + moduleID + '.js' style of loading, -single file JS installs), but some people want a JS package manager and are -willing to live with those constraints. If that is you, but still want to author -in AMD style modules to get dynamic require([]), better direct source usage and -powerful loader plugin support in the browser, then this tool can help. - -#### amdefine/intercept usage - -Just require it in your top level app module (for example index.js, server.js): - -```javascript -require('amdefine/intercept'); -``` - -The module does not return a value, so no need to assign the result to a local -variable. - -Then just require() code as you normally would with Node's require(). Any .js -loaded after the intercept require will have the amdefine check injected in -the .js source as it is loaded. It does not modify the source on disk, just -prepends some content to the text of the module as it is loaded by Node. - -#### How amdefine/intercept works - -It overrides the `Module._extensions['.js']` in Node to automatically prepend -the amdefine snippet above. So, it will affect any .js file loaded by your -app. - -## define() usage - -It is best if you use the anonymous forms of define() in your module: - -```javascript -define(function (require) { - var dependency = require('dependency'); -}); -``` - -or - -```javascript -define(['dependency'], function (dependency) { - -}); -``` - -## RequireJS optimizer integration. - -Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html) -will have support for stripping the `if (typeof define !== 'function')` check -mentioned above, so you can include this snippet for code that runs in the -browser, but avoid taking the cost of the if() statement once the code is -optimized for deployment. - -## Node 0.4 Support - -If you want to support Node 0.4, then add `require` as the second parameter to amdefine: - -```javascript -//Only if you want Node 0.4. If using 0.5 or later, use the above snippet. -if (typeof define !== 'function') { var define = require('amdefine')(module, require) } -``` - -## Limitations - -### Synchronous vs Asynchronous - -amdefine creates a define() function that is callable by your code. It will -execute and trace dependencies and call the factory function *synchronously*, -to keep the behavior in line with Node's synchronous dependency tracing. - -The exception: calling AMD's callback-style require() from inside a factory -function. The require callback is called on process.nextTick(): - -```javascript -define(function (require) { - require(['a'], function(a) { - //'a' is loaded synchronously, but - //this callback is called on process.nextTick(). - }); -}); -``` - -### Loader Plugins - -Loader plugins are supported as long as they call their load() callbacks -synchronously. So ones that do network requests will not work. However plugins -like [text](http://requirejs.org/docs/api.html#text) can load text files locally. - -The plugin API's `load.fromText()` is **not supported** in amdefine, so this means -transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs) -will not work. This may be fixable, but it is a bit complex, and I do not have -enough node-fu to figure it out yet. See the source for amdefine.js if you want -to get an idea of the issues involved. - -## Tests - -To run the tests, cd to **tests** and run: - -``` -node all.js -node all-intercept.js -``` - -## License - -New BSD and MIT. Check the LICENSE file for all the details. diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js deleted file mode 100644 index 53bf5a6..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js +++ /dev/null @@ -1,299 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/amdefine for details - */ - -/*jslint node: true */ -/*global module, process */ -'use strict'; - -/** - * Creates a define for node. - * @param {Object} module the "module" object that is defined by Node for the - * current module. - * @param {Function} [requireFn]. Node's require function for the current module. - * It only needs to be passed in Node versions before 0.5, when module.require - * did not exist. - * @returns {Function} a define function that is usable for the current node - * module. - */ -function amdefine(module, requireFn) { - 'use strict'; - var defineCache = {}, - loaderCache = {}, - alreadyCalled = false, - path = require('path'), - makeRequire, stringRequire; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; ary[i]; i+= 1) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - function normalize(name, baseName) { - var baseParts; - - //Adjust any relative paths. - if (name && name.charAt(0) === '.') { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - baseParts = baseName.split('/'); - baseParts = baseParts.slice(0, baseParts.length - 1); - baseParts = baseParts.concat(name.split('/')); - trimDots(baseParts); - name = baseParts.join('/'); - } - } - - return name; - } - - /** - * Create the normalize() function passed to a loader plugin's - * normalize method. - */ - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(id) { - function load(value) { - loaderCache[id] = value; - } - - load.fromText = function (id, text) { - //This one is difficult because the text can/probably uses - //define, and any relative paths and requires should be relative - //to that id was it would be found on disk. But this would require - //bootstrapping a module/require fairly deeply from node core. - //Not sure how best to go about that yet. - throw new Error('amdefine does not implement load.fromText'); - }; - - return load; - } - - makeRequire = function (systemRequire, exports, module, relId) { - function amdRequire(deps, callback) { - if (typeof deps === 'string') { - //Synchronous, single module require('') - return stringRequire(systemRequire, exports, module, deps, relId); - } else { - //Array of dependencies with a callback. - - //Convert the dependencies to modules. - deps = deps.map(function (depName) { - return stringRequire(systemRequire, exports, module, depName, relId); - }); - - //Wait for next tick to call back the require call. - process.nextTick(function () { - callback.apply(null, deps); - }); - } - } - - amdRequire.toUrl = function (filePath) { - if (filePath.indexOf('.') === 0) { - return normalize(filePath, path.dirname(module.filename)); - } else { - return filePath; - } - }; - - return amdRequire; - }; - - //Favor explicit value, passed in if the module wants to support Node 0.4. - requireFn = requireFn || function req() { - return module.require.apply(module, arguments); - }; - - function runFactory(id, deps, factory) { - var r, e, m, result; - - if (id) { - e = loaderCache[id] = {}; - m = { - id: id, - uri: __filename, - exports: e - }; - r = makeRequire(requireFn, e, m, id); - } else { - //Only support one define call per file - if (alreadyCalled) { - throw new Error('amdefine with no module ID cannot be called more than once per file.'); - } - alreadyCalled = true; - - //Use the real variables from node - //Use module.exports for exports, since - //the exports in here is amdefine exports. - e = module.exports; - m = module; - r = makeRequire(requireFn, e, m, module.id); - } - - //If there are dependencies, they are strings, so need - //to convert them to dependency values. - if (deps) { - deps = deps.map(function (depName) { - return r(depName); - }); - } - - //Call the factory with the right dependencies. - if (typeof factory === 'function') { - result = factory.apply(m.exports, deps); - } else { - result = factory; - } - - if (result !== undefined) { - m.exports = result; - if (id) { - loaderCache[id] = m.exports; - } - } - } - - stringRequire = function (systemRequire, exports, module, id, relId) { - //Split the ID by a ! so that - var index = id.indexOf('!'), - originalId = id, - prefix, plugin; - - if (index === -1) { - id = normalize(id, relId); - - //Straight module lookup. If it is one of the special dependencies, - //deal with it, otherwise, delegate to node. - if (id === 'require') { - return makeRequire(systemRequire, exports, module, relId); - } else if (id === 'exports') { - return exports; - } else if (id === 'module') { - return module; - } else if (loaderCache.hasOwnProperty(id)) { - return loaderCache[id]; - } else if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } else { - if(systemRequire) { - return systemRequire(originalId); - } else { - throw new Error('No module with ID: ' + id); - } - } - } else { - //There is a plugin in play. - prefix = id.substring(0, index); - id = id.substring(index + 1, id.length); - - plugin = stringRequire(systemRequire, exports, module, prefix, relId); - - if (plugin.normalize) { - id = plugin.normalize(id, makeNormalize(relId)); - } else { - //Normalize the ID normally. - id = normalize(id, relId); - } - - if (loaderCache[id]) { - return loaderCache[id]; - } else { - plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {}); - - return loaderCache[id]; - } - } - }; - - //Create a define function specific to the module asking for amdefine. - function define(id, deps, factory) { - if (Array.isArray(id)) { - factory = deps; - deps = id; - id = undefined; - } else if (typeof id !== 'string') { - factory = id; - id = deps = undefined; - } - - if (deps && !Array.isArray(deps)) { - factory = deps; - deps = undefined; - } - - if (!deps) { - deps = ['require', 'exports', 'module']; - } - - //Set up properties for this module. If an ID, then use - //internal cache. If no ID, then use the external variables - //for this node module. - if (id) { - //Put the module in deep freeze until there is a - //require call for it. - defineCache[id] = [id, deps, factory]; - } else { - runFactory(id, deps, factory); - } - } - - //define.require, which has access to all the values in the - //cache. Useful for AMD modules that all have IDs in the file, - //but need to finally export a value to node based on one of those - //IDs. - define.require = function (id) { - if (loaderCache[id]) { - return loaderCache[id]; - } - - if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } - }; - - define.amd = {}; - - return define; -} - -module.exports = amdefine; diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js deleted file mode 100644 index 771a983..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js +++ /dev/null @@ -1,36 +0,0 @@ -/*jshint node: true */ -var inserted, - Module = require('module'), - fs = require('fs'), - existingExtFn = Module._extensions['.js'], - amdefineRegExp = /amdefine\.js/; - -inserted = "if (typeof define !== 'function') {var define = require('amdefine')(module)}"; - -//From the node/lib/module.js source: -function stripBOM(content) { - // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - // because the buffer-to-string conversion in `fs.readFileSync()` - // translates it to FEFF, the UTF-16 BOM. - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -} - -//Also adapted from the node/lib/module.js source: -function intercept(module, filename) { - var content = stripBOM(fs.readFileSync(filename, 'utf8')); - - if (!amdefineRegExp.test(module.id)) { - content = inserted + content; - } - - module._compile(content, filename); -} - -intercept._id = 'amdefine/intercept'; - -if (!existingExtFn._id || existingExtFn._id !== intercept._id) { - Module._extensions['.js'] = intercept; -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json deleted file mode 100644 index bca411d..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "amdefine", - "description": "Provide AMD's define() API for declaring modules in the AMD format", - "version": "0.1.0", - "homepage": "http://github.com/jrburke/amdefine", - "author": { - "name": "James Burke", - "email": "jrburke@gmail.com", - "url": "http://github.com/jrburke" - }, - "licenses": [ - { - "type": "BSD", - "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" - }, - { - "type": "MIT", - "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/jrburke/amdefine.git" - }, - "main": "./amdefine.js", - "engines": { - "node": ">=0.4.2" - }, - "readme": "# amdefine\n\nA module that can be used to implement AMD's define() in Node. This allows you\nto code to the AMD API and have the module work in node programs without\nrequiring those other programs to use AMD.\n\n## Usage\n\n**1)** Update your package.json to indicate amdefine as a dependency:\n\n```javascript\n \"dependencies\": {\n \"amdefine\": \">=0.1.0\"\n }\n```\n\nThen run `npm install` to get amdefine into your project.\n\n**2)** At the top of each module that uses define(), place this code:\n\n```javascript\nif (typeof define !== 'function') { var define = require('amdefine')(module) }\n```\n\n**Only use these snippets** when loading amdefine. If you preserve the basic structure,\nwith the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).\n\nYou can add spaces, line breaks and even require amdefine with a local path, but\nkeep the rest of the structure to get the stripping behavior.\n\nAs you may know, because `if` statements in JavaScript don't have their own scope, the var\ndeclaration in the above snippet is made whether the `if` expression is truthy or not. If\nRequireJS is loaded then the declaration is superfluous because `define` is already already\ndeclared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`\ndeclarations of the same variable in the same scope gracefully.\n\nIf you want to deliver amdefine.js with your code rather than specifying it as a dependency\nwith npm, then just download the latest release and refer to it using a relative path:\n\n[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)\n\n### amdefine/intercept\n\nConsider this very experimental.\n\nInstead of pasting the piece of text for the amdefine setup of a `define`\nvariable in each module you create or consume, you can use `amdefine/intercept`\ninstead. It will automatically insert the above snippet in each .js file loaded\nby Node.\n\n**Warning**: you should only use this if you are creating an application that\nis consuming AMD style defined()'d modules that are distributed via npm and want\nto run that code in Node.\n\nFor library code where you are not sure if it will be used by others in Node or\nin the browser, then explicitly depending on amdefine and placing the code\nsnippet above is suggested path, instead of using `amdefine/intercept`. The\nintercept module affects all .js files loaded in the Node app, and it is\ninconsiderate to modify global state like that unless you are also controlling\nthe top level app.\n\n#### Why distribute AMD-style nodes via npm?\n\nnpm has a lot of weaknesses for front-end use (installed layout is not great,\nshould have better support for the `baseUrl + moduleID + '.js' style of loading,\nsingle file JS installs), but some people want a JS package manager and are\nwilling to live with those constraints. If that is you, but still want to author\nin AMD style modules to get dynamic require([]), better direct source usage and\npowerful loader plugin support in the browser, then this tool can help.\n\n#### amdefine/intercept usage\n\nJust require it in your top level app module (for example index.js, server.js):\n\n```javascript\nrequire('amdefine/intercept');\n```\n\nThe module does not return a value, so no need to assign the result to a local\nvariable.\n\nThen just require() code as you normally would with Node's require(). Any .js\nloaded after the intercept require will have the amdefine check injected in\nthe .js source as it is loaded. It does not modify the source on disk, just\nprepends some content to the text of the module as it is loaded by Node.\n\n#### How amdefine/intercept works\n\nIt overrides the `Module._extensions['.js']` in Node to automatically prepend\nthe amdefine snippet above. So, it will affect any .js file loaded by your\napp.\n\n## define() usage\n\nIt is best if you use the anonymous forms of define() in your module:\n\n```javascript\ndefine(function (require) {\n var dependency = require('dependency');\n});\n```\n\nor\n\n```javascript\ndefine(['dependency'], function (dependency) {\n\n});\n```\n\n## RequireJS optimizer integration. \n\nVersion 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)\nwill have support for stripping the `if (typeof define !== 'function')` check\nmentioned above, so you can include this snippet for code that runs in the\nbrowser, but avoid taking the cost of the if() statement once the code is\noptimized for deployment.\n\n## Node 0.4 Support\n\nIf you want to support Node 0.4, then add `require` as the second parameter to amdefine:\n\n```javascript\n//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.\nif (typeof define !== 'function') { var define = require('amdefine')(module, require) }\n```\n\n## Limitations\n\n### Synchronous vs Asynchronous\n\namdefine creates a define() function that is callable by your code. It will\nexecute and trace dependencies and call the factory function *synchronously*,\nto keep the behavior in line with Node's synchronous dependency tracing.\n\nThe exception: calling AMD's callback-style require() from inside a factory\nfunction. The require callback is called on process.nextTick():\n\n```javascript\ndefine(function (require) {\n require(['a'], function(a) {\n //'a' is loaded synchronously, but\n //this callback is called on process.nextTick().\n });\n});\n```\n\n### Loader Plugins\n\nLoader plugins are supported as long as they call their load() callbacks\nsynchronously. So ones that do network requests will not work. However plugins\nlike [text](http://requirejs.org/docs/api.html#text) can load text files locally.\n\nThe plugin API's `load.fromText()` is **not supported** in amdefine, so this means\ntranspiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)\nwill not work. This may be fixable, but it is a bit complex, and I do not have\nenough node-fu to figure it out yet. See the source for amdefine.js if you want\nto get an idea of the issues involved.\n\n## Tests\n\nTo run the tests, cd to **tests** and run:\n\n```\nnode all.js\nnode all-intercept.js\n```\n\n## License\n\nNew BSD and MIT. Check the LICENSE file for all the details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jrburke/amdefine/issues" - }, - "_id": "amdefine@0.1.0", - "_from": "amdefine@>=0.0.4", - "scripts": {} -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/package.json b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/package.json deleted file mode 100644 index ecdd1c0..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/package.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "name": "source-map", - "description": "Generates and consumes source maps", - "version": "0.1.40", - "homepage": "https://github.com/mozilla/source-map", - "author": { - "name": "Nick Fitzgerald", - "email": "nfitzgerald@mozilla.com" - }, - "contributors": [ - { - "name": "Tobias Koppers", - "email": "tobias.koppers@googlemail.com" - }, - { - "name": "Duncan Beevers", - "email": "duncan@dweebd.com" - }, - { - "name": "Stephen Crane", - "email": "scrane@mozilla.com" - }, - { - "name": "Ryan Seddon", - "email": "seddon.ryan@gmail.com" - }, - { - "name": "Miles Elam", - "email": "miles.elam@deem.com" - }, - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com" - }, - { - "name": "Michael Ficarra", - "email": "github.public.email@michael.ficarra.me" - }, - { - "name": "Todd Wolfson", - "email": "todd@twolfson.com" - }, - { - "name": "Alexander Solovyov", - "email": "alexander@solovyov.net" - }, - { - "name": "Felix Gnass", - "email": "fgnass@gmail.com" - }, - { - "name": "Conrad Irwin", - "email": "conrad.irwin@gmail.com" - }, - { - "name": "usrbincc", - "email": "usrbincc@yahoo.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Chase Douglas", - "email": "chase@newrelic.com" - }, - { - "name": "Evan Wallace", - "email": "evan.exe@gmail.com" - }, - { - "name": "Heather Arthur", - "email": "fayearthur@gmail.com" - }, - { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com" - }, - { - "name": "David Glasser", - "email": "glasser@davidglasser.net" - }, - { - "name": "Simon Lydell", - "email": "simon.lydell@gmail.com" - }, - { - "name": "Jmeas Smith", - "email": "jellyes2@gmail.com" - }, - { - "name": "Michael Z Goddard", - "email": "mzgoddard@gmail.com" - }, - { - "name": "azu", - "email": "azu@users.noreply.github.com" - }, - { - "name": "John Gozde", - "email": "john@gozde.ca" - }, - { - "name": "Adam Kirkton", - "email": "akirkton@truefitinnovation.com" - }, - { - "name": "Chris Montgomery", - "email": "christopher.montgomery@dowjones.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/mozilla/source-map.git" - }, - "directories": { - "lib": "./lib" - }, - "main": "./lib/source-map.js", - "engines": { - "node": ">=0.8.0" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://opensource.org/licenses/BSD-3-Clause" - } - ], - "dependencies": { - "amdefine": ">=0.0.4" - }, - "devDependencies": { - "dryice": ">=0.4.8" - }, - "scripts": { - "test": "node test/run-tests.js", - "build": "node Makefile.dryice.js" - }, - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "_id": "source-map@0.1.40", - "_shasum": "7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f", - "_from": "source-map@>=0.1.2", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "nickfitzgerald", - "email": "fitzgen@gmail.com" - }, - "maintainers": [ - { - "name": "mozilla-devtools", - "email": "mozilla-developer-tools@googlegroups.com" - }, - { - "name": "mozilla", - "email": "dherman@mozilla.com" - }, - { - "name": "nickfitzgerald", - "email": "fitzgen@gmail.com" - } - ], - "dist": { - "shasum": "7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f", - "tarball": "http://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz" - }, - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/run-tests.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/run-tests.js deleted file mode 100755 index 64a7c3a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/run-tests.js +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env node -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var assert = require('assert'); -var fs = require('fs'); -var path = require('path'); -var util = require('./source-map/util'); - -function run(tests) { - var total = 0; - var passed = 0; - - for (var i = 0; i < tests.length; i++) { - for (var k in tests[i].testCase) { - if (/^test/.test(k)) { - total++; - try { - tests[i].testCase[k](assert, util); - passed++; - } - catch (e) { - console.log('FAILED ' + tests[i].name + ': ' + k + '!'); - console.log(e.stack); - } - } - } - } - - console.log(''); - console.log(passed + ' / ' + total + ' tests passed.'); - console.log(''); - - return total - passed; -} - -function isTestFile(f) { - var testToRun = process.argv[2]; - return testToRun - ? path.basename(testToRun) === f - : /^test\-.*?\.js/.test(f); -} - -function toModule(f) { - return './source-map/' + f.replace(/\.js$/, ''); -} - -var requires = fs.readdirSync(path.join(__dirname, 'source-map')) - .filter(isTestFile) - .map(toModule); - -var code = run(requires.map(require).map(function (mod, i) { - return { - name: requires[i], - testCase: mod - }; -})); - -process.exit(code); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js deleted file mode 100644 index 3801233..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2012 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var sourceMap; - try { - sourceMap = require('../../lib/source-map'); - } catch (e) { - sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - } - - exports['test that the api is properly exposed in the top level'] = function (assert, util) { - assert.equal(typeof sourceMap.SourceMapGenerator, "function"); - assert.equal(typeof sourceMap.SourceMapConsumer, "function"); - assert.equal(typeof sourceMap.SourceNode, "function"); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js deleted file mode 100644 index b5797ed..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var ArraySet = require('../../lib/source-map/array-set').ArraySet; - - function makeTestSet() { - var set = new ArraySet(); - for (var i = 0; i < 100; i++) { - set.add(String(i)); - } - return set; - } - - exports['test .has() membership'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.ok(set.has(String(i))); - } - }; - - exports['test .indexOf() elements'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.indexOf(String(i)), i); - } - }; - - exports['test .at() indexing'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.at(i), String(i)); - } - }; - - exports['test creating from an array'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); - - assert.ok(set.has('foo')); - assert.ok(set.has('bar')); - assert.ok(set.has('baz')); - assert.ok(set.has('quux')); - assert.ok(set.has('hasOwnProperty')); - - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.indexOf('bar'), 1); - assert.strictEqual(set.indexOf('baz'), 2); - assert.strictEqual(set.indexOf('quux'), 3); - - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'bar'); - assert.strictEqual(set.at(2), 'baz'); - assert.strictEqual(set.at(3), 'quux'); - }; - - exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { - var set = new ArraySet(); - set.add('__proto__'); - assert.ok(set.has('__proto__')); - assert.strictEqual(set.at(0), '__proto__'); - assert.strictEqual(set.indexOf('__proto__'), 0); - }; - - exports['test .fromArray() with duplicates'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'foo']); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set = ArraySet.fromArray(['foo', 'foo'], true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - - exports['test .add() with duplicates'] = function (assert, util) { - var set = new ArraySet(); - set.add('foo'); - - set.add('foo'); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set.add('foo', true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js deleted file mode 100644 index 6fd0d99..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js +++ /dev/null @@ -1,23 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('../../lib/source-map/base64-vlq'); - - exports['test normal encoding and decoding'] = function (assert, util) { - var result = {}; - for (var i = -255; i < 256; i++) { - base64VLQ.decode(base64VLQ.encode(i), result); - assert.equal(result.value, i); - assert.equal(result.rest, ""); - } - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js deleted file mode 100644 index ff3a244..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('../../lib/source-map/base64'); - - exports['test out of range encoding'] = function (assert, util) { - assert.throws(function () { - base64.encode(-1); - }); - assert.throws(function () { - base64.encode(64); - }); - }; - - exports['test out of range decoding'] = function (assert, util) { - assert.throws(function () { - base64.decode('='); - }); - }; - - exports['test normal encoding and decoding'] = function (assert, util) { - for (var i = 0; i < 64; i++) { - assert.equal(base64.decode(base64.encode(i)), i); - } - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js deleted file mode 100644 index ee30683..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var binarySearch = require('../../lib/source-map/binary-search'); - - function numberCompare(a, b) { - return a - b; - } - - exports['test too high'] = function (assert, util) { - var needle = 30; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 20); - }; - - exports['test too low'] = function (assert, util) { - var needle = 1; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), null); - }; - - exports['test exact search'] = function (assert, util) { - var needle = 4; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 4); - }; - - exports['test fuzzy search'] = function (assert, util) { - var needle = 19; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 18); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js deleted file mode 100644 index 26757b2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test eating our own dog food'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'testing.js', - sourceRoot: '/wu/tang' - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 1, column: 0 }, - generated: { line: 2, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 2, column: 0 }, - generated: { line: 3, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 3, column: 0 }, - generated: { line: 4, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 4, column: 0 }, - generated: { line: 5, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 5, column: 10 }, - generated: { line: 6, column: 12 } - }); - - var smc = new SourceMapConsumer(smg.toString()); - - // Exact - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 0, null, smc, assert); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 0, null, smc, assert); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 0, null, smc, assert); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 0, null, smc, assert); - util.assertMapping(6, 12, '/wu/tang/gza.coffee', 5, 10, null, smc, assert); - - // Fuzzy - - // Generated to original - util.assertMapping(2, 0, null, null, null, null, smc, assert, true); - util.assertMapping(2, 9, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); - util.assertMapping(3, 0, null, null, null, null, smc, assert, true); - util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); - util.assertMapping(4, 0, null, null, null, null, smc, assert, true); - util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); - util.assertMapping(5, 0, null, null, null, null, smc, assert, true); - util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, smc, assert, true); - util.assertMapping(6, 0, null, null, null, null, smc, assert, true); - util.assertMapping(6, 9, null, null, null, null, smc, assert, true); - util.assertMapping(6, 13, '/wu/tang/gza.coffee', 5, 10, null, smc, assert, true); - - // Original to generated - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 1, null, smc, assert, null, true); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 3, null, smc, assert, null, true); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 6, null, smc, assert, null, true); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 9, null, smc, assert, null, true); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 5, 9, null, smc, assert, null, true); - util.assertMapping(6, 12, '/wu/tang/gza.coffee', 6, 19, null, smc, assert, null, true); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js deleted file mode 100644 index a4c6659..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js +++ /dev/null @@ -1,531 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test that we can instantiate with a string or an object'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(util.testMap); - }); - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(JSON.stringify(util.testMap)); - }); - }; - - exports['test that the `sources` field has the original sources'] = function (assert, util) { - var map; - var sources; - - map = new SourceMapConsumer(util.testMap); - sources = map.sources; - assert.equal(sources[0], '/the/root/one.js'); - assert.equal(sources[1], '/the/root/two.js'); - assert.equal(sources.length, 2); - - map = new SourceMapConsumer(util.testMapNoSourceRoot); - sources = map.sources; - assert.equal(sources[0], 'one.js'); - assert.equal(sources[1], 'two.js'); - assert.equal(sources.length, 2); - - map = new SourceMapConsumer(util.testMapEmptySourceRoot); - sources = map.sources; - assert.equal(sources[0], 'one.js'); - assert.equal(sources[1], 'two.js'); - assert.equal(sources.length, 2); - }; - - exports['test that the source root is reflected in a mapping\'s source field'] = function (assert, util) { - var map; - var mapping; - - map = new SourceMapConsumer(util.testMap); - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, '/the/root/two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, '/the/root/one.js'); - - - map = new SourceMapConsumer(util.testMapNoSourceRoot); - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, 'two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, 'one.js'); - - - map = new SourceMapConsumer(util.testMapEmptySourceRoot); - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, 'two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, 'one.js'); - }; - - exports['test mapping tokens back exactly'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - util.assertMapping(1, 1, '/the/root/one.js', 1, 1, null, map, assert); - util.assertMapping(1, 5, '/the/root/one.js', 1, 5, null, map, assert); - util.assertMapping(1, 9, '/the/root/one.js', 1, 11, null, map, assert); - util.assertMapping(1, 18, '/the/root/one.js', 1, 21, 'bar', map, assert); - util.assertMapping(1, 21, '/the/root/one.js', 2, 3, null, map, assert); - util.assertMapping(1, 28, '/the/root/one.js', 2, 10, 'baz', map, assert); - util.assertMapping(1, 32, '/the/root/one.js', 2, 14, 'bar', map, assert); - - util.assertMapping(2, 1, '/the/root/two.js', 1, 1, null, map, assert); - util.assertMapping(2, 5, '/the/root/two.js', 1, 5, null, map, assert); - util.assertMapping(2, 9, '/the/root/two.js', 1, 11, null, map, assert); - util.assertMapping(2, 18, '/the/root/two.js', 1, 21, 'n', map, assert); - util.assertMapping(2, 21, '/the/root/two.js', 2, 3, null, map, assert); - util.assertMapping(2, 28, '/the/root/two.js', 2, 10, 'n', map, assert); - }; - - exports['test mapping tokens fuzzy'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - // Finding original positions - util.assertMapping(1, 20, '/the/root/one.js', 1, 21, 'bar', map, assert, true); - util.assertMapping(1, 30, '/the/root/one.js', 2, 10, 'baz', map, assert, true); - util.assertMapping(2, 12, '/the/root/two.js', 1, 11, null, map, assert, true); - - // Finding generated positions - util.assertMapping(1, 18, '/the/root/one.js', 1, 22, 'bar', map, assert, null, true); - util.assertMapping(1, 28, '/the/root/one.js', 2, 13, 'baz', map, assert, null, true); - util.assertMapping(2, 9, '/the/root/two.js', 1, 16, null, map, assert, null, true); - }; - - exports['test mappings and end of lines'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'foo.js' - }); - smg.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 1, column: 1 }, - source: 'bar.js' - }); - smg.addMapping({ - original: { line: 2, column: 2 }, - generated: { line: 2, column: 2 }, - source: 'bar.js' - }); - - var map = SourceMapConsumer.fromSourceMap(smg); - - // When finding original positions, mappings end at the end of the line. - util.assertMapping(2, 1, null, null, null, null, map, assert, true) - - // When finding generated positions, mappings do not end at the end of the line. - util.assertMapping(1, 1, 'bar.js', 2, 1, null, map, assert, null, true); - }; - - exports['test creating source map consumers with )]}\' prefix'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(")]}'" + JSON.stringify(util.testMap)); - }); - }; - - exports['test eachMapping'] = function (assert, util) { - var map; - - map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - map.eachMapping(function (mapping) { - assert.ok(mapping.generatedLine >= previousLine); - - assert.ok(mapping.source === '/the/root/one.js' || mapping.source === '/the/root/two.js'); - - if (mapping.generatedLine === previousLine) { - assert.ok(mapping.generatedColumn >= previousColumn); - previousColumn = mapping.generatedColumn; - } - else { - previousLine = mapping.generatedLine; - previousColumn = -Infinity; - } - }); - - map = new SourceMapConsumer(util.testMapNoSourceRoot); - map.eachMapping(function (mapping) { - assert.ok(mapping.source === 'one.js' || mapping.source === 'two.js'); - }); - - map = new SourceMapConsumer(util.testMapEmptySourceRoot); - map.eachMapping(function (mapping) { - assert.ok(mapping.source === 'one.js' || mapping.source === 'two.js'); - }); - }; - - exports['test iterating over mappings in a different order'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - var previousSource = ""; - map.eachMapping(function (mapping) { - assert.ok(mapping.source >= previousSource); - - if (mapping.source === previousSource) { - assert.ok(mapping.originalLine >= previousLine); - - if (mapping.originalLine === previousLine) { - assert.ok(mapping.originalColumn >= previousColumn); - previousColumn = mapping.originalColumn; - } - else { - previousLine = mapping.originalLine; - previousColumn = -Infinity; - } - } - else { - previousSource = mapping.source; - previousLine = -Infinity; - previousColumn = -Infinity; - } - }, null, SourceMapConsumer.ORIGINAL_ORDER); - }; - - exports['test that we can set the context for `this` in eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var context = {}; - map.eachMapping(function () { - assert.equal(this, context); - }, context); - }; - - exports['test that the `sourcesContent` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sourcesContent = map.sourcesContent; - - assert.equal(sourcesContent[0], ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(sourcesContent[1], ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(sourcesContent.length, 2); - }; - - exports['test that we can get the original sources for the sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sources = map.sources; - - assert.equal(map.sourceContentFor(sources[0]), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor(sources[1]), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(map.sourceContentFor("one.js"), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor("two.js"), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.throws(function () { - map.sourceContentFor(""); - }, Error); - assert.throws(function () { - map.sourceContentFor("/the/root/three.js"); - }, Error); - assert.throws(function () { - map.sourceContentFor("three.js"); - }, Error); - }; - - exports['test sourceRoot + generatedPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map.addMapping({ - original: { line: 5, column: 5 }, - generated: { line: 6, column: 6 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - // Should handle without sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - // Should handle with sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'foo/bar/bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - }; - - exports['test sourceRoot + originalPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - var pos = map.originalPositionFor({ - line: 2, - column: 2, - }); - - // Should always have the prepended source root - assert.equal(pos.source, 'foo/bar/bang.coffee'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - }; - - exports['test github issue #56'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://', - file: 'www.example.com/foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'www.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1); - assert.equal(sources[0], 'http://www.example.com/original.js'); - }; - - exports['test github issue #43'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'http://cdn.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://cdn.example.com/original.js', - 'Should not be joined with the sourceRoot.'); - }; - - exports['test absolute path, but same host sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com/foo/bar', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: '/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://example.com/original.js', - 'Source should be relative the host of the source root.'); - }; - - exports['test github issue #64'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "http://example.com/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - assert.equal(map.sourceContentFor("a"), "foo"); - assert.equal(map.sourceContentFor("/a"), "foo"); - }; - - exports['test bug 885597'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "file:///Users/AlGore/Invented/The/Internet/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - var s = map.sources[0]; - assert.equal(map.sourceContentFor(s), "foo"); - }; - - exports['test github issue #72, duplicate sources'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source1.js", "source1.js", "source3.js"], - "names": [], - "mappings": ";EAAC;;IAEE;;MEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.source, 'http://example.com/source3.js'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test github issue #72, duplicate names'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source.js"], - "names": ["name1", "name1", "name3"], - "mappings": ";EAACA;;IAEEA;;MAEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.name, 'name3'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test SourceMapConsumer.fromSourceMap'] = function (assert, util) { - var smg = new SourceMapGenerator({ - sourceRoot: 'http://example.com/', - file: 'foo.js' - }); - smg.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bar.js' - }); - smg.addMapping({ - original: { line: 2, column: 2 }, - generated: { line: 4, column: 4 }, - source: 'baz.js', - name: 'dirtMcGirt' - }); - smg.setSourceContent('baz.js', 'baz.js content'); - - var smc = SourceMapConsumer.fromSourceMap(smg); - assert.equal(smc.file, 'foo.js'); - assert.equal(smc.sourceRoot, 'http://example.com/'); - assert.equal(smc.sources.length, 2); - assert.equal(smc.sources[0], 'http://example.com/bar.js'); - assert.equal(smc.sources[1], 'http://example.com/baz.js'); - assert.equal(smc.sourceContentFor('baz.js'), 'baz.js content'); - - var pos = smc.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - assert.equal(pos.source, 'http://example.com/bar.js'); - assert.equal(pos.name, null); - - pos = smc.generatedPositionFor({ - line: 1, - column: 1, - source: 'http://example.com/bar.js' - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - pos = smc.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - assert.equal(pos.source, 'http://example.com/baz.js'); - assert.equal(pos.name, 'dirtMcGirt'); - - pos = smc.generatedPositionFor({ - line: 2, - column: 2, - source: 'http://example.com/baz.js' - }); - assert.equal(pos.line, 4); - assert.equal(pos.column, 4); - }; -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js deleted file mode 100644 index a0d9d00..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js +++ /dev/null @@ -1,658 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - var util = require('./util'); - - exports['test some simple stuff'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.ok(true); - - var map = new SourceMapGenerator().toJSON(); - assert.ok(!('file' in map)); - assert.ok(!('sourceRoot' in map)); - }; - - exports['test JSON serialization'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.equal(map.toString(), JSON.stringify(map)); - }; - - exports['test adding mappings (case 1)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 2)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 3)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: 'someToken' - }); - }); - }; - - exports['test adding mappings (invalid)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - // Not enough info. - assert.throws(function () { - map.addMapping({}); - }); - - // Original file position, but no source. - assert.throws(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test that the correct mappings are being generated'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 5 }, - original: { line: 1, column: 5 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 9 }, - original: { line: 1, column: 11 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 18 }, - original: { line: 1, column: 21 }, - source: 'one.js', - name: 'bar' - }); - map.addMapping({ - generated: { line: 1, column: 21 }, - original: { line: 2, column: 3 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 28 }, - original: { line: 2, column: 10 }, - source: 'one.js', - name: 'baz' - }); - map.addMapping({ - generated: { line: 1, column: 32 }, - original: { line: 2, column: 14 }, - source: 'one.js', - name: 'bar' - }); - - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 5 }, - original: { line: 1, column: 5 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 9 }, - original: { line: 1, column: 11 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 18 }, - original: { line: 1, column: 21 }, - source: 'two.js', - name: 'n' - }); - map.addMapping({ - generated: { line: 2, column: 21 }, - original: { line: 2, column: 3 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 28 }, - original: { line: 2, column: 10 }, - source: 'two.js', - name: 'n' - }); - - map = JSON.parse(map.toString()); - - util.assertEqualMaps(assert, map, util.testMap); - }; - - exports['test that adding a mapping with an empty string name does not break generation'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: '' - }); - - assert.doesNotThrow(function () { - JSON.parse(map.toString()); - }); - }; - - exports['test that source content can be set'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.setSourceContent('one.js', 'one file content'); - - map = JSON.parse(map.toString()); - assert.equal(map.sources[0], 'one.js'); - assert.equal(map.sources[1], 'two.js'); - assert.equal(map.sourcesContent[0], 'one file content'); - assert.equal(map.sourcesContent[1], null); - }; - - exports['test .fromSourceMap'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(util.testMap)); - util.assertEqualMaps(assert, map.toJSON(), util.testMap); - }; - - exports['test .fromSourceMap with sourcesContent'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap( - new SourceMapConsumer(util.testMapWithSourcesContent)); - util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent); - }; - - exports['test applySourceMap'] = function (assert, util) { - var node = new SourceNode(null, null, null, [ - new SourceNode(2, 0, 'fileX', 'lineX2\n'), - 'genA1\n', - new SourceNode(2, 0, 'fileY', 'lineY2\n'), - 'genA2\n', - new SourceNode(1, 0, 'fileX', 'lineX1\n'), - 'genA3\n', - new SourceNode(1, 0, 'fileY', 'lineY1\n') - ]); - var mapStep1 = node.toStringWithSourceMap({ - file: 'fileA' - }).map; - mapStep1.setSourceContent('fileX', 'lineX1\nlineX2\n'); - mapStep1 = mapStep1.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(1, 0, 'fileA', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(3, 0, 'fileA', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var mapStep2 = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - mapStep2.setSourceContent('fileB', 'lineB1\nlineB2\n'); - mapStep2 = mapStep2.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(2, 0, 'fileX', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(2, 0, 'fileY', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var expectedMap = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - expectedMap.setSourceContent('fileX', 'lineX1\nlineX2\n'); - expectedMap.setSourceContent('fileB', 'lineB1\nlineB2\n'); - expectedMap = expectedMap.toJSON(); - - // apply source map "mapStep1" to "mapStep2" - var generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(mapStep2)); - generator.applySourceMap(new SourceMapConsumer(mapStep1)); - var actualMap = generator.toJSON(); - - util.assertEqualMaps(assert, actualMap, expectedMap); - }; - - exports['test applySourceMap throws when file is missing'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - var map2 = new SourceMapGenerator(); - assert.throws(function() { - map.applySourceMap(new SourceMapConsumer(map2.toJSON())); - }); - }; - - exports['test the two additional parameters of applySourceMap'] = function (assert, util) { - // Assume the following directory structure: - // - // http://foo.org/ - // bar.coffee - // app/ - // coffee/ - // foo.coffee - // temp/ - // bundle.js - // temp_maps/ - // bundle.js.map - // public/ - // bundle.min.js - // bundle.min.js.map - // - // http://www.example.com/ - // baz.coffee - - var bundleMap = new SourceMapGenerator({ - file: 'bundle.js' - }); - bundleMap.addMapping({ - generated: { line: 3, column: 3 }, - original: { line: 2, column: 2 }, - source: '../../coffee/foo.coffee' - }); - bundleMap.setSourceContent('../../coffee/foo.coffee', 'foo coffee'); - bundleMap.addMapping({ - generated: { line: 13, column: 13 }, - original: { line: 12, column: 12 }, - source: '/bar.coffee' - }); - bundleMap.setSourceContent('/bar.coffee', 'bar coffee'); - bundleMap.addMapping({ - generated: { line: 23, column: 23 }, - original: { line: 22, column: 22 }, - source: 'http://www.example.com/baz.coffee' - }); - bundleMap.setSourceContent( - 'http://www.example.com/baz.coffee', - 'baz coffee' - ); - bundleMap = new SourceMapConsumer(bundleMap.toJSON()); - - var minifiedMap = new SourceMapGenerator({ - file: 'bundle.min.js', - sourceRoot: '..' - }); - minifiedMap.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 3, column: 3 }, - source: 'temp/bundle.js' - }); - minifiedMap.addMapping({ - generated: { line: 11, column: 11 }, - original: { line: 13, column: 13 }, - source: 'temp/bundle.js' - }); - minifiedMap.addMapping({ - generated: { line: 21, column: 21 }, - original: { line: 23, column: 23 }, - source: 'temp/bundle.js' - }); - minifiedMap = new SourceMapConsumer(minifiedMap.toJSON()); - - var expectedMap = function (sources) { - var map = new SourceMapGenerator({ - file: 'bundle.min.js', - sourceRoot: '..' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 2, column: 2 }, - source: sources[0] - }); - map.setSourceContent(sources[0], 'foo coffee'); - map.addMapping({ - generated: { line: 11, column: 11 }, - original: { line: 12, column: 12 }, - source: sources[1] - }); - map.setSourceContent(sources[1], 'bar coffee'); - map.addMapping({ - generated: { line: 21, column: 21 }, - original: { line: 22, column: 22 }, - source: sources[2] - }); - map.setSourceContent(sources[2], 'baz coffee'); - return map.toJSON(); - } - - var actualMap = function (aSourceMapPath) { - var map = SourceMapGenerator.fromSourceMap(minifiedMap); - // Note that relying on `bundleMap.file` (which is simply 'bundle.js') - // instead of supplying the second parameter wouldn't work here. - map.applySourceMap(bundleMap, '../temp/bundle.js', aSourceMapPath); - return map.toJSON(); - } - - util.assertEqualMaps(assert, actualMap('../temp/temp_maps'), expectedMap([ - 'coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('/app/temp/temp_maps'), expectedMap([ - '/app/coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('http://foo.org/app/temp/temp_maps'), expectedMap([ - 'http://foo.org/app/coffee/foo.coffee', - 'http://foo.org/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - // If the third parameter is omitted or set to the current working - // directory we get incorrect source paths: - - util.assertEqualMaps(assert, actualMap(), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap(''), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('.'), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('./'), expectedMap([ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - }; - - exports['test applySourceMap name handling'] = function (assert, util) { - // Imagine some CoffeeScript code being compiled into JavaScript and then - // minified. - - var assertName = function(coffeeName, jsName, expectedName) { - var minifiedMap = new SourceMapGenerator({ - file: 'test.js.min' - }); - minifiedMap.addMapping({ - generated: { line: 1, column: 4 }, - original: { line: 1, column: 4 }, - source: 'test.js', - name: jsName - }); - - var coffeeMap = new SourceMapGenerator({ - file: 'test.js' - }); - coffeeMap.addMapping({ - generated: { line: 1, column: 4 }, - original: { line: 1, column: 0 }, - source: 'test.coffee', - name: coffeeName - }); - - minifiedMap.applySourceMap(new SourceMapConsumer(coffeeMap.toJSON())); - - new SourceMapConsumer(minifiedMap.toJSON()).eachMapping(function(mapping) { - assert.equal(mapping.name, expectedName); - }); - }; - - // `foo = 1` -> `var foo = 1;` -> `var a=1` - // CoffeeScript doesn’t rename variables, so there’s no need for it to - // provide names in its source maps. Minifiers do rename variables and - // therefore do provide names in their source maps. So that name should be - // retained if the original map lacks names. - assertName(null, 'foo', 'foo'); - - // `foo = 1` -> `var coffee$foo = 1;` -> `var a=1` - // Imagine that CoffeeScript prefixed all variables with `coffee$`. Even - // though the minifier then also provides a name, the original name is - // what corresponds to the source. - assertName('foo', 'coffee$foo', 'foo'); - - // `foo = 1` -> `var coffee$foo = 1;` -> `var coffee$foo=1` - // Minifiers can turn off variable mangling. Then there’s no need to - // provide names in the source map, but the names from the original map are - // still needed. - assertName('foo', null, 'foo'); - - // `foo = 1` -> `var foo = 1;` -> `var foo=1` - // No renaming at all. - assertName(null, null, null); - }; - - exports['test sorting with duplicate generated mappings'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 3, column: 0 }, - original: { line: 2, column: 0 }, - source: 'a.js' - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 }, - source: 'a.js' - }); - - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: [], - mappings: 'AAAA;A;AACA' - }); - }; - - exports['test ignore duplicate mappings.'] = function (assert, util) { - var init = { file: 'min.js', sourceRoot: '/the/root' }; - var map1, map2; - - // null original source location - var nullMapping1 = { - generated: { line: 1, column: 0 } - }; - var nullMapping2 = { - generated: { line: 2, column: 2 } - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(nullMapping1); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(nullMapping2); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // original source location - var srcMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'srcMapping1.js' - }; - var srcMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'srcMapping2.js' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(srcMapping1); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(srcMapping2); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // full original source and name information - var fullMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'fullMapping1.js', - name: 'fullMapping1' - }; - var fullMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'fullMapping2.js', - name: 'fullMapping2' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(fullMapping1); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(fullMapping2); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - }; - - exports['test github issue #72, check for duplicate names or sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 2, column: 2 }, - source: 'a.js', - name: 'foo' - }); - map.addMapping({ - generated: { line: 3, column: 3 }, - original: { line: 4, column: 4 }, - source: 'a.js', - name: 'foo' - }); - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: ['foo'], - mappings: 'CACEA;;GAEEA' - }); - }; - - exports['test setting sourcesContent to null when already null'] = function (assert, util) { - var smg = new SourceMapGenerator({ file: "foo.js" }); - assert.doesNotThrow(function() { - smg.setSourceContent("bar.js", null); - }); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js deleted file mode 100644 index 139af4e..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js +++ /dev/null @@ -1,612 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - - function forEachNewline(fn) { - return function (assert, util) { - ['\n', '\r\n'].forEach(fn.bind(null, assert, util)); - } - } - - exports['test .add()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Adding a string works. - node.add('function noop() {}'); - - // Adding another source node works. - node.add(new SourceNode(null, null, null)); - - // Adding an array works. - node.add(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - - // Adding other stuff doesn't. - assert.throws(function () { - node.add({}); - }); - assert.throws(function () { - node.add(function () {}); - }); - }; - - exports['test .prepend()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Prepending a string works. - node.prepend('function noop() {}'); - assert.equal(node.children[0], 'function noop() {}'); - assert.equal(node.children.length, 1); - - // Prepending another source node works. - node.prepend(new SourceNode(null, null, null)); - assert.equal(node.children[0], ''); - assert.equal(node.children[1], 'function noop() {}'); - assert.equal(node.children.length, 2); - - // Prepending an array works. - node.prepend(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - assert.equal(node.children[0], 'function foo() {'); - assert.equal(node.children[1], 'return 10;'); - assert.equal(node.children[2], '}'); - assert.equal(node.children[3], ''); - assert.equal(node.children[4], 'function noop() {}'); - assert.equal(node.children.length, 5); - - // Prepending other stuff doesn't. - assert.throws(function () { - node.prepend({}); - }); - assert.throws(function () { - node.prepend(function () {}); - }); - }; - - exports['test .toString()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['function foo() {', - new SourceNode(null, null, null, 'return 10;'), - '}'])).toString(), - 'function foo() {return 10;}'); - }; - - exports['test .join()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['a', 'b', 'c', 'd'])).join(', ').toString(), - 'a, b, c, d'); - }; - - exports['test .walk()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', new SourceNode(1, 0, 'a.js', ['someCall()']), ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var expected = [ - { str: '(function () {\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'someCall()', source: 'a.js', line: 1, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'if (foo) bar()', source: 'b.js', line: 2, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: '}());', source: null, line: null, column: null }, - ]; - var i = 0; - node.walk(function (chunk, loc) { - assert.equal(expected[i].str, chunk); - assert.equal(expected[i].source, loc.source); - assert.equal(expected[i].line, loc.line); - assert.equal(expected[i].column, loc.column); - i++; - }); - }; - - exports['test .replaceRight'] = function (assert, util) { - var node; - - // Not nested - node = new SourceNode(null, null, null, 'hello world'); - node.replaceRight(/world/, 'universe'); - assert.equal(node.toString(), 'hello universe'); - - // Nested - node = new SourceNode(null, null, null, - [new SourceNode(null, null, null, 'hey sexy mama, '), - new SourceNode(null, null, null, 'want to kill all humans?')]); - node.replaceRight(/kill all humans/, 'watch Futurama'); - assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?'); - }; - - exports['test .toStringWithSourceMap()'] = forEachNewline(function (assert, util, nl) { - var node = new SourceNode(null, null, null, - ['(function () {' + nl, - ' ', - new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'), - new SourceNode(1, 8, 'a.js', '()'), - ';' + nl, - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';' + nl, - '}());']); - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(result.code, [ - '(function () {', - ' someCall();', - ' if (foo) bar();', - '}());' - ].join(nl)); - - var map = result.map; - var mapWithoutOptions = node.toStringWithSourceMap().map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - assert.ok(mapWithoutOptions instanceof SourceMapGenerator, 'mapWithoutOptions instanceof SourceMapGenerator'); - assert.ok(!('file' in mapWithoutOptions)); - mapWithoutOptions._file = 'foo.js'; - util.assertEqualMaps(assert, map.toJSON(), mapWithoutOptions.toJSON()); - - map = new SourceMapConsumer(map.toString()); - - var actual; - - actual = map.originalPositionFor({ - line: 1, - column: 4 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(actual.source, 'a.js'); - assert.equal(actual.line, 1); - assert.equal(actual.column, 0); - assert.equal(actual.name, 'originalCall'); - - actual = map.originalPositionFor({ - line: 3, - column: 2 - }); - assert.equal(actual.source, 'b.js'); - assert.equal(actual.line, 2); - assert.equal(actual.column, 0); - - actual = map.originalPositionFor({ - line: 3, - column: 16 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 4, - column: 2 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - }); - - exports['test .fromStringWithSourceMap()'] = forEachNewline(function (assert, util, nl) { - var testCode = util.testGeneratedCode.replace(/\n/g, nl); - var node = SourceNode.fromStringWithSourceMap( - testCode, - new SourceMapConsumer(util.testMap)); - - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, testCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.testMap.version); - assert.equal(map.file, util.testMap.file); - assert.equal(map.mappings, util.testMap.mappings); - }); - - exports['test .fromStringWithSourceMap() empty map'] = forEachNewline(function (assert, util, nl) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode.replace(/\n/g, nl), - new SourceMapConsumer(util.emptyMap)); - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode.replace(/\n/g, nl)); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.emptyMap.version); - assert.equal(map.file, util.emptyMap.file); - assert.equal(map.mappings.length, util.emptyMap.mappings.length); - assert.equal(map.mappings, util.emptyMap.mappings); - }); - - exports['test .fromStringWithSourceMap() complex version'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - "(function() {" + nl, - " var Test = {};" + nl, - " ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };" + nl), - " ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), nl, - "}());" + nl, - "/* Generated Source */"]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var node = SourceNode.fromStringWithSourceMap( - input.code, - new SourceMapConsumer(input.map.toString())); - - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, input.code); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - var inputMap = input.map.toJSON(); - util.assertEqualMaps(assert, map, inputMap); - }); - - exports['test .fromStringWithSourceMap() third argument'] = function (assert, util) { - // Assume the following directory structure: - // - // http://foo.org/ - // bar.coffee - // app/ - // coffee/ - // foo.coffee - // coffeeBundle.js # Made from {foo,bar,baz}.coffee - // maps/ - // coffeeBundle.js.map - // js/ - // foo.js - // public/ - // app.js # Made from {foo,coffeeBundle}.js - // app.js.map - // - // http://www.example.com/ - // baz.coffee - - var coffeeBundle = new SourceNode(1, 0, 'foo.coffee', 'foo(coffee);\n'); - coffeeBundle.setSourceContent('foo.coffee', 'foo coffee'); - coffeeBundle.add(new SourceNode(2, 0, '/bar.coffee', 'bar(coffee);\n')); - coffeeBundle.add(new SourceNode(3, 0, 'http://www.example.com/baz.coffee', 'baz(coffee);')); - coffeeBundle = coffeeBundle.toStringWithSourceMap({ - file: 'foo.js', - sourceRoot: '..' - }); - - var foo = new SourceNode(1, 0, 'foo.js', 'foo(js);'); - - var test = function(relativePath, expectedSources) { - var app = new SourceNode(); - app.add(SourceNode.fromStringWithSourceMap( - coffeeBundle.code, - new SourceMapConsumer(coffeeBundle.map.toString()), - relativePath)); - app.add(foo); - var i = 0; - app.walk(function (chunk, loc) { - assert.equal(loc.source, expectedSources[i]); - i++; - }); - app.walkSourceContents(function (sourceFile, sourceContent) { - assert.equal(sourceFile, expectedSources[0]); - assert.equal(sourceContent, 'foo coffee'); - }) - }; - - test('../coffee/maps', [ - '../coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - // If the third parameter is omitted or set to the current working - // directory we get incorrect source paths: - - test(undefined, [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - test('', [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - test('.', [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - - test('./', [ - '../foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee', - 'foo.js' - ]); - }; - - exports['test .toStringWithSourceMap() merging duplicate mappings'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function"), - new SourceNode(1, 0, "a.js", "() {" + nl), - " ", - new SourceNode(1, 0, "a.js", "var Test = "), - new SourceNode(1, 0, "b.js", "{};" + nl), - new SourceNode(2, 0, "b.js", "Test"), - new SourceNode(2, 0, "b.js", ".A", "A"), - new SourceNode(2, 20, "b.js", " = { value: ", "A"), - "1234", - new SourceNode(2, 40, "b.js", " };" + nl, "A"), - "}());" + nl, - "/* Generated Source */" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(input.code, [ - "(function() {", - " var Test = {};", - "Test.A = { value: 1234 };", - "}());", - "/* Generated Source */" - ].join(nl)) - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - // Here is no need for a empty mapping, - // because mappings ends at eol - correctMap.addMapping({ - generated: { line: 2, column: 2 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 13 }, - source: 'b.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'b.js', - original: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 4 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 6 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 20 } - }); - // This empty mapping is required, - // because there is a hole in the middle of the line - correctMap.addMapping({ - generated: { line: 3, column: 18 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 22 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 40 } - }); - // Here is no need for a empty mapping, - // because mappings ends at eol - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, inputMap, correctMap); - }); - - exports['test .toStringWithSourceMap() multi-line SourceNodes'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function() {" + nl + "var nextLine = 1;" + nl + "anotherLine();" + nl), - new SourceNode(2, 2, "b.js", "Test.call(this, 123);" + nl), - new SourceNode(2, 2, "b.js", "this['stuff'] = 'v';" + nl), - new SourceNode(2, 2, "b.js", "anotherLine();" + nl), - "/*" + nl + "Generated" + nl + "Source" + nl + "*/" + nl, - new SourceNode(3, 4, "c.js", "anotherLine();" + nl), - "/*" + nl + "Generated" + nl + "Source" + nl + "*/" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(input.code, [ - "(function() {", - "var nextLine = 1;", - "anotherLine();", - "Test.call(this, 123);", - "this['stuff'] = 'v';", - "anotherLine();", - "/*", - "Generated", - "Source", - "*/", - "anotherLine();", - "/*", - "Generated", - "Source", - "*/" - ].join(nl)); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 4, column: 0 }, - source: 'b.js', - original: { line: 2, column: 2 } - }); - correctMap.addMapping({ - generated: { line: 5, column: 0 }, - source: 'b.js', - original: { line: 2, column: 2 } - }); - correctMap.addMapping({ - generated: { line: 6, column: 0 }, - source: 'b.js', - original: { line: 2, column: 2 } - }); - correctMap.addMapping({ - generated: { line: 11, column: 0 }, - source: 'c.js', - original: { line: 3, column: 4 } - }); - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, inputMap, correctMap); - }); - - exports['test .toStringWithSourceMap() with empty string'] = function (assert, util) { - var node = new SourceNode(1, 0, 'empty.js', ''); - var result = node.toStringWithSourceMap(); - assert.equal(result.code, ''); - }; - - exports['test .toStringWithSourceMap() with consecutive newlines'] = forEachNewline(function (assert, util, nl) { - var input = new SourceNode(null, null, null, [ - "/***/" + nl + nl, - new SourceNode(1, 0, "a.js", "'use strict';" + nl), - new SourceNode(2, 0, "a.js", "a();"), - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - assert.equal(input.code, [ - "/***/", - "", - "'use strict';", - "a();", - ].join(nl)); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 4, column: 0 }, - source: 'a.js', - original: { line: 2, column: 0 } - }); - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, inputMap, correctMap); - }); - - exports['test setSourceContent with toStringWithSourceMap'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = new SourceMapConsumer(map.toString()); - - assert.equal(map.sources.length, 2); - assert.equal(map.sources[0], 'a.js'); - assert.equal(map.sources[1], 'b.js'); - assert.equal(map.sourcesContent.length, 2); - assert.equal(map.sourcesContent[0], 'someContent'); - assert.equal(map.sourcesContent[1], 'otherContent'); - }; - - exports['test walkSourceContents'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var results = []; - node.walkSourceContents(function (sourceFile, sourceContent) { - results.push([sourceFile, sourceContent]); - }); - assert.equal(results.length, 2); - assert.equal(results[0][0], 'a.js'); - assert.equal(results[0][1], 'someContent'); - assert.equal(results[1][0], 'b.js'); - assert.equal(results[1][1], 'otherContent'); - }; -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-util.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-util.js deleted file mode 100644 index 997d1a2..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/test-util.js +++ /dev/null @@ -1,216 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var libUtil = require('../../lib/source-map/util'); - - exports['test urls'] = function (assert, util) { - var assertUrl = function (url) { - assert.equal(url, libUtil.urlGenerate(libUtil.urlParse(url))); - }; - assertUrl('http://'); - assertUrl('http://www.example.com'); - assertUrl('http://user:pass@www.example.com'); - assertUrl('http://www.example.com:80'); - assertUrl('http://www.example.com/'); - assertUrl('http://www.example.com/foo/bar'); - assertUrl('http://www.example.com/foo/bar/'); - assertUrl('http://user:pass@www.example.com:80/foo/bar/'); - - assertUrl('//'); - assertUrl('//www.example.com'); - assertUrl('file:///www.example.com'); - - assert.equal(libUtil.urlParse(''), null); - assert.equal(libUtil.urlParse('.'), null); - assert.equal(libUtil.urlParse('..'), null); - assert.equal(libUtil.urlParse('a'), null); - assert.equal(libUtil.urlParse('a/b'), null); - assert.equal(libUtil.urlParse('a//b'), null); - assert.equal(libUtil.urlParse('/a'), null); - assert.equal(libUtil.urlParse('data:foo,bar'), null); - }; - - exports['test normalize()'] = function (assert, util) { - assert.equal(libUtil.normalize('/..'), '/'); - assert.equal(libUtil.normalize('/../'), '/'); - assert.equal(libUtil.normalize('/../../../..'), '/'); - assert.equal(libUtil.normalize('/../../../../a/b/c'), '/a/b/c'); - assert.equal(libUtil.normalize('/a/b/c/../../../d/../../e'), '/e'); - - assert.equal(libUtil.normalize('..'), '..'); - assert.equal(libUtil.normalize('../'), '../'); - assert.equal(libUtil.normalize('../../a/'), '../../a/'); - assert.equal(libUtil.normalize('a/..'), '.'); - assert.equal(libUtil.normalize('a/../../..'), '../..'); - - assert.equal(libUtil.normalize('/.'), '/'); - assert.equal(libUtil.normalize('/./'), '/'); - assert.equal(libUtil.normalize('/./././.'), '/'); - assert.equal(libUtil.normalize('/././././a/b/c'), '/a/b/c'); - assert.equal(libUtil.normalize('/a/b/c/./././d/././e'), '/a/b/c/d/e'); - - assert.equal(libUtil.normalize(''), '.'); - assert.equal(libUtil.normalize('.'), '.'); - assert.equal(libUtil.normalize('./'), '.'); - assert.equal(libUtil.normalize('././a'), 'a'); - assert.equal(libUtil.normalize('a/./'), 'a/'); - assert.equal(libUtil.normalize('a/././.'), 'a'); - - assert.equal(libUtil.normalize('/a/b//c////d/////'), '/a/b/c/d/'); - assert.equal(libUtil.normalize('///a/b//c////d/////'), '///a/b/c/d/'); - assert.equal(libUtil.normalize('a/b//c////d'), 'a/b/c/d'); - - assert.equal(libUtil.normalize('.///.././../a/b//./..'), '../../a') - - assert.equal(libUtil.normalize('http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.normalize('http://www.example.com/'), 'http://www.example.com/'); - assert.equal(libUtil.normalize('http://www.example.com/./..//a/b/c/.././d//'), 'http://www.example.com/a/b/d/'); - }; - - exports['test join()'] = function (assert, util) { - assert.equal(libUtil.join('a', 'b'), 'a/b'); - assert.equal(libUtil.join('a/', 'b'), 'a/b'); - assert.equal(libUtil.join('a//', 'b'), 'a/b'); - assert.equal(libUtil.join('a', 'b/'), 'a/b/'); - assert.equal(libUtil.join('a', 'b//'), 'a/b/'); - assert.equal(libUtil.join('a/', '/b'), '/b'); - assert.equal(libUtil.join('a//', '//b'), '//b'); - - assert.equal(libUtil.join('a', '..'), '.'); - assert.equal(libUtil.join('a', '../b'), 'b'); - assert.equal(libUtil.join('a/b', '../c'), 'a/c'); - - assert.equal(libUtil.join('a', '.'), 'a'); - assert.equal(libUtil.join('a', './b'), 'a/b'); - assert.equal(libUtil.join('a/b', './c'), 'a/b/c'); - - assert.equal(libUtil.join('a', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('a', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('', 'b'), 'b'); - assert.equal(libUtil.join('.', 'b'), 'b'); - assert.equal(libUtil.join('', 'b/'), 'b/'); - assert.equal(libUtil.join('.', 'b/'), 'b/'); - assert.equal(libUtil.join('', 'b//'), 'b/'); - assert.equal(libUtil.join('.', 'b//'), 'b/'); - - assert.equal(libUtil.join('', '..'), '..'); - assert.equal(libUtil.join('.', '..'), '..'); - assert.equal(libUtil.join('', '../b'), '../b'); - assert.equal(libUtil.join('.', '../b'), '../b'); - - assert.equal(libUtil.join('', '.'), '.'); - assert.equal(libUtil.join('.', '.'), '.'); - assert.equal(libUtil.join('', './b'), 'b'); - assert.equal(libUtil.join('.', './b'), 'b'); - - assert.equal(libUtil.join('', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('.', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('', 'data:foo,bar'), 'data:foo,bar'); - assert.equal(libUtil.join('.', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('..', 'b'), '../b'); - assert.equal(libUtil.join('..', 'b/'), '../b/'); - assert.equal(libUtil.join('..', 'b//'), '../b/'); - - assert.equal(libUtil.join('..', '..'), '../..'); - assert.equal(libUtil.join('..', '../b'), '../../b'); - - assert.equal(libUtil.join('..', '.'), '..'); - assert.equal(libUtil.join('..', './b'), '../b'); - - assert.equal(libUtil.join('..', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('..', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('a', ''), 'a'); - assert.equal(libUtil.join('a', '.'), 'a'); - assert.equal(libUtil.join('a/', ''), 'a'); - assert.equal(libUtil.join('a/', '.'), 'a'); - assert.equal(libUtil.join('a//', ''), 'a'); - assert.equal(libUtil.join('a//', '.'), 'a'); - assert.equal(libUtil.join('/a', ''), '/a'); - assert.equal(libUtil.join('/a', '.'), '/a'); - assert.equal(libUtil.join('', ''), '.'); - assert.equal(libUtil.join('.', ''), '.'); - assert.equal(libUtil.join('.', ''), '.'); - assert.equal(libUtil.join('.', '.'), '.'); - assert.equal(libUtil.join('..', ''), '..'); - assert.equal(libUtil.join('..', '.'), '..'); - assert.equal(libUtil.join('http://foo.org/a', ''), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a/', ''), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a/', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a//', ''), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a//', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org', ''), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org', '.'), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org/', ''), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org/', '.'), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org//', ''), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org//', '.'), 'http://foo.org/'); - assert.equal(libUtil.join('//www.example.com', ''), '//www.example.com/'); - assert.equal(libUtil.join('//www.example.com', '.'), '//www.example.com/'); - - - assert.equal(libUtil.join('http://foo.org/a', 'b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a/', 'b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a//', 'b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a', 'b/'), 'http://foo.org/a/b/'); - assert.equal(libUtil.join('http://foo.org/a', 'b//'), 'http://foo.org/a/b/'); - assert.equal(libUtil.join('http://foo.org/a/', '/b'), 'http://foo.org/b'); - assert.equal(libUtil.join('http://foo.org/a//', '//b'), 'http://b'); - - assert.equal(libUtil.join('http://foo.org/a', '..'), 'http://foo.org/'); - assert.equal(libUtil.join('http://foo.org/a', '../b'), 'http://foo.org/b'); - assert.equal(libUtil.join('http://foo.org/a/b', '../c'), 'http://foo.org/a/c'); - - assert.equal(libUtil.join('http://foo.org/a', '.'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/a', './b'), 'http://foo.org/a/b'); - assert.equal(libUtil.join('http://foo.org/a/b', './c'), 'http://foo.org/a/b/c'); - - assert.equal(libUtil.join('http://foo.org/a', 'http://www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('http://foo.org/a', 'data:foo,bar'), 'data:foo,bar'); - - - assert.equal(libUtil.join('http://foo.org', 'a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/', 'a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org//', 'a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org', '/a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org/', '/a'), 'http://foo.org/a'); - assert.equal(libUtil.join('http://foo.org//', '/a'), 'http://foo.org/a'); - - - assert.equal(libUtil.join('http://', 'www.example.com'), 'http://www.example.com'); - assert.equal(libUtil.join('file:///', 'www.example.com'), 'file:///www.example.com'); - assert.equal(libUtil.join('http://', 'ftp://example.com'), 'ftp://example.com'); - - assert.equal(libUtil.join('http://www.example.com', '//foo.org/bar'), 'http://foo.org/bar'); - assert.equal(libUtil.join('//www.example.com', '//foo.org/bar'), '//foo.org/bar'); - }; - - // TODO Issue #128: Define and test this function properly. - exports['test relative()'] = function (assert, util) { - assert.equal(libUtil.relative('/the/root', '/the/root/one.js'), 'one.js'); - assert.equal(libUtil.relative('/the/root', '/the/rootone.js'), '/the/rootone.js'); - - assert.equal(libUtil.relative('', '/the/root/one.js'), '/the/root/one.js'); - assert.equal(libUtil.relative('.', '/the/root/one.js'), '/the/root/one.js'); - assert.equal(libUtil.relative('', 'the/root/one.js'), 'the/root/one.js'); - assert.equal(libUtil.relative('.', 'the/root/one.js'), 'the/root/one.js'); - - assert.equal(libUtil.relative('/', '/the/root/one.js'), 'the/root/one.js'); - assert.equal(libUtil.relative('/', 'the/root/one.js'), 'the/root/one.js'); - }; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/util.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/util.js deleted file mode 100644 index fa213ce..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/node_modules/source-map/test/source-map/util.js +++ /dev/null @@ -1,176 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('../../lib/source-map/util'); - - // This is a test mapping which maps functions from two different files - // (one.js and two.js) to a minified generated source. - // - // Here is one.js: - // - // ONE.foo = function (bar) { - // return baz(bar); - // }; - // - // Here is two.js: - // - // TWO.inc = function (n) { - // return n + 1; - // }; - // - // And here is the generated code (min.js): - // - // ONE.foo=function(a){return baz(a);}; - // TWO.inc=function(a){return a+1;}; - exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+ - " TWO.inc=function(a){return a+1;};"; - exports.testMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapNoSourceRoot = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapEmptySourceRoot = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapWithSourcesContent = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourcesContent: [ - ' ONE.foo = function (bar) {\n' + - ' return baz(bar);\n' + - ' };', - ' TWO.inc = function (n) {\n' + - ' return n + 1;\n' + - ' };' - ], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.emptyMap = { - version: 3, - file: 'min.js', - names: [], - sources: [], - mappings: '' - }; - - - function assertMapping(generatedLine, generatedColumn, originalSource, - originalLine, originalColumn, name, map, assert, - dontTestGenerated, dontTestOriginal) { - if (!dontTestOriginal) { - var origMapping = map.originalPositionFor({ - line: generatedLine, - column: generatedColumn - }); - assert.equal(origMapping.name, name, - 'Incorrect name, expected ' + JSON.stringify(name) - + ', got ' + JSON.stringify(origMapping.name)); - assert.equal(origMapping.line, originalLine, - 'Incorrect line, expected ' + JSON.stringify(originalLine) - + ', got ' + JSON.stringify(origMapping.line)); - assert.equal(origMapping.column, originalColumn, - 'Incorrect column, expected ' + JSON.stringify(originalColumn) - + ', got ' + JSON.stringify(origMapping.column)); - - var expectedSource; - - if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) { - expectedSource = originalSource; - } else if (originalSource) { - expectedSource = map.sourceRoot - ? util.join(map.sourceRoot, originalSource) - : originalSource; - } else { - expectedSource = null; - } - - assert.equal(origMapping.source, expectedSource, - 'Incorrect source, expected ' + JSON.stringify(expectedSource) - + ', got ' + JSON.stringify(origMapping.source)); - } - - if (!dontTestGenerated) { - var genMapping = map.generatedPositionFor({ - source: originalSource, - line: originalLine, - column: originalColumn - }); - assert.equal(genMapping.line, generatedLine, - 'Incorrect line, expected ' + JSON.stringify(generatedLine) - + ', got ' + JSON.stringify(genMapping.line)); - assert.equal(genMapping.column, generatedColumn, - 'Incorrect column, expected ' + JSON.stringify(generatedColumn) - + ', got ' + JSON.stringify(genMapping.column)); - } - } - exports.assertMapping = assertMapping; - - function assertEqualMaps(assert, actualMap, expectedMap) { - assert.equal(actualMap.version, expectedMap.version, "version mismatch"); - assert.equal(actualMap.file, expectedMap.file, "file mismatch"); - assert.equal(actualMap.names.length, - expectedMap.names.length, - "names length mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - for (var i = 0; i < actualMap.names.length; i++) { - assert.equal(actualMap.names[i], - expectedMap.names[i], - "names[" + i + "] mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - } - assert.equal(actualMap.sources.length, - expectedMap.sources.length, - "sources length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - for (var i = 0; i < actualMap.sources.length; i++) { - assert.equal(actualMap.sources[i], - expectedMap.sources[i], - "sources[" + i + "] length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - } - assert.equal(actualMap.sourceRoot, - expectedMap.sourceRoot, - "sourceRoot mismatch: " + - actualMap.sourceRoot + " != " + expectedMap.sourceRoot); - assert.equal(actualMap.mappings, expectedMap.mappings, - "mappings mismatch:\nActual: " + actualMap.mappings + "\nExpected: " + expectedMap.mappings); - if (actualMap.sourcesContent) { - assert.equal(actualMap.sourcesContent.length, - expectedMap.sourcesContent.length, - "sourcesContent length mismatch"); - for (var i = 0; i < actualMap.sourcesContent.length; i++) { - assert.equal(actualMap.sourcesContent[i], - expectedMap.sourcesContent[i], - "sourcesContent[" + i + "] mismatch"); - } - } - } - exports.assertEqualMaps = assertEqualMaps; - -}); diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/package.json b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/package.json deleted file mode 100644 index 172bb0a..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/node_modules/escodegen/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "escodegen", - "description": "ECMAScript code generator", - "homepage": "http://github.com/Constellation/escodegen.html", - "main": "escodegen.js", - "bin": { - "esgenerate": "./bin/esgenerate.js", - "escodegen": "./bin/escodegen.js" - }, - "version": "0.0.28", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "Yusuke Suzuki", - "email": "utatane.tea@gmail.com", - "url": "http://github.com/Constellation" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/Constellation/escodegen.git" - }, - "dependencies": { - "esprima": "~1.0.2", - "estraverse": "~1.3.0", - "source-map": ">= 0.1.2" - }, - "optionalDependencies": { - "source-map": ">= 0.1.2" - }, - "devDependencies": { - "esprima-moz": "*", - "commonjs-everywhere": "~0.8.0", - "q": "*", - "bower": "*", - "semver": "*", - "chai": "~1.7.2", - "grunt-contrib-jshint": "~0.5.0", - "grunt-cli": "~0.1.9", - "grunt": "~0.4.1", - "grunt-mocha-test": "~0.6.2" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "grunt travis", - "unit-test": "grunt test", - "lint": "grunt lint", - "release": "node tools/release.js", - "build-min": "cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js", - "build": "cjsify -a path: tools/entry-point.js > escodegen.browser.js" - }, - "readme": "\n### Escodegen [![Build Status](https://secure.travis-ci.org/Constellation/escodegen.png)](http://travis-ci.org/Constellation/escodegen) [![Build Status](https://drone.io/github.com/Constellation/escodegen/status.png)](https://drone.io/github.com/Constellation/escodegen/latest)\n\nEscodegen ([escodegen](http://github.com/Constellation/escodegen)) is\n[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\n(also popularly known as [JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript))\ncode generator from [Parser API](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) AST.\nSee [online generator demo](http://constellation.github.com/escodegen/demo/index.html).\n\n\n### Install\n\nEscodegen can be used in a web browser:\n\n \n\nescodegen.browser.js is found in tagged-revision. See Tags on GitHub.\n\nOr in a Node.js application via the package manager:\n\n npm install escodegen\n\n### Usage\n\nA simple example: the program\n\n escodegen.generate({\n type: 'BinaryExpression',\n operator: '+',\n left: { type: 'Literal', value: 40 },\n right: { type: 'Literal', value: 2 }\n });\n\nproduces the string `'40 + 2'`\n\nSee the [API page](https://github.com/Constellation/escodegen/wiki/API) for\noptions. To run the tests, execute `npm test` in the root directory.\n\n### License\n\n#### Escodegen\n\nCopyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation)\n (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#### source-map\n\nSourceNodeMocks has a limited interface of mozilla/source-map SourceNode implementations.\n\nCopyright (c) 2009-2011, Mozilla Foundation and contributors\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the names of the Mozilla Foundation nor the names of project\n contributors may be used to endorse or promote products derived from this\n software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/Constellation/escodegen/issues" - }, - "_id": "escodegen@0.0.28", - "_from": "escodegen@>=0.0.24 <0.1.0" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/package.json b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/package.json deleted file mode 100644 index 4408415..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "static-eval", - "version": "0.2.3", - "description": "evaluate statically-analyzable expressions", - "main": "index.js", - "dependencies": { - "escodegen": "~0.0.24" - }, - "devDependencies": { - "tape": "~1.0.4", - "esprima": "~1.0.3" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "ff/latest", - "chrome/latest", - "opera/latest", - "safari/latest" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/static-eval.git" - }, - "homepage": "https://github.com/substack/static-eval", - "keywords": [ - "static", - "eval", - "expression", - "esprima", - "ast", - "abstract", - "syntax", - "tree", - "analysis" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "gitHead": "c23a774cb1931be092633af716eb3f63a249032c", - "bugs": { - "url": "https://github.com/substack/static-eval/issues" - }, - "_id": "static-eval@0.2.3", - "_shasum": "023f17ac9fee426ea788c12ea39206dc175f8b2a", - "_from": "static-eval@>=0.2.0 <0.3.0", - "_npmVersion": "1.4.15", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "dist": { - "shasum": "023f17ac9fee426ea788c12ea39206dc175f8b2a", - "tarball": "http://registry.npmjs.org/static-eval/-/static-eval-0.2.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/static-eval/-/static-eval-0.2.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/readme.markdown b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/readme.markdown deleted file mode 100644 index 9bd50f9..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/readme.markdown +++ /dev/null @@ -1,83 +0,0 @@ -# static-eval - -evaluate statically-analyzable expressions - -[![testling badge](https://ci.testling.com/substack/static-eval.png)](https://ci.testling.com/substack/static-eval) - -[![build status](https://secure.travis-ci.org/substack/static-eval.png)](http://travis-ci.org/substack/static-eval) - -# example - -``` js -var evaluate = require('static-eval'); -var parse = require('esprima').parse; - -var src = process.argv[2]; -var ast = parse(src).body[0].expression; - -console.log(evaluate(ast)); -``` - -If you stick to simple expressions, the result is statically analyzable: - -``` -$ node '7*8+9' -65 -$ node eval.js '[1,2,3+4*5-(5*11)]' -[ 1, 2, -32 ] -``` - -but if you use statements, undeclared identifiers, or syntax, the result is no -longer statically analyzable and `evaluate()` returns `undefined`: - -``` -$ node eval.js '1+2+3*n' -undefined -$ node eval.js 'x=5; x*2' -undefined -$ node eval.js '5-4*3' --7 -``` - -You can also declare variables and functions to use in the static evaluation: - -``` js -var evaluate = require('static-eval'); -var parse = require('esprima').parse; - -var src = '[1,2,3+4*10+n,foo(3+5),obj[""+"x"].y]'; -var ast = parse(src).body[0].expression; - -console.log(evaluate(ast, { - n: 6, - foo: function (x) { return x * 100 }, - obj: { x: { y: 555 } } -})); -``` - -# methods - -``` js -var evaluate = require('static-eval'); -``` - -## evaluate(ast, vars={}) - -Evaluate the [esprima](https://npmjs.org/package/esprima)-parsed abstract syntax -tree object `ast` with an optional collection of variables `vars` to use in the -static expression resolution. - -If the expression contained in `ast` can't be statically resolved, `evaluate()` -returns undefined. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install static-eval -``` - -# license - -MIT diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/test/eval.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/test/eval.js deleted file mode 100644 index e8fc6a7..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/test/eval.js +++ /dev/null @@ -1,45 +0,0 @@ -var test = require('tape'); -var evaluate = require('../'); -var parse = require('esprima').parse; - -test('resolved', function (t) { - t.plan(1); - - var src = '[1,2,3+4*10+(n||6),foo(3+5),obj[""+"x"].y]'; - var ast = parse(src).body[0].expression; - var res = evaluate(ast, { - n: false, - foo: function (x) { return x * 100 }, - obj: { x: { y: 555 } } - }); - t.deepEqual(res, [ 1, 2, 49, 800, 555 ]); -}); - -test('unresolved', function (t) { - t.plan(1); - - var src = '[1,2,3+4*10*z+n,foo(3+5),obj[""+"x"].y]'; - var ast = parse(src).body[0].expression; - var res = evaluate(ast, { - n: 6, - foo: function (x) { return x * 100 }, - obj: { x: { y: 555 } } - }); - t.equal(res, undefined); -}); - -test('boolean', function (t) { - t.plan(1); - - var src = '[ 1===2+3-16/4, [2]==2, [2]!==2, [2]!==[2] ]'; - var ast = parse(src).body[0].expression; - t.deepEqual(evaluate(ast), [ true, true, true, true ]); -}); - -test('array methods', function(t) { - t.plan(1); - - var src = '[1, 2, 3].map(function(n) { return n * 2 })'; - var ast = parse(src).body[0].expression; - t.deepEqual(evaluate(ast), [2, 4, 6]); -}) diff --git a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/test/prop.js b/node_modules/brfs/node_modules/static-module/node_modules/static-eval/test/prop.js deleted file mode 100644 index a7160e5..0000000 --- a/node_modules/brfs/node_modules/static-module/node_modules/static-eval/test/prop.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tape'); -var evaluate = require('../'); -var parse = require('esprima').parse; - -test('function property', function (t) { - t.plan(1); - - var src = '[1,2,3+4*10+n,beep.boop(3+5),obj[""+"x"].y]'; - var ast = parse(src).body[0].expression; - var res = evaluate(ast, { - n: 6, - beep: { boop: function (x) { return x * 100 } }, - obj: { x: { y: 555 } } - }); - t.deepEqual(res, [ 1, 2, 49, 800, 555 ]); -}); diff --git a/node_modules/brfs/node_modules/static-module/package.json b/node_modules/brfs/node_modules/static-module/package.json deleted file mode 100644 index 19c2871..0000000 --- a/node_modules/brfs/node_modules/static-module/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "static-module", - "version": "1.0.1", - "description": "convert module usage to inline expressions", - "main": "index.js", - "dependencies": { - "concat-stream": "~1.4.5", - "duplexer2": "~0.0.2", - "escodegen": "~1.3.2", - "falafel": "~0.3.1", - "object-inspect": "~0.4.0", - "quote-stream": "~0.0.0", - "readable-stream": "~1.0.27-1", - "shallow-copy": "~0.0.1", - "static-eval": "~0.2.0", - "through2": "~0.4.1" - }, - "devDependencies": { - "tape": "~2.12.1" - }, - "scripts": { - "test": "tape test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/static-module.git" - }, - "homepage": "https://github.com/substack/static-module", - "keywords": [ - "ast", - "static", - "analysis", - "esprima", - "syntax", - "tree" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "gitHead": "ccf3d182d7b7e14ea5a6d19961b0aec6aeccb644", - "bugs": { - "url": "https://github.com/substack/static-module/issues" - }, - "_id": "static-module@1.0.1", - "_shasum": "df6f7b00d9728db4e226b404acb74607c905ae82", - "_from": "static-module@>=1.0.0 <2.0.0", - "_npmVersion": "2.1.8", - "_nodeVersion": "0.10.31", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "dist": { - "shasum": "df6f7b00d9728db4e226b404acb74607c905ae82", - "tarball": "http://registry.npmjs.org/static-module/-/static-module-1.0.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/static-module/-/static-module-1.0.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/static-module/readme.markdown b/node_modules/brfs/node_modules/static-module/readme.markdown deleted file mode 100644 index 37c9a3f..0000000 --- a/node_modules/brfs/node_modules/static-module/readme.markdown +++ /dev/null @@ -1,81 +0,0 @@ -# static-module - -convert module usage to inline expressions - -[![build status](https://secure.travis-ci.org/substack/static-module.png)](http://travis-ci.org/substack/static-module) - -# example - -Here's a simplified version of the [brfs](https://npmjs.org/package/brfs) module -using static-module. - -brfs converts `fs.readFileSync(file)` calls to inline strings with the contents -of `file` included in-place. - -``` js -var staticModule = require('static-module'); -var quote = require('quote-stream'); -var fs = require('fs'); - -var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - } -}, { vars: { __dirname: __dirname + '/brfs' } }); -process.stdin.pipe(sm).pipe(process.stdout); -``` - -input: - -``` -$ cat brfs/source.js -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/x.txt'); -console.log(src); -``` - -output: - -``` -$ node brfs.js < brfs/source.js - -var src = "beep boop\n"; -console.log(src); -``` - -# methods - -``` js -var staticModule = require('static-module') -``` - -## var sm = staticModule(modules, opts={}) - -Return a transform stream `sm` that transforms javascript source input to -javascript source output with each property in the `modules` object expanded in -inline form. - -Properties in the `modules` object can be ordinary values that will be included -directly or functions that will be executed with the [statically -evaluated](https://npmjs.org/package/static-eval) arguments from the source -under an optional set of `opts.vars` variables. - -Property functions can return streams, in which case their contents will be -piped directly into the source output. - -Otherwise, the return values of functions will be inlined into the source in -place as strings. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install static-module -``` - -# license - -MIT diff --git a/node_modules/brfs/node_modules/static-module/test/assign.js b/node_modules/brfs/node_modules/static-module/test/assign.js deleted file mode 100644 index 1935d36..0000000 --- a/node_modules/brfs/node_modules/static-module/test/assign.js +++ /dev/null @@ -1,44 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('assign', function (t) { - t.plan(3); - - var expected = [ 12, 555 ]; - var sm = staticModule({ - beep: { x: 4, f: function (n) { return n * 111 } } - }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - '\nconsole.log(4 * 3);' - + '\nconsole.log(555);\n' - ); - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -test('assign comma', function (t) { - t.plan(3); - - var expected = [ 12, 555 ]; - var sm = staticModule({ - beep: { x: 4, f: function (n) { return n * 111 } } - }); - readStream('comma.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - 'x = 5;\n' - + 'console.log(4 * 3);\n' - + 'console.log(555);\n' - ); - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'assign', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/assign/comma.js b/node_modules/brfs/node_modules/static-module/test/assign/comma.js deleted file mode 100644 index bf33b65..0000000 --- a/node_modules/brfs/node_modules/static-module/test/assign/comma.js +++ /dev/null @@ -1,3 +0,0 @@ -x = 5, b = require('beep'); -console.log(b.x * 3); -console.log(b.f(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/assign/source.js b/node_modules/brfs/node_modules/static-module/test/assign/source.js deleted file mode 100644 index d6ecd65..0000000 --- a/node_modules/brfs/node_modules/static-module/test/assign/source.js +++ /dev/null @@ -1,3 +0,0 @@ -b = require('beep'); -console.log(b.x * 3); -console.log(b.f(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/brfs.js b/node_modules/brfs/node_modules/static-module/test/brfs.js deleted file mode 100644 index 016d1a2..0000000 --- a/node_modules/brfs/node_modules/static-module/test/brfs.js +++ /dev/null @@ -1,102 +0,0 @@ -var staticModule = require('../'); -var test = require('tape'); -var concat = require('concat-stream'); -var quote = require('quote-stream'); -var fs = require('fs'); -var path = require('path'); -var vm = require('vm'); - -test('readFileSync', function (t) { - t.plan(2); - var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'brfs') } }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - '\nvar src = "beep boop\\n";' - + '\nconsole.log(src);\n' - ); - vm.runInNewContext(body.toString('utf8'), { - console: { log: log } - }); - function log (msg) { t.equal(msg, 'beep boop\n') } - })); -}); - -test('readFileSync attribute', function (t) { - t.plan(2); - var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'brfs') } }); - readStream('attribute.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - '\nvar src = "beep boop\\n";' - + '\nconsole.log(src);\n' - ); - vm.runInNewContext(body.toString('utf8'), { - console: { log: log } - }); - function log (msg) { t.equal(msg, 'beep boop\n') } - })); -}); - -test('readFileSync attribute with multiple vars', function (t) { - t.plan(2); - var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'brfs') } }); - readStream('attribute_vars.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - 'var x = 5, y = 2;' - + '\nvar src = "beep boop\\n";' - + '\nconsole.log(src);\n' - ); - vm.runInNewContext(body.toString('utf8'), { - console: { log: log } - }); - function log (msg) { t.equal(msg, 'beep boop\n') } - })); -}); - -test('readFileSync attribute with multiple require vars', function (t) { - //t.plan(2); - var sm = staticModule({ - fs: { - readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'brfs') } }); - readStream('multi_require.js').pipe(sm).pipe(concat(function (body) { -console.error('DISABLED FOR NOW'); -console.error(''); -console.error(body.toString('utf8')); -console.error(''); -return t.end(); - t.equal(body.toString('utf8'), - 'var x = 5;' - + '\nvar src = "beep boop\\n";' - + '\nconsole.log(src);\n' - ); - vm.runInNewContext(body.toString('utf8'), { - console: { log: log } - }); - function log (msg) { t.equal(msg, 'beep boop\n') } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'brfs', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/brfs/attribute.js b/node_modules/brfs/node_modules/static-module/test/brfs/attribute.js deleted file mode 100644 index c430318..0000000 --- a/node_modules/brfs/node_modules/static-module/test/brfs/attribute.js +++ /dev/null @@ -1,3 +0,0 @@ -var f = require('fs').readFileSync; -var src = f(__dirname + '/x.txt', 'utf8'); -console.log(src); diff --git a/node_modules/brfs/node_modules/static-module/test/brfs/attribute_vars.js b/node_modules/brfs/node_modules/static-module/test/brfs/attribute_vars.js deleted file mode 100644 index a1324c5..0000000 --- a/node_modules/brfs/node_modules/static-module/test/brfs/attribute_vars.js +++ /dev/null @@ -1,3 +0,0 @@ -var x = 5, f = require('fs').readFileSync, y = 2; -var src = f(__dirname + '/x.txt', 'utf8'); -console.log(src); diff --git a/node_modules/brfs/node_modules/static-module/test/brfs/multi_require.js b/node_modules/brfs/node_modules/static-module/test/brfs/multi_require.js deleted file mode 100644 index 099df19..0000000 --- a/node_modules/brfs/node_modules/static-module/test/brfs/multi_require.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'), x = 5; -var src = fs.readFileSync(__dirname + '/x.txt', 'utf8'); -console.log(src); diff --git a/node_modules/brfs/node_modules/static-module/test/brfs/source.js b/node_modules/brfs/node_modules/static-module/test/brfs/source.js deleted file mode 100644 index 6441317..0000000 --- a/node_modules/brfs/node_modules/static-module/test/brfs/source.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/x.txt', 'utf8'); -console.log(src); diff --git a/node_modules/brfs/node_modules/static-module/test/brfs/x.txt b/node_modules/brfs/node_modules/static-module/test/brfs/x.txt deleted file mode 100644 index fae06e3..0000000 --- a/node_modules/brfs/node_modules/static-module/test/brfs/x.txt +++ /dev/null @@ -1 +0,0 @@ -beep boop diff --git a/node_modules/brfs/node_modules/static-module/test/fn.js b/node_modules/brfs/node_modules/static-module/test/fn.js deleted file mode 100644 index f3e2f36..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fn.js +++ /dev/null @@ -1,19 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('function', function (t) { - t.plan(1); - - var sm = staticModule({ beep: function (n) { return n * 111 } }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 555) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'fn', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/fn/source.js b/node_modules/brfs/node_modules/static-module/test/fn/source.js deleted file mode 100644 index 3ec8780..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fn/source.js +++ /dev/null @@ -1,2 +0,0 @@ -var b = require('beep'); -console.log(b(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/fs.js b/node_modules/brfs/node_modules/static-module/test/fs.js deleted file mode 100644 index a6844ad..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fs.js +++ /dev/null @@ -1,55 +0,0 @@ -var staticModule = require('../'); -var test = require('tape'); -var concat = require('concat-stream'); -var quote = require('quote-stream'); -var through = require('through2'); -var fs = require('fs'); -var path = require('path'); - -test('fs.readFile', function (t) { - t.plan(2); - var sm = staticModule({ - fs: { readFile: readFile } - }, { vars: { __dirname: __dirname + '/fs' } }); - readStream('readfile.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - 'process.nextTick(function(){(function (err, src) {\n' - + ' console.log(src);\n' - + '})(null,"beep boop\\n")});\n' - ); - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 'beep boop\n') } - })); -}); - -test('fs.readFileSync', function (t) { - t.plan(2); - var sm = staticModule({ - fs: { readFileSync: readFileSync } - }, { vars: { __dirname: __dirname + '/fs' } }); - readStream('html.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), - 'var html = "EXTERMINATE\\n";\n' - + 'console.log(html);\n' - ); - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 'EXTERMINATE\n') } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'fs', file)); -} - -function readFile (file, cb) { - var stream = through(write, end); - stream.push('process.nextTick(function(){(' + cb + ')(null,'); - return fs.createReadStream(file).pipe(quote()).pipe(stream); - - function write (buf, enc, next) { this.push(buf); next() } - function end (next) { this.push(')})'); this.push(null); next() } -} - -function readFileSync (file, opts) { - return fs.createReadStream(file).pipe(quote()); -} diff --git a/node_modules/brfs/node_modules/static-module/test/fs/html.js b/node_modules/brfs/node_modules/static-module/test/fs/html.js deleted file mode 100644 index 6a0c4fc..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fs/html.js +++ /dev/null @@ -1,2 +0,0 @@ -var html = require('fs').readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/node_modules/static-module/test/fs/readfile.js b/node_modules/brfs/node_modules/static-module/test/fs/readfile.js deleted file mode 100644 index 5307e4f..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fs/readfile.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs') -fs.readFile(__dirname + '/x.txt', function (err, src) { - console.log(src); -}); diff --git a/node_modules/brfs/node_modules/static-module/test/fs/robot.html b/node_modules/brfs/node_modules/static-module/test/fs/robot.html deleted file mode 100644 index ba5ab32..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fs/robot.html +++ /dev/null @@ -1 +0,0 @@ -EXTERMINATE diff --git a/node_modules/brfs/node_modules/static-module/test/fs/x.txt b/node_modules/brfs/node_modules/static-module/test/fs/x.txt deleted file mode 100644 index fae06e3..0000000 --- a/node_modules/brfs/node_modules/static-module/test/fs/x.txt +++ /dev/null @@ -1 +0,0 @@ -beep boop diff --git a/node_modules/brfs/node_modules/static-module/test/inline.js b/node_modules/brfs/node_modules/static-module/test/inline.js deleted file mode 100644 index 54bdf8c..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline.js +++ /dev/null @@ -1,75 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('inline object', function (t) { - t.plan(1); - var sm = staticModule({ - beep: { f: function (n) { return n * 111 } } - }); - readStream('obj.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 555) } - })); -}); - -test('inline object call', function (t) { - t.plan(1); - var sm = staticModule({ - beep: { f: function (n) { return n * 111 } } - }); - readStream('obj_call.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 555) } - })); -}); - -test('inline object expression', function (t) { - t.plan(1); - var sm = staticModule({ - beep: { f: function (n) { return n * 111 } } - }); - readStream('obj_expr.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 1110) } - })); -}); - -test('inline function', function (t) { - t.plan(1); - var sm = staticModule({ - beep: function (n) { return n * 111 } - }); - readStream('fn.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 555) } - })); -}); - -test('inline function call', function (t) { - t.plan(1); - var sm = staticModule({ - beep: function (n) { return n * 111 } - }); - readStream('fn_call.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 555) } - })); -}); - -test('inline function expression', function (t) { - t.plan(1); - var sm = staticModule({ - beep: function (n) { return n * 111 } - }); - readStream('fn_expr.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, 1665) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'inline', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/inline/fn.js b/node_modules/brfs/node_modules/static-module/test/inline/fn.js deleted file mode 100644 index e824baf..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline/fn.js +++ /dev/null @@ -1,2 +0,0 @@ -var x = require('beep')(5); -console.log(x); diff --git a/node_modules/brfs/node_modules/static-module/test/inline/fn_call.js b/node_modules/brfs/node_modules/static-module/test/inline/fn_call.js deleted file mode 100644 index 1165272..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline/fn_call.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('beep')(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/inline/fn_expr.js b/node_modules/brfs/node_modules/static-module/test/inline/fn_expr.js deleted file mode 100644 index f05ba60..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline/fn_expr.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('beep')(5) * 3); diff --git a/node_modules/brfs/node_modules/static-module/test/inline/obj.js b/node_modules/brfs/node_modules/static-module/test/inline/obj.js deleted file mode 100644 index c18b791..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline/obj.js +++ /dev/null @@ -1,2 +0,0 @@ -var x = require('beep').f(5); -console.log(x); diff --git a/node_modules/brfs/node_modules/static-module/test/inline/obj_call.js b/node_modules/brfs/node_modules/static-module/test/inline/obj_call.js deleted file mode 100644 index 2240ec5..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline/obj_call.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('beep').f(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/inline/obj_expr.js b/node_modules/brfs/node_modules/static-module/test/inline/obj_expr.js deleted file mode 100644 index 8c0165c..0000000 --- a/node_modules/brfs/node_modules/static-module/test/inline/obj_expr.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('beep').f(5) * 2); diff --git a/node_modules/brfs/node_modules/static-module/test/log.js b/node_modules/brfs/node_modules/static-module/test/log.js deleted file mode 100644 index a7045d1..0000000 --- a/node_modules/brfs/node_modules/static-module/test/log.js +++ /dev/null @@ -1,45 +0,0 @@ -var staticModule = require('../'); -var test = require('tape'); -var concat = require('concat-stream'); -var quote = require('quote-stream'); -var fs = require('fs'); -var path = require('path'); - -test('stream into a console.log', function (t) { - t.plan(1); - var sm = staticModule({ - beep: function () { - var q = quote(); - q.end('eek'); - return q; - } - }, { vars: { __dirname: path.join(__dirname, 'brfs') } }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), 'console.log("eek");\n'); - })); -}); - -test('trickle stream into a console.log', function (t) { - t.plan(1); - var sm = staticModule({ - beep: function () { - var q = quote(); - var chunks = [ 'beep', ' boop', ' robots' ]; - var iv = setInterval(function () { - if (chunks.length === 0) { - clearInterval(iv); - q.end(); - } - else q.write(chunks.shift()); - }, 10); - return q; - } - }, { vars: { __dirname: path.join(__dirname, 'brfs') } }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - t.equal(body.toString('utf8'), 'console.log("beep boop robots");\n'); - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'log', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/log/source.js b/node_modules/brfs/node_modules/static-module/test/log/source.js deleted file mode 100644 index 9c6d81b..0000000 --- a/node_modules/brfs/node_modules/static-module/test/log/source.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('beep')()); diff --git a/node_modules/brfs/node_modules/static-module/test/many.js b/node_modules/brfs/node_modules/static-module/test/many.js deleted file mode 100644 index 14d7b55..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many.js +++ /dev/null @@ -1,74 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var quote = require('quote-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('many instances', function (t) { - t.plan(2); - - var sm = staticModule({ - fs: { readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } } - }, { vars: { __dirname: path.join(__dirname, 'many') } }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - t.equal( - body.toString('utf8'), - '\nvar a = "A!\\n";\n' - + 'var b = "B!\\n";\n' - + 'var c = "C!\\n";\n' - + 'console.log(a + b + c);\n' - ); - function log (msg) { t.equal(msg, 'A!\nB!\nC!\n') } - })); -}); - -test('expansions inline', function (t) { - t.plan(2); - - var sm = staticModule({ - fs: { readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } } - }, { vars: { __dirname: path.join(__dirname, 'many') } }); - readStream('inline.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - t.equal( - body.toString('utf8'), - '\nvar a = "A!\\n",\n' - + ' b = "B!\\n",\n' - + ' c = "C!\\n"\n' - + ';\n' - + 'console.log(a + b + c);\n' - ); - function log (msg) { t.equal(msg, 'A!\nB!\nC!\n') } - })); -}); - -test('all inline', function (t) { - t.plan(2); - - var sm = staticModule({ - fs: { readFileSync: function (file) { - return fs.createReadStream(file).pipe(quote()); - } } - }, { vars: { __dirname: path.join(__dirname, 'many') } }); - readStream('all_inline.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - t.equal( - body.toString('utf8'), - 'var a = "A!\\n",\n' - + ' b = "B!\\n",\n' - + ' c = "C!\\n";\n' - + 'console.log(a + b + c);\n' - ); - function log (msg) { t.equal(msg, 'A!\nB!\nC!\n') } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'many', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/many/a.txt b/node_modules/brfs/node_modules/static-module/test/many/a.txt deleted file mode 100644 index 1b1c762..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many/a.txt +++ /dev/null @@ -1 +0,0 @@ -A! diff --git a/node_modules/brfs/node_modules/static-module/test/many/all_inline.js b/node_modules/brfs/node_modules/static-module/test/many/all_inline.js deleted file mode 100644 index e47b157..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many/all_inline.js +++ /dev/null @@ -1,6 +0,0 @@ -var fs = require('fs'), - a = fs.readFileSync(__dirname + '/a.txt', 'utf8'), - b = fs.readFileSync(__dirname + '/b.txt', 'utf8'), - c = fs.readFileSync(__dirname + '/c.txt', 'utf8') -; -console.log(a + b + c); diff --git a/node_modules/brfs/node_modules/static-module/test/many/b.txt b/node_modules/brfs/node_modules/static-module/test/many/b.txt deleted file mode 100644 index df4f1e3..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many/b.txt +++ /dev/null @@ -1 +0,0 @@ -B! diff --git a/node_modules/brfs/node_modules/static-module/test/many/c.txt b/node_modules/brfs/node_modules/static-module/test/many/c.txt deleted file mode 100644 index 3b9b6fc..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many/c.txt +++ /dev/null @@ -1 +0,0 @@ -C! diff --git a/node_modules/brfs/node_modules/static-module/test/many/inline.js b/node_modules/brfs/node_modules/static-module/test/many/inline.js deleted file mode 100644 index cd5b440..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many/inline.js +++ /dev/null @@ -1,6 +0,0 @@ -var fs = require('fs'); -var a = fs.readFileSync(__dirname + '/a.txt', 'utf8'), - b = fs.readFileSync(__dirname + '/b.txt', 'utf8'), - c = fs.readFileSync(__dirname + '/c.txt', 'utf8') -; -console.log(a + b + c); diff --git a/node_modules/brfs/node_modules/static-module/test/many/source.js b/node_modules/brfs/node_modules/static-module/test/many/source.js deleted file mode 100644 index 0b40ae1..0000000 --- a/node_modules/brfs/node_modules/static-module/test/many/source.js +++ /dev/null @@ -1,5 +0,0 @@ -var fs = require('fs'); -var a = fs.readFileSync(__dirname + '/a.txt', 'utf8'); -var b = fs.readFileSync(__dirname + '/b.txt', 'utf8'); -var c = fs.readFileSync(__dirname + '/c.txt', 'utf8'); -console.log(a + b + c); diff --git a/node_modules/brfs/node_modules/static-module/test/mixed.js b/node_modules/brfs/node_modules/static-module/test/mixed.js deleted file mode 100644 index 221cb9f..0000000 --- a/node_modules/brfs/node_modules/static-module/test/mixed.js +++ /dev/null @@ -1,62 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var quote = require('quote-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('mixed nested objects and streams', function (t) { - t.plan(4); - - var expected = [ 12, 'oh hello\n', 555 ]; - var sm = staticModule({ - beep: { - x: { y: { z: 4 } }, - quote: { - read: function (file) { - return fs.createReadStream(file).pipe(quote()); - } - }, - f: { g: { h: function (n) { return n * 111 } } } - } - }, { vars: { __dirname: path.join(__dirname, 'mixed') } }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - t.equal( - body.toString('utf8'), - '\nconsole.log(4 * 3);' - + '\nconsole.log("oh hello\\n");' - + '\nconsole.log(555);\n' - ); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -test('mixed objects and streams', function (t) { - t.plan(4); - - var expected = [ 12, 'oh hello\n', 555 ]; - var sm = staticModule({ - beep: { - x: 4, - quote: function (file) { - return fs.createReadStream(file).pipe(quote()); - }, - f: function (n) { return n * 111 } - } - }, { vars: { __dirname: path.join(__dirname, 'mixed') } }); - readStream('unmixed.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - t.equal( - body.toString('utf8'), - '\nconsole.log(4 * 3);' - + '\nconsole.log("oh hello\\n");' - + '\nconsole.log(555);\n' - ); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'mixed', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/mixed/source.js b/node_modules/brfs/node_modules/static-module/test/mixed/source.js deleted file mode 100644 index af40902..0000000 --- a/node_modules/brfs/node_modules/static-module/test/mixed/source.js +++ /dev/null @@ -1,4 +0,0 @@ -var b = require('beep'); -console.log(b.x.y.z * 3); -console.log(b.quote.read(__dirname + '/xyz.txt')); -console.log(b.f.g.h(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/mixed/unmixed.js b/node_modules/brfs/node_modules/static-module/test/mixed/unmixed.js deleted file mode 100644 index dcacca0..0000000 --- a/node_modules/brfs/node_modules/static-module/test/mixed/unmixed.js +++ /dev/null @@ -1,4 +0,0 @@ -var b = require('beep'); -console.log(b.x * 3); -console.log(b.quote(__dirname + '/xyz.txt')); -console.log(b.f(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/mixed/xyz.txt b/node_modules/brfs/node_modules/static-module/test/mixed/xyz.txt deleted file mode 100644 index 5815dad..0000000 --- a/node_modules/brfs/node_modules/static-module/test/mixed/xyz.txt +++ /dev/null @@ -1 +0,0 @@ -oh hello diff --git a/node_modules/brfs/node_modules/static-module/test/nested.js b/node_modules/brfs/node_modules/static-module/test/nested.js deleted file mode 100644 index 112c83e..0000000 --- a/node_modules/brfs/node_modules/static-module/test/nested.js +++ /dev/null @@ -1,29 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('nested object', function (t) { - t.plan(3); - - var expected = [ 12, 555 ]; - var sm = staticModule({ - beep: { - x: { y: { z: 4 } }, - f: { g: { h: function (n) { return n * 111 } } } - } - }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - t.equal( - body.toString('utf8'), - '\nconsole.log(4 * 3);\nconsole.log(555);\n' - ); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'nested', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/nested/source.js b/node_modules/brfs/node_modules/static-module/test/nested/source.js deleted file mode 100644 index 43d2fe0..0000000 --- a/node_modules/brfs/node_modules/static-module/test/nested/source.js +++ /dev/null @@ -1,3 +0,0 @@ -var b = require('beep'); -console.log(b.x.y.z * 3); -console.log(b.f.g.h(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/obj.js b/node_modules/brfs/node_modules/static-module/test/obj.js deleted file mode 100644 index 046433a..0000000 --- a/node_modules/brfs/node_modules/static-module/test/obj.js +++ /dev/null @@ -1,22 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('object', function (t) { - t.plan(2); - - var expected = [ 12, 555 ]; - var sm = staticModule({ - beep: { x: 4, f: function (n) { return n * 111 } } - }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'obj', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/obj/source.js b/node_modules/brfs/node_modules/static-module/test/obj/source.js deleted file mode 100644 index ed7ce57..0000000 --- a/node_modules/brfs/node_modules/static-module/test/obj/source.js +++ /dev/null @@ -1,3 +0,0 @@ -var b = require('beep'); -console.log(b.x * 3); -console.log(b.f(5)); diff --git a/node_modules/brfs/node_modules/static-module/test/prop.js b/node_modules/brfs/node_modules/static-module/test/prop.js deleted file mode 100644 index 4c55965..0000000 --- a/node_modules/brfs/node_modules/static-module/test/prop.js +++ /dev/null @@ -1,21 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('property', function (t) { - t.plan(1); - - var sm = staticModule({ - fff: function (n) { return '[' + (n * 111) + ']' } - }); - readStream('source.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.deepEqual(msg, '[object Array]') } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'prop', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/prop/source.js b/node_modules/brfs/node_modules/static-module/test/prop/source.js deleted file mode 100644 index 7288365..0000000 --- a/node_modules/brfs/node_modules/static-module/test/prop/source.js +++ /dev/null @@ -1,3 +0,0 @@ -var f = require('fff'); -var toString = Object.prototype.toString; -console.log(toString.call(f(5))); diff --git a/node_modules/brfs/node_modules/static-module/test/vars.js b/node_modules/brfs/node_modules/static-module/test/vars.js deleted file mode 100644 index 9df79d9..0000000 --- a/node_modules/brfs/node_modules/static-module/test/vars.js +++ /dev/null @@ -1,72 +0,0 @@ -var test = require('tape'); -var concat = require('concat-stream'); -var quote = require('quote-stream'); -var staticModule = require('../'); -var fs = require('fs'); -var path = require('path'); - -test('multi-vars', function (t) { - t.plan(2); - - var expected = [ 'beep boop!' ]; - var sm = staticModule({ - fs: { - readFileSync: function (file, enc) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'vars') } }); - - readStream('source.js').pipe(sm).pipe(concat(function (body) { - t.equal( - body.toString('utf8'), - 'var html = "beep boop",\n x = \'!\';\nconsole.log(html + x);\n' - ); - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -test('2-var', function (t) { - t.plan(2); - - var expected = [ 'beep boop' ]; - var sm = staticModule({ - fs: { - readFileSync: function (file, enc) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'vars') } }); - - readStream('one.js').pipe(sm).pipe(concat(function (body) { - t.equal( - body.toString('utf8'), - 'var html = "beep boop";\nconsole.log(html);\n' - ); - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -test('5-var', function (t) { - t.plan(1); - - var expected = [ 'beep boop123' ]; - var sm = staticModule({ - fs: { - readFileSync: function (file, enc) { - return fs.createReadStream(file).pipe(quote()); - } - } - }, { vars: { __dirname: path.join(__dirname, 'vars') } }); - - readStream('five.js').pipe(sm).pipe(concat(function (body) { - Function(['console'],body)({ log: log }); - function log (msg) { t.equal(msg, expected.shift()) } - })); -}); - -function readStream (file) { - return fs.createReadStream(path.join(__dirname, 'vars', file)); -} diff --git a/node_modules/brfs/node_modules/static-module/test/vars/five.js b/node_modules/brfs/node_modules/static-module/test/vars/five.js deleted file mode 100644 index 7685e0f..0000000 --- a/node_modules/brfs/node_modules/static-module/test/vars/five.js +++ /dev/null @@ -1,6 +0,0 @@ -var a = 1, fs = require('fs'), - b = 2, - html = fs.readFileSync(__dirname + '/vars.html', 'utf8'), - c = 3 -; -console.log(html + a + b + c); diff --git a/node_modules/brfs/node_modules/static-module/test/vars/one.js b/node_modules/brfs/node_modules/static-module/test/vars/one.js deleted file mode 100644 index 10e62af..0000000 --- a/node_modules/brfs/node_modules/static-module/test/vars/one.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'), - html = fs.readFileSync(__dirname + '/vars.html', 'utf8') -; -console.log(html); diff --git a/node_modules/brfs/node_modules/static-module/test/vars/source.js b/node_modules/brfs/node_modules/static-module/test/vars/source.js deleted file mode 100644 index 6bbab1b..0000000 --- a/node_modules/brfs/node_modules/static-module/test/vars/source.js +++ /dev/null @@ -1,5 +0,0 @@ -var fs = require('fs'), - html = fs.readFileSync(__dirname + '/vars.html', 'utf8'), - x = '!' -; -console.log(html + x); diff --git a/node_modules/brfs/node_modules/static-module/test/vars/vars.html b/node_modules/brfs/node_modules/static-module/test/vars/vars.html deleted file mode 100644 index e92ac7a..0000000 --- a/node_modules/brfs/node_modules/static-module/test/vars/vars.html +++ /dev/null @@ -1 +0,0 @@ -beep boop \ No newline at end of file diff --git a/node_modules/brfs/node_modules/through2/.npmignore b/node_modules/brfs/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab..0000000 --- a/node_modules/brfs/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/node_modules/brfs/node_modules/through2/LICENSE b/node_modules/brfs/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029..0000000 --- a/node_modules/brfs/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs License - -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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/node_modules/brfs/node_modules/through2/README.md b/node_modules/brfs/node_modules/through2/README.md deleted file mode 100644 index 33aa01e..0000000 --- a/node_modules/brfs/node_modules/through2/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# through2 - - - -[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) - - - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations [here](http://www.nearform.com/nodecrunch/dont-use-nodes-core-stream-module). - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - - this.push(data) - - callback() - - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) { - - this.push(new Buffer('wut?')) - cb() - - }) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -If you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/.npmignore b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f8..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/LICENSE b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e69..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/README.md b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e80..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -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. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/duplex.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +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. - -// 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. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - 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. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -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); -}; diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 6307220..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // 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; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = 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, becuase 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; - - - // 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; - - // 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; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - 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 (typeof chunk === 'string' && !state.objectMode) { - 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); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - 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 { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - 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; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - 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 = roundUpToNextPowerOf2(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) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - 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)) { - 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) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // 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; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // 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; - - if (doRead) { - 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 called its callback 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); - - 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 happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(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) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// 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; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - 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; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function 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); - - function 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); - - // 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 (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(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() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function 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) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -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; - this.removeListener('readable', pipeOnReadable); - 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; - this.removeListener('readable', pipeOnReadable); - 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 (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// 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() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// 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() { - 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) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - 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 (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - 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) { - 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 - 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.calledRead) { - state.ended = true; - process.nextTick(function() { - // 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; -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +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. - - -// 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. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = 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); - - if (cb) - 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); - - var ts = this._transformState = new TransformState(options, 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; - - this.once('finish', function() { - if ('function' === typeof this._flush) - 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 rs = stream._readableState; - 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); -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4f..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // 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; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // 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; - - // 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, becuase 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.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var 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; - - 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, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - 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) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - 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 = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -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.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - 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(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - 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; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // 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) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -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 (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b41..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c0..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8e..0000000 --- a/node_modules/brfs/node_modules/through2/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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (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; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 9aaf597..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "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" - }, - "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" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "_from": "core-util-is@>=1.0.0 <1.1.0", - "scripts": {} -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa10..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +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(ar) { - return Array.isArray(ar); -} -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 isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object 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; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/LICENSE b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/README.md b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c5665..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a7..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index 9013262..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +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" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@>=2.0.1 <2.1.0" -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/test.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/README.md b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## 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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/build/build.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/build/build.js deleted file mode 100644 index ec58596..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/build/build.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (require.modules.hasOwnProperty(path)) return path; - } - - if (require.aliases.hasOwnProperty(index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!require.modules.hasOwnProperty(from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return require.modules.hasOwnProperty(localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("isarray/index.js", function(exports, require, module){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -}); -require.alias("isarray/index.js", "isarray/index.js"); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/component.json b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/index.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index fc7904b..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - } -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320c..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa00..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54f..0000000 --- a/node_modules/brfs/node_modules/through2/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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 0364d54..0000000 --- a/node_modules/brfs/node_modules/through2/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.0 <0.11.0", - "_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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/package.json b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/package.json deleted file mode 100644 index 16de866..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.33", - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "gitHead": "0bf97a117c5646556548966409ebc57a6dda2638", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.33", - "_shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "_from": "readable-stream@>=1.0.17 <1.1.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/passthrough.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/readable.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/readable.js deleted file mode 100644 index 8b5337b..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,8 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -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/node_modules/brfs/node_modules/through2/node_modules/readable-stream/transform.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f0..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/writable.js b/node_modules/brfs/node_modules/through2/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efd..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/.npmignore b/node_modules/brfs/node_modules/through2/node_modules/xtend/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/LICENCE b/node_modules/brfs/node_modules/through2/node_modules/xtend/LICENCE deleted file mode 100644 index a23e08a..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -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. \ No newline at end of file diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/Makefile b/node_modules/brfs/node_modules/through2/node_modules/xtend/Makefile deleted file mode 100644 index d583fcf..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -browser: - node ./support/compile - -.PHONY: browser \ No newline at end of file diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/README.md b/node_modules/brfs/node_modules/through2/node_modules/xtend/README.md deleted file mode 100644 index 389adae..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# xtend - -[![browser support][3]][4] - -Extend like a boss - -xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence. - -## Examples - -```js -var extend = require("xtend") - -var combination = extend({ - a: "a" -}, { - b: "b" -}) -// { a: "a", b: "b" } -``` - - -## MIT Licenced - - - [3]: http://ci.testling.com/Raynos/xtend.png - [4]: http://ci.testling.com/Raynos/xtend diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/has-keys.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/has-keys.js deleted file mode 100644 index 62391e7..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/has-keys.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = hasKeys - -function hasKeys(source) { - return source !== null && - (typeof source === "object" || - typeof source === "function") -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/index.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/index.js deleted file mode 100644 index 20937d1..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/mutable.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/mutable.js deleted file mode 100644 index 17454ae..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/mutable.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend(target) { - var sources = [].slice.call(arguments, 1) - - for (var i = 0; i < sources.length; i++) { - var source = sources[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml deleted file mode 100644 index 60d00ce..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md deleted file mode 100644 index ab32d0a..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md +++ /dev/null @@ -1,39 +0,0 @@ -#object-keys [![Version Badge][2]][1] - -[![Build Status][3]][4] [![dependency status][5]][6] - -[![browser support][7]][8] - -An Object.keys shim. Uses Object.keys if available. - -## Example - -```js -var keys = require('object-keys'); -var assert = require('assert'); -var obj = { - a: true, - b: true, - c: true -}; - -assert.equal(keys(obj), ['a', 'b', 'c']); -``` - -## Source -Implementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]). - -## Tests -Simply clone the repo, `npm install`, and run `npm test` - -[1]: https://npmjs.org/package/object-keys -[2]: http://vb.teelaun.ch/ljharb/object-keys.svg -[3]: https://travis-ci.org/ljharb/object-keys.png -[4]: https://travis-ci.org/ljharb/object-keys -[5]: https://david-dm.org/ljharb/object-keys.png -[6]: https://david-dm.org/ljharb/object-keys -[7]: https://ci.testling.com/ljharb/object-keys.png -[8]: https://ci.testling.com/ljharb/object-keys -[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589 -[10]: https://github.com/bestiejs/lodash - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js deleted file mode 100644 index db32d45..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = Object.prototype.hasOwnProperty; -var toString = Object.prototype.toString; - -var isFunction = function (fn) { - var isFunc = (typeof fn === 'function' && !(fn instanceof RegExp)) || toString.call(fn) === '[object Function]'; - if (!isFunc && typeof window !== 'undefined') { - isFunc = fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt; - } - return isFunc; -}; - -module.exports = function forEach(obj, fn) { - if (!isFunction(fn)) { - throw new TypeError('iterator must be a function'); - } - var i, k, - isString = typeof obj === 'string', - l = obj.length, - context = arguments.length > 2 ? arguments[2] : null; - if (l === +l) { - for (i = 0; i < l; i++) { - if (context === null) { - fn(isString ? obj.charAt(i) : obj[i], i, obj); - } else { - fn.call(context, isString ? obj.charAt(i) : obj[i], i, obj); - } - } - } else { - for (k in obj) { - if (hasOwn.call(obj, k)) { - if (context === null) { - fn(obj[k], k, obj); - } else { - fn.call(context, obj[k], k, obj); - } - } - } - } -}; - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js deleted file mode 100644 index f5b24b6..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = Object.keys || require('./shim'); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js deleted file mode 100644 index 74a0989..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = Object.prototype.toString; - -module.exports = function isArguments(value) { - var str = toString.call(value); - var isArguments = str === '[object Arguments]'; - if (!isArguments) { - isArguments = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toString.call(value.callee) === '[object Function]'; - } - return isArguments; -}; - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json deleted file mode 100644 index 01f2eef..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "object-keys", - "version": "0.4.0", - "author": { - "name": "Jordan Harband" - }, - "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/kriskowal/es5-shim", - "license": "MIT", - "main": "index.js", - "scripts": { - "test": "node test/index.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/ljharb/object-keys.git" - }, - "keywords": [ - "Object.keys", - "keys", - "ES5", - "shim" - ], - "dependencies": {}, - "devDependencies": { - "foreach": "~2.0.3", - "is": "~0.2.6", - "tape": "~1.0.4", - "indexof": "~0.0.1" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "iexplore/6.0..latest", - "firefox/3.0..6.0", - "firefox/15.0..latest", - "firefox/nightly", - "chrome/4.0..10.0", - "chrome/20.0..latest", - "chrome/canary", - "opera/10.0..latest", - "opera/next", - "safari/4.0..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2" - ] - }, - "readme": "#object-keys [![Version Badge][2]][1]\n\n[![Build Status][3]][4] [![dependency status][5]][6]\n\n[![browser support][7]][8]\n\nAn Object.keys shim. Uses Object.keys if available.\n\n## Example\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\nvar obj = {\n\ta: true,\n\tb: true,\n\tc: true\n};\n\nassert.equal(keys(obj), ['a', 'b', 'c']);\n```\n\n## Source\nImplementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]).\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/object-keys\n[2]: http://vb.teelaun.ch/ljharb/object-keys.svg\n[3]: https://travis-ci.org/ljharb/object-keys.png\n[4]: https://travis-ci.org/ljharb/object-keys\n[5]: https://david-dm.org/ljharb/object-keys.png\n[6]: https://david-dm.org/ljharb/object-keys\n[7]: https://ci.testling.com/ljharb/object-keys.png\n[8]: https://ci.testling.com/ljharb/object-keys\n[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589\n[10]: https://github.com/bestiejs/lodash\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ljharb/object-keys/issues" - }, - "homepage": "https://github.com/ljharb/object-keys", - "_id": "object-keys@0.4.0", - "_from": "object-keys@>=0.4.0 <0.5.0" -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js deleted file mode 100644 index b88421b..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js +++ /dev/null @@ -1,62 +0,0 @@ -(function () { - "use strict"; - - // modified from https://github.com/kriskowal/es5-shim - var has = Object.prototype.hasOwnProperty, - toString = Object.prototype.toString, - forEach = require('./foreach'), - isArgs = require('./isArguments'), - hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'), - hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - keysShim; - - keysShim = function keys(object) { - var isObject = object !== null && typeof object === 'object', - isFunction = toString.call(object) === '[object Function]', - isArguments = isArgs(object), - theKeys = []; - - if (!isObject && !isFunction && !isArguments) { - throw new TypeError("Object.keys called on a non-object"); - } - - if (isArguments) { - forEach(object, function (value) { - theKeys.push(value); - }); - } else { - var name, - skipProto = hasProtoEnumBug && isFunction; - - for (name in object) { - if (!(skipProto && name === 'prototype') && has.call(object, name)) { - theKeys.push(name); - } - } - } - - if (hasDontEnumBug) { - var ctor = object.constructor, - skipConstructor = ctor && ctor.prototype === object; - - forEach(dontEnums, function (dontEnum) { - if (!(skipConstructor && dontEnum === 'constructor') && has.call(object, dontEnum)) { - theKeys.push(dontEnum); - } - }); - } - return theKeys; - }; - - module.exports = keysShim; -}()); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js deleted file mode 100644 index f29f065..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js +++ /dev/null @@ -1,156 +0,0 @@ -var test = require('tape'); -var forEach = require('../foreach.js'); - -test('second argument: iterator', function (t) { - var arr = []; - t.throws(function () { forEach(arr); }, TypeError, 'undefined is not a function'); - t.throws(function () { forEach(arr, null); }, TypeError, 'null is not a function'); - t.throws(function () { forEach(arr, ''); }, TypeError, 'string is not a function'); - t.throws(function () { forEach(arr, /a/); }, TypeError, 'regex is not a function'); - t.throws(function () { forEach(arr, true); }, TypeError, 'true is not a function'); - t.throws(function () { forEach(arr, false); }, TypeError, 'false is not a function'); - t.throws(function () { forEach(arr, NaN); }, TypeError, 'NaN is not a function'); - t.throws(function () { forEach(arr, 42); }, TypeError, '42 is not a function'); - t.doesNotThrow(function () { forEach(arr, function () {}); }, 'function is a function'); - t.doesNotThrow(function () { forEach(arr, setTimeout); }, 'setTimeout is a function'); - if (typeof window !== 'undefined') { - t.doesNotThrow(function () { forEach(arr, window.alert); }, 'alert is a function'); - } - t.end(); -}); - -test('array', function (t) { - var arr = [1, 2, 3]; - - t.test('iterates over every item', function (st) { - var index = 0; - forEach(arr, function () { index += 1; }); - st.equal(index, arr.length, 'iterates ' + arr.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(arr.length); - forEach(arr, function (item) { - st.equal(arr[index], item, 'item ' + index + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(arr.length); - forEach(arr, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(arr.length); - forEach(arr, function (item, index, array) { - st.deepEqual(arr, array, 'array is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(arr.length); - forEach(arr, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - -test('object', function (t) { - var obj = { - a: 1, - b: 2, - c: 3 - }; - var keys = ['a', 'b', 'c']; - - var F = function () { - this.a = 1; - this.b = 2; - }; - F.prototype.c = 3; - var fKeys = ['a', 'b']; - - t.test('iterates over every object literal key', function (st) { - var counter = 0; - forEach(obj, function () { counter += 1; }); - st.equal(counter, keys.length, 'iterated ' + counter + ' times'); - st.end(); - }); - - t.test('iterates only over own keys', function (st) { - var counter = 0; - forEach(new F(), function () { counter += 1; }); - st.equal(counter, fKeys.length, 'iterated ' + fKeys.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(keys.length); - forEach(obj, function (item) { - st.equal(obj[keys[index]], item, 'item at key ' + keys[index] + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(keys.length); - forEach(obj, function (item, key) { - st.equal(keys[counter], key, 'key ' + key + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(keys.length); - forEach(obj, function (item, key, object) { - st.deepEqual(obj, object, 'object is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(1); - forEach({foo: 'bar'}, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - - -test('string', function (t) { - var str = 'str'; - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(str.length * 2 + 1); - forEach(str, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - st.equal(str.charAt(index), item); - counter += 1; - }); - st.equal(counter, str.length, 'iterates ' + str.length + ' times'); - }); - t.end(); -}); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js deleted file mode 100644 index 8b77b1f..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -require('./foreach'); -require('./isArguments'); - -require('./shim'); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js deleted file mode 100644 index 62a07c2..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js +++ /dev/null @@ -1,10 +0,0 @@ -var test = require('tape'); -var isArguments = require('../isArguments'); - -test('is.arguments', function (t) { - t.notOk(isArguments([]), 'array is not arguments'); - (function () { t.ok(isArguments(arguments), 'arguments is arguments'); }()); - (function () { t.notOk(isArguments(Array.prototype.slice.call(arguments)), 'sliced arguments is not arguments'); }()); - t.end(); -}); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js deleted file mode 100644 index 9d93271..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js +++ /dev/null @@ -1,134 +0,0 @@ -var test = require('tape'); -var shimmedKeys = require('../index.js'); -var is = require('is'); -var keys = require('../shim.js'); -var forEach = require('foreach'); -var indexOf = require('indexof'); - -var obj = { - "str": "boz", - "obj": {}, - "arr": [], - "bool": true, - "num": 42, - "aNull": null, - "undef": undefined -}; -var objKeys = ['str', 'obj', 'arr', 'bool', 'num', 'aNull', 'undef']; - -test('exports a function', function (t) { - if (Object.keys) { - t.equal(Object.keys, shimmedKeys, 'Object.keys is supported and exported'); - } else { - t.equal(keys, shimmedKeys, 'Object.keys is not supported; shim is exported'); - } - t.end(); -}); - -test('working with actual shim', function (t) { - t.notEqual(Object.keys, keys, 'keys shim is not native Object.keys'); - t.end(); -}); - -test('works with an object literal', function (t) { - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, objKeys, 'Object has expected keys'); - t.end(); -}); - -test('works with an array', function (t) { - var arr = [1, 2, 3]; - var theKeys = keys(arr); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['0', '1', '2'], 'Array has expected keys'); - t.end(); -}); - -test('works with a function', function (t) { - var foo = function () {}; - foo.a = true; - - t.doesNotThrow(function () { return keys(foo); }, 'does not throw an error'); - t.deepEqual(keys(foo), ['a'], 'returns expected keys'); - t.end(); -}); - -test('returns names which are own properties', function (t) { - forEach(keys(obj), function (name) { - t.equal(obj.hasOwnProperty(name), true, name + ' should be returned'); - }); - t.end(); -}); - -test('returns names which are enumerable', function (t) { - var k, loopedValues = []; - for (k in obj) { - loopedValues.push(k); - } - forEach(keys(obj), function (name) { - t.notEqual(indexOf(loopedValues, name), -1, name + ' is not enumerable'); - }); - t.end(); -}); - -test('throws an error for a non-object', function (t) { - t.throws( - function () { return keys(42); }, - new TypeError('Object.keys called on a non-object'), - 'throws on a non-object' - ); - t.end(); -}); - -test('works with an object instance', function (t) { - var Prototype = function () {}; - Prototype.prototype.foo = true; - var obj = new Prototype(); - obj.bar = true; - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['bar'], 'Instance has expected keys'); - t.end(); -}); - -test('works in iOS 5 mobile Safari', function (t) { - var Foo = function () {}; - Foo.a = function () {}; - - // the bug is keys(Foo) => ['a', 'prototype'] instead of ['a'] - t.deepEqual(keys(Foo), ['a'], 'has expected keys'); - t.end(); -}); - -test('works in environments with the dontEnum bug (IE < 9)', function (t) { - var Foo = function () {}; - Foo.prototype.a = function () {}; - - // the bug is keys(Foo.prototype) => ['a', 'constructor'] instead of ['a'] - t.deepEqual(keys(Foo.prototype), ['a'], 'has expected keys'); - t.end(); -}); - -test('shadowed properties', function (t) { - var shadowedProps = [ - 'dummyControlProp', /* just to be sure */ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - shadowedProps.sort(); - var shadowedObject = {}; - forEach(shadowedProps, function (value, index) { - shadowedObject[value] = index; - }); - var shadowedObjectKeys = keys(shadowedObject); - shadowedObjectKeys.sort(); - t.deepEqual(shadowedObjectKeys, shadowedProps, 'troublesome shadowed properties are keys of object literals'); - t.end(); -}); - diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/package.json b/node_modules/brfs/node_modules/through2/node_modules/xtend/package.json deleted file mode 100644 index c6fd418..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "xtend", - "version": "2.1.2", - "description": "extend like a boss", - "keywords": [ - "extend", - "merge", - "options", - "opts", - "object", - "array" - ], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/xtend.git" - }, - "main": "index", - "scripts": { - "test": "node test" - }, - "dependencies": { - "object-keys": "~0.4.0" - }, - "devDependencies": { - "tape": "~1.1.0" - }, - "homepage": "https://github.com/Raynos/xtend", - "contributors": [ - { - "name": "Jake Verbaten" - }, - { - "name": "Matt Esch" - } - ], - "bugs": { - "url": "https://github.com/Raynos/xtend/issues", - "email": "raynos2@gmail.com" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/raynos/xtend/raw/master/LICENSE" - } - ], - "testling": { - "files": "test.js", - "browsers": [ - "ie/7..latest", - "firefox/16..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" - ] - }, - "engines": { - "node": ">=0.4" - }, - "readme": "# xtend\n\n[![browser support][3]][4]\n\nExtend like a boss\n\nxtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence.\n\n## Examples\n\n```js\nvar extend = require(\"xtend\")\n\nvar combination = extend({\n a: \"a\"\n}, {\n b: \"b\"\n})\n// { a: \"a\", b: \"b\" }\n```\n\n\n## MIT Licenced\n\n\n [3]: http://ci.testling.com/Raynos/xtend.png\n [4]: http://ci.testling.com/Raynos/xtend\n", - "readmeFilename": "README.md", - "_id": "xtend@2.1.2", - "_from": "xtend@>=2.1.1 <2.2.0" -} diff --git a/node_modules/brfs/node_modules/through2/node_modules/xtend/test.js b/node_modules/brfs/node_modules/through2/node_modules/xtend/test.js deleted file mode 100644 index 3369d79..0000000 --- a/node_modules/brfs/node_modules/through2/node_modules/xtend/test.js +++ /dev/null @@ -1,63 +0,0 @@ -var test = require("tape") -var extend = require("./") -var mutableExtend = require("./mutable") - -test("merge", function(assert) { - var a = { a: "foo" } - var b = { b: "bar" } - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("replace", function(assert) { - var a = { a: "foo" } - var b = { a: "bar" } - - assert.deepEqual(extend(a, b), { a: "bar" }) - assert.end() -}) - -test("undefined", function(assert) { - var a = { a: undefined } - var b = { b: "foo" } - - assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) - assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) - assert.end() -}) - -test("handle 0", function(assert) { - var a = { a: "default" } - var b = { a: 0 } - - assert.deepEqual(extend(a, b), { a: 0 }) - assert.deepEqual(extend(b, a), { a: "default" }) - assert.end() -}) - -test("is immutable", function (assert) { - var record = {} - - extend(record, { foo: "bar" }) - assert.equal(record.foo, undefined) - assert.end() -}) - -test("null as argument", function (assert) { - var a = { foo: "bar" } - var b = null - var c = void 0 - - assert.deepEqual(extend(b, a, c), { foo: "bar" }) - assert.end() -}) - -test("mutable", function (assert) { - var a = { foo: "bar" } - - mutableExtend(a, { bar: "baz" }) - - assert.equal(a.bar, "baz") - assert.end() -}) diff --git a/node_modules/brfs/node_modules/through2/package.json b/node_modules/brfs/node_modules/through2/package.json deleted file mode 100644 index 035e864..0000000 --- a/node_modules/brfs/node_modules/through2/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "through2", - "version": "0.4.2", - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "main": "through2.js", - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/rvagg/through2.git" - }, - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "author": { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - "license": "MIT", - "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "bl": "~0.6.0", - "stream-spigot": "~3.0.1", - "brtapsauce": "~0.2.2" - }, - "readme": "# through2\n\n\n\n[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/)\n\n\n\n**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise**\n\nInspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`.\n\nNote: A **Streams3** version of through2 is available in npm with the tag `\"1.0\"` rather than `\"latest\"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations [here](http://www.nearform.com/nodecrunch/dont-use-nodes-core-stream-module).\n\n```js\nfs.createReadStream('ex.txt')\n .pipe(through2(function (chunk, enc, callback) {\n\n for (var i = 0; i < chunk.length; i++)\n if (chunk[i] == 97)\n chunk[i] = 122 // swap 'a' for 'z'\n\n this.push(chunk)\n\n callback()\n\n }))\n .pipe(fs.createWriteStream('out.txt'))\n```\n\nOr object streams:\n\n```js\nvar all = []\n\nfs.createReadStream('data.csv')\n .pipe(csv2())\n .pipe(through2.obj(function (chunk, enc, callback) {\n\n var data = {\n name : chunk[0]\n , address : chunk[3]\n , phone : chunk[10]\n }\n\n this.push(data)\n\n callback()\n\n }))\n .on('data', function (data) {\n all.push(data)\n })\n .on('end', function () {\n doSomethingSpecial(all)\n })\n```\n\nNote that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`.\n\n## API\n\nthrough2([ options, ] [ transformFunction ] [, flushFunction ])\n\nConsult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`).\n\n### options\n\nThe options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`).\n\nThe `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call:\n\n```js\nfs.createReadStream('/tmp/important.dat')\n .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) {\n\n this.push(new Buffer('wut?'))\n cb()\n\n })\n .pipe(fs.createWriteStream('/tmp/wut.txt'))\n```\n\n### transformFunction\n\nThe `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk.\n\nTo queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on.\n\nIf you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream.\n\n### flushFunction\n\nThe optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress.\n\nthrough2.ctor([ options, ] transformFunction[, flushFunction ])\n\nInstead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances.\n\n```js\nvar FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) {\n if (record.temp != null && record.unit = \"F\") {\n record.temp = ( ( record.temp - 32 ) * 5 ) / 9\n record.unit = \"C\"\n }\n this.push(record)\n callback()\n})\n\n// Create instances of FToC like so:\nvar converter = new FToC()\n// Or:\nvar converter = FToC()\n// Or specify/override options when you instantiate, if you prefer:\nvar converter = FToC({objectMode: true})\n```\n\n## See Also\n\n - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams.\n - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams.\n - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams.\n - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies.\n\n## License\n\n**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "homepage": "https://github.com/rvagg/through2", - "_id": "through2@0.4.2", - "_from": "through2@>=0.4.1 <0.5.0" -} diff --git a/node_modules/brfs/node_modules/through2/through2.js b/node_modules/brfs/node_modules/through2/through2.js deleted file mode 100644 index c110484..0000000 --- a/node_modules/brfs/node_modules/through2/through2.js +++ /dev/null @@ -1,78 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new Transform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - Transform.call(this, this.options) - } - - inherits(Through2, Transform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new Transform(xtend({ objectMode: true }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/node_modules/brfs/package.json b/node_modules/brfs/package.json deleted file mode 100644 index 920d5db..0000000 --- a/node_modules/brfs/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "brfs", - "version": "1.2.0", - "description": "browserify fs.readFileSync() static asset inliner", - "main": "index.js", - "bin": { - "brfs": "bin/cmd.js" - }, - "dependencies": { - "quote-stream": "~0.0.0", - "static-module": "^1.0.0", - "through2": "~0.4.1" - }, - "devDependencies": { - "browserify": "^4.2.0", - "concat-stream": "^1.4.5", - "tap": "~0.4.8", - "through": "^2.3.4" - }, - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/brfs.git" - }, - "homepage": "https://github.com/substack/brfs", - "keywords": [ - "browserify", - "browserify-transform", - "fs", - "readFileSync", - "plugin", - "static", - "asset", - "bundle", - "base64" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "gitHead": "0c95244d2b328a4aca1ec7b3afe77aee8c4a10cd", - "bugs": { - "url": "https://github.com/substack/brfs/issues" - }, - "_id": "brfs@1.2.0", - "_shasum": "9c486f9043e87dbe8f28e279dfd65c3878111010", - "_from": "brfs@*", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "dist": { - "shasum": "9c486f9043e87dbe8f28e279dfd65c3878111010", - "tarball": "http://registry.npmjs.org/brfs/-/brfs-1.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/brfs/-/brfs-1.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/brfs/readme.markdown b/node_modules/brfs/readme.markdown deleted file mode 100644 index cf2f1c4..0000000 --- a/node_modules/brfs/readme.markdown +++ /dev/null @@ -1,162 +0,0 @@ -# brfs - -fs.readFileSync() and fs.readFile() static asset browserify transform - -[![build status](https://secure.travis-ci.org/substack/brfs.png)](http://travis-ci.org/substack/brfs) - -This module is a plugin for [browserify](http://browserify.org) to parse the AST -for `fs.readFileSync()` calls so that you can inline file contents into your -bundles. - -Even though this module is intended for use with browserify, nothing about it is -particularly specific to browserify so it should be generally useful in other -projects. - -# example - -for a main.js: - -``` js -var fs = require('fs'); -var html = fs.readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); -``` - -and a robot.html: - -``` html -beep boop -``` - -first `npm install brfs` into your project, then: - -## on the command-line - -``` -$ browserify -t brfs example/main.js > bundle.js -``` - -now in the bundle output file, - -``` js -var html = fs.readFileSync(__dirname + '/robot.html', 'utf8'); -``` - -turns into: - -``` js -var html = "beep boop\n"; -``` - -## or with the api - -``` js -var browserify = require('browserify'); -var fs = require('fs'); - -var b = browserify('example/main.js'); -b.transform('brfs'); - -b.bundle().pipe(fs.createWriteStream('bundle.js')); -``` - -## async - -You can also use `fs.readFile()`: - -``` js -var fs = require('fs'); -fs.readFile(__dirname + '/robot.html', 'utf8', function (err, html) { - console.log(html); -}); -``` - -When you run this code through brfs, it turns into: - -``` js -var fs = require('fs'); -process.nextTick(function () {(function (err, html) { - console.log(html); -})(null,"beep boop\n")}); -``` - -# methods - -brfs looks for: - -* `fs.readFileSync(pathExpr, enc='utf8')` -* `fs.readFile(pathExpr, enc=null, cb)` -* `fs.readdirSync(pathExpr, cb)` -* `fs.readdir(pathExpr, cb)` - -The `pathExpr` function is evaluated as an expression with `__dirname` and -`__filename` variables available. - -Just like node, the default encoding is `null` and will give back a `Buffer`. -If you want differently-encoded file contents for your inline content you can -set `enc` to `'utf8'`, `'base64'`, or `'hex'`. - -In async mode when a callback `cb` is given, the contents of `pathExpr` are -inlined into the source inside of a `process.nextTick()` call. - -When you use a `'file'`-event aware watcher such as -[watchify](https://npmjs.org/package/watchify), the inlined assets will be -updated automatically. - -If you want to use this plugin directly, not through browserify, the api -follows. - -``` js -var brfs = require('brfs') -``` - -## var tr = brfs(file, opts) - -Return a through stream `tr` inlining `fs.readFileSync()` file contents -in-place. - -Optionally, you can set which `opts.vars` will be used in the -[static argument evaluation](https://npmjs.org/package/static-eval) -in addition to `__dirname` and `__filename`. - -# events - -## tr.on('file', function (file) {}) - -For every file included with `fs.readFileSync()` or `fs.readFile()`, the `tr` -instance emits a `'file'` event with the `file` path. - -# usage - -A tiny command-line program ships with this module to make debugging easier. - -``` -usage: - - brfs file - - Inline `fs.readFileSync()` calls from `file`, printing the transformed file - contents to stdout. - - brfs - brfs - - - Inline `fs.readFileSync()` calls from stdin, printing the transformed file - contents to stdout. - -``` - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install brfs -``` - -then use `-t brfs` with the browserify command or use `.transform('brfs')` from -the browserify api. - -# license - -MIT diff --git a/node_modules/brfs/test/ag.js b/node_modules/brfs/test/ag.js deleted file mode 100644 index 003c1c4..0000000 --- a/node_modules/brfs/test/ag.js +++ /dev/null @@ -1,23 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -test('skip parsing json', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/ag.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal('

abcdefg

\n', msg); - } -}); diff --git a/node_modules/brfs/test/async.js b/node_modules/brfs/test/async.js deleted file mode 100644 index e6dde44..0000000 --- a/node_modules/brfs/test/async.js +++ /dev/null @@ -1,48 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -test('async', function (t) { - t.plan(1); - var b = browserify(__dirname + '/files/async.js'); - b.transform(path.dirname(__dirname)); - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { - setTimeout: setTimeout, - console: { log: log } - }); - }); - function log (msg) { t.equal(msg, 'what\n') } -}); - -test('async encoding', function (t) { - t.plan(1); - var b = browserify(__dirname + '/files/async_encoding.js'); - b.transform(path.dirname(__dirname)); - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { - setTimeout: setTimeout, - console: { log: log } - }); - }); - function log (msg) { t.equal(msg, '776861740a') } -}); - -test('async string encoding', function (t) { - t.plan(1); - var b = browserify(__dirname + '/files/async_str_encoding.js'); - b.transform(path.dirname(__dirname)); - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { - setTimeout: setTimeout, - console: { log: log } - }); - }); - function log (msg) { t.equal(msg, '776861740a') } -}); diff --git a/node_modules/brfs/test/buffer.js b/node_modules/brfs/test/buffer.js deleted file mode 100644 index 20bbf7f..0000000 --- a/node_modules/brfs/test/buffer.js +++ /dev/null @@ -1,26 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var path = require('path'); - -test('sync string encoding', function (t) { - t.plan(2); - var b = browserify(__dirname + '/files/buffer.js'); - b.require('buffer', { expose: 'buffer' }); - b.transform(path.dirname(__dirname)); - b.bundle(function (err, src) { - if (err) t.fail(err); - var context = { - setTimeout: setTimeout, - console: { log: log } - }; - var buffers = []; - vm.runInNewContext(src, context); - - t.ok(context.require('buffer').Buffer.isBuffer(buffers[0]), 'isBuffer'); - t.equal(buffers[0].toString('utf8'), 'beep boop\n'); - - function log (msg) { buffers.push(msg) } - }); -}); diff --git a/node_modules/brfs/test/bundle.js b/node_modules/brfs/test/bundle.js deleted file mode 100644 index 20f0721..0000000 --- a/node_modules/brfs/test/bundle.js +++ /dev/null @@ -1,25 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -test('bundle a file', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/main.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal(html, msg); - } -}); diff --git a/node_modules/brfs/test/cmd.js b/node_modules/brfs/test/cmd.js deleted file mode 100644 index 210ad51..0000000 --- a/node_modules/brfs/test/cmd.js +++ /dev/null @@ -1,26 +0,0 @@ -var test = require('tap').test; -var exec = require('child_process').exec; - -var vm = require('vm'); -var fs = require('fs'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -test('cmd.js', function (t) { - t.plan(1); - exec(__dirname + '/../bin/cmd.js ' + __dirname + '/files/main.js', - function (error, stdout, stderr) { - if (error !== null) { - t.fail(); - } else { - vm.runInNewContext(stdout, { - require: function () {}, - console: { log: log } - }); - function log (msg) { - t.equal(html, msg); - }; - }; - } - ); -}); \ No newline at end of file diff --git a/node_modules/brfs/test/dynamic_read_concat.js b/node_modules/brfs/test/dynamic_read_concat.js deleted file mode 100644 index ed52fcd..0000000 --- a/node_modules/brfs/test/dynamic_read_concat.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); -var path = require('path'); - -test('dynamically loaded file gets skipped', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/dynamic_read_concat'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - else t.ok(true, 'build success'); - }); - -}); diff --git a/node_modules/brfs/test/dynamic_read_no_concat.js b/node_modules/brfs/test/dynamic_read_no_concat.js deleted file mode 100644 index 9b8be2c..0000000 --- a/node_modules/brfs/test/dynamic_read_no_concat.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); -var path = require('path'); - -test('dynamically loaded file gets skipped', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/dynamic_read_no_concat.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - else t.ok(true, 'build success'); - }); - -}); diff --git a/node_modules/brfs/test/encoding.js b/node_modules/brfs/test/encoding.js deleted file mode 100644 index e632d72..0000000 --- a/node_modules/brfs/test/encoding.js +++ /dev/null @@ -1,19 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var path = require('path'); - -test('sync string encoding', function (t) { - t.plan(1); - var b = browserify(__dirname + '/files/encoding.js'); - b.transform(path.dirname(__dirname)); - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { - setTimeout: setTimeout, - console: { log: log } - }); - }); - function log (msg) { t.equal(msg, '3c623e6265657020626f6f703c2f623e0a') } -}); diff --git a/node_modules/brfs/test/files/ag.js b/node_modules/brfs/test/files/ag.js deleted file mode 100644 index c908da9..0000000 --- a/node_modules/brfs/test/files/ag.js +++ /dev/null @@ -1,5 +0,0 @@ -var fs = require('fs'); -var pre = fs.readFileSync(__dirname + '/ag_pre.html', 'utf8'); -var post = fs.readFileSync(__dirname + '/ag_post.html', 'utf8'); -var ag = require('./ag.json'); -console.log(pre + Object.keys(ag).sort().join('') + post); diff --git a/node_modules/brfs/test/files/ag.json b/node_modules/brfs/test/files/ag.json deleted file mode 100644 index 8e3f514..0000000 --- a/node_modules/brfs/test/files/ag.json +++ /dev/null @@ -1 +0,0 @@ -{"a":1,"b":2,"c":2,"d":3,"e":4,"f":5,"g":6} diff --git a/node_modules/brfs/test/files/ag_post.html b/node_modules/brfs/test/files/ag_post.html deleted file mode 100644 index 77205ff..0000000 --- a/node_modules/brfs/test/files/ag_post.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/node_modules/brfs/test/files/ag_pre.html b/node_modules/brfs/test/files/ag_pre.html deleted file mode 100644 index 9689216..0000000 --- a/node_modules/brfs/test/files/ag_pre.html +++ /dev/null @@ -1 +0,0 @@ -

\ No newline at end of file diff --git a/node_modules/brfs/test/files/async.js b/node_modules/brfs/test/files/async.js deleted file mode 100644 index d721b54..0000000 --- a/node_modules/brfs/test/files/async.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -fs.readFile(__dirname + '/async.txt', 'utf8', function (err, txt) { - console.log(txt); -}); diff --git a/node_modules/brfs/test/files/async.txt b/node_modules/brfs/test/files/async.txt deleted file mode 100644 index f510eb2..0000000 --- a/node_modules/brfs/test/files/async.txt +++ /dev/null @@ -1 +0,0 @@ -what diff --git a/node_modules/brfs/test/files/async_encoding.js b/node_modules/brfs/test/files/async_encoding.js deleted file mode 100644 index 30ee9c6..0000000 --- a/node_modules/brfs/test/files/async_encoding.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -fs.readFile(__dirname + '/async.txt', { encoding: 'hex' }, function (err, txt) { - console.log(txt); -}); diff --git a/node_modules/brfs/test/files/async_str_encoding.js b/node_modules/brfs/test/files/async_str_encoding.js deleted file mode 100644 index 12b1c37..0000000 --- a/node_modules/brfs/test/files/async_str_encoding.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -fs.readFile(__dirname + '/async.txt', 'hex', function (err, txt) { - console.log(txt); -}); diff --git a/node_modules/brfs/test/files/buffer.js b/node_modules/brfs/test/files/buffer.js deleted file mode 100644 index 9d738af..0000000 --- a/node_modules/brfs/test/files/buffer.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var txt = fs.readFileSync(__dirname + '/robot.html'); -console.log(txt); diff --git a/node_modules/brfs/test/files/dynamic_read_concat.js b/node_modules/brfs/test/files/dynamic_read_concat.js deleted file mode 100644 index 9c930e3..0000000 --- a/node_modules/brfs/test/files/dynamic_read_concat.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var dynamicallyCreatedFilename = path.join('/files/', 'somefile'); -var stuff = fs.readFileSync(__dirname + dynamicallyCreatedFilename + __dirname, 'utf8'); diff --git a/node_modules/brfs/test/files/dynamic_read_no_concat.js b/node_modules/brfs/test/files/dynamic_read_no_concat.js deleted file mode 100644 index 68ad56f..0000000 --- a/node_modules/brfs/test/files/dynamic_read_no_concat.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var dynamicallyCreatedFilename = path.join('/files/', 'somefile'); -var stuff = fs.readFileSync(dynamicallyCreatedFilename, 'utf8'); diff --git a/node_modules/brfs/test/files/encoding.js b/node_modules/brfs/test/files/encoding.js deleted file mode 100644 index b34627d..0000000 --- a/node_modules/brfs/test/files/encoding.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -var txt = fs.readFileSync(__dirname + '/robot.html', { encoding: 'hex' }); - -console.log(txt); \ No newline at end of file diff --git a/node_modules/brfs/test/files/hoist.js b/node_modules/brfs/test/files/hoist.js deleted file mode 100644 index 23a86b7..0000000 --- a/node_modules/brfs/test/files/hoist.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var html = fs.readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/test/files/inline.js b/node_modules/brfs/test/files/inline.js deleted file mode 100644 index 6a0c4fc..0000000 --- a/node_modules/brfs/test/files/inline.js +++ /dev/null @@ -1,2 +0,0 @@ -var html = require('fs').readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/test/files/main.js b/node_modules/brfs/test/files/main.js deleted file mode 100644 index 23a86b7..0000000 --- a/node_modules/brfs/test/files/main.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var html = fs.readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/test/files/multi_var.js b/node_modules/brfs/test/files/multi_var.js deleted file mode 100644 index 90b3444..0000000 --- a/node_modules/brfs/test/files/multi_var.js +++ /dev/null @@ -1,3 +0,0 @@ -var x = 5, y = require('fs'), z = 555; -var html = y.readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/test/files/non_fs.js b/node_modules/brfs/test/files/non_fs.js deleted file mode 100644 index 38dc9fc..0000000 --- a/node_modules/brfs/test/files/non_fs.js +++ /dev/null @@ -1,3 +0,0 @@ -var blarg = require('fs'); -var html = blarg.readFileSync(__dirname + '/robot.html', 'utf8'); -console.log(html); diff --git a/node_modules/brfs/test/files/path_join.js b/node_modules/brfs/test/files/path_join.js deleted file mode 100644 index 0735834..0000000 --- a/node_modules/brfs/test/files/path_join.js +++ /dev/null @@ -1,4 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var html = fs.readFileSync(path.join(__dirname, 'robot.html'), 'utf8'); -console.log(html); diff --git a/node_modules/brfs/test/files/readdir-sync.js b/node_modules/brfs/test/files/readdir-sync.js deleted file mode 100644 index 830725f..0000000 --- a/node_modules/brfs/test/files/readdir-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); - -console.log(fs.readdirSync(__dirname)); diff --git a/node_modules/brfs/test/files/readdir.js b/node_modules/brfs/test/files/readdir.js deleted file mode 100644 index b647260..0000000 --- a/node_modules/brfs/test/files/readdir.js +++ /dev/null @@ -1,6 +0,0 @@ -var fs = require('fs'); - -fs.readdir(__dirname, function(err, files) { - if (err) throw err; - console.log(files); -}); diff --git a/node_modules/brfs/test/files/robot.html b/node_modules/brfs/test/files/robot.html deleted file mode 100644 index 9e6d2ab..0000000 --- a/node_modules/brfs/test/files/robot.html +++ /dev/null @@ -1 +0,0 @@ -beep boop diff --git a/node_modules/brfs/test/files/tr.beep b/node_modules/brfs/test/files/tr.beep deleted file mode 100644 index 099c81a..0000000 --- a/node_modules/brfs/test/files/tr.beep +++ /dev/null @@ -1,3 +0,0 @@ -var fs = require('fs'); -var html = fs.readFileSync(__dirname + '/tr.html', 'utf8'); -console.log((FN(){ return html.length })()); diff --git a/node_modules/brfs/test/files/tr.html b/node_modules/brfs/test/files/tr.html deleted file mode 100644 index 23b6223..0000000 --- a/node_modules/brfs/test/files/tr.html +++ /dev/null @@ -1 +0,0 @@ -

abc

diff --git a/node_modules/brfs/test/hoist.js b/node_modules/brfs/test/hoist.js deleted file mode 100644 index f301790..0000000 --- a/node_modules/brfs/test/hoist.js +++ /dev/null @@ -1,25 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -test('hoisted fs declaration', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/hoist.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal(html, msg); - } -}); diff --git a/node_modules/brfs/test/inline.js b/node_modules/brfs/test/inline.js deleted file mode 100644 index 2fc436c..0000000 --- a/node_modules/brfs/test/inline.js +++ /dev/null @@ -1,25 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -test('bundle a file', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/inline.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal(html, msg); - } -}); diff --git a/node_modules/brfs/test/multi_var.js b/node_modules/brfs/test/multi_var.js deleted file mode 100644 index bd89aa7..0000000 --- a/node_modules/brfs/test/multi_var.js +++ /dev/null @@ -1,27 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -test('multiple var assignments', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/multi_var.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - //if (err) t.fail(err); -console.error('NOT PRESENTLY WORKING: ' + err); -return t.ok(true); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal(html, msg); - } -}); diff --git a/node_modules/brfs/test/non_fs.js b/node_modules/brfs/test/non_fs.js deleted file mode 100644 index 67f205b..0000000 --- a/node_modules/brfs/test/non_fs.js +++ /dev/null @@ -1,25 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -test('bundle a file', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/non_fs.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal(html, msg); - } -}); diff --git a/node_modules/brfs/test/path_join.js b/node_modules/brfs/test/path_join.js deleted file mode 100644 index 5f521fe..0000000 --- a/node_modules/brfs/test/path_join.js +++ /dev/null @@ -1,25 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -var html = fs.readFileSync(__dirname + '/files/robot.html', 'utf8'); - -if (false) test('path.join', function (t) { - t.plan(1); - - var b = browserify(); - b.add(__dirname + '/files/path_join.js'); - b.transform(path.dirname(__dirname)); - - b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - - function log (msg) { - t.equal(html, msg); - } -}); diff --git a/node_modules/brfs/test/readdir.js b/node_modules/brfs/test/readdir.js deleted file mode 100644 index 7be2cfc..0000000 --- a/node_modules/brfs/test/readdir.js +++ /dev/null @@ -1,43 +0,0 @@ -var browserify = require('browserify'); -var test = require('tap').test; - -var path = require('path'); -var vm = require('vm'); -var fs = require('fs'); - -test('readdir', function(t) { - t.plan(1); - - var expected = fs.readdirSync(__dirname + '/files'); - var b = browserify(__dirname + '/files/readdir.js'); - b.transform(path.dirname(__dirname)); - b.bundle(function(err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { - console: { log: log }, - setTimeout: setTimeout - }); - }); - - function log(actual) { - t.deepEqual(expected, actual); - } -}); - -test('readdirSync', function(t) { - t.plan(1); - - var expected = fs.readdirSync(__dirname + '/files'); - var b = browserify(__dirname + '/files/readdir-sync.js'); - b.transform(path.dirname(__dirname)); - b.bundle(function(err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { - console: { log: log } - }); - }); - - function log(actual) { - t.deepEqual(expected, actual); - } -}); diff --git a/node_modules/brfs/test/tr.js b/node_modules/brfs/test/tr.js deleted file mode 100644 index 3a9b263..0000000 --- a/node_modules/brfs/test/tr.js +++ /dev/null @@ -1,41 +0,0 @@ -var test = require('tap').test; -var browserify = require('browserify'); -var through = require('through'); - -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); - -test('parse non-js, non-json files', function (t) { - t.plan(2); - - var b = browserify(); - b.add(__dirname + '/files/tr.beep'); - b.transform(function (file) { - var buffers = []; - if (!/\.beep$/.test(file)) return through(); - return through(write, end); - - function write (buf) { buffers.push(buf) } - function end () { - var src = Buffer.concat(buffers).toString('utf8'); - this.queue(src.replace(/\bFN\b/g, 'function')); - this.queue(null); - } - }); - b.transform(path.dirname(__dirname)); - - var bs = b.bundle(function (err, src) { - if (err) t.fail(err); - vm.runInNewContext(src, { console: { log: log } }); - }); - bs.on('transform', function (tr) { - tr.on('file', function (file) { - t.equal(file, __dirname + '/files/tr.html'); - }); - }); - - function log (msg) { - t.equal(13, msg); - } -}); diff --git a/node_modules/express/History.md b/node_modules/express/History.md deleted file mode 100644 index f48fa49..0000000 --- a/node_modules/express/History.md +++ /dev/null @@ -1,2497 +0,0 @@ -4.10.4 / 2014-11-24 -=================== - - * Fix `res.sendfile` logging standard write errors - -4.10.3 / 2014-11-23 -=================== - - * Fix `res.sendFile` logging standard write errors - * deps: etag@~1.5.1 - * deps: proxy-addr@~1.0.4 - - deps: ipaddr.js@0.1.5 - * deps: qs@2.3.3 - - Fix `arrayLimit` behavior - -4.10.2 / 2014-11-09 -=================== - - * Correctly invoke async router callback asynchronously - * deps: accepts@~1.1.3 - - deps: mime-types@~2.0.3 - * deps: type-is@~1.5.3 - - deps: mime-types@~2.0.3 - -4.10.1 / 2014-10-28 -=================== - - * Fix handling of URLs containing `://` in the path - * deps: qs@2.3.2 - - Fix parsing of mixed objects and values - -4.10.0 / 2014-10-23 -=================== - - * Add support for `app.set('views', array)` - - Views are looked up in sequence in array of directories - * Fix `res.send(status)` to mention `res.sendStatus(status)` - * Fix handling of invalid empty URLs - * Use `content-disposition` module for `res.attachment`/`res.download` - - Sends standards-compliant `Content-Disposition` header - - Full Unicode support - * Use `path.resolve` in view lookup - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: etag@~1.5.0 - - Improve string performance - - Slightly improve speed for weak ETags over 1KB - * deps: finalhandler@0.3.2 - - Terminate in progress response only on error - - Use `on-finished` to determine request status - - deps: debug@~2.1.0 - - deps: on-finished@~2.1.1 - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - * deps: qs@2.3.0 - - Fix parsing of mixed implicit and explicit arrays - * deps: send@0.10.1 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - - deps: on-finished@~2.1.1 - * deps: serve-static@~1.7.1 - - deps: send@0.10.1 - -4.9.8 / 2014-10-17 -================== - - * Fix `res.redirect` body when redirect status specified - * deps: accepts@~1.1.2 - - Fix error when media type has invalid parameter - - deps: negotiator@0.4.9 - -4.9.7 / 2014-10-10 -================== - - * Fix using same param name in array of paths - -4.9.6 / 2014-10-08 -================== - - * deps: accepts@~1.1.1 - - deps: mime-types@~2.0.2 - - deps: negotiator@0.4.8 - * deps: serve-static@~1.6.4 - - Fix redirect loop when index file serving disabled - * deps: type-is@~1.5.2 - - deps: mime-types@~2.0.2 - -4.9.5 / 2014-09-24 -================== - - * deps: etag@~1.4.0 - * deps: proxy-addr@~1.0.3 - - Use `forwarded` npm module - * deps: send@0.9.3 - - deps: etag@~1.4.0 - * deps: serve-static@~1.6.3 - - deps: send@0.9.3 - -4.9.4 / 2014-09-19 -================== - - * deps: qs@2.2.4 - - Fix issue with object keys starting with numbers truncated - -4.9.3 / 2014-09-18 -================== - - * deps: proxy-addr@~1.0.2 - - Fix a global leak when multiple subnets are trusted - - deps: ipaddr.js@0.1.3 - -4.9.2 / 2014-09-17 -================== - - * Fix regression for empty string `path` in `app.use` - * Fix `router.use` to accept array of middleware without path - * Improve error message for bad `app.use` arguments - -4.9.1 / 2014-09-16 -================== - - * Fix `app.use` to accept array of middleware without path - * deps: depd@0.4.5 - * deps: etag@~1.3.1 - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - * deps: serve-static@~1.6.2 - - deps: send@0.9.2 - -4.9.0 / 2014-09-08 -================== - - * Add `res.sendStatus` - * Invoke callback for sendfile when client aborts - - Applies to `res.sendFile`, `res.sendfile`, and `res.download` - - `err` will be populated with request aborted error - * Support IP address host in `req.subdomains` - * Use `etag` to generate `ETag` headers - * deps: accepts@~1.1.0 - - update `mime-types` - * deps: cookie-signature@1.0.5 - * deps: debug@~2.0.0 - * deps: finalhandler@0.2.0 - - Set `X-Content-Type-Options: nosniff` header - - deps: debug@~2.0.0 - * deps: fresh@0.2.4 - * deps: media-typer@0.3.0 - - Throw error when parameter format invalid on parse - * deps: qs@2.2.3 - - Fix issue where first empty value in array is discarded - * deps: range-parser@~1.0.2 - * deps: send@0.9.1 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - - deps: fresh@0.2.4 - * deps: serve-static@~1.6.1 - - Add `lastModified` option - - deps: send@0.9.1 - * deps: type-is@~1.5.1 - - fix `hasbody` to be true for `content-length: 0` - - deps: media-typer@0.3.0 - - deps: mime-types@~2.0.1 - * deps: vary@~1.0.0 - - Accept valid `Vary` header string as `field` - -4.8.8 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - * deps: serve-static@~1.5.4 - - deps: send@0.8.5 - -4.8.7 / 2014-08-29 -================== - - * deps: qs@2.2.2 - - Remove unnecessary cloning - -4.8.6 / 2014-08-27 -================== - - * deps: qs@2.2.0 - - Array parsing fix - - Performance improvements - -4.8.5 / 2014-08-18 -================== - - * deps: send@0.8.3 - - deps: destroy@1.0.3 - - deps: on-finished@2.1.0 - * deps: serve-static@~1.5.3 - - deps: send@0.8.3 - -4.8.4 / 2014-08-14 -================== - - * deps: qs@1.2.2 - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - * deps: serve-static@~1.5.2 - - deps: send@0.8.2 - -4.8.3 / 2014-08-10 -================== - - * deps: parseurl@~1.3.0 - * deps: qs@1.2.1 - * deps: serve-static@~1.5.1 - - Fix parsing of weird `req.originalUrl` values - - deps: parseurl@~1.3.0 - - deps: utils-merge@1.0.0 - -4.8.2 / 2014-08-07 -================== - - * deps: qs@1.2.0 - - Fix parsing array of objects - -4.8.1 / 2014-08-06 -================== - - * fix incorrect deprecation warnings on `res.download` - * deps: qs@1.1.0 - - Accept urlencoded square brackets - - Accept empty values in implicit array notation - -4.8.0 / 2014-08-05 -================== - - * add `res.sendFile` - - accepts a file system path instead of a URL - - requires an absolute path or `root` option specified - * deprecate `res.sendfile` -- use `res.sendFile` instead - * support mounted app as any argument to `app.use()` - * deps: qs@1.0.2 - - Complete rewrite - - Limits array length to 20 - - Limits object depth to 5 - - Limits parameters to 1,000 - * deps: send@0.8.1 - - Add `extensions` option - * deps: serve-static@~1.5.0 - - Add `extensions` option - - deps: send@0.8.1 - -4.7.4 / 2014-08-04 -================== - - * fix `res.sendfile` regression for serving directory index files - * deps: send@0.7.4 - - Fix incorrect 403 on Windows and Node.js 0.11 - - Fix serving index files without root dir - * deps: serve-static@~1.4.4 - - deps: send@0.7.4 - -4.7.3 / 2014-08-04 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - * deps: serve-static@~1.4.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - - deps: send@0.7.3 - -4.7.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - * deps: send@0.7.2 - - deps: depd@0.4.4 - * deps: serve-static@~1.4.2 - -4.7.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - * deps: send@0.7.1 - - deps: depd@0.4.3 - * deps: serve-static@~1.4.1 - -4.7.0 / 2014-07-25 -================== - - * fix `req.protocol` for proxy-direct connections - * configurable query parser with `app.set('query parser', parser)` - - `app.set('query parser', 'extended')` parse with "qs" module - - `app.set('query parser', 'simple')` parse with "querystring" core module - - `app.set('query parser', false)` disable query string parsing - - `app.set('query parser', true)` enable simple parsing - * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead - * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead - * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: finalhandler@0.1.0 - - Respond after request fully read - - deps: debug@1.0.4 - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - Cap `maxAge` value to 1 year - - deps: debug@1.0.4 - - deps: depd@0.4.2 - * deps: serve-static@~1.4.0 - - deps: parseurl@~1.2.0 - - deps: send@0.7.0 - * perf: prevent multiple `Buffer` creation in `res.send` - -4.6.1 / 2014-07-12 -================== - - * fix `subapp.mountpath` regression for `app.use(subapp)` - -4.6.0 / 2014-07-11 -================== - - * accept multiple callbacks to `app.use()` - * add explicit "Rosetta Flash JSONP abuse" protection - - previous versions are not vulnerable; this is just explicit protection - * catch errors in multiple `req.param(name, fn)` handlers - * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead - * fix `res.send(status, num)` to send `num` as json (not error) - * remove unnecessary escaping when `res.jsonp` returns JSON response - * support non-string `path` in `app.use(path, fn)` - - supports array of paths - - supports `RegExp` - * router: fix optimization on router exit - * router: refactor location of `try` blocks - * router: speed up standard `app.use(fn)` - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - * deps: finalhandler@0.0.3 - - deps: debug@1.0.3 - * deps: methods@1.1.0 - - add `CONNECT` - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - * deps: path-to-regexp@0.1.3 - * deps: send@0.6.0 - - deps: debug@1.0.3 - * deps: serve-static@~1.3.2 - - deps: parseurl@~1.1.3 - - deps: send@0.6.0 - * perf: fix arguments reassign deopt in some `res` methods - -4.5.1 / 2014-07-06 -================== - - * fix routing regression when altering `req.method` - -4.5.0 / 2014-07-04 -================== - - * add deprecation message to non-plural `req.accepts*` - * add deprecation message to `res.send(body, status)` - * add deprecation message to `res.vary()` - * add `headers` option to `res.sendfile` - - use to set headers on successful file transfer - * add `mergeParams` option to `Router` - - merges `req.params` from parent routes - * add `req.hostname` -- correct name for what `req.host` returns - * deprecate things with `depd` module - * deprecate `req.host` -- use `req.hostname` instead - * fix behavior when handling request without routes - * fix handling when `route.all` is only route - * invoke `router.param()` only when route matches - * restore `req.params` after invoking router - * use `finalhandler` for final response handling - * use `media-typer` to alter content-type charset - * deps: accepts@~1.0.7 - * deps: send@0.5.0 - - Accept string for `maxage` (converted by `ms`) - - Include link in default redirect response - * deps: serve-static@~1.3.0 - - Accept string for `maxAge` (converted by `ms`) - - Add `setHeaders` option - - Include HTML link in redirect response - - deps: send@0.5.0 - * deps: type-is@~1.3.2 - -4.4.5 / 2014-06-26 -================== - - * deps: cookie-signature@1.0.4 - - fix for timing attacks - -4.4.4 / 2014-06-20 -================== - - * fix `res.attachment` Unicode filenames in Safari - * fix "trim prefix" debug message in `express:router` - * deps: accepts@~1.0.5 - * deps: buffer-crc32@0.2.3 - -4.4.3 / 2014-06-11 -================== - - * fix persistence of modified `req.params[name]` from `app.param()` - * deps: accepts@1.0.3 - - deps: negotiator@0.4.6 - * deps: debug@1.0.2 - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - * deps: serve-static@1.2.3 - - Do not throw un-catchable error on file open race condition - - deps: send@0.4.3 - -4.4.2 / 2014-06-09 -================== - - * fix catching errors from top-level handlers - * use `vary` module for `res.vary` - * deps: debug@1.0.1 - * deps: proxy-addr@1.0.1 - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - * deps: serve-static@1.2.2 - - fix "event emitter leak" warnings - - deps: send@0.4.2 - * deps: type-is@1.2.1 - -4.4.1 / 2014-06-02 -================== - - * deps: methods@1.0.1 - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - * deps: serve-static@1.2.1 - - use `escape-html` for escaping - - deps: send@0.4.1 - -4.4.0 / 2014-05-30 -================== - - * custom etag control with `app.set('etag', val)` - - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation - - `app.set('etag', 'weak')` weak tag - - `app.set('etag', 'strong')` strong etag - - `app.set('etag', false)` turn off - - `app.set('etag', true)` standard etag - * mark `res.send` ETag as weak and reduce collisions - * update accepts to 1.0.2 - - Fix interpretation when header not in request - * update send to 0.4.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: debug@0.8.1 - * update serve-static to 1.2.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: send@0.4.0 - -4.3.2 / 2014-05-28 -================== - - * fix handling of errors from `router.param()` callbacks - -4.3.1 / 2014-05-23 -================== - - * revert "fix behavior of multiple `app.VERB` for the same path" - - this caused a regression in the order of route execution - -4.3.0 / 2014-05-21 -================== - - * add `req.baseUrl` to access the path stripped from `req.url` in routes - * fix behavior of multiple `app.VERB` for the same path - * fix issue routing requests among sub routers - * invoke `router.param()` only when necessary instead of every match - * proper proxy trust with `app.set('trust proxy', trust)` - - `app.set('trust proxy', 1)` trust first hop - - `app.set('trust proxy', 'loopback')` trust loopback addresses - - `app.set('trust proxy', '10.0.0.1')` trust single IP - - `app.set('trust proxy', '10.0.0.1/16')` trust subnet - - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list - - `app.set('trust proxy', false)` turn off - - `app.set('trust proxy', true)` trust everything - * set proper `charset` in `Content-Type` for `res.send` - * update type-is to 1.2.0 - - support suffix matching - -4.2.0 / 2014-05-11 -================== - - * deprecate `app.del()` -- use `app.delete()` instead - * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead - - the edge-case `res.json(status, num)` requires `res.status(status).json(num)` - * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead - - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)` - * fix `req.next` when inside router instance - * include `ETag` header in `HEAD` requests - * keep previous `Content-Type` for `res.jsonp` - * support PURGE method - - add `app.purge` - - add `router.purge` - - include PURGE in `app.all` - * update debug to 0.8.0 - - add `enable()` method - - change from stderr to stdout - * update methods to 1.0.0 - - add PURGE - -4.1.2 / 2014-05-08 -================== - - * fix `req.host` for IPv6 literals - * fix `res.jsonp` error if callback param is object - -4.1.1 / 2014-04-27 -================== - - * fix package.json to reflect supported node version - -4.1.0 / 2014-04-24 -================== - - * pass options from `res.sendfile` to `send` - * preserve casing of headers in `res.header` and `res.set` - * support unicode file names in `res.attachment` and `res.download` - * update accepts to 1.0.1 - - deps: negotiator@0.4.0 - * update cookie to 0.1.2 - - Fix for maxAge == 0 - - made compat with expires field - * update send to 0.3.0 - - Accept API options in options object - - Coerce option types - - Control whether to generate etags - - Default directory access to 403 when index disabled - - Fix sending files with dots without root set - - Include file path in etag - - Make "Can't set headers after they are sent." catchable - - Send full entity-body for multi range requests - - Set etags to "weak" - - Support "If-Range" header - - Support multiple index paths - - deps: mime@1.2.11 - * update serve-static to 1.1.0 - - Accept options directly to `send` module - - Resolve relative paths at middleware setup - - Use parseurl to parse the URL from request - - deps: send@0.3.0 - * update type-is to 1.1.0 - - add non-array values support - - add `multipart` as a shorthand - -4.0.0 / 2014-04-09 -================== - - * remove: - - node 0.8 support - - connect and connect's patches except for charset handling - - express(1) - moved to [express-generator](https://github.com/expressjs/generator) - - `express.createServer()` - it has been deprecated for a long time. Use `express()` - - `app.configure` - use logic in your own app code - - `app.router` - is removed - - `req.auth` - use `basic-auth` instead - - `req.accepted*` - use `req.accepts*()` instead - - `res.location` - relative URL resolution is removed - - `res.charset` - include the charset in the content type when using `res.set()` - - all bundled middleware except `static` - * change: - - `app.route` -> `app.mountpath` when mounting an express app in another express app - - `json spaces` no longer enabled by default in development - - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings` - - `req.params` is now an object instead of an array - - `res.locals` is no longer a function. It is a plain js object. Treat it as such. - - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object - * refactor: - - `req.accepts*` with [accepts](https://github.com/expressjs/accepts) - - `req.is` with [type-is](https://github.com/expressjs/type-is) - - [path-to-regexp](https://github.com/component/path-to-regexp) - * add: - - `app.router()` - returns the app Router instance - - `app.route()` - Proxy to the app's `Router#route()` method to create a new route - - Router & Route - public API - -3.18.4 / 2014-11-23 -=================== - - * deps: connect@2.27.4 - - deps: body-parser@~1.9.3 - - deps: compression@~1.2.1 - - deps: errorhandler@~1.2.3 - - deps: express-session@~1.9.2 - - deps: qs@2.3.3 - - deps: serve-favicon@~2.1.7 - - deps: serve-static@~1.5.1 - - deps: type-is@~1.5.3 - * deps: etag@~1.5.1 - * deps: proxy-addr@~1.0.4 - - deps: ipaddr.js@0.1.5 - -3.18.3 / 2014-11-09 -=================== - - * deps: connect@2.27.3 - - Correctly invoke async callback asynchronously - - deps: csurf@~1.6.3 - -3.18.2 / 2014-10-28 -=================== - - * deps: connect@2.27.2 - - Fix handling of URLs containing `://` in the path - - deps: body-parser@~1.9.2 - - deps: qs@2.3.2 - -3.18.1 / 2014-10-22 -=================== - - * Fix internal `utils.merge` deprecation warnings - * deps: connect@2.27.1 - - deps: body-parser@~1.9.1 - - deps: express-session@~1.9.1 - - deps: finalhandler@0.3.2 - - deps: morgan@~1.4.1 - - deps: qs@2.3.0 - - deps: serve-static@~1.7.1 - * deps: send@0.10.1 - - deps: on-finished@~2.1.1 - -3.18.0 / 2014-10-17 -=================== - - * Use `content-disposition` module for `res.attachment`/`res.download` - - Sends standards-compliant `Content-Disposition` header - - Full Unicode support - * Use `etag` module to generate `ETag` headers - * deps: connect@2.27.0 - - Use `http-errors` module for creating errors - - Use `utils-merge` module for merging objects - - deps: body-parser@~1.9.0 - - deps: compression@~1.2.0 - - deps: connect-timeout@~1.4.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: express-session@~1.9.0 - - deps: finalhandler@0.3.1 - - deps: method-override@~2.3.0 - - deps: morgan@~1.4.0 - - deps: response-time@~2.2.0 - - deps: serve-favicon@~2.1.6 - - deps: serve-index@~1.5.0 - - deps: serve-static@~1.7.0 - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: send@0.10.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - -3.17.8 / 2014-10-15 -=================== - - * deps: connect@2.26.6 - - deps: compression@~1.1.2 - - deps: csurf@~1.6.2 - - deps: errorhandler@~1.2.2 - -3.17.7 / 2014-10-08 -=================== - - * deps: connect@2.26.5 - - Fix accepting non-object arguments to `logger` - - deps: serve-static@~1.6.4 - -3.17.6 / 2014-10-02 -=================== - - * deps: connect@2.26.4 - - deps: morgan@~1.3.2 - - deps: type-is@~1.5.2 - -3.17.5 / 2014-09-24 -=================== - - * deps: connect@2.26.3 - - deps: body-parser@~1.8.4 - - deps: serve-favicon@~2.1.5 - - deps: serve-static@~1.6.3 - * deps: proxy-addr@~1.0.3 - - Use `forwarded` npm module - * deps: send@0.9.3 - - deps: etag@~1.4.0 - -3.17.4 / 2014-09-19 -=================== - - * deps: connect@2.26.2 - - deps: body-parser@~1.8.3 - - deps: qs@2.2.4 - -3.17.3 / 2014-09-18 -=================== - - * deps: proxy-addr@~1.0.2 - - Fix a global leak when multiple subnets are trusted - - deps: ipaddr.js@0.1.3 - -3.17.2 / 2014-09-15 -=================== - - * Use `crc` instead of `buffer-crc32` for speed - * deps: connect@2.26.1 - - deps: body-parser@~1.8.2 - - deps: depd@0.4.5 - - deps: express-session@~1.8.2 - - deps: morgan@~1.3.1 - - deps: serve-favicon@~2.1.3 - - deps: serve-static@~1.6.2 - * deps: depd@0.4.5 - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - -3.17.1 / 2014-09-08 -=================== - - * Fix error in `req.subdomains` on empty host - -3.17.0 / 2014-09-08 -=================== - - * Support `X-Forwarded-Host` in `req.subdomains` - * Support IP address host in `req.subdomains` - * deps: connect@2.26.0 - - deps: body-parser@~1.8.1 - - deps: compression@~1.1.0 - - deps: connect-timeout@~1.3.0 - - deps: cookie-parser@~1.3.3 - - deps: cookie-signature@1.0.5 - - deps: csurf@~1.6.1 - - deps: debug@~2.0.0 - - deps: errorhandler@~1.2.0 - - deps: express-session@~1.8.1 - - deps: finalhandler@0.2.0 - - deps: fresh@0.2.4 - - deps: media-typer@0.3.0 - - deps: method-override@~2.2.0 - - deps: morgan@~1.3.0 - - deps: qs@2.2.3 - - deps: serve-favicon@~2.1.3 - - deps: serve-index@~1.2.1 - - deps: serve-static@~1.6.1 - - deps: type-is@~1.5.1 - - deps: vhost@~3.0.0 - * deps: cookie-signature@1.0.5 - * deps: debug@~2.0.0 - * deps: fresh@0.2.4 - * deps: media-typer@0.3.0 - - Throw error when parameter format invalid on parse - * deps: range-parser@~1.0.2 - * deps: send@0.9.1 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - - deps: fresh@0.2.4 - * deps: vary@~1.0.0 - - Accept valid `Vary` header string as `field` - -3.16.10 / 2014-09-04 -==================== - - * deps: connect@2.25.10 - - deps: serve-static@~1.5.4 - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - -3.16.9 / 2014-08-29 -=================== - - * deps: connect@2.25.9 - - deps: body-parser@~1.6.7 - - deps: qs@2.2.2 - -3.16.8 / 2014-08-27 -=================== - - * deps: connect@2.25.8 - - deps: body-parser@~1.6.6 - - deps: csurf@~1.4.1 - - deps: qs@2.2.0 - -3.16.7 / 2014-08-18 -=================== - - * deps: connect@2.25.7 - - deps: body-parser@~1.6.5 - - deps: express-session@~1.7.6 - - deps: morgan@~1.2.3 - - deps: serve-static@~1.5.3 - * deps: send@0.8.3 - - deps: destroy@1.0.3 - - deps: on-finished@2.1.0 - -3.16.6 / 2014-08-14 -=================== - - * deps: connect@2.25.6 - - deps: body-parser@~1.6.4 - - deps: qs@1.2.2 - - deps: serve-static@~1.5.2 - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - -3.16.5 / 2014-08-11 -=================== - - * deps: connect@2.25.5 - - Fix backwards compatibility in `logger` - -3.16.4 / 2014-08-10 -=================== - - * Fix original URL parsing in `res.location` - * deps: connect@2.25.4 - - Fix `query` middleware breaking with argument - - deps: body-parser@~1.6.3 - - deps: compression@~1.0.11 - - deps: connect-timeout@~1.2.2 - - deps: express-session@~1.7.5 - - deps: method-override@~2.1.3 - - deps: on-headers@~1.0.0 - - deps: parseurl@~1.3.0 - - deps: qs@1.2.1 - - deps: response-time@~2.0.1 - - deps: serve-index@~1.1.6 - - deps: serve-static@~1.5.1 - * deps: parseurl@~1.3.0 - -3.16.3 / 2014-08-07 -=================== - - * deps: connect@2.25.3 - - deps: multiparty@3.3.2 - -3.16.2 / 2014-08-07 -=================== - - * deps: connect@2.25.2 - - deps: body-parser@~1.6.2 - - deps: qs@1.2.0 - -3.16.1 / 2014-08-06 -=================== - - * deps: connect@2.25.1 - - deps: body-parser@~1.6.1 - - deps: qs@1.1.0 - -3.16.0 / 2014-08-05 -=================== - - * deps: connect@2.25.0 - - deps: body-parser@~1.6.0 - - deps: compression@~1.0.10 - - deps: csurf@~1.4.0 - - deps: express-session@~1.7.4 - - deps: qs@1.0.2 - - deps: serve-static@~1.5.0 - * deps: send@0.8.1 - - Add `extensions` option - -3.15.3 / 2014-08-04 -=================== - - * fix `res.sendfile` regression for serving directory index files - * deps: connect@2.24.3 - - deps: serve-index@~1.1.5 - - deps: serve-static@~1.4.4 - * deps: send@0.7.4 - - Fix incorrect 403 on Windows and Node.js 0.11 - - Fix serving index files without root dir - -3.15.2 / 2014-07-27 -=================== - - * deps: connect@2.24.2 - - deps: body-parser@~1.5.2 - - deps: depd@0.4.4 - - deps: express-session@~1.7.2 - - deps: morgan@~1.2.2 - - deps: serve-static@~1.4.2 - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - * deps: send@0.7.2 - - deps: depd@0.4.4 - -3.15.1 / 2014-07-26 -=================== - - * deps: connect@2.24.1 - - deps: body-parser@~1.5.1 - - deps: depd@0.4.3 - - deps: express-session@~1.7.1 - - deps: morgan@~1.2.1 - - deps: serve-index@~1.1.4 - - deps: serve-static@~1.4.1 - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - * deps: send@0.7.1 - - deps: depd@0.4.3 - -3.15.0 / 2014-07-22 -=================== - - * Fix `req.protocol` for proxy-direct connections - * Pass options from `res.sendfile` to `send` - * deps: connect@2.24.0 - - deps: body-parser@~1.5.0 - - deps: compression@~1.0.9 - - deps: connect-timeout@~1.2.1 - - deps: debug@1.0.4 - - deps: depd@0.4.2 - - deps: express-session@~1.7.0 - - deps: finalhandler@0.1.0 - - deps: method-override@~2.1.2 - - deps: morgan@~1.2.0 - - deps: multiparty@3.3.1 - - deps: parseurl@~1.2.0 - - deps: serve-static@~1.4.0 - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - Cap `maxAge` value to 1 year - - deps: debug@1.0.4 - - deps: depd@0.4.2 - -3.14.0 / 2014-07-11 -=================== - - * add explicit "Rosetta Flash JSONP abuse" protection - - previous versions are not vulnerable; this is just explicit protection - * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead - * fix `res.send(status, num)` to send `num` as json (not error) - * remove unnecessary escaping when `res.jsonp` returns JSON response - * deps: basic-auth@1.0.0 - - support empty password - - support empty username - * deps: connect@2.23.0 - - deps: debug@1.0.3 - - deps: express-session@~1.6.4 - - deps: method-override@~2.1.0 - - deps: parseurl@~1.1.3 - - deps: serve-static@~1.3.1 - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - * deps: methods@1.1.0 - - add `CONNECT` - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - -3.13.0 / 2014-07-03 -=================== - - * add deprecation message to `app.configure` - * add deprecation message to `req.auth` - * use `basic-auth` to parse `Authorization` header - * deps: connect@2.22.0 - - deps: csurf@~1.3.0 - - deps: express-session@~1.6.1 - - deps: multiparty@3.3.0 - - deps: serve-static@~1.3.0 - * deps: send@0.5.0 - - Accept string for `maxage` (converted by `ms`) - - Include link in default redirect response - -3.12.1 / 2014-06-26 -=================== - - * deps: connect@2.21.1 - - deps: cookie-parser@1.3.2 - - deps: cookie-signature@1.0.4 - - deps: express-session@~1.5.2 - - deps: type-is@~1.3.2 - * deps: cookie-signature@1.0.4 - - fix for timing attacks - -3.12.0 / 2014-06-21 -=================== - - * use `media-typer` to alter content-type charset - * deps: connect@2.21.0 - - deprecate `connect(middleware)` -- use `app.use(middleware)` instead - - deprecate `connect.createServer()` -- use `connect()` instead - - fix `res.setHeader()` patch to work with with get -> append -> set pattern - - deps: compression@~1.0.8 - - deps: errorhandler@~1.1.1 - - deps: express-session@~1.5.0 - - deps: serve-index@~1.1.3 - -3.11.0 / 2014-06-19 -=================== - - * deprecate things with `depd` module - * deps: buffer-crc32@0.2.3 - * deps: connect@2.20.2 - - deprecate `verify` option to `json` -- use `body-parser` npm module instead - - deprecate `verify` option to `urlencoded` -- use `body-parser` npm module instead - - deprecate things with `depd` module - - use `finalhandler` for final response handling - - use `media-typer` to parse `content-type` for charset - - deps: body-parser@1.4.3 - - deps: connect-timeout@1.1.1 - - deps: cookie-parser@1.3.1 - - deps: csurf@1.2.2 - - deps: errorhandler@1.1.0 - - deps: express-session@1.4.0 - - deps: multiparty@3.2.9 - - deps: serve-index@1.1.2 - - deps: type-is@1.3.1 - - deps: vhost@2.0.0 - -3.10.5 / 2014-06-11 -=================== - - * deps: connect@2.19.6 - - deps: body-parser@1.3.1 - - deps: compression@1.0.7 - - deps: debug@1.0.2 - - deps: serve-index@1.1.1 - - deps: serve-static@1.2.3 - * deps: debug@1.0.2 - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - -3.10.4 / 2014-06-09 -=================== - - * deps: connect@2.19.5 - - fix "event emitter leak" warnings - - deps: csurf@1.2.1 - - deps: debug@1.0.1 - - deps: serve-static@1.2.2 - - deps: type-is@1.2.1 - * deps: debug@1.0.1 - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: finished@1.2.1 - - deps: debug@1.0.1 - -3.10.3 / 2014-06-05 -=================== - - * use `vary` module for `res.vary` - * deps: connect@2.19.4 - - deps: errorhandler@1.0.2 - - deps: method-override@2.0.2 - - deps: serve-favicon@2.0.1 - * deps: debug@1.0.0 - -3.10.2 / 2014-06-03 -=================== - - * deps: connect@2.19.3 - - deps: compression@1.0.6 - -3.10.1 / 2014-06-03 -=================== - - * deps: connect@2.19.2 - - deps: compression@1.0.4 - * deps: proxy-addr@1.0.1 - -3.10.0 / 2014-06-02 -=================== - - * deps: connect@2.19.1 - - deprecate `methodOverride()` -- use `method-override` npm module instead - - deps: body-parser@1.3.0 - - deps: method-override@2.0.1 - - deps: multiparty@3.2.8 - - deps: response-time@2.0.0 - - deps: serve-static@1.2.1 - * deps: methods@1.0.1 - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - -3.9.0 / 2014-05-30 -================== - - * custom etag control with `app.set('etag', val)` - - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation - - `app.set('etag', 'weak')` weak tag - - `app.set('etag', 'strong')` strong etag - - `app.set('etag', false)` turn off - - `app.set('etag', true)` standard etag - * Include ETag in HEAD requests - * mark `res.send` ETag as weak and reduce collisions - * update connect to 2.18.0 - - deps: compression@1.0.3 - - deps: serve-index@1.1.0 - - deps: serve-static@1.2.0 - * update send to 0.4.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: debug@0.8.1 - -3.8.1 / 2014-05-27 -================== - - * update connect to 2.17.3 - - deps: body-parser@1.2.2 - - deps: express-session@1.2.1 - - deps: method-override@1.0.2 - -3.8.0 / 2014-05-21 -================== - - * keep previous `Content-Type` for `res.jsonp` - * set proper `charset` in `Content-Type` for `res.send` - * update connect to 2.17.1 - - fix `res.charset` appending charset when `content-type` has one - - deps: express-session@1.2.0 - - deps: morgan@1.1.1 - - deps: serve-index@1.0.3 - -3.7.0 / 2014-05-18 -================== - - * proper proxy trust with `app.set('trust proxy', trust)` - - `app.set('trust proxy', 1)` trust first hop - - `app.set('trust proxy', 'loopback')` trust loopback addresses - - `app.set('trust proxy', '10.0.0.1')` trust single IP - - `app.set('trust proxy', '10.0.0.1/16')` trust subnet - - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list - - `app.set('trust proxy', false)` turn off - - `app.set('trust proxy', true)` trust everything - * update connect to 2.16.2 - - deprecate `res.headerSent` -- use `res.headersSent` - - deprecate `res.on("header")` -- use on-headers module instead - - fix edge-case in `res.appendHeader` that would append in wrong order - - json: use body-parser - - urlencoded: use body-parser - - dep: bytes@1.0.0 - - dep: cookie-parser@1.1.0 - - dep: csurf@1.2.0 - - dep: express-session@1.1.0 - - dep: method-override@1.0.1 - -3.6.0 / 2014-05-09 -================== - - * deprecate `app.del()` -- use `app.delete()` instead - * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead - - the edge-case `res.json(status, num)` requires `res.status(status).json(num)` - * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead - - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)` - * support PURGE method - - add `app.purge` - - add `router.purge` - - include PURGE in `app.all` - * update connect to 2.15.0 - * Add `res.appendHeader` - * Call error stack even when response has been sent - * Patch `res.headerSent` to return Boolean - * Patch `res.headersSent` for node.js 0.8 - * Prevent default 404 handler after response sent - * dep: compression@1.0.2 - * dep: connect-timeout@1.1.0 - * dep: debug@^0.8.0 - * dep: errorhandler@1.0.1 - * dep: express-session@1.0.4 - * dep: morgan@1.0.1 - * dep: serve-favicon@2.0.0 - * dep: serve-index@1.0.2 - * update debug to 0.8.0 - * add `enable()` method - * change from stderr to stdout - * update methods to 1.0.0 - - add PURGE - * update mkdirp to 0.5.0 - -3.5.3 / 2014-05-08 -================== - - * fix `req.host` for IPv6 literals - * fix `res.jsonp` error if callback param is object - -3.5.2 / 2014-04-24 -================== - - * update connect to 2.14.5 - * update cookie to 0.1.2 - * update mkdirp to 0.4.0 - * update send to 0.3.0 - -3.5.1 / 2014-03-25 -================== - - * pin less-middleware in generated app - -3.5.0 / 2014-03-06 -================== - - * bump deps - -3.4.8 / 2014-01-13 -================== - - * prevent incorrect automatic OPTIONS responses #1868 @dpatti - * update binary and examples for jade 1.0 #1876 @yossi, #1877 @reqshark, #1892 @matheusazzi - * throw 400 in case of malformed paths @rlidwka - -3.4.7 / 2013-12-10 -================== - - * update connect - -3.4.6 / 2013-12-01 -================== - - * update connect (raw-body) - -3.4.5 / 2013-11-27 -================== - - * update connect - * res.location: remove leading ./ #1802 @kapouer - * res.redirect: fix `res.redirect('toString') #1829 @michaelficarra - * res.send: always send ETag when content-length > 0 - * router: add Router.all() method - -3.4.4 / 2013-10-29 -================== - - * update connect - * update supertest - * update methods - * express(1): replace bodyParser() with urlencoded() and json() #1795 @chirag04 - -3.4.3 / 2013-10-23 -================== - - * update connect - -3.4.2 / 2013-10-18 -================== - - * update connect - * downgrade commander - -3.4.1 / 2013-10-15 -================== - - * update connect - * update commander - * jsonp: check if callback is a function - * router: wrap encodeURIComponent in a try/catch #1735 (@lxe) - * res.format: now includes chraset @1747 (@sorribas) - * res.links: allow multiple calls @1746 (@sorribas) - -3.4.0 / 2013-09-07 -================== - - * add res.vary(). Closes #1682 - * update connect - -3.3.8 / 2013-09-02 -================== - - * update connect - -3.3.7 / 2013-08-28 -================== - - * update connect - -3.3.6 / 2013-08-27 -================== - - * Revert "remove charset from json responses. Closes #1631" (causes issues in some clients) - * add: req.accepts take an argument list - -3.3.4 / 2013-07-08 -================== - - * update send and connect - -3.3.3 / 2013-07-04 -================== - - * update connect - -3.3.2 / 2013-07-03 -================== - - * update connect - * update send - * remove .version export - -3.3.1 / 2013-06-27 -================== - - * update connect - -3.3.0 / 2013-06-26 -================== - - * update connect - * add support for multiple X-Forwarded-Proto values. Closes #1646 - * change: remove charset from json responses. Closes #1631 - * change: return actual booleans from req.accept* functions - * fix jsonp callback array throw - -3.2.6 / 2013-06-02 -================== - - * update connect - -3.2.5 / 2013-05-21 -================== - - * update connect - * update node-cookie - * add: throw a meaningful error when there is no default engine - * change generation of ETags with res.send() to GET requests only. Closes #1619 - -3.2.4 / 2013-05-09 -================== - - * fix `req.subdomains` when no Host is present - * fix `req.host` when no Host is present, return undefined - -3.2.3 / 2013-05-07 -================== - - * update connect / qs - -3.2.2 / 2013-05-03 -================== - - * update qs - -3.2.1 / 2013-04-29 -================== - - * add app.VERB() paths array deprecation warning - * update connect - * update qs and remove all ~ semver crap - * fix: accept number as value of Signed Cookie - -3.2.0 / 2013-04-15 -================== - - * add "view" constructor setting to override view behaviour - * add req.acceptsEncoding(name) - * add req.acceptedEncodings - * revert cookie signature change causing session race conditions - * fix sorting of Accept values of the same quality - -3.1.2 / 2013-04-12 -================== - - * add support for custom Accept parameters - * update cookie-signature - -3.1.1 / 2013-04-01 -================== - - * add X-Forwarded-Host support to `req.host` - * fix relative redirects - * update mkdirp - * update buffer-crc32 - * remove legacy app.configure() method from app template. - -3.1.0 / 2013-01-25 -================== - - * add support for leading "." in "view engine" setting - * add array support to `res.set()` - * add node 0.8.x to travis.yml - * add "subdomain offset" setting for tweaking `req.subdomains` - * add `res.location(url)` implementing `res.redirect()`-like setting of Location - * use app.get() for x-powered-by setting for inheritance - * fix colons in passwords for `req.auth` - -3.0.6 / 2013-01-04 -================== - - * add http verb methods to Router - * update connect - * fix mangling of the `res.cookie()` options object - * fix jsonp whitespace escape. Closes #1132 - -3.0.5 / 2012-12-19 -================== - - * add throwing when a non-function is passed to a route - * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses - * revert "add 'etag' option" - -3.0.4 / 2012-12-05 -================== - - * add 'etag' option to disable `res.send()` Etags - * add escaping of urls in text/plain in `res.redirect()` - for old browsers interpreting as html - * change crc32 module for a more liberal license - * update connect - -3.0.3 / 2012-11-13 -================== - - * update connect - * update cookie module - * fix cookie max-age - -3.0.2 / 2012-11-08 -================== - - * add OPTIONS to cors example. Closes #1398 - * fix route chaining regression. Closes #1397 - -3.0.1 / 2012-11-01 -================== - - * update connect - -3.0.0 / 2012-10-23 -================== - - * add `make clean` - * add "Basic" check to req.auth - * add `req.auth` test coverage - * add cb && cb(payload) to `res.jsonp()`. Closes #1374 - * add backwards compat for `res.redirect()` status. Closes #1336 - * add support for `res.json()` to retain previously defined Content-Types. Closes #1349 - * update connect - * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382 - * remove non-primitive string support for `res.send()` - * fix view-locals example. Closes #1370 - * fix route-separation example - -3.0.0rc5 / 2012-09-18 -================== - - * update connect - * add redis search example - * add static-files example - * add "x-powered-by" setting (`app.disable('x-powered-by')`) - * add "application/octet-stream" redirect Accept test case. Closes #1317 - -3.0.0rc4 / 2012-08-30 -================== - - * add `res.jsonp()`. Closes #1307 - * add "verbose errors" option to error-pages example - * add another route example to express(1) so people are not so confused - * add redis online user activity tracking example - * update connect dep - * fix etag quoting. Closes #1310 - * fix error-pages 404 status - * fix jsonp callback char restrictions - * remove old OPTIONS default response - -3.0.0rc3 / 2012-08-13 -================== - - * update connect dep - * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds] - * fix `res.render()` clobbering of "locals" - -3.0.0rc2 / 2012-08-03 -================== - - * add CORS example - * update connect dep - * deprecate `.createServer()` & remove old stale examples - * fix: escape `res.redirect()` link - * fix vhost example - -3.0.0rc1 / 2012-07-24 -================== - - * add more examples to view-locals - * add scheme-relative redirects (`res.redirect("//foo.com")`) support - * update cookie dep - * update connect dep - * update send dep - * fix `express(1)` -h flag, use -H for hogan. Closes #1245 - * fix `res.sendfile()` socket error handling regression - -3.0.0beta7 / 2012-07-16 -================== - - * update connect dep for `send()` root normalization regression - -3.0.0beta6 / 2012-07-13 -================== - - * add `err.view` property for view errors. Closes #1226 - * add "jsonp callback name" setting - * add support for "/foo/:bar*" non-greedy matches - * change `res.sendfile()` to use `send()` module - * change `res.send` to use "response-send" module - * remove `app.locals.use` and `res.locals.use`, use regular middleware - -3.0.0beta5 / 2012-07-03 -================== - - * add "make check" support - * add route-map example - * add `res.json(obj, status)` support back for BC - * add "methods" dep, remove internal methods module - * update connect dep - * update auth example to utilize cores pbkdf2 - * updated tests to use "supertest" - -3.0.0beta4 / 2012-06-25 -================== - - * Added `req.auth` - * Added `req.range(size)` - * Added `res.links(obj)` - * Added `res.send(body, status)` support back for backwards compat - * Added `.default()` support to `res.format()` - * Added 2xx / 304 check to `req.fresh` - * Revert "Added + support to the router" - * Fixed `res.send()` freshness check, respect res.statusCode - -3.0.0beta3 / 2012-06-15 -================== - - * Added hogan `--hjs` to express(1) [nullfirm] - * Added another example to content-negotiation - * Added `fresh` dep - * Changed: `res.send()` always checks freshness - * Fixed: expose connects mime module. Cloases #1165 - -3.0.0beta2 / 2012-06-06 -================== - - * Added `+` support to the router - * Added `req.host` - * Changed `req.param()` to check route first - * Update connect dep - -3.0.0beta1 / 2012-06-01 -================== - - * Added `res.format()` callback to override default 406 behaviour - * Fixed `res.redirect()` 406. Closes #1154 - -3.0.0alpha5 / 2012-05-30 -================== - - * Added `req.ip` - * Added `{ signed: true }` option to `res.cookie()` - * Removed `res.signedCookie()` - * Changed: dont reverse `req.ips` - * Fixed "trust proxy" setting check for `req.ips` - -3.0.0alpha4 / 2012-05-09 -================== - - * Added: allow `[]` in jsonp callback. Closes #1128 - * Added `PORT` env var support in generated template. Closes #1118 [benatkin] - * Updated: connect 2.2.2 - -3.0.0alpha3 / 2012-05-04 -================== - - * Added public `app.routes`. Closes #887 - * Added _view-locals_ example - * Added _mvc_ example - * Added `res.locals.use()`. Closes #1120 - * Added conditional-GET support to `res.send()` - * Added: coerce `res.set()` values to strings - * Changed: moved `static()` in generated apps below router - * Changed: `res.send()` only set ETag when not previously set - * Changed connect 2.2.1 dep - * Changed: `make test` now runs unit / acceptance tests - * Fixed req/res proto inheritance - -3.0.0alpha2 / 2012-04-26 -================== - - * Added `make benchmark` back - * Added `res.send()` support for `String` objects - * Added client-side data exposing example - * Added `res.header()` and `req.header()` aliases for BC - * Added `express.createServer()` for BC - * Perf: memoize parsed urls - * Perf: connect 2.2.0 dep - * Changed: make `expressInit()` middleware self-aware - * Fixed: use app.get() for all core settings - * Fixed redis session example - * Fixed session example. Closes #1105 - * Fixed generated express dep. Closes #1078 - -3.0.0alpha1 / 2012-04-15 -================== - - * Added `app.locals.use(callback)` - * Added `app.locals` object - * Added `app.locals(obj)` - * Added `res.locals` object - * Added `res.locals(obj)` - * Added `res.format()` for content-negotiation - * Added `app.engine()` - * Added `res.cookie()` JSON cookie support - * Added "trust proxy" setting - * Added `req.subdomains` - * Added `req.protocol` - * Added `req.secure` - * Added `req.path` - * Added `req.ips` - * Added `req.fresh` - * Added `req.stale` - * Added comma-delmited / array support for `req.accepts()` - * Added debug instrumentation - * Added `res.set(obj)` - * Added `res.set(field, value)` - * Added `res.get(field)` - * Added `app.get(setting)`. Closes #842 - * Added `req.acceptsLanguage()` - * Added `req.acceptsCharset()` - * Added `req.accepted` - * Added `req.acceptedLanguages` - * Added `req.acceptedCharsets` - * Added "json replacer" setting - * Added "json spaces" setting - * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92 - * Added `--less` support to express(1) - * Added `express.response` prototype - * Added `express.request` prototype - * Added `express.application` prototype - * Added `app.path()` - * Added `app.render()` - * Added `res.type()` to replace `res.contentType()` - * Changed: `res.redirect()` to add relative support - * Changed: enable "jsonp callback" by default - * Changed: renamed "case sensitive routes" to "case sensitive routing" - * Rewrite of all tests with mocha - * Removed "root" setting - * Removed `res.redirect('home')` support - * Removed `req.notify()` - * Removed `app.register()` - * Removed `app.redirect()` - * Removed `app.is()` - * Removed `app.helpers()` - * Removed `app.dynamicHelpers()` - * Fixed `res.sendfile()` with non-GET. Closes #723 - * Fixed express(1) public dir for windows. Closes #866 - -2.5.9/ 2012-04-02 -================== - - * Added support for PURGE request method [pbuyle] - * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki] - -2.5.8 / 2012-02-08 -================== - - * Update mkdirp dep. Closes #991 - -2.5.7 / 2012-02-06 -================== - - * Fixed `app.all` duplicate DELETE requests [mscdex] - -2.5.6 / 2012-01-13 -================== - - * Updated hamljs dev dep. Closes #953 - -2.5.5 / 2012-01-08 -================== - - * Fixed: set `filename` on cached templates [matthewleon] - -2.5.4 / 2012-01-02 -================== - - * Fixed `express(1)` eol on 0.4.x. Closes #947 - -2.5.3 / 2011-12-30 -================== - - * Fixed `req.is()` when a charset is present - -2.5.2 / 2011-12-10 -================== - - * Fixed: express(1) LF -> CRLF for windows - -2.5.1 / 2011-11-17 -================== - - * Changed: updated connect to 1.8.x - * Removed sass.js support from express(1) - -2.5.0 / 2011-10-24 -================== - - * Added ./routes dir for generated app by default - * Added npm install reminder to express(1) app gen - * Added 0.5.x support - * Removed `make test-cov` since it wont work with node 0.5.x - * Fixed express(1) public dir for windows. Closes #866 - -2.4.7 / 2011-10-05 -================== - - * Added mkdirp to express(1). Closes #795 - * Added simple _json-config_ example - * Added shorthand for the parsed request's pathname via `req.path` - * Changed connect dep to 1.7.x to fix npm issue... - * Fixed `res.redirect()` __HEAD__ support. [reported by xerox] - * Fixed `req.flash()`, only escape args - * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] - -2.4.6 / 2011-08-22 -================== - - * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] - -2.4.5 / 2011-08-19 -================== - - * Added support for routes to handle errors. Closes #809 - * Added `app.routes.all()`. Closes #803 - * Added "basepath" setting to work in conjunction with reverse proxies etc. - * Refactored `Route` to use a single array of callbacks - * Added support for multiple callbacks for `app.param()`. Closes #801 -Closes #805 - * Changed: removed .call(self) for route callbacks - * Dependency: `qs >= 0.3.1` - * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808 - -2.4.4 / 2011-08-05 -================== - - * Fixed `res.header()` intention of a set, even when `undefined` - * Fixed `*`, value no longer required - * Fixed `res.send(204)` support. Closes #771 - -2.4.3 / 2011-07-14 -================== - - * Added docs for `status` option special-case. Closes #739 - * Fixed `options.filename`, exposing the view path to template engines - -2.4.2. / 2011-07-06 -================== - - * Revert "removed jsonp stripping" for XSS - -2.4.1 / 2011-07-06 -================== - - * Added `res.json()` JSONP support. Closes #737 - * Added _extending-templates_ example. Closes #730 - * Added "strict routing" setting for trailing slashes - * Added support for multiple envs in `app.configure()` calls. Closes #735 - * Changed: `res.send()` using `res.json()` - * Changed: when cookie `path === null` don't default it - * Changed; default cookie path to "home" setting. Closes #731 - * Removed _pids/logs_ creation from express(1) - -2.4.0 / 2011-06-28 -================== - - * Added chainable `res.status(code)` - * Added `res.json()`, an explicit version of `res.send(obj)` - * Added simple web-service example - -2.3.12 / 2011-06-22 -================== - - * \#express is now on freenode! come join! - * Added `req.get(field, param)` - * Added links to Japanese documentation, thanks @hideyukisaito! - * Added; the `express(1)` generated app outputs the env - * Added `content-negotiation` example - * Dependency: connect >= 1.5.1 < 2.0.0 - * Fixed view layout bug. Closes #720 - * Fixed; ignore body on 304. Closes #701 - -2.3.11 / 2011-06-04 -================== - - * Added `npm test` - * Removed generation of dummy test file from `express(1)` - * Fixed; `express(1)` adds express as a dep - * Fixed; prune on `prepublish` - -2.3.10 / 2011-05-27 -================== - - * Added `req.route`, exposing the current route - * Added _package.json_ generation support to `express(1)` - * Fixed call to `app.param()` function for optional params. Closes #682 - -2.3.9 / 2011-05-25 -================== - - * Fixed bug-ish with `../' in `res.partial()` calls - -2.3.8 / 2011-05-24 -================== - - * Fixed `app.options()` - -2.3.7 / 2011-05-23 -================== - - * Added route `Collection`, ex: `app.get('/user/:id').remove();` - * Added support for `app.param(fn)` to define param logic - * Removed `app.param()` support for callback with return value - * Removed module.parent check from express(1) generated app. Closes #670 - * Refactored router. Closes #639 - -2.3.6 / 2011-05-20 -================== - - * Changed; using devDependencies instead of git submodules - * Fixed redis session example - * Fixed markdown example - * Fixed view caching, should not be enabled in development - -2.3.5 / 2011-05-20 -================== - - * Added export `.view` as alias for `.View` - -2.3.4 / 2011-05-08 -================== - - * Added `./examples/say` - * Fixed `res.sendfile()` bug preventing the transfer of files with spaces - -2.3.3 / 2011-05-03 -================== - - * Added "case sensitive routes" option. - * Changed; split methods supported per rfc [slaskis] - * Fixed route-specific middleware when using the same callback function several times - -2.3.2 / 2011-04-27 -================== - - * Fixed view hints - -2.3.1 / 2011-04-26 -================== - - * Added `app.match()` as `app.match.all()` - * Added `app.lookup()` as `app.lookup.all()` - * Added `app.remove()` for `app.remove.all()` - * Added `app.remove.VERB()` - * Fixed template caching collision issue. Closes #644 - * Moved router over from connect and started refactor - -2.3.0 / 2011-04-25 -================== - - * Added options support to `res.clearCookie()` - * Added `res.helpers()` as alias of `res.locals()` - * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0` - * Changed; auto set Content-Type in res.attachement [Aaron Heckmann] - * Renamed "cache views" to "view cache". Closes #628 - * Fixed caching of views when using several apps. Closes #637 - * Fixed gotcha invoking `app.param()` callbacks once per route middleware. -Closes #638 - * Fixed partial lookup precedence. Closes #631 -Shaw] - -2.2.2 / 2011-04-12 -================== - - * Added second callback support for `res.download()` connection errors - * Fixed `filename` option passing to template engine - -2.2.1 / 2011-04-04 -================== - - * Added `layout(path)` helper to change the layout within a view. Closes #610 - * Fixed `partial()` collection object support. - Previously only anything with `.length` would work. - When `.length` is present one must still be aware of holes, - however now `{ collection: {foo: 'bar'}}` is valid, exposes - `keyInCollection` and `keysInCollection`. - - * Performance improved with better view caching - * Removed `request` and `response` locals - * Changed; errorHandler page title is now `Express` instead of `Connect` - -2.2.0 / 2011-03-30 -================== - - * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606 - * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606 - * Added `app.VERB(path)` as alias of `app.lookup.VERB()`. - * Dependency `connect >= 1.2.0` - -2.1.1 / 2011-03-29 -================== - - * Added; expose `err.view` object when failing to locate a view - * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann] - * Fixed; `res.send(undefined)` responds with 204 [aheckmann] - -2.1.0 / 2011-03-24 -================== - - * Added `/_?` partial lookup support. Closes #447 - * Added `request`, `response`, and `app` local variables - * Added `settings` local variable, containing the app's settings - * Added `req.flash()` exception if `req.session` is not available - * Added `res.send(bool)` support (json response) - * Fixed stylus example for latest version - * Fixed; wrap try/catch around `res.render()` - -2.0.0 / 2011-03-17 -================== - - * Fixed up index view path alternative. - * Changed; `res.locals()` without object returns the locals - -2.0.0rc3 / 2011-03-17 -================== - - * Added `res.locals(obj)` to compliment `res.local(key, val)` - * Added `res.partial()` callback support - * Fixed recursive error reporting issue in `res.render()` - -2.0.0rc2 / 2011-03-17 -================== - - * Changed; `partial()` "locals" are now optional - * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01] - * Fixed .filename view engine option [reported by drudge] - * Fixed blog example - * Fixed `{req,res}.app` reference when mounting [Ben Weaver] - -2.0.0rc / 2011-03-14 -================== - - * Fixed; expose `HTTPSServer` constructor - * Fixed express(1) default test charset. Closes #579 [reported by secoif] - * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] - -2.0.0beta3 / 2011-03-09 -================== - - * Added support for `res.contentType()` literal - The original `res.contentType('.json')`, - `res.contentType('application/json')`, and `res.contentType('json')` - will work now. - * Added `res.render()` status option support back - * Added charset option for `res.render()` - * Added `.charset` support (via connect 1.0.4) - * Added view resolution hints when in development and a lookup fails - * Added layout lookup support relative to the page view. - For example while rendering `./views/user/index.jade` if you create - `./views/user/layout.jade` it will be used in favour of the root layout. - * Fixed `res.redirect()`. RFC states absolute url [reported by unlink] - * Fixed; default `res.send()` string charset to utf8 - * Removed `Partial` constructor (not currently used) - -2.0.0beta2 / 2011-03-07 -================== - - * Added res.render() `.locals` support back to aid in migration process - * Fixed flash example - -2.0.0beta / 2011-03-03 -================== - - * Added HTTPS support - * Added `res.cookie()` maxAge support - * Added `req.header()` _Referrer_ / _Referer_ special-case, either works - * Added mount support for `res.redirect()`, now respects the mount-point - * Added `union()` util, taking place of `merge(clone())` combo - * Added stylus support to express(1) generated app - * Added secret to session middleware used in examples and generated app - * Added `res.local(name, val)` for progressive view locals - * Added default param support to `req.param(name, default)` - * Added `app.disabled()` and `app.enabled()` - * Added `app.register()` support for omitting leading ".", either works - * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539 - * Added `app.param()` to map route params to async/sync logic - * Added; aliased `app.helpers()` as `app.locals()`. Closes #481 - * Added extname with no leading "." support to `res.contentType()` - * Added `cache views` setting, defaulting to enabled in "production" env - * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_. - * Added `req.accepts()` support for extensions - * Changed; `res.download()` and `res.sendfile()` now utilize Connect's - static file server `connect.static.send()`. - * Changed; replaced `connect.utils.mime()` with npm _mime_ module - * Changed; allow `req.query` to be pre-defined (via middleware or other parent - * Changed view partial resolution, now relative to parent view - * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`. - * Fixed `req.param()` bug returning Array.prototype methods. Closes #552 - * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()` - * Fixed; using _qs_ module instead of _querystring_ - * Fixed; strip unsafe chars from jsonp callbacks - * Removed "stream threshold" setting - -1.0.8 / 2011-03-01 -================== - - * Allow `req.query` to be pre-defined (via middleware or other parent app) - * "connect": ">= 0.5.0 < 1.0.0". Closes #547 - * Removed the long deprecated __EXPRESS_ENV__ support - -1.0.7 / 2011-02-07 -================== - - * Fixed `render()` setting inheritance. - Mounted apps would not inherit "view engine" - -1.0.6 / 2011-02-07 -================== - - * Fixed `view engine` setting bug when period is in dirname - -1.0.5 / 2011-02-05 -================== - - * Added secret to generated app `session()` call - -1.0.4 / 2011-02-05 -================== - - * Added `qs` dependency to _package.json_ - * Fixed namespaced `require()`s for latest connect support - -1.0.3 / 2011-01-13 -================== - - * Remove unsafe characters from JSONP callback names [Ryan Grove] - -1.0.2 / 2011-01-10 -================== - - * Removed nested require, using `connect.router` - -1.0.1 / 2010-12-29 -================== - - * Fixed for middleware stacked via `createServer()` - previously the `foo` middleware passed to `createServer(foo)` - would not have access to Express methods such as `res.send()` - or props like `req.query` etc. - -1.0.0 / 2010-11-16 -================== - - * Added; deduce partial object names from the last segment. - For example by default `partial('forum/post', postObject)` will - give you the _post_ object, providing a meaningful default. - * Added http status code string representation to `res.redirect()` body - * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__. - * Added `req.is()` to aid in content negotiation - * Added partial local inheritance [suggested by masylum]. Closes #102 - providing access to parent template locals. - * Added _-s, --session[s]_ flag to express(1) to add session related middleware - * Added _--template_ flag to express(1) to specify the - template engine to use. - * Added _--css_ flag to express(1) to specify the - stylesheet engine to use (or just plain css by default). - * Added `app.all()` support [thanks aheckmann] - * Added partial direct object support. - You may now `partial('user', user)` providing the "user" local, - vs previously `partial('user', { object: user })`. - * Added _route-separation_ example since many people question ways - to do this with CommonJS modules. Also view the _blog_ example for - an alternative. - * Performance; caching view path derived partial object names - * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454 - * Fixed jsonp support; _text/javascript_ as per mailinglist discussion - -1.0.0rc4 / 2010-10-14 -================== - - * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0 - * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware)) - * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass] - * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass] - * Added `partial()` support for array-like collections. Closes #434 - * Added support for swappable querystring parsers - * Added session usage docs. Closes #443 - * Added dynamic helper caching. Closes #439 [suggested by maritz] - * Added authentication example - * Added basic Range support to `res.sendfile()` (and `res.download()` etc) - * Changed; `express(1)` generated app using 2 spaces instead of 4 - * Default env to "development" again [aheckmann] - * Removed _context_ option is no more, use "scope" - * Fixed; exposing _./support_ libs to examples so they can run without installs - * Fixed mvc example - -1.0.0rc3 / 2010-09-20 -================== - - * Added confirmation for `express(1)` app generation. Closes #391 - * Added extending of flash formatters via `app.flashFormatters` - * Added flash formatter support. Closes #411 - * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold" - * Added _stream threshold_ setting for `res.sendfile()` - * Added `res.send()` __HEAD__ support - * Added `res.clearCookie()` - * Added `res.cookie()` - * Added `res.render()` headers option - * Added `res.redirect()` response bodies - * Added `res.render()` status option support. Closes #425 [thanks aheckmann] - * Fixed `res.sendfile()` responding with 403 on malicious path - * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_ - * Fixed; mounted apps settings now inherit from parent app [aheckmann] - * Fixed; stripping Content-Length / Content-Type when 204 - * Fixed `res.send()` 204. Closes #419 - * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402 - * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo] - - -1.0.0rc2 / 2010-08-17 -================== - - * Added `app.register()` for template engine mapping. Closes #390 - * Added `res.render()` callback support as second argument (no options) - * Added callback support to `res.download()` - * Added callback support for `res.sendfile()` - * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()` - * Added "partials" setting to docs - * Added default expresso tests to `express(1)` generated app. Closes #384 - * Fixed `res.sendfile()` error handling, defer via `next()` - * Fixed `res.render()` callback when a layout is used [thanks guillermo] - * Fixed; `make install` creating ~/.node_libraries when not present - * Fixed issue preventing error handlers from being defined anywhere. Closes #387 - -1.0.0rc / 2010-07-28 -================== - - * Added mounted hook. Closes #369 - * Added connect dependency to _package.json_ - - * Removed "reload views" setting and support code - development env never caches, production always caches. - - * Removed _param_ in route callbacks, signature is now - simply (req, res, next), previously (req, res, params, next). - Use _req.params_ for path captures, _req.query_ for GET params. - - * Fixed "home" setting - * Fixed middleware/router precedence issue. Closes #366 - * Fixed; _configure()_ callbacks called immediately. Closes #368 - -1.0.0beta2 / 2010-07-23 -================== - - * Added more examples - * Added; exporting `Server` constructor - * Added `Server#helpers()` for view locals - * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349 - * Added support for absolute view paths - * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363 - * Added Guillermo Rauch to the contributor list - * Added support for "as" for non-collection partials. Closes #341 - * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf] - * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo] - * Fixed instanceof `Array` checks, now `Array.isArray()` - * Fixed express(1) expansion of public dirs. Closes #348 - * Fixed middleware precedence. Closes #345 - * Fixed view watcher, now async [thanks aheckmann] - -1.0.0beta / 2010-07-15 -================== - - * Re-write - - much faster - - much lighter - - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs - -0.14.0 / 2010-06-15 -================== - - * Utilize relative requires - * Added Static bufferSize option [aheckmann] - * Fixed caching of view and partial subdirectories [aheckmann] - * Fixed mime.type() comments now that ".ext" is not supported - * Updated haml submodule - * Updated class submodule - * Removed bin/express - -0.13.0 / 2010-06-01 -================== - - * Added node v0.1.97 compatibility - * Added support for deleting cookies via Request#cookie('key', null) - * Updated haml submodule - * Fixed not-found page, now using using charset utf-8 - * Fixed show-exceptions page, now using using charset utf-8 - * Fixed view support due to fs.readFile Buffers - * Changed; mime.type() no longer accepts ".type" due to node extname() changes - -0.12.0 / 2010-05-22 -================== - - * Added node v0.1.96 compatibility - * Added view `helpers` export which act as additional local variables - * Updated haml submodule - * Changed ETag; removed inode, modified time only - * Fixed LF to CRLF for setting multiple cookies - * Fixed cookie complation; values are now urlencoded - * Fixed cookies parsing; accepts quoted values and url escaped cookies - -0.11.0 / 2010-05-06 -================== - - * Added support for layouts using different engines - - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' }) - - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml' - - this.render('page.html.haml', { layout: false }) // no layout - * Updated ext submodule - * Updated haml submodule - * Fixed EJS partial support by passing along the context. Issue #307 - -0.10.1 / 2010-05-03 -================== - - * Fixed binary uploads. - -0.10.0 / 2010-04-30 -================== - - * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s - encoding is set to 'utf8' or 'utf-8'. - * Added "encoding" option to Request#render(). Closes #299 - * Added "dump exceptions" setting, which is enabled by default. - * Added simple ejs template engine support - * Added error response support for text/plain, application/json. Closes #297 - * Added callback function param to Request#error() - * Added Request#sendHead() - * Added Request#stream() - * Added support for Request#respond(304, null) for empty response bodies - * Added ETag support to Request#sendfile() - * Added options to Request#sendfile(), passed to fs.createReadStream() - * Added filename arg to Request#download() - * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request - * Performance enhanced by preventing several calls to toLowerCase() in Router#match() - * Changed; Request#sendfile() now streams - * Changed; Renamed Request#halt() to Request#respond(). Closes #289 - * Changed; Using sys.inspect() instead of JSON.encode() for error output - * Changed; run() returns the http.Server instance. Closes #298 - * Changed; Defaulting Server#host to null (INADDR_ANY) - * Changed; Logger "common" format scale of 0.4f - * Removed Logger "request" format - * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found - * Fixed several issues with http client - * Fixed Logger Content-Length output - * Fixed bug preventing Opera from retaining the generated session id. Closes #292 - -0.9.0 / 2010-04-14 -================== - - * Added DSL level error() route support - * Added DSL level notFound() route support - * Added Request#error() - * Added Request#notFound() - * Added Request#render() callback function. Closes #258 - * Added "max upload size" setting - * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254 - * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js - * Added callback function support to Request#halt() as 3rd/4th arg - * Added preprocessing of route param wildcards using param(). Closes #251 - * Added view partial support (with collections etc) - * Fixed bug preventing falsey params (such as ?page=0). Closes #286 - * Fixed setting of multiple cookies. Closes #199 - * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) - * Changed; session cookie is now httpOnly - * Changed; Request is no longer global - * Changed; Event is no longer global - * Changed; "sys" module is no longer global - * Changed; moved Request#download to Static plugin where it belongs - * Changed; Request instance created before body parsing. Closes #262 - * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253 - * Changed; Pre-caching view partials in memory when "cache view partials" is enabled - * Updated support to node --version 0.1.90 - * Updated dependencies - * Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) - * Removed utils.mixin(); use Object#mergeDeep() - -0.8.0 / 2010-03-19 -================== - - * Added coffeescript example app. Closes #242 - * Changed; cache api now async friendly. Closes #240 - * Removed deprecated 'express/static' support. Use 'express/plugins/static' - -0.7.6 / 2010-03-19 -================== - - * Added Request#isXHR. Closes #229 - * Added `make install` (for the executable) - * Added `express` executable for setting up simple app templates - * Added "GET /public/*" to Static plugin, defaulting to /public - * Added Static plugin - * Fixed; Request#render() only calls cache.get() once - * Fixed; Namespacing View caches with "view:" - * Fixed; Namespacing Static caches with "static:" - * Fixed; Both example apps now use the Static plugin - * Fixed set("views"). Closes #239 - * Fixed missing space for combined log format - * Deprecated Request#sendfile() and 'express/static' - * Removed Server#running - -0.7.5 / 2010-03-16 -================== - - * Added Request#flash() support without args, now returns all flashes - * Updated ext submodule - -0.7.4 / 2010-03-16 -================== - - * Fixed session reaper - * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft) - -0.7.3 / 2010-03-16 -================== - - * Added package.json - * Fixed requiring of haml / sass due to kiwi removal - -0.7.2 / 2010-03-16 -================== - - * Fixed GIT submodules (HAH!) - -0.7.1 / 2010-03-16 -================== - - * Changed; Express now using submodules again until a PM is adopted - * Changed; chat example using millisecond conversions from ext - -0.7.0 / 2010-03-15 -================== - - * Added Request#pass() support (finds the next matching route, or the given path) - * Added Logger plugin (default "common" format replaces CommonLogger) - * Removed Profiler plugin - * Removed CommonLogger plugin - -0.6.0 / 2010-03-11 -================== - - * Added seed.yml for kiwi package management support - * Added HTTP client query string support when method is GET. Closes #205 - - * Added support for arbitrary view engines. - For example "foo.engine.html" will now require('engine'), - the exports from this module are cached after the first require(). - - * Added async plugin support - - * Removed usage of RESTful route funcs as http client - get() etc, use http.get() and friends - - * Removed custom exceptions - -0.5.0 / 2010-03-10 -================== - - * Added ext dependency (library of js extensions) - * Removed extname() / basename() utils. Use path module - * Removed toArray() util. Use arguments.values - * Removed escapeRegexp() util. Use RegExp.escape() - * Removed process.mixin() dependency. Use utils.mixin() - * Removed Collection - * Removed ElementCollection - * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;) - -0.4.0 / 2010-02-11 -================== - - * Added flash() example to sample upload app - * Added high level restful http client module (express/http) - * Changed; RESTful route functions double as HTTP clients. Closes #69 - * Changed; throwing error when routes are added at runtime - * Changed; defaulting render() context to the current Request. Closes #197 - * Updated haml submodule - -0.3.0 / 2010-02-11 -================== - - * Updated haml / sass submodules. Closes #200 - * Added flash message support. Closes #64 - * Added accepts() now allows multiple args. fixes #117 - * Added support for plugins to halt. Closes #189 - * Added alternate layout support. Closes #119 - * Removed Route#run(). Closes #188 - * Fixed broken specs due to use(Cookie) missing - -0.2.1 / 2010-02-05 -================== - - * Added "plot" format option for Profiler (for gnuplot processing) - * Added request number to Profiler plugin - * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8 - * Fixed issue with routes not firing when not files are present. Closes #184 - * Fixed process.Promise -> events.Promise - -0.2.0 / 2010-02-03 -================== - - * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180 - * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174 - * Added expiration support to cache api with reaper. Closes #133 - * Added cache Store.Memory#reap() - * Added Cache; cache api now uses first class Cache instances - * Added abstract session Store. Closes #172 - * Changed; cache Memory.Store#get() utilizing Collection - * Renamed MemoryStore -> Store.Memory - * Fixed use() of the same plugin several time will always use latest options. Closes #176 - -0.1.0 / 2010-02-03 -================== - - * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context - * Updated node support to 0.1.27 Closes #169 - * Updated dirname(__filename) -> __dirname - * Updated libxmljs support to v0.2.0 - * Added session support with memory store / reaping - * Added quick uid() helper - * Added multi-part upload support - * Added Sass.js support / submodule - * Added production env caching view contents and static files - * Added static file caching. Closes #136 - * Added cache plugin with memory stores - * Added support to StaticFile so that it works with non-textual files. - * Removed dirname() helper - * Removed several globals (now their modules must be required) - -0.0.2 / 2010-01-10 -================== - - * Added view benchmarks; currently haml vs ejs - * Added Request#attachment() specs. Closes #116 - * Added use of node's parseQuery() util. Closes #123 - * Added `make init` for submodules - * Updated Haml - * Updated sample chat app to show messages on load - * Updated libxmljs parseString -> parseHtmlString - * Fixed `make init` to work with older versions of git - * Fixed specs can now run independent specs for those who cant build deps. Closes #127 - * Fixed issues introduced by the node url module changes. Closes 126. - * Fixed two assertions failing due to Collection#keys() returning strings - * Fixed faulty Collection#toArray() spec due to keys() returning strings - * Fixed `make test` now builds libxmljs.node before testing - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/express/LICENSE b/node_modules/express/LICENSE deleted file mode 100644 index 0f3c767..0000000 --- a/node_modules/express/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2009-2014 TJ Holowaychuk - -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/node_modules/express/Readme.md b/node_modules/express/Readme.md deleted file mode 100644 index 24bc582..0000000 --- a/node_modules/express/Readme.md +++ /dev/null @@ -1,135 +0,0 @@ -[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) - - Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). - - [![NPM Version][npm-image]][npm-url] - [![NPM Downloads][downloads-image]][downloads-url] - [![Build Status][travis-image]][travis-url] - [![Test Coverage][coveralls-image]][coveralls-url] - -```js -var express = require('express') -var app = express() - -app.get('/', function (req, res) { - res.send('Hello World') -}) - -app.listen(3000) -``` - -### Installation - -```bash -$ npm install express -``` - -## Features - - * Robust routing - * Focus on high performance - * Super-high test coverage - * HTTP helpers (redirection, caching, etc) - * View system supporting 14+ template engines - * Content negotiation - * Executable for generating applications quickly - -## Docs & Community - - * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/strongloop/expressjs.com)] - * [#express](https://webchat.freenode.net/?channels=express) on freenode IRC - * [Github Organization](https://github.com/expressjs) for Official Middleware & Modules - * Visit the [Wiki](https://github.com/strongloop/express/wiki) - * [Google Group](https://groups.google.com/group/express-js) for discussion - * [Русскоязычная документация](http://jsman.ru/express/) - * [한국어 문서](http://expressjs.kr) - [[website repo](https://github.com/Hanul/expressjs.kr)] - -**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/strongloop/express/wiki/New-features-in-4.x). - -## Quick Start - - The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below: - - Install the executable. The executable's major version will match Express's: - -```bash -$ npm install -g express-generator@4 -``` - - Create the app: - -```bash -$ express /tmp/foo && cd /tmp/foo -``` - - Install dependencies: - -```bash -$ npm install -``` - - Start the server: - -```bash -$ npm start -``` - -## Philosophy - - The Express philosophy is to provide small, robust tooling for HTTP servers, making - it a great solution for single page applications, web sites, hybrids, or public - HTTP APIs. - - Express does not force you to use any specific ORM or template engine. With support for over - 14 template engines via [Consolidate.js](https://github.com/tj/consolidate.js), - you can quickly craft your perfect framework. - -## Examples - - To view the examples, clone the Express repo & install the dependancies: - -```bash -$ git clone git://github.com/strongloop/express.git --depth 1 -$ cd express -$ npm install -``` - - Then run whichever example you want: - -```bash -$ node examples/content-negotiation -``` - -## Tests - - To run the test suite, first install the dependancies, then run `npm test`: - -```bash -$ npm install -$ npm test -``` - -### People - -The original author of Express is [TJ Holowaychuk](https://github.com/tj) [![TJ's Gratipay][gratipay-image-visionmedia]][gratipay-url-visionmedia] - -The current lead maintainer is [Douglas Christopher Wilson](https://github.com/dougwilson) [![Doug's Gratipay][gratipay-image-dougwilson]][gratipay-url-dougwilson] - -[List of all contributors](https://github.com/strongloop/express/graphs/contributors) - -### License - - [MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/express.svg?style=flat -[npm-url]: https://npmjs.org/package/express -[downloads-image]: https://img.shields.io/npm/dm/express.svg?style=flat -[downloads-url]: https://npmjs.org/package/express -[travis-image]: https://img.shields.io/travis/strongloop/express.svg?style=flat -[travis-url]: https://travis-ci.org/strongloop/express -[coveralls-image]: https://img.shields.io/coveralls/strongloop/express.svg?style=flat -[coveralls-url]: https://coveralls.io/r/strongloop/express?branch=master -[gratipay-image-visionmedia]: https://img.shields.io/gratipay/visionmedia.svg?style=flat -[gratipay-url-visionmedia]: https://gratipay.com/visionmedia/ -[gratipay-image-dougwilson]: https://img.shields.io/gratipay/dougwilson.svg?style=flat -[gratipay-url-dougwilson]: https://gratipay.com/dougwilson/ diff --git a/node_modules/express/index.js b/node_modules/express/index.js deleted file mode 100644 index 3da3378..0000000 --- a/node_modules/express/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/express'); diff --git a/node_modules/express/lib/application.js b/node_modules/express/lib/application.js deleted file mode 100644 index 2fbb550..0000000 --- a/node_modules/express/lib/application.js +++ /dev/null @@ -1,571 +0,0 @@ -/** - * Module dependencies. - */ - -var finalhandler = require('finalhandler'); -var flatten = require('./utils').flatten; -var Router = require('./router'); -var methods = require('methods'); -var middleware = require('./middleware/init'); -var query = require('./middleware/query'); -var debug = require('debug')('express:application'); -var View = require('./view'); -var http = require('http'); -var compileETag = require('./utils').compileETag; -var compileQueryParser = require('./utils').compileQueryParser; -var compileTrust = require('./utils').compileTrust; -var deprecate = require('depd')('express'); -var merge = require('utils-merge'); -var resolve = require('path').resolve; -var slice = Array.prototype.slice; - -/** - * Application prototype. - */ - -var app = exports = module.exports = {}; - -/** - * Initialize the server. - * - * - setup default configuration - * - setup default middleware - * - setup route reflection methods - * - * @api private - */ - -app.init = function(){ - this.cache = {}; - this.settings = {}; - this.engines = {}; - this.defaultConfiguration(); -}; - -/** - * Initialize application configuration. - * - * @api private - */ - -app.defaultConfiguration = function(){ - // default settings - this.enable('x-powered-by'); - this.set('etag', 'weak'); - var env = process.env.NODE_ENV || 'development'; - this.set('env', env); - this.set('query parser', 'extended'); - this.set('subdomain offset', 2); - this.set('trust proxy', false); - - debug('booting in %s mode', env); - - // inherit protos - this.on('mount', function(parent){ - this.request.__proto__ = parent.request; - this.response.__proto__ = parent.response; - this.engines.__proto__ = parent.engines; - this.settings.__proto__ = parent.settings; - }); - - // setup locals - this.locals = Object.create(null); - - // top-most app is mounted at / - this.mountpath = '/'; - - // default locals - this.locals.settings = this.settings; - - // default configuration - this.set('view', View); - this.set('views', resolve('views')); - this.set('jsonp callback name', 'callback'); - - if (env === 'production') { - this.enable('view cache'); - } - - Object.defineProperty(this, 'router', { - get: function() { - throw new Error('\'app.router\' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app.'); - } - }); -}; - -/** - * lazily adds the base router if it has not yet been added. - * - * We cannot add the base router in the defaultConfiguration because - * it reads app settings which might be set after that has run. - * - * @api private - */ -app.lazyrouter = function() { - if (!this._router) { - this._router = new Router({ - caseSensitive: this.enabled('case sensitive routing'), - strict: this.enabled('strict routing') - }); - - this._router.use(query(this.get('query parser fn'))); - this._router.use(middleware.init(this)); - } -}; - -/** - * Dispatch a req, res pair into the application. Starts pipeline processing. - * - * If no _done_ callback is provided, then default error handlers will respond - * in the event of an error bubbling through the stack. - * - * @api private - */ - -app.handle = function(req, res, done) { - var router = this._router; - - // final handler - done = done || finalhandler(req, res, { - env: this.get('env'), - onerror: logerror.bind(this) - }); - - // no routes - if (!router) { - debug('no routes defined on app'); - done(); - return; - } - - router.handle(req, res, done); -}; - -/** - * Proxy `Router#use()` to add middleware to the app router. - * See Router#use() documentation for details. - * - * If the _fn_ parameter is an express app, then it will be - * mounted at the _route_ specified. - * - * @api public - */ - -app.use = function use(fn) { - var offset = 0; - var path = '/'; - - // default path to '/' - // disambiguate app.use([fn]) - if (typeof fn !== 'function') { - var arg = fn; - - while (Array.isArray(arg) && arg.length !== 0) { - arg = arg[0]; - } - - // first arg is the path - if (typeof arg !== 'function') { - offset = 1; - path = fn; - } - } - - var fns = flatten(slice.call(arguments, offset)); - - if (fns.length === 0) { - throw new TypeError('app.use() requires middleware functions'); - } - - // setup router - this.lazyrouter(); - var router = this._router; - - fns.forEach(function (fn) { - // non-express app - if (!fn || !fn.handle || !fn.set) { - return router.use(path, fn); - } - - debug('.use app under %s', path); - fn.mountpath = path; - fn.parent = this; - - // restore .app property on req and res - router.use(path, function mounted_app(req, res, next) { - var orig = req.app; - fn.handle(req, res, function (err) { - req.__proto__ = orig.request; - res.__proto__ = orig.response; - next(err); - }); - }); - - // mounted an app - fn.emit('mount', this); - }, this); - - return this; -}; - -/** - * Proxy to the app `Router#route()` - * Returns a new `Route` instance for the _path_. - * - * Routes are isolated middleware stacks for specific paths. - * See the Route api docs for details. - * - * @api public - */ - -app.route = function(path){ - this.lazyrouter(); - return this._router.route(path); -}; - -/** - * Register the given template engine callback `fn` - * as `ext`. - * - * By default will `require()` the engine based on the - * file extension. For example if you try to render - * a "foo.jade" file Express will invoke the following internally: - * - * app.engine('jade', require('jade').__express); - * - * For engines that do not provide `.__express` out of the box, - * or if you wish to "map" a different extension to the template engine - * you may use this method. For example mapping the EJS template engine to - * ".html" files: - * - * app.engine('html', require('ejs').renderFile); - * - * In this case EJS provides a `.renderFile()` method with - * the same signature that Express expects: `(path, options, callback)`, - * though note that it aliases this method as `ejs.__express` internally - * so if you're using ".ejs" extensions you dont need to do anything. - * - * Some template engines do not follow this convention, the - * [Consolidate.js](https://github.com/tj/consolidate.js) - * library was created to map all of node's popular template - * engines to follow this convention, thus allowing them to - * work seamlessly within Express. - * - * @param {String} ext - * @param {Function} fn - * @return {app} for chaining - * @api public - */ - -app.engine = function(ext, fn){ - if ('function' != typeof fn) throw new Error('callback function required'); - if ('.' != ext[0]) ext = '.' + ext; - this.engines[ext] = fn; - return this; -}; - -/** - * Proxy to `Router#param()` with one added api feature. The _name_ parameter - * can be an array of names. - * - * See the Router#param() docs for more details. - * - * @param {String|Array} name - * @param {Function} fn - * @return {app} for chaining - * @api public - */ - -app.param = function(name, fn){ - this.lazyrouter(); - - if (Array.isArray(name)) { - name.forEach(function(key) { - this.param(key, fn); - }, this); - return this; - } - - this._router.param(name, fn); - return this; -}; - -/** - * Assign `setting` to `val`, or return `setting`'s value. - * - * app.set('foo', 'bar'); - * app.get('foo'); - * // => "bar" - * - * Mounted servers inherit their parent server's settings. - * - * @param {String} setting - * @param {*} [val] - * @return {Server} for chaining - * @api public - */ - -app.set = function(setting, val){ - if (arguments.length === 1) { - // app.get(setting) - return this.settings[setting]; - } - - // set value - this.settings[setting] = val; - - // trigger matched settings - switch (setting) { - case 'etag': - debug('compile etag %s', val); - this.set('etag fn', compileETag(val)); - break; - case 'query parser': - debug('compile query parser %s', val); - this.set('query parser fn', compileQueryParser(val)); - break; - case 'trust proxy': - debug('compile trust proxy %s', val); - this.set('trust proxy fn', compileTrust(val)); - break; - } - - return this; -}; - -/** - * Return the app's absolute pathname - * based on the parent(s) that have - * mounted it. - * - * For example if the application was - * mounted as "/admin", which itself - * was mounted as "/blog" then the - * return value would be "/blog/admin". - * - * @return {String} - * @api private - */ - -app.path = function(){ - return this.parent - ? this.parent.path() + this.mountpath - : ''; -}; - -/** - * Check if `setting` is enabled (truthy). - * - * app.enabled('foo') - * // => false - * - * app.enable('foo') - * app.enabled('foo') - * // => true - * - * @param {String} setting - * @return {Boolean} - * @api public - */ - -app.enabled = function(setting){ - return !!this.set(setting); -}; - -/** - * Check if `setting` is disabled. - * - * app.disabled('foo') - * // => true - * - * app.enable('foo') - * app.disabled('foo') - * // => false - * - * @param {String} setting - * @return {Boolean} - * @api public - */ - -app.disabled = function(setting){ - return !this.set(setting); -}; - -/** - * Enable `setting`. - * - * @param {String} setting - * @return {app} for chaining - * @api public - */ - -app.enable = function(setting){ - return this.set(setting, true); -}; - -/** - * Disable `setting`. - * - * @param {String} setting - * @return {app} for chaining - * @api public - */ - -app.disable = function(setting){ - return this.set(setting, false); -}; - -/** - * Delegate `.VERB(...)` calls to `router.VERB(...)`. - */ - -methods.forEach(function(method){ - app[method] = function(path){ - if ('get' == method && 1 == arguments.length) return this.set(path); - - this.lazyrouter(); - - var route = this._router.route(path); - route[method].apply(route, slice.call(arguments, 1)); - return this; - }; -}); - -/** - * Special-cased "all" method, applying the given route `path`, - * middleware, and callback to _every_ HTTP method. - * - * @param {String} path - * @param {Function} ... - * @return {app} for chaining - * @api public - */ - -app.all = function(path){ - this.lazyrouter(); - - var route = this._router.route(path); - var args = slice.call(arguments, 1); - methods.forEach(function(method){ - route[method].apply(route, args); - }); - - return this; -}; - -// del -> delete alias - -app.del = deprecate.function(app.delete, 'app.del: Use app.delete instead'); - -/** - * Render the given view `name` name with `options` - * and a callback accepting an error and the - * rendered template string. - * - * Example: - * - * app.render('email', { name: 'Tobi' }, function(err, html){ - * // ... - * }) - * - * @param {String} name - * @param {String|Function} options or fn - * @param {Function} fn - * @api public - */ - -app.render = function(name, options, fn){ - var opts = {}; - var cache = this.cache; - var engines = this.engines; - var view; - - // support callback function as second arg - if ('function' == typeof options) { - fn = options, options = {}; - } - - // merge app.locals - merge(opts, this.locals); - - // merge options._locals - if (options._locals) { - merge(opts, options._locals); - } - - // merge options - merge(opts, options); - - // set .cache unless explicitly provided - opts.cache = null == opts.cache - ? this.enabled('view cache') - : opts.cache; - - // primed cache - if (opts.cache) view = cache[name]; - - // view - if (!view) { - view = new (this.get('view'))(name, { - defaultEngine: this.get('view engine'), - root: this.get('views'), - engines: engines - }); - - if (!view.path) { - var dirs = Array.isArray(view.root) && view.root.length > 1 - ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' - : 'directory "' + view.root + '"' - var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); - err.view = view; - return fn(err); - } - - // prime the cache - if (opts.cache) cache[name] = view; - } - - // render - try { - view.render(opts, fn); - } catch (err) { - fn(err); - } -}; - -/** - * Listen for connections. - * - * A node `http.Server` is returned, with this - * application (which is a `Function`) as its - * callback. If you wish to create both an HTTP - * and HTTPS server you may do so with the "http" - * and "https" modules as shown here: - * - * var http = require('http') - * , https = require('https') - * , express = require('express') - * , app = express(); - * - * http.createServer(app).listen(80); - * https.createServer({ ... }, app).listen(443); - * - * @return {http.Server} - * @api public - */ - -app.listen = function(){ - var server = http.createServer(this); - return server.listen.apply(server, arguments); -}; - -/** -* Log error using console.error. -* -* @param {Error} err -* @api public -*/ - -function logerror(err){ - if (this.get('env') !== 'test') console.error(err.stack || err.toString()); -} diff --git a/node_modules/express/lib/express.js b/node_modules/express/lib/express.js deleted file mode 100644 index 8a6c284..0000000 --- a/node_modules/express/lib/express.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var mixin = require('merge-descriptors'); -var proto = require('./application'); -var Route = require('./router/route'); -var Router = require('./router'); -var req = require('./request'); -var res = require('./response'); - -/** - * Expose `createApplication()`. - */ - -exports = module.exports = createApplication; - -/** - * Create an express application. - * - * @return {Function} - * @api public - */ - -function createApplication() { - var app = function(req, res, next) { - app.handle(req, res, next); - }; - - mixin(app, proto); - mixin(app, EventEmitter.prototype); - - app.request = { __proto__: req, app: app }; - app.response = { __proto__: res, app: app }; - app.init(); - return app; -} - -/** - * Expose the prototypes. - */ - -exports.application = proto; -exports.request = req; -exports.response = res; - -/** - * Expose constructors. - */ - -exports.Route = Route; -exports.Router = Router; - -/** - * Expose middleware - */ - -exports.query = require('./middleware/query'); -exports.static = require('serve-static'); - -/** - * Replace removed middleware with an appropriate error message. - */ - -[ - 'json', - 'urlencoded', - 'bodyParser', - 'compress', - 'cookieSession', - 'session', - 'logger', - 'cookieParser', - 'favicon', - 'responseTime', - 'errorHandler', - 'timeout', - 'methodOverride', - 'vhost', - 'csrf', - 'directory', - 'limit', - 'multipart', - 'staticCache', -].forEach(function (name) { - Object.defineProperty(exports, name, { - get: function () { - throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.'); - }, - configurable: true - }); -}); diff --git a/node_modules/express/lib/middleware/init.js b/node_modules/express/lib/middleware/init.js deleted file mode 100644 index c09cf0c..0000000 --- a/node_modules/express/lib/middleware/init.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Initialization middleware, exposing the - * request and response to eachother, as well - * as defaulting the X-Powered-By header field. - * - * @param {Function} app - * @return {Function} - * @api private - */ - -exports.init = function(app){ - return function expressInit(req, res, next){ - if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); - req.res = res; - res.req = req; - req.next = next; - - req.__proto__ = app.request; - res.__proto__ = app.response; - - res.locals = res.locals || Object.create(null); - - next(); - }; -}; - diff --git a/node_modules/express/lib/middleware/query.js b/node_modules/express/lib/middleware/query.js deleted file mode 100644 index 092bbd9..0000000 --- a/node_modules/express/lib/middleware/query.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Module dependencies. - */ - -var parseUrl = require('parseurl'); -var qs = require('qs'); - -/** - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function query(options) { - var queryparse = qs.parse; - - if (typeof options === 'function') { - queryparse = options; - options = undefined; - } - - return function query(req, res, next){ - if (!req.query) { - var val = parseUrl(req).query; - req.query = queryparse(val, options); - } - - next(); - }; -}; diff --git a/node_modules/express/lib/request.js b/node_modules/express/lib/request.js deleted file mode 100644 index 483ee1c..0000000 --- a/node_modules/express/lib/request.js +++ /dev/null @@ -1,460 +0,0 @@ -/** - * Module dependencies. - */ - -var accepts = require('accepts'); -var deprecate = require('depd')('express'); -var isIP = require('net').isIP; -var typeis = require('type-is'); -var http = require('http'); -var fresh = require('fresh'); -var parseRange = require('range-parser'); -var parse = require('parseurl'); -var proxyaddr = require('proxy-addr'); - -/** - * Request prototype. - */ - -var req = exports = module.exports = { - __proto__: http.IncomingMessage.prototype -}; - -/** - * Return request header. - * - * The `Referrer` header field is special-cased, - * both `Referrer` and `Referer` are interchangeable. - * - * Examples: - * - * req.get('Content-Type'); - * // => "text/plain" - * - * req.get('content-type'); - * // => "text/plain" - * - * req.get('Something'); - * // => undefined - * - * Aliased as `req.header()`. - * - * @param {String} name - * @return {String} - * @api public - */ - -req.get = -req.header = function(name){ - switch (name = name.toLowerCase()) { - case 'referer': - case 'referrer': - return this.headers.referrer - || this.headers.referer; - default: - return this.headers[name]; - } -}; - -/** - * To do: update docs. - * - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json", a comma-delimted list such as "json, html, text/plain", - * an argument list such as `"json", "html", "text/plain"`, - * or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * req.accepts('html'); - * // => "html" - * - * // Accept: text/*, application/json - * req.accepts('html'); - * // => "html" - * req.accepts('text/html'); - * // => "text/html" - * req.accepts('json, text'); - * // => "json" - * req.accepts('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * req.accepts('image/png'); - * req.accepts('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * req.accepts(['html', 'json']); - * req.accepts('html', 'json'); - * req.accepts('html, json'); - * // => "json" - * - * @param {String|Array} type(s) - * @return {String} - * @api public - */ - -req.accepts = function(){ - var accept = accepts(this); - return accept.types.apply(accept, arguments); -}; - -/** - * Check if the given `encoding`s are accepted. - * - * @param {String} ...encoding - * @return {Boolean} - * @api public - */ - -req.acceptsEncodings = function(){ - var accept = accepts(this); - return accept.encodings.apply(accept, arguments); -}; - -req.acceptsEncoding = deprecate.function(req.acceptsEncodings, - 'req.acceptsEncoding: Use acceptsEncodings instead'); - -/** - * Check if the given `charset`s are acceptable, - * otherwise you should respond with 406 "Not Acceptable". - * - * @param {String} ...charset - * @return {Boolean} - * @api public - */ - -req.acceptsCharsets = function(){ - var accept = accepts(this); - return accept.charsets.apply(accept, arguments); -}; - -req.acceptsCharset = deprecate.function(req.acceptsCharsets, - 'req.acceptsCharset: Use acceptsCharsets instead'); - -/** - * Check if the given `lang`s are acceptable, - * otherwise you should respond with 406 "Not Acceptable". - * - * @param {String} ...lang - * @return {Boolean} - * @api public - */ - -req.acceptsLanguages = function(){ - var accept = accepts(this); - return accept.languages.apply(accept, arguments); -}; - -req.acceptsLanguage = deprecate.function(req.acceptsLanguages, - 'req.acceptsLanguage: Use acceptsLanguages instead'); - -/** - * Parse Range header field, - * capping to the given `size`. - * - * Unspecified ranges such as "0-" require - * knowledge of your resource length. In - * the case of a byte range this is of course - * the total number of bytes. If the Range - * header field is not given `null` is returned, - * `-1` when unsatisfiable, `-2` when syntactically invalid. - * - * NOTE: remember that ranges are inclusive, so - * for example "Range: users=0-3" should respond - * with 4 users when available, not 3. - * - * @param {Number} size - * @return {Array} - * @api public - */ - -req.range = function(size){ - var range = this.get('Range'); - if (!range) return; - return parseRange(size, range); -}; - -/** - * Return the value of param `name` when present or `defaultValue`. - * - * - Checks route placeholders, ex: _/user/:id_ - * - Checks body params, ex: id=12, {"id":12} - * - Checks query string params, ex: ?id=12 - * - * To utilize request bodies, `req.body` - * should be an object. This can be done by using - * the `bodyParser()` middleware. - * - * @param {String} name - * @param {Mixed} [defaultValue] - * @return {String} - * @api public - */ - -req.param = function(name, defaultValue){ - var params = this.params || {}; - var body = this.body || {}; - var query = this.query || {}; - if (null != params[name] && params.hasOwnProperty(name)) return params[name]; - if (null != body[name]) return body[name]; - if (null != query[name]) return query[name]; - return defaultValue; -}; - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains the give mime `type`. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * req.is('html'); - * req.is('text/html'); - * req.is('text/*'); - * // => true - * - * // When Content-Type is application/json - * req.is('json'); - * req.is('application/json'); - * req.is('application/*'); - * // => true - * - * req.is('html'); - * // => false - * - * @param {String} type - * @return {Boolean} - * @api public - */ - -req.is = function(types){ - if (!Array.isArray(types)) types = [].slice.call(arguments); - return typeis(this, types); -}; - -/** - * Return the protocol string "http" or "https" - * when requested with TLS. When the "trust proxy" - * setting trusts the socket address, the - * "X-Forwarded-Proto" header field will be trusted - * and used if present. - * - * If you're running behind a reverse proxy that - * supplies https for you this may be enabled. - * - * @return {String} - * @api public - */ - -defineGetter(req, 'protocol', function protocol(){ - var proto = this.connection.encrypted - ? 'https' - : 'http'; - var trust = this.app.get('trust proxy fn'); - - if (!trust(this.connection.remoteAddress)) { - return proto; - } - - // Note: X-Forwarded-Proto is normally only ever a - // single value, but this is to be safe. - proto = this.get('X-Forwarded-Proto') || proto; - return proto.split(/\s*,\s*/)[0]; -}); - -/** - * Short-hand for: - * - * req.protocol == 'https' - * - * @return {Boolean} - * @api public - */ - -defineGetter(req, 'secure', function secure(){ - return 'https' == this.protocol; -}); - -/** - * Return the remote address from the trusted proxy. - * - * The is the remote address on the socket unless - * "trust proxy" is set. - * - * @return {String} - * @api public - */ - -defineGetter(req, 'ip', function ip(){ - var trust = this.app.get('trust proxy fn'); - return proxyaddr(this, trust); -}); - -/** - * When "trust proxy" is set, trusted proxy addresses + client. - * - * For example if the value were "client, proxy1, proxy2" - * you would receive the array `["client", "proxy1", "proxy2"]` - * where "proxy2" is the furthest down-stream and "proxy1" and - * "proxy2" were trusted. - * - * @return {Array} - * @api public - */ - -defineGetter(req, 'ips', function ips() { - var trust = this.app.get('trust proxy fn'); - var addrs = proxyaddr.all(this, trust); - return addrs.slice(1).reverse(); -}); - -/** - * Return subdomains as an array. - * - * Subdomains are the dot-separated parts of the host before the main domain of - * the app. By default, the domain of the app is assumed to be the last two - * parts of the host. This can be changed by setting "subdomain offset". - * - * For example, if the domain is "tobi.ferrets.example.com": - * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. - * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. - * - * @return {Array} - * @api public - */ - -defineGetter(req, 'subdomains', function subdomains() { - var hostname = this.hostname; - - if (!hostname) return []; - - var offset = this.app.get('subdomain offset'); - var subdomains = !isIP(hostname) - ? hostname.split('.').reverse() - : [hostname]; - - return subdomains.slice(offset); -}); - -/** - * Short-hand for `url.parse(req.url).pathname`. - * - * @return {String} - * @api public - */ - -defineGetter(req, 'path', function path() { - return parse(this).pathname; -}); - -/** - * Parse the "Host" header field to a hostname. - * - * When the "trust proxy" setting trusts the socket - * address, the "X-Forwarded-Host" header field will - * be trusted. - * - * @return {String} - * @api public - */ - -defineGetter(req, 'hostname', function hostname(){ - var trust = this.app.get('trust proxy fn'); - var host = this.get('X-Forwarded-Host'); - - if (!host || !trust(this.connection.remoteAddress)) { - host = this.get('Host'); - } - - if (!host) return; - - // IPv6 literal support - var offset = host[0] === '[' - ? host.indexOf(']') + 1 - : 0; - var index = host.indexOf(':', offset); - - return ~index - ? host.substring(0, index) - : host; -}); - -// TODO: change req.host to return host in next major - -defineGetter(req, 'host', deprecate.function(function host(){ - return this.hostname; -}, 'req.host: Use req.hostname instead')); - -/** - * Check if the request is fresh, aka - * Last-Modified and/or the ETag - * still match. - * - * @return {Boolean} - * @api public - */ - -defineGetter(req, 'fresh', function(){ - var method = this.method; - var s = this.res.statusCode; - - // GET or HEAD for weak freshness validation only - if ('GET' != method && 'HEAD' != method) return false; - - // 2xx or 304 as per rfc2616 14.26 - if ((s >= 200 && s < 300) || 304 == s) { - return fresh(this.headers, this.res._headers); - } - - return false; -}); - -/** - * Check if the request is stale, aka - * "Last-Modified" and / or the "ETag" for the - * resource has changed. - * - * @return {Boolean} - * @api public - */ - -defineGetter(req, 'stale', function stale(){ - return !this.fresh; -}); - -/** - * Check if the request was an _XMLHttpRequest_. - * - * @return {Boolean} - * @api public - */ - -defineGetter(req, 'xhr', function xhr(){ - var val = this.get('X-Requested-With') || ''; - return 'xmlhttprequest' == val.toLowerCase(); -}); - -/** - * Helper function for creating a getter on an object. - * - * @param {Object} obj - * @param {String} name - * @param {Function} getter - * @api private - */ -function defineGetter(obj, name, getter) { - Object.defineProperty(obj, name, { - configurable: true, - enumerable: true, - get: getter - }); -}; diff --git a/node_modules/express/lib/response.js b/node_modules/express/lib/response.js deleted file mode 100644 index d040da7..0000000 --- a/node_modules/express/lib/response.js +++ /dev/null @@ -1,971 +0,0 @@ -/** - * Module dependencies. - */ - -var contentDisposition = require('content-disposition'); -var deprecate = require('depd')('express'); -var escapeHtml = require('escape-html'); -var http = require('http'); -var isAbsolute = require('./utils').isAbsolute; -var onFinished = require('on-finished'); -var path = require('path'); -var merge = require('utils-merge'); -var sign = require('cookie-signature').sign; -var normalizeType = require('./utils').normalizeType; -var normalizeTypes = require('./utils').normalizeTypes; -var setCharset = require('./utils').setCharset; -var statusCodes = http.STATUS_CODES; -var cookie = require('cookie'); -var send = require('send'); -var extname = path.extname; -var mime = send.mime; -var resolve = path.resolve; -var vary = require('vary'); - -/** - * Response prototype. - */ - -var res = module.exports = { - __proto__: http.ServerResponse.prototype -}; - -/** - * Set status `code`. - * - * @param {Number} code - * @return {ServerResponse} - * @api public - */ - -res.status = function(code){ - this.statusCode = code; - return this; -}; - -/** - * Set Link header field with the given `links`. - * - * Examples: - * - * res.links({ - * next: 'http://api.example.com/users?page=2', - * last: 'http://api.example.com/users?page=5' - * }); - * - * @param {Object} links - * @return {ServerResponse} - * @api public - */ - -res.links = function(links){ - var link = this.get('Link') || ''; - if (link) link += ', '; - return this.set('Link', link + Object.keys(links).map(function(rel){ - return '<' + links[rel] + '>; rel="' + rel + '"'; - }).join(', ')); -}; - -/** - * Send a response. - * - * Examples: - * - * res.send(new Buffer('wahoo')); - * res.send({ some: 'json' }); - * res.send('

some html

'); - * - * @param {string|number|boolean|object|Buffer} body - * @api public - */ - -res.send = function send(body) { - var chunk = body; - var encoding; - var len; - var req = this.req; - var type; - - // settings - var app = this.app; - - // allow status / body - if (arguments.length === 2) { - // res.send(body, status) backwards compat - if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') { - deprecate('res.send(body, status): Use res.status(status).send(body) instead'); - this.statusCode = arguments[1]; - } else { - deprecate('res.send(status, body): Use res.status(status).send(body) instead'); - this.statusCode = arguments[0]; - chunk = arguments[1]; - } - } - - // disambiguate res.send(status) and res.send(status, num) - if (typeof chunk === 'number' && arguments.length === 1) { - // res.send(status) will set status message as text string - if (!this.get('Content-Type')) { - this.type('txt'); - } - - deprecate('res.send(status): Use res.sendStatus(status) instead'); - this.statusCode = chunk; - chunk = http.STATUS_CODES[chunk]; - } - - switch (typeof chunk) { - // string defaulting to html - case 'string': - if (!this.get('Content-Type')) { - this.type('html'); - } - break; - case 'boolean': - case 'number': - case 'object': - if (chunk === null) { - chunk = ''; - } else if (Buffer.isBuffer(chunk)) { - if (!this.get('Content-Type')) { - this.type('bin'); - } - } else { - return this.json(chunk); - } - break; - } - - // write strings in utf-8 - if (typeof chunk === 'string') { - encoding = 'utf8'; - type = this.get('Content-Type'); - - // reflect this in content-type - if (typeof type === 'string') { - this.set('Content-Type', setCharset(type, 'utf-8')); - } - } - - // populate Content-Length - if (chunk !== undefined) { - if (!Buffer.isBuffer(chunk)) { - // convert chunk to Buffer; saves later double conversions - chunk = new Buffer(chunk, encoding); - encoding = undefined; - } - - len = chunk.length; - this.set('Content-Length', len); - } - - // method check - var isHead = req.method === 'HEAD'; - - // ETag support - if (len !== undefined && (isHead || req.method === 'GET')) { - var etag = app.get('etag fn'); - if (etag && !this.get('ETag')) { - etag = etag(chunk, encoding); - etag && this.set('ETag', etag); - } - } - - // freshness - if (req.fresh) this.statusCode = 304; - - // strip irrelevant headers - if (204 == this.statusCode || 304 == this.statusCode) { - this.removeHeader('Content-Type'); - this.removeHeader('Content-Length'); - this.removeHeader('Transfer-Encoding'); - chunk = ''; - } - - // skip body for HEAD - if (isHead) { - this.end(); - } - - // respond - this.end(chunk, encoding); - - return this; -}; - -/** - * Send JSON response. - * - * Examples: - * - * res.json(null); - * res.json({ user: 'tj' }); - * - * @param {string|number|boolean|object} obj - * @api public - */ - -res.json = function json(obj) { - var val = obj; - - // allow status / body - if (arguments.length === 2) { - // res.json(body, status) backwards compat - if (typeof arguments[1] === 'number') { - deprecate('res.json(obj, status): Use res.status(status).json(obj) instead'); - this.statusCode = arguments[1]; - } else { - deprecate('res.json(status, obj): Use res.status(status).json(obj) instead'); - this.statusCode = arguments[0]; - val = arguments[1]; - } - } - - // settings - var app = this.app; - var replacer = app.get('json replacer'); - var spaces = app.get('json spaces'); - var body = JSON.stringify(val, replacer, spaces); - - // content-type - if (!this.get('Content-Type')) { - this.set('Content-Type', 'application/json'); - } - - return this.send(body); -}; - -/** - * Send JSON response with JSONP callback support. - * - * Examples: - * - * res.jsonp(null); - * res.jsonp({ user: 'tj' }); - * - * @param {string|number|boolean|object} obj - * @api public - */ - -res.jsonp = function jsonp(obj) { - var val = obj; - - // allow status / body - if (arguments.length === 2) { - // res.json(body, status) backwards compat - if (typeof arguments[1] === 'number') { - deprecate('res.jsonp(obj, status): Use res.status(status).json(obj) instead'); - this.statusCode = arguments[1]; - } else { - deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead'); - this.statusCode = arguments[0]; - val = arguments[1]; - } - } - - // settings - var app = this.app; - var replacer = app.get('json replacer'); - var spaces = app.get('json spaces'); - var body = JSON.stringify(val, replacer, spaces); - var callback = this.req.query[app.get('jsonp callback name')]; - - // content-type - if (!this.get('Content-Type')) { - this.set('X-Content-Type-Options', 'nosniff'); - this.set('Content-Type', 'application/json'); - } - - // fixup callback - if (Array.isArray(callback)) { - callback = callback[0]; - } - - // jsonp - if (typeof callback === 'string' && callback.length !== 0) { - this.charset = 'utf-8'; - this.set('X-Content-Type-Options', 'nosniff'); - this.set('Content-Type', 'text/javascript'); - - // restrict callback charset - callback = callback.replace(/[^\[\]\w$.]/g, ''); - - // replace chars not allowed in JavaScript that are in JSON - body = body - .replace(/\u2028/g, '\\u2028') - .replace(/\u2029/g, '\\u2029'); - - // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse" - // the typeof check is just to reduce client error noise - body = '/**/ typeof ' + callback + ' === \'function\' && ' + callback + '(' + body + ');'; - } - - return this.send(body); -}; - -/** - * Send given HTTP status code. - * - * Sets the response status to `statusCode` and the body of the - * response to the standard description from node's http.STATUS_CODES - * or the statusCode number if no description. - * - * Examples: - * - * res.sendStatus(200); - * - * @param {number} statusCode - * @api public - */ - -res.sendStatus = function sendStatus(statusCode) { - var body = http.STATUS_CODES[statusCode] || String(statusCode); - - this.statusCode = statusCode; - this.type('txt'); - - return this.send(body); -}; - -/** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `fn(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.sentHeader` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) - * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file - * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them - * - * Other options are passed along to `send`. - * - * Examples: - * - * The following example illustrates how `res.sendFile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendFile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendFile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @api public - */ - -res.sendFile = function sendFile(path, options, fn) { - var req = this.req; - var res = this; - var next = req.next; - - if (!path) { - throw new TypeError('path argument is required to res.sendFile'); - } - - // support function as second arg - if (typeof options === 'function') { - fn = options; - options = {}; - } - - options = options || {}; - - if (!options.root && !isAbsolute(path)) { - throw new TypeError('path must be absolute or specify root to res.sendFile'); - } - - // create file stream - var pathname = encodeURI(path); - var file = send(req, pathname, options); - - // transfer - sendfile(res, file, options, function (err) { - if (fn) return fn(err); - if (err && err.code === 'EISDIR') return next(); - - // next() all but write errors - if (err && err.code !== 'ECONNABORT' && err.syscall !== 'write') { - next(err); - } - }); -}; - -/** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `fn(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.sentHeader` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) - * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file - * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them - * - * Other options are passed along to `send`. - * - * Examples: - * - * The following example illustrates how `res.sendfile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendfile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendfile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @api public - */ - -res.sendfile = function(path, options, fn){ - var req = this.req; - var res = this; - var next = req.next; - - // support function as second arg - if (typeof options === 'function') { - fn = options; - options = {}; - } - - options = options || {}; - - // create file stream - var file = send(req, path, options); - - // transfer - sendfile(res, file, options, function (err) { - if (fn) return fn(err); - if (err && err.code === 'EISDIR') return next(); - - // next() all but write errors - if (err && err.code !== 'ECONNABORT' && err.syscall !== 'write') { - next(err); - } - }); -}; - -res.sendfile = deprecate.function(res.sendfile, - 'res.sendfile: Use res.sendFile instead'); - -/** - * Transfer the file at the given `path` as an attachment. - * - * Optionally providing an alternate attachment `filename`, - * and optional callback `fn(err)`. The callback is invoked - * when the data transfer is complete, or when an error has - * ocurred. Be sure to check `res.headersSent` if you plan to respond. - * - * This method uses `res.sendfile()`. - * - * @api public - */ - -res.download = function download(path, filename, fn) { - // support function as second arg - if (typeof filename === 'function') { - fn = filename; - filename = null; - } - - filename = filename || path; - - // set Content-Disposition when file is sent - var headers = { - 'Content-Disposition': contentDisposition(filename) - }; - - // Resolve the full path for sendFile - var fullPath = resolve(path); - - return this.sendFile(fullPath, { headers: headers }, fn); -}; - -/** - * Set _Content-Type_ response header with `type` through `mime.lookup()` - * when it does not contain "/", or set the Content-Type to `type` otherwise. - * - * Examples: - * - * res.type('.html'); - * res.type('html'); - * res.type('json'); - * res.type('application/json'); - * res.type('png'); - * - * @param {String} type - * @return {ServerResponse} for chaining - * @api public - */ - -res.contentType = -res.type = function(type){ - return this.set('Content-Type', ~type.indexOf('/') - ? type - : mime.lookup(type)); -}; - -/** - * Respond to the Acceptable formats using an `obj` - * of mime-type callbacks. - * - * This method uses `req.accepted`, an array of - * acceptable types ordered by their quality values. - * When "Accept" is not present the _first_ callback - * is invoked, otherwise the first match is used. When - * no match is performed the server responds with - * 406 "Not Acceptable". - * - * Content-Type is set for you, however if you choose - * you may alter this within the callback using `res.type()` - * or `res.set('Content-Type', ...)`. - * - * res.format({ - * 'text/plain': function(){ - * res.send('hey'); - * }, - * - * 'text/html': function(){ - * res.send('

hey

'); - * }, - * - * 'appliation/json': function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * In addition to canonicalized MIME types you may - * also use extnames mapped to these types: - * - * res.format({ - * text: function(){ - * res.send('hey'); - * }, - * - * html: function(){ - * res.send('

hey

'); - * }, - * - * json: function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * By default Express passes an `Error` - * with a `.status` of 406 to `next(err)` - * if a match is not made. If you provide - * a `.default` callback it will be invoked - * instead. - * - * @param {Object} obj - * @return {ServerResponse} for chaining - * @api public - */ - -res.format = function(obj){ - var req = this.req; - var next = req.next; - - var fn = obj.default; - if (fn) delete obj.default; - var keys = Object.keys(obj); - - var key = req.accepts(keys); - - this.vary("Accept"); - - if (key) { - this.set('Content-Type', normalizeType(key).value); - obj[key](req, this, next); - } else if (fn) { - fn(); - } else { - var err = new Error('Not Acceptable'); - err.status = 406; - err.types = normalizeTypes(keys).map(function(o){ return o.value }); - next(err); - } - - return this; -}; - -/** - * Set _Content-Disposition_ header to _attachment_ with optional `filename`. - * - * @param {String} filename - * @return {ServerResponse} - * @api public - */ - -res.attachment = function attachment(filename) { - if (filename) { - this.type(extname(filename)); - } - - this.set('Content-Disposition', contentDisposition(filename)); - - return this; -}; - -/** - * Set header `field` to `val`, or pass - * an object of header fields. - * - * Examples: - * - * res.set('Foo', ['bar', 'baz']); - * res.set('Accept', 'application/json'); - * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); - * - * Aliased as `res.header()`. - * - * @param {String|Object|Array} field - * @param {String} val - * @return {ServerResponse} for chaining - * @api public - */ - -res.set = -res.header = function header(field, val) { - if (arguments.length === 2) { - if (Array.isArray(val)) val = val.map(String); - else val = String(val); - if ('content-type' == field.toLowerCase() && !/;\s*charset\s*=/.test(val)) { - var charset = mime.charsets.lookup(val.split(';')[0]); - if (charset) val += '; charset=' + charset.toLowerCase(); - } - this.setHeader(field, val); - } else { - for (var key in field) { - this.set(key, field[key]); - } - } - return this; -}; - -/** - * Get value for header `field`. - * - * @param {String} field - * @return {String} - * @api public - */ - -res.get = function(field){ - return this.getHeader(field); -}; - -/** - * Clear cookie `name`. - * - * @param {String} name - * @param {Object} options - * @return {ServerResponse} for chaining - * @api public - */ - -res.clearCookie = function(name, options){ - var opts = { expires: new Date(1), path: '/' }; - return this.cookie(name, '', options - ? merge(opts, options) - : opts); -}; - -/** - * Set cookie `name` to `val`, with the given `options`. - * - * Options: - * - * - `maxAge` max-age in milliseconds, converted to `expires` - * - `signed` sign the cookie - * - `path` defaults to "/" - * - * Examples: - * - * // "Remember Me" for 15 minutes - * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); - * - * // save as above - * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) - * - * @param {String} name - * @param {String|Object} val - * @param {Options} options - * @return {ServerResponse} for chaining - * @api public - */ - -res.cookie = function(name, val, options){ - options = merge({}, options); - var secret = this.req.secret; - var signed = options.signed; - if (signed && !secret) throw new Error('cookieParser("secret") required for signed cookies'); - if ('number' == typeof val) val = val.toString(); - if ('object' == typeof val) val = 'j:' + JSON.stringify(val); - if (signed) val = 's:' + sign(val, secret); - if ('maxAge' in options) { - options.expires = new Date(Date.now() + options.maxAge); - options.maxAge /= 1000; - } - if (null == options.path) options.path = '/'; - var headerVal = cookie.serialize(name, String(val), options); - - // supports multiple 'res.cookie' calls by getting previous value - var prev = this.get('Set-Cookie'); - if (prev) { - if (Array.isArray(prev)) { - headerVal = prev.concat(headerVal); - } else { - headerVal = [prev, headerVal]; - } - } - this.set('Set-Cookie', headerVal); - return this; -}; - - -/** - * Set the location header to `url`. - * - * The given `url` can also be "back", which redirects - * to the _Referrer_ or _Referer_ headers or "/". - * - * Examples: - * - * res.location('/foo/bar').; - * res.location('http://example.com'); - * res.location('../login'); - * - * @param {String} url - * @return {ServerResponse} for chaining - * @api public - */ - -res.location = function(url){ - var req = this.req; - - // "back" is an alias for the referrer - if ('back' == url) url = req.get('Referrer') || '/'; - - // Respond - this.set('Location', url); - return this; -}; - -/** - * Redirect to the given `url` with optional response `status` - * defaulting to 302. - * - * The resulting `url` is determined by `res.location()`, so - * it will play nicely with mounted apps, relative paths, - * `"back"` etc. - * - * Examples: - * - * res.redirect('/foo/bar'); - * res.redirect('http://example.com'); - * res.redirect(301, 'http://example.com'); - * res.redirect('../login'); // /blog/post/1 -> /blog/login - * - * @api public - */ - -res.redirect = function redirect(url) { - var address = url; - var body; - var status = 302; - - // allow status / url - if (arguments.length === 2) { - if (typeof arguments[0] === 'number') { - status = arguments[0]; - address = arguments[1]; - } else { - deprecate('res.redirect(url, status): Use res.redirect(status, url) instead'); - status = arguments[1]; - } - } - - // Set location header - this.location(address); - address = this.get('Location'); - - // Support text/{plain,html} by default - this.format({ - text: function(){ - body = statusCodes[status] + '. Redirecting to ' + encodeURI(address); - }, - - html: function(){ - var u = escapeHtml(address); - body = '

' + statusCodes[status] + '. Redirecting to ' + u + '

'; - }, - - default: function(){ - body = ''; - } - }); - - // Respond - this.statusCode = status; - this.set('Content-Length', Buffer.byteLength(body)); - - if (this.req.method === 'HEAD') { - this.end(); - } - - this.end(body); -}; - -/** - * Add `field` to Vary. If already present in the Vary set, then - * this call is simply ignored. - * - * @param {Array|String} field - * @return {ServerResponse} for chaining - * @api public - */ - -res.vary = function(field){ - // checks for back-compat - if (!field || (Array.isArray(field) && !field.length)) { - deprecate('res.vary(): Provide a field name'); - return this; - } - - vary(this, field); - - return this; -}; - -/** - * Render `view` with the given `options` and optional callback `fn`. - * When a callback function is given a response will _not_ be made - * automatically, otherwise a response of _200_ and _text/html_ is given. - * - * Options: - * - * - `cache` boolean hinting to the engine it should cache - * - `filename` filename of the view being rendered - * - * @api public - */ - -res.render = function(view, options, fn){ - options = options || {}; - var self = this; - var req = this.req; - var app = req.app; - - // support callback function as second arg - if ('function' == typeof options) { - fn = options, options = {}; - } - - // merge res.locals - options._locals = self.locals; - - // default callback to respond - fn = fn || function(err, str){ - if (err) return req.next(err); - self.send(str); - }; - - // render - app.render(view, options, fn); -}; - -// pipe the send file stream -function sendfile(res, file, options, callback) { - var done = false; - - // directory - function ondirectory() { - if (done) return; - done = true; - - var err = new Error('EISDIR, read'); - err.code = 'EISDIR'; - callback(err); - } - - // errors - function onerror(err) { - if (done) return; - done = true; - callback(err); - } - - // ended - function onend() { - if (done) return; - done = true; - callback(); - } - - // finished - function onfinish(err) { - if (err) return onerror(err); - if (done) return; - - setImmediate(function () { - if (done) return; - done = true; - - // response finished before end of file - var err = new Error('Request aborted'); - err.code = 'ECONNABORT'; - callback(err); - }); - } - - file.on('end', onend); - file.on('error', onerror); - file.on('directory', ondirectory); - onFinished(res, onfinish); - - if (options.headers) { - // set headers on successful transfer - file.on('headers', function headers(res) { - var obj = options.headers; - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - res.setHeader(k, obj[k]); - } - }); - } - - // pipe - file.pipe(res); -} diff --git a/node_modules/express/lib/router/index.js b/node_modules/express/lib/router/index.js deleted file mode 100644 index b3a42e2..0000000 --- a/node_modules/express/lib/router/index.js +++ /dev/null @@ -1,576 +0,0 @@ - -/** - * Module dependencies. - */ - -var Route = require('./route'); -var Layer = require('./layer'); -var methods = require('methods'); -var mixin = require('utils-merge'); -var debug = require('debug')('express:router'); -var parseUrl = require('parseurl'); -var utils = require('../utils'); - -/** - * Module variables. - */ - -var objectRegExp = /^\[object (\S+)\]$/; -var slice = Array.prototype.slice; -var toString = Object.prototype.toString; - -/** - * Initialize a new `Router` with the given `options`. - * - * @param {Object} options - * @return {Router} which is an callable function - * @api public - */ - -var proto = module.exports = function(options) { - options = options || {}; - - function router(req, res, next) { - router.handle(req, res, next); - } - - // mixin Router class functions - router.__proto__ = proto; - - router.params = {}; - router._params = []; - router.caseSensitive = options.caseSensitive; - router.mergeParams = options.mergeParams; - router.strict = options.strict; - router.stack = []; - - return router; -}; - -/** - * Map the given param placeholder `name`(s) to the given callback. - * - * Parameter mapping is used to provide pre-conditions to routes - * which use normalized placeholders. For example a _:user_id_ parameter - * could automatically load a user's information from the database without - * any additional code, - * - * The callback uses the same signature as middleware, the only difference - * being that the value of the placeholder is passed, in this case the _id_ - * of the user. Once the `next()` function is invoked, just like middleware - * it will continue on to execute the route, or subsequent parameter functions. - * - * Just like in middleware, you must either respond to the request or call next - * to avoid stalling the request. - * - * app.param('user_id', function(req, res, next, id){ - * User.find(id, function(err, user){ - * if (err) { - * return next(err); - * } else if (!user) { - * return next(new Error('failed to load user')); - * } - * req.user = user; - * next(); - * }); - * }); - * - * @param {String} name - * @param {Function} fn - * @return {app} for chaining - * @api public - */ - -proto.param = function(name, fn){ - // param logic - if ('function' == typeof name) { - this._params.push(name); - return; - } - - // apply param functions - var params = this._params; - var len = params.length; - var ret; - - if (name[0] === ':') { - name = name.substr(1); - } - - for (var i = 0; i < len; ++i) { - if (ret = params[i](name, fn)) { - fn = ret; - } - } - - // ensure we end up with a - // middleware function - if ('function' != typeof fn) { - throw new Error('invalid param() call for ' + name + ', got ' + fn); - } - - (this.params[name] = this.params[name] || []).push(fn); - return this; -}; - -/** - * Dispatch a req, res into the router. - * - * @api private - */ - -proto.handle = function(req, res, done) { - var self = this; - - debug('dispatching %s %s', req.method, req.url); - - var search = 1 + req.url.indexOf('?'); - var pathlength = search ? search - 1 : req.url.length; - var fqdn = req.url[0] !== '/' && 1 + req.url.substr(0, pathlength).indexOf('://'); - var protohost = fqdn ? req.url.substr(0, req.url.indexOf('/', 2 + fqdn)) : ''; - var idx = 0; - var removed = ''; - var slashAdded = false; - var paramcalled = {}; - - // store options for OPTIONS request - // only used if OPTIONS request - var options = []; - - // middleware and routes - var stack = self.stack; - - // manage inter-router variables - var parentParams = req.params; - var parentUrl = req.baseUrl || ''; - done = restore(done, req, 'baseUrl', 'next', 'params'); - - // setup next layer - req.next = next; - - // for options requests, respond with a default if nothing else responds - if (req.method === 'OPTIONS') { - done = wrap(done, function(old, err) { - if (err || options.length === 0) return old(err); - - var body = options.join(','); - return res.set('Allow', body).send(body); - }); - } - - // setup basic req values - req.baseUrl = parentUrl; - req.originalUrl = req.originalUrl || req.url; - - next(); - - function next(err) { - var layerError = err === 'route' - ? null - : err; - - var layer = stack[idx++]; - - if (slashAdded) { - req.url = req.url.substr(1); - slashAdded = false; - } - - if (removed.length !== 0) { - req.baseUrl = parentUrl; - req.url = protohost + removed + req.url.substr(protohost.length); - removed = ''; - } - - if (!layer) { - setImmediate(done, layerError); - return; - } - - self.match_layer(layer, req, res, function (err, path) { - if (err || path === undefined) { - return next(layerError || err); - } - - // route object and not middleware - var route = layer.route; - - // if final route, then we support options - if (route) { - // we don't run any routes with error first - if (layerError) { - return next(layerError); - } - - var method = req.method; - var has_method = route._handles_method(method); - - // build up automatic options response - if (!has_method && method === 'OPTIONS') { - options.push.apply(options, route._options()); - } - - // don't even bother - if (!has_method && method !== 'HEAD') { - return next(); - } - - // we can now dispatch to the route - req.route = route; - } - - // Capture one-time layer values - req.params = self.mergeParams - ? mergeParams(layer.params, parentParams) - : layer.params; - var layerPath = layer.path; - - // this should be done for the layer - self.process_params(layer, paramcalled, req, res, function (err) { - if (err) { - return next(layerError || err); - } - - if (route) { - return layer.handle_request(req, res, next); - } - - trim_prefix(layer, layerError, layerPath, path); - }); - }); - } - - function trim_prefix(layer, layerError, layerPath, path) { - var c = path[layerPath.length]; - if (c && '/' !== c && '.' !== c) return next(layerError); - - // Trim off the part of the url that matches the route - // middleware (.use stuff) needs to have the path stripped - if (layerPath.length !== 0) { - debug('trim prefix (%s) from url %s', layerPath, req.url); - removed = layerPath; - req.url = protohost + req.url.substr(protohost.length + removed.length); - - // Ensure leading slash - if (!fqdn && req.url[0] !== '/') { - req.url = '/' + req.url; - slashAdded = true; - } - - // Setup base URL (no trailing slash) - req.baseUrl = parentUrl + (removed[removed.length - 1] === '/' - ? removed.substring(0, removed.length - 1) - : removed); - } - - debug('%s %s : %s', layer.name, layerPath, req.originalUrl); - - if (layerError) { - layer.handle_error(layerError, req, res, next); - } else { - layer.handle_request(req, res, next); - } - } -}; - -/** - * Match request to a layer. - * - * @api private - */ - -proto.match_layer = function match_layer(layer, req, res, done) { - var error = null; - var path; - - try { - path = parseUrl(req).pathname; - - if (!layer.match(path)) { - path = undefined; - } - } catch (err) { - error = err; - } - - done(error, path); -}; - -/** - * Process any parameters for the layer. - * - * @api private - */ - -proto.process_params = function(layer, called, req, res, done) { - var params = this.params; - - // captured parameters from the layer, keys and values - var keys = layer.keys; - - // fast track - if (!keys || keys.length === 0) { - return done(); - } - - var i = 0; - var name; - var paramIndex = 0; - var key; - var paramVal; - var paramCallbacks; - var paramCalled; - - // process params in order - // param callbacks can be async - function param(err) { - if (err) { - return done(err); - } - - if (i >= keys.length ) { - return done(); - } - - paramIndex = 0; - key = keys[i++]; - - if (!key) { - return done(); - } - - name = key.name; - paramVal = req.params[name]; - paramCallbacks = params[name]; - paramCalled = called[name]; - - if (paramVal === undefined || !paramCallbacks) { - return param(); - } - - // param previously called with same value or error occurred - if (paramCalled && (paramCalled.error || paramCalled.match === paramVal)) { - // restore value - req.params[name] = paramCalled.value; - - // next param - return param(paramCalled.error); - } - - called[name] = paramCalled = { - error: null, - match: paramVal, - value: paramVal - }; - - paramCallback(); - } - - // single param callbacks - function paramCallback(err) { - var fn = paramCallbacks[paramIndex++]; - - // store updated value - paramCalled.value = req.params[key.name]; - - if (err) { - // store error - paramCalled.error = err; - param(err); - return; - } - - if (!fn) return param(); - - try { - fn(req, res, paramCallback, paramVal, key.name); - } catch (e) { - paramCallback(e); - } - } - - param(); -}; - -/** - * Use the given middleware function, with optional path, defaulting to "/". - * - * Use (like `.all`) will run for any http METHOD, but it will not add - * handlers for those methods so OPTIONS requests will not consider `.use` - * functions even if they could respond. - * - * The other difference is that _route_ path is stripped and not visible - * to the handler function. The main effect of this feature is that mounted - * handlers can operate without any code changes regardless of the "prefix" - * pathname. - * - * @api public - */ - -proto.use = function use(fn) { - var offset = 0; - var path = '/'; - - // default path to '/' - // disambiguate router.use([fn]) - if (typeof fn !== 'function') { - var arg = fn; - - while (Array.isArray(arg) && arg.length !== 0) { - arg = arg[0]; - } - - // first arg is the path - if (typeof arg !== 'function') { - offset = 1; - path = fn; - } - } - - var callbacks = utils.flatten(slice.call(arguments, offset)); - - if (callbacks.length === 0) { - throw new TypeError('Router.use() requires middleware functions'); - } - - callbacks.forEach(function (fn) { - if (typeof fn !== 'function') { - throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn)); - } - - // add the middleware - debug('use %s %s', path, fn.name || ''); - - var layer = new Layer(path, { - sensitive: this.caseSensitive, - strict: false, - end: false - }, fn); - - layer.route = undefined; - - this.stack.push(layer); - }, this); - - return this; -}; - -/** - * Create a new Route for the given path. - * - * Each route contains a separate middleware stack and VERB handlers. - * - * See the Route api documentation for details on adding handlers - * and middleware to routes. - * - * @param {String} path - * @return {Route} - * @api public - */ - -proto.route = function(path){ - var route = new Route(path); - - var layer = new Layer(path, { - sensitive: this.caseSensitive, - strict: this.strict, - end: true - }, route.dispatch.bind(route)); - - layer.route = route; - - this.stack.push(layer); - return route; -}; - -// create Router#VERB functions -methods.concat('all').forEach(function(method){ - proto[method] = function(path){ - var route = this.route(path) - route[method].apply(route, slice.call(arguments, 1)); - return this; - }; -}); - -// get type for error message -function gettype(obj) { - var type = typeof obj; - - if (type !== 'object') { - return type; - } - - // inspect [[Class]] for objects - return toString.call(obj) - .replace(objectRegExp, '$1'); -} - -// merge params with parent params -function mergeParams(params, parent) { - if (typeof parent !== 'object' || !parent) { - return params; - } - - // make copy of parent for base - var obj = mixin({}, parent); - - // simple non-numeric merging - if (!(0 in params) || !(0 in parent)) { - return mixin(obj, params); - } - - var i = 0; - var o = 0; - - // determine numeric gaps - while (i === o || o in parent) { - if (i in params) i++; - if (o in parent) o++; - } - - // offset numeric indices in params before merge - for (i--; i >= 0; i--) { - params[i + o] = params[i]; - - // create holes for the merge when necessary - if (i < o) { - delete params[i]; - } - } - - return mixin(parent, params); -} - -// restore obj props after function -function restore(fn, obj) { - var props = new Array(arguments.length - 2); - var vals = new Array(arguments.length - 2); - - for (var i = 0; i < props.length; i++) { - props[i] = arguments[i + 2]; - vals[i] = obj[props[i]]; - } - - return function(err){ - // restore vals - for (var i = 0; i < props.length; i++) { - obj[props[i]] = vals[i]; - } - - return fn.apply(this, arguments); - }; -} - -// wrap a function -function wrap(old, fn) { - return function proxy() { - var args = new Array(arguments.length + 1); - - args[0] = old; - for (var i = 0, len = arguments.length; i < len; i++) { - args[i + 1] = arguments[i]; - } - - fn.apply(this, args); - }; -} diff --git a/node_modules/express/lib/router/layer.js b/node_modules/express/lib/router/layer.js deleted file mode 100644 index 88ebd39..0000000 --- a/node_modules/express/lib/router/layer.js +++ /dev/null @@ -1,166 +0,0 @@ -/** - * Module dependencies. - */ - -var pathRegexp = require('path-to-regexp'); -var debug = require('debug')('express:router:layer'); - -/** - * Module variables. - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Expose `Layer`. - */ - -module.exports = Layer; - -function Layer(path, options, fn) { - if (!(this instanceof Layer)) { - return new Layer(path, options, fn); - } - - debug('new %s', path); - options = options || {}; - - this.handle = fn; - this.name = fn.name || ''; - this.params = undefined; - this.path = undefined; - this.regexp = pathRegexp(path, this.keys = [], options); - - if (path === '/' && options.end === false) { - this.regexp.fast_slash = true; - } -} - -/** - * Handle the error for the layer. - * - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {function} next - * @api private - */ - -Layer.prototype.handle_error = function handle_error(error, req, res, next) { - var fn = this.handle; - - if (fn.length !== 4) { - // not a standard error handler - return next(error); - } - - try { - fn(error, req, res, next); - } catch (err) { - next(err); - } -}; - -/** - * Handle the request for the layer. - * - * @param {Request} req - * @param {Response} res - * @param {function} next - * @api private - */ - -Layer.prototype.handle_request = function handle(req, res, next) { - var fn = this.handle; - - if (fn.length > 3) { - // not a standard request handler - return next(); - } - - try { - fn(req, res, next); - } catch (err) { - next(err); - } -}; - -/** - * Check if this route matches `path`, if so - * populate `.params`. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -Layer.prototype.match = function match(path) { - if (path == null) { - // no path, nothing matches - this.params = undefined; - this.path = undefined; - return false; - } - - if (this.regexp.fast_slash) { - // fast path non-ending match for / (everything matches) - this.params = {}; - this.path = ''; - return true; - } - - var m = this.regexp.exec(path); - - if (!m) { - this.params = undefined; - this.path = undefined; - return false; - } - - // store values - this.params = {}; - this.path = m[0]; - - var keys = this.keys; - var params = this.params; - var prop; - var n = 0; - var key; - var val; - - for (var i = 1, len = m.length; i < len; ++i) { - key = keys[i - 1]; - prop = key - ? key.name - : n++; - val = decode_param(m[i]); - - if (val !== undefined || !(hasOwnProperty.call(params, prop))) { - params[prop] = val; - } - } - - return true; -}; - -/** - * Decode param value. - * - * @param {string} val - * @return {string} - * @api private - */ - -function decode_param(val){ - if (typeof val !== 'string') { - return val; - } - - try { - return decodeURIComponent(val); - } catch (e) { - var err = new TypeError("Failed to decode param '" + val + "'"); - err.status = 400; - throw err; - } -} diff --git a/node_modules/express/lib/router/route.js b/node_modules/express/lib/router/route.js deleted file mode 100644 index 903d1a5..0000000 --- a/node_modules/express/lib/router/route.js +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Module dependencies. - */ - -var debug = require('debug')('express:router:route'); -var Layer = require('./layer'); -var methods = require('methods'); -var utils = require('../utils'); - -/** - * Expose `Route`. - */ - -module.exports = Route; - -/** - * Initialize `Route` with the given `path`, - * - * @param {String} path - * @api private - */ - -function Route(path) { - debug('new %s', path); - this.path = path; - this.stack = []; - - // route handlers for various http methods - this.methods = {}; -} - -/** - * @api private - */ - -Route.prototype._handles_method = function _handles_method(method) { - if (this.methods._all) { - return true; - } - - method = method.toLowerCase(); - - if (method === 'head' && !this.methods['head']) { - method = 'get'; - } - - return Boolean(this.methods[method]); -}; - -/** - * @return {Array} supported HTTP methods - * @api private - */ - -Route.prototype._options = function(){ - return Object.keys(this.methods).map(function(method) { - return method.toUpperCase(); - }); -}; - -/** - * dispatch req, res into this route - * - * @api private - */ - -Route.prototype.dispatch = function(req, res, done){ - var idx = 0; - var stack = this.stack; - if (stack.length === 0) { - return done(); - } - - var method = req.method.toLowerCase(); - if (method === 'head' && !this.methods['head']) { - method = 'get'; - } - - req.route = this; - - next(); - - function next(err) { - if (err && err === 'route') { - return done(); - } - - var layer = stack[idx++]; - if (!layer) { - return done(err); - } - - if (layer.method && layer.method !== method) { - return next(err); - } - - if (err) { - layer.handle_error(err, req, res, next); - } else { - layer.handle_request(req, res, next); - } - } -}; - -/** - * Add a handler for all HTTP verbs to this route. - * - * Behaves just like middleware and can respond or call `next` - * to continue processing. - * - * You can use multiple `.all` call to add multiple handlers. - * - * function check_something(req, res, next){ - * next(); - * }; - * - * function validate_user(req, res, next){ - * next(); - * }; - * - * route - * .all(validate_user) - * .all(check_something) - * .get(function(req, res, next){ - * res.send('hello world'); - * }); - * - * @param {function} handler - * @return {Route} for chaining - * @api public - */ - -Route.prototype.all = function(){ - var callbacks = utils.flatten([].slice.call(arguments)); - callbacks.forEach(function(fn) { - if (typeof fn !== 'function') { - var type = {}.toString.call(fn); - var msg = 'Route.all() requires callback functions but got a ' + type; - throw new Error(msg); - } - - var layer = Layer('/', {}, fn); - layer.method = undefined; - - this.methods._all = true; - this.stack.push(layer); - }, this); - - return this; -}; - -methods.forEach(function(method){ - Route.prototype[method] = function(){ - var callbacks = utils.flatten([].slice.call(arguments)); - - callbacks.forEach(function(fn) { - if (typeof fn !== 'function') { - var type = {}.toString.call(fn); - var msg = 'Route.' + method + '() requires callback functions but got a ' + type; - throw new Error(msg); - } - - debug('%s %s', method, this.path); - - var layer = Layer('/', {}, fn); - layer.method = method; - - this.methods[method] = true; - this.stack.push(layer); - }, this); - return this; - }; -}); diff --git a/node_modules/express/lib/utils.js b/node_modules/express/lib/utils.js deleted file mode 100644 index 9814527..0000000 --- a/node_modules/express/lib/utils.js +++ /dev/null @@ -1,283 +0,0 @@ -/** - * Module dependencies. - */ - -var contentDisposition = require('content-disposition'); -var deprecate = require('depd')('express'); -var mime = require('send').mime; -var basename = require('path').basename; -var etag = require('etag'); -var proxyaddr = require('proxy-addr'); -var qs = require('qs'); -var querystring = require('querystring'); -var typer = require('media-typer'); - -/** - * Return strong ETag for `body`. - * - * @param {String|Buffer} body - * @param {String} [encoding] - * @return {String} - * @api private - */ - -exports.etag = function (body, encoding) { - var buf = !Buffer.isBuffer(body) - ? new Buffer(body, encoding) - : body; - - return etag(buf, {weak: false}); -}; - -/** - * Return weak ETag for `body`. - * - * @param {String|Buffer} body - * @param {String} [encoding] - * @return {String} - * @api private - */ - -exports.wetag = function wetag(body, encoding){ - var buf = !Buffer.isBuffer(body) - ? new Buffer(body, encoding) - : body; - - return etag(buf, {weak: true}); -}; - -/** - * Check if `path` looks absolute. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -exports.isAbsolute = function(path){ - if ('/' == path[0]) return true; - if (':' == path[1] && '\\' == path[2]) return true; - if ('\\\\' == path.substring(0, 2)) return true; // Microsoft Azure absolute path -}; - -/** - * Flatten the given `arr`. - * - * @param {Array} arr - * @return {Array} - * @api private - */ - -exports.flatten = function(arr, ret){ - ret = ret || []; - var len = arr.length; - for (var i = 0; i < len; ++i) { - if (Array.isArray(arr[i])) { - exports.flatten(arr[i], ret); - } else { - ret.push(arr[i]); - } - } - return ret; -}; - -/** - * Normalize the given `type`, for example "html" becomes "text/html". - * - * @param {String} type - * @return {Object} - * @api private - */ - -exports.normalizeType = function(type){ - return ~type.indexOf('/') - ? acceptParams(type) - : { value: mime.lookup(type), params: {} }; -}; - -/** - * Normalize `types`, for example "html" becomes "text/html". - * - * @param {Array} types - * @return {Array} - * @api private - */ - -exports.normalizeTypes = function(types){ - var ret = []; - - for (var i = 0; i < types.length; ++i) { - ret.push(exports.normalizeType(types[i])); - } - - return ret; -}; - -/** - * Generate Content-Disposition header appropriate for the filename. - * non-ascii filenames are urlencoded and a filename* parameter is added - * - * @param {String} filename - * @return {String} - * @api private - */ - -exports.contentDisposition = deprecate.function(contentDisposition, - 'utils.contentDisposition: use content-disposition npm module instead'); - -/** - * Parse accept params `str` returning an - * object with `.value`, `.quality` and `.params`. - * also includes `.originalIndex` for stable sorting - * - * @param {String} str - * @return {Object} - * @api private - */ - -function acceptParams(str, index) { - var parts = str.split(/ *; */); - var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index }; - - for (var i = 1; i < parts.length; ++i) { - var pms = parts[i].split(/ *= */); - if ('q' == pms[0]) { - ret.quality = parseFloat(pms[1]); - } else { - ret.params[pms[0]] = pms[1]; - } - } - - return ret; -} - -/** - * Compile "etag" value to function. - * - * @param {Boolean|String|Function} val - * @return {Function} - * @api private - */ - -exports.compileETag = function(val) { - var fn; - - if (typeof val === 'function') { - return val; - } - - switch (val) { - case true: - fn = exports.wetag; - break; - case false: - break; - case 'strong': - fn = exports.etag; - break; - case 'weak': - fn = exports.wetag; - break; - default: - throw new TypeError('unknown value for etag function: ' + val); - } - - return fn; -} - -/** - * Compile "query parser" value to function. - * - * @param {String|Function} val - * @return {Function} - * @api private - */ - -exports.compileQueryParser = function compileQueryParser(val) { - var fn; - - if (typeof val === 'function') { - return val; - } - - switch (val) { - case true: - fn = querystring.parse; - break; - case false: - fn = newObject; - break; - case 'extended': - fn = qs.parse; - break; - case 'simple': - fn = querystring.parse; - break; - default: - throw new TypeError('unknown value for query parser function: ' + val); - } - - return fn; -} - -/** - * Compile "proxy trust" value to function. - * - * @param {Boolean|String|Number|Array|Function} val - * @return {Function} - * @api private - */ - -exports.compileTrust = function(val) { - if (typeof val === 'function') return val; - - if (val === true) { - // Support plain true/false - return function(){ return true }; - } - - if (typeof val === 'number') { - // Support trusting hop count - return function(a, i){ return i < val }; - } - - if (typeof val === 'string') { - // Support comma-separated values - val = val.split(/ *, */); - } - - return proxyaddr.compile(val || []); -} - -/** - * Set the charset in a given Content-Type string. - * - * @param {String} type - * @param {String} charset - * @return {String} - * @api private - */ - -exports.setCharset = function(type, charset){ - if (!type || !charset) return type; - - // parse type - var parsed = typer.parse(type); - - // set charset - parsed.parameters.charset = charset; - - // format type - return typer.format(parsed); -}; - -/** - * Return new empty objet. - * - * @return {Object} - * @api private - */ - -function newObject() { - return {}; -} diff --git a/node_modules/express/lib/view.js b/node_modules/express/lib/view.js deleted file mode 100644 index e0989b4..0000000 --- a/node_modules/express/lib/view.js +++ /dev/null @@ -1,142 +0,0 @@ -/** - * Module dependencies. - */ - -var debug = require('debug')('express:view'); -var path = require('path'); -var fs = require('fs'); -var utils = require('./utils'); - -/** - * Module variables. - * @private - */ - -var dirname = path.dirname; -var basename = path.basename; -var extname = path.extname; -var join = path.join; -var resolve = path.resolve; - -/** - * Expose `View`. - */ - -module.exports = View; - -/** - * Initialize a new `View` with the given `name`. - * - * Options: - * - * - `defaultEngine` the default template engine name - * - `engines` template engine require() cache - * - `root` root path for view lookup - * - * @param {String} name - * @param {Object} options - * @api private - */ - -function View(name, options) { - options = options || {}; - this.name = name; - this.root = options.root; - var engines = options.engines; - this.defaultEngine = options.defaultEngine; - var ext = this.ext = extname(name); - if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.'); - if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); - this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); - this.path = this.lookup(name); -} - -/** - * Lookup view by the given `name` - * - * @param {String} name - * @return {String} - * @api private - */ - -View.prototype.lookup = function lookup(name) { - var path; - var roots = [].concat(this.root); - - debug('lookup "%s"', name); - - for (var i = 0; i < roots.length && !path; i++) { - var root = roots[i]; - - // resolve the path - var loc = resolve(root, name); - var dir = dirname(loc); - var file = basename(loc); - - // resolve the file - path = this.resolve(dir, file); - } - - return path; -}; - -/** - * Render with the given `options` and callback `fn(err, str)`. - * - * @param {Object} options - * @param {Function} fn - * @api private - */ - -View.prototype.render = function render(options, fn) { - debug('render "%s"', this.path); - this.engine(this.path, options, fn); -}; - -/** - * Resolve the file within the given directory. - * - * @param {string} dir - * @param {string} file - * @private - */ - -View.prototype.resolve = function resolve(dir, file) { - var ext = this.ext; - var path; - var stat; - - // . - path = join(dir, file); - stat = tryStat(path); - - if (stat && stat.isFile()) { - return path; - } - - // /index. - path = join(dir, basename(file, ext), 'index' + ext); - stat = tryStat(path); - - if (stat && stat.isFile()) { - return path; - } -}; - -/** - * Return a stat, maybe. - * - * @param {string} path - * @return {fs.Stats} - * @private - */ - -function tryStat(path) { - debug('stat "%s"', path); - - try { - return fs.statSync(path); - } catch (e) { - return undefined; - } -} diff --git a/node_modules/express/node_modules/accepts/HISTORY.md b/node_modules/express/node_modules/accepts/HISTORY.md deleted file mode 100644 index c947b23..0000000 --- a/node_modules/express/node_modules/accepts/HISTORY.md +++ /dev/null @@ -1,68 +0,0 @@ -1.1.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - deps: mime-db@~1.2.0 - -1.1.2 / 2014-10-14 -================== - - * deps: negotiator@0.4.9 - - Fix error when media type has invalid parameter - -1.1.1 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - deps: mime-db@~1.1.0 - * deps: negotiator@0.4.8 - - Fix all negotiations to be case-insensitive - - Stable sort preferences of same quality according to client order - -1.1.0 / 2014-09-02 -================== - - * update `mime-types` - -1.0.7 / 2014-07-04 -================== - - * Fix wrong type returned from `type` when match after unknown extension - -1.0.6 / 2014-06-24 -================== - - * deps: negotiator@0.4.7 - -1.0.5 / 2014-06-20 -================== - - * fix crash when unknown extension given - -1.0.4 / 2014-06-19 -================== - - * use `mime-types` - -1.0.3 / 2014-06-11 -================== - - * deps: negotiator@0.4.6 - - Order by specificity when quality is the same - -1.0.2 / 2014-05-29 -================== - - * Fix interpretation when header not in request - * deps: pin negotiator@0.4.5 - -1.0.1 / 2014-01-18 -================== - - * Identity encoding isn't always acceptable - * deps: negotiator@~0.4.0 - -1.0.0 / 2013-12-27 -================== - - * Genesis diff --git a/node_modules/express/node_modules/accepts/LICENSE b/node_modules/express/node_modules/accepts/LICENSE deleted file mode 100644 index f23dca8..0000000 --- a/node_modules/express/node_modules/accepts/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong - -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/node_modules/express/node_modules/accepts/README.md b/node_modules/express/node_modules/accepts/README.md deleted file mode 100644 index a9bc28a..0000000 --- a/node_modules/express/node_modules/accepts/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# accepts - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Higher level content negotation based on [negotiator](https://github.com/federomero/negotiator). Extracted from [koa](https://github.com/koajs/koa) for general use. - -In addition to negotatior, it allows: - -- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`. -- Allows type shorthands such as `json`. -- Returns `false` when no types match -- Treats non-existent headers as `*` - -## API - -### var accept = new Accepts(req) - -```js -var accepts = require('accepts') - -http.createServer(function (req, res) { - var accept = accepts(req) -}) -``` - -### accept\[property\]\(\) - -Returns all the explicitly accepted content property as an array in descending priority. - -- `accept.types()` -- `accept.encodings()` -- `accept.charsets()` -- `accept.languages()` - -They are also aliased in singular form such as `accept.type()`. `accept.languages()` is also aliased as `accept.langs()`, etc. - -Note: you should almost never do this in a real app as it defeats the purpose of content negotiation. - -Example: - -```js -// in Google Chrome -var encodings = accept.encodings() // -> ['sdch', 'gzip', 'deflate'] -``` - -Since you probably don't support `sdch`, you should just supply the encodings you support: - -```js -var encoding = accept.encodings('gzip', 'deflate') // -> 'gzip', probably -``` - -### accept\[property\]\(values, ...\) - -You can either have `values` be an array or have an argument list of values. - -If the client does not accept any `values`, `false` will be returned. -If the client accepts any `values`, the preferred `value` will be return. - -For `accept.types()`, shorthand mime types are allowed. - -Example: - -```js -// req.headers.accept = 'application/json' - -accept.types('json') // -> 'json' -accept.types('html', 'json') // -> 'json' -accept.types('html') // -> false - -// req.headers.accept = '' -// which is equivalent to `*` - -accept.types() // -> [], no explicit types -accept.types('text/html', 'text/json') // -> 'text/html', since it was first -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/accepts.svg?style=flat -[npm-url]: https://npmjs.org/package/accepts -[node-version-image]: https://img.shields.io/node/v/accepts.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/accepts.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/accepts -[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/accepts -[downloads-image]: https://img.shields.io/npm/dm/accepts.svg?style=flat -[downloads-url]: https://npmjs.org/package/accepts diff --git a/node_modules/express/node_modules/accepts/index.js b/node_modules/express/node_modules/accepts/index.js deleted file mode 100644 index 805e33a..0000000 --- a/node_modules/express/node_modules/accepts/index.js +++ /dev/null @@ -1,160 +0,0 @@ -var Negotiator = require('negotiator') -var mime = require('mime-types') - -var slice = [].slice - -module.exports = Accepts - -function Accepts(req) { - if (!(this instanceof Accepts)) - return new Accepts(req) - - this.headers = req.headers - this.negotiator = Negotiator(req) -} - -/** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json" or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * this.types('html'); - * // => "html" - * - * // Accept: text/*, application/json - * this.types('html'); - * // => "html" - * this.types('text/html'); - * // => "text/html" - * this.types('json', 'text'); - * // => "json" - * this.types('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * this.types('image/png'); - * this.types('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * this.types(['html', 'json']); - * this.types('html', 'json'); - * // => "json" - * - * @param {String|Array} type(s)... - * @return {String|Array|Boolean} - * @api public - */ - -Accepts.prototype.type = -Accepts.prototype.types = function (types) { - if (!Array.isArray(types)) types = slice.call(arguments); - var n = this.negotiator; - if (!types.length) return n.mediaTypes(); - if (!this.headers.accept) return types[0]; - var mimes = types.map(extToMime); - var accepts = n.mediaTypes(mimes.filter(validMime)); - var first = accepts[0]; - if (!first) return false; - return types[mimes.indexOf(first)]; -} - -/** - * Return accepted encodings or best fit based on `encodings`. - * - * Given `Accept-Encoding: gzip, deflate` - * an array sorted by quality is returned: - * - * ['gzip', 'deflate'] - * - * @param {String|Array} encoding(s)... - * @return {String|Array} - * @api public - */ - -Accepts.prototype.encoding = -Accepts.prototype.encodings = function (encodings) { - if (!Array.isArray(encodings)) encodings = slice.call(arguments); - var n = this.negotiator; - if (!encodings.length) return n.encodings(); - return n.encodings(encodings)[0] || false; -} - -/** - * Return accepted charsets or best fit based on `charsets`. - * - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` - * an array sorted by quality is returned: - * - * ['utf-8', 'utf-7', 'iso-8859-1'] - * - * @param {String|Array} charset(s)... - * @return {String|Array} - * @api public - */ - -Accepts.prototype.charset = -Accepts.prototype.charsets = function (charsets) { - if (!Array.isArray(charsets)) charsets = [].slice.call(arguments); - var n = this.negotiator; - if (!charsets.length) return n.charsets(); - if (!this.headers['accept-charset']) return charsets[0]; - return n.charsets(charsets)[0] || false; -} - -/** - * Return accepted languages or best fit based on `langs`. - * - * Given `Accept-Language: en;q=0.8, es, pt` - * an array sorted by quality is returned: - * - * ['es', 'pt', 'en'] - * - * @param {String|Array} lang(s)... - * @return {Array|String} - * @api public - */ - -Accepts.prototype.lang = -Accepts.prototype.langs = -Accepts.prototype.language = -Accepts.prototype.languages = function (langs) { - if (!Array.isArray(langs)) langs = slice.call(arguments); - var n = this.negotiator; - if (!langs.length) return n.languages(); - if (!this.headers['accept-language']) return langs[0]; - return n.languages(langs)[0] || false; -} - -/** - * Convert extnames to mime. - * - * @param {String} type - * @return {String} - * @api private - */ - -function extToMime(type) { - if (~type.indexOf('/')) return type; - return mime.lookup(type); -} - -/** - * Check if mime is valid. - * - * @param {String} type - * @return {String} - * @api private - */ - -function validMime(type) { - return typeof type === 'string'; -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md deleted file mode 100644 index 0e00bf7..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,45 +0,0 @@ -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Add additional compressible - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE b/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.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/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md deleted file mode 100644 index 99d658b..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# mime-types - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [node-mime](https://github.com/broofa/node-mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, - so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) -- No `.define()` functionality - -Otherwise, the API is compatible. - -## Install - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://github.com/jshttp/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/x-markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/x-markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/mime-types.svg?style=flat -[npm-url]: https://npmjs.org/package/mime-types -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/mime-types.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/mime-types -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types -[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg?style=flat -[downloads-url]: https://npmjs.org/package/mime-types diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js b/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js deleted file mode 100644 index b46a202..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js +++ /dev/null @@ -1,63 +0,0 @@ - -var db = require('mime-db') - -// types[extension] = type -exports.types = Object.create(null) -// extensions[type] = [extensions] -exports.extensions = Object.create(null) - -Object.keys(db).forEach(function (name) { - var mime = db[name] - var exts = mime.extensions - if (!exts || !exts.length) return - exports.extensions[name] = exts - exts.forEach(function (ext) { - exports.types[ext] = name - }) -}) - -exports.lookup = function (string) { - if (!string || typeof string !== "string") return false - // remove any leading paths, though we should just use path.basename - string = string.replace(/.*[\.\/\\]/, '').toLowerCase() - if (!string) return false - return exports.types[string] || false -} - -exports.extension = function (type) { - if (!type || typeof type !== "string") return false - // to do: use media-typer - type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/) - if (!type) return false - var exts = exports.extensions[type[1].toLowerCase()] - if (!exts || !exts.length) return false - return exts[0] -} - -// type has to be an exact mime type -exports.charset = function (type) { - var mime = db[type] - if (mime && mime.charset) return mime.charset - - // default text/* to utf-8 - if (/^text\//.test(type)) return 'UTF-8' - - return false -} - -// backwards compatibility -exports.charsets = { - lookup: exports.charset -} - -// to do: maybe use set-type module or something -exports.contentType = function (type) { - if (!type || typeof type !== "string") return false - if (!~type.indexOf('/')) type = exports.lookup(type) - if (!type) return false - if (!~type.indexOf('charset')) { - var charset = exports.charset(type) - if (charset) type += '; charset=' + charset.toLowerCase() - } - return type -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.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/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md deleted file mode 100644 index 3b6364e..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a database of all mime types. -It consistents of a single, public JSON file and does not include any logic, -allowing it to remain as unopinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - -## Usage - -```bash -npm i mime-db -``` - -```js -var db = require('mime-db'); - -// grab data on .js files -var data = db['application/javascript']; -``` - -If you're crazy enough to use this in the browser, -you can just grab the JSON file: - -``` -https://cdn.rawgit.com/jshttp/mime-db/master/db.json -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type is can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Repository Structure - -- `scripts` - these are scripts to run to build the database -- `src/` - this is a folder of files created from remote sources like Apache and IANA -- `lib/` - this is a folder of our own custom sources and db, which will be merged into `db.json` -- `db.json` - the final built JSON file for end-user usage - -## Contributing - -To edit the database, only make PRs against files in the `lib/` folder. -To update the build, run `npm run update`. - -[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg?style=flat -[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg?style=flat -[npm-url]: https://npmjs.org/package/mime-db -[travis-image]: https://img.shields.io/travis/jshttp/mime-db.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/mime-db -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://img.shields.io/node/v/mime-db.svg?style=flat -[node-url]: http://nodejs.org/download/ diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json deleted file mode 100644 index 5542caf..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json +++ /dev/null @@ -1,6337 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana" - }, - "application/3gpp-ims+xml": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/atf": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana" - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "extensions": ["atomsvc"] - }, - "application/auth-policy+xml": { - "source": "iana" - }, - "application/bacnet-xdd+zip": { - "source": "iana" - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/beep+xml": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana" - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/cbor": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana" - }, - "application/ccxml+xml": { - "source": "iana", - "extensions": ["ccxml"] - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana" - }, - "application/cellml+xml": { - "source": "iana" - }, - "application/cfw": { - "source": "iana" - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana" - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana" - }, - "application/cstadata+xml": { - "source": "iana" - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "extensions": ["mdp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana" - }, - "application/dicom": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "extensions": ["dbk"] - }, - "application/dskpp+xml": { - "source": "iana" - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/emma+xml": { - "source": "iana", - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana" - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana" - }, - "application/epub+zip": { - "source": "iana", - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/example": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana" - }, - "application/fits": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false, - "extensions": ["woff"] - }, - "application/font-woff2": { - "compressible": false, - "extensions": ["woff2"] - }, - "application/framework-attributes+xml": { - "source": "iana" - }, - "application/gml+xml": { - "source": "apache", - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana" - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana" - }, - "application/ibe-pkg-reply+xml": { - "source": "iana" - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana" - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana" - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js"] - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/kpml-request+xml": { - "source": "iana" - }, - "application/kpml-response+xml": { - "source": "iana" - }, - "application/ld+json": { - "source": "iana", - "compressible": true - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "extensions": ["mads"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana" - }, - "application/mathml-presentation+xml": { - "source": "iana" - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana" - }, - "application/mbms-deregister+xml": { - "source": "iana" - }, - "application/mbms-envelope+xml": { - "source": "iana" - }, - "application/mbms-msk+xml": { - "source": "iana" - }, - "application/mbms-msk-response+xml": { - "source": "iana" - }, - "application/mbms-protection-description+xml": { - "source": "iana" - }, - "application/mbms-reception-report+xml": { - "source": "iana" - }, - "application/mbms-register+xml": { - "source": "iana" - }, - "application/mbms-register-response+xml": { - "source": "iana" - }, - "application/mbms-schedule+xml": { - "source": "iana" - }, - "application/mbms-user-service-description+xml": { - "source": "iana" - }, - "application/mbox": { - "source": "apache", - "extensions": ["mbox"] - }, - "application/mbox+xml": { - "source": "iana" - }, - "application/media-policy-dataset+xml": { - "source": "iana" - }, - "application/media_control+xml": { - "source": "iana" - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "extensions": ["mets"] - }, - "application/mikey": { - "source": "iana" - }, - "application/mods+xml": { - "source": "iana", - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana" - }, - "application/mrb-publish+xml": { - "source": "iana" - }, - "application/msc-ivr+xml": { - "source": "iana" - }, - "application/msc-mixer+xml": { - "source": "iana" - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana" - }, - "application/news-groupinfo": { - "source": "iana" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana" - }, - "application/nss": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "apache" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/oscp-response": { - "source": "iana" - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p2p-overlay+xml": { - "source": "iana" - }, - "application/parityfec": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana" - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana" - }, - "application/pidf-diff+xml": { - "source": "iana" - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana" - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/provenance+xml": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.hpub+zip": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana" - }, - "application/pskc+xml": { - "source": "iana", - "extensions": ["pskcxml"] - }, - "application/qsig": { - "source": "iana" - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf"] - }, - "application/reginfo+xml": { - "source": "iana", - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "extensions": ["rld"] - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana" - }, - "application/rls-services+xml": { - "source": "iana", - "extensions": ["rs"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana" - }, - "application/samlmetadata+xml": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana" - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/sep+xml": { - "source": "iana" - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana" - }, - "application/simple-filter+xml": { - "source": "iana" - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "extensions": ["srx"] - }, - "application/spirits-event+xml": { - "source": "iana" - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "extensions": ["ssml"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "extensions": ["tei","teicorpus"] - }, - "application/thraud+xml": { - "source": "iana", - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/ttml+xml": { - "source": "iana" - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana" - }, - "application/urc-ressheet+xml": { - "source": "iana" - }, - "application/urc-targetdesc+xml": { - "source": "iana" - }, - "application/urc-uisocketdesc+xml": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana" - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd-acucobol": { - "source": "iana" - }, - "application/vnd-curl": { - "source": "iana" - }, - "application/vnd-dart": { - "source": "iana" - }, - "application/vnd-dxr": { - "source": "iana" - }, - "application/vnd-fdf": { - "source": "iana" - }, - "application/vnd-mif": { - "source": "iana" - }, - "application/vnd-sema": { - "source": "iana" - }, - "application/vnd-wap-wmlc": { - "source": "iana" - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "apache", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "extensions": ["air"] - }, - "application/vnd.adobe.flash-movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "extensions": ["mpkg"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avistar+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana" - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "extensions": ["cdxml"] - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "extensions": ["wbs"] - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana" - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "apache" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana" - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "apache", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece-zip": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "apache", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume-movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana" - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana" - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "apache", - "extensions": ["svc"] - }, - "application/vnd.dvb_service": { - "source": "iana" - }, - "application/vnd.dxr": { - "source": "apache" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana" - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.eprints.data+xml": { - "source": "iana" - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana" - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana" - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana" - }, - "application/vnd.etsi.cug+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana" - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana" - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana" - }, - "application/vnd.etsi.sci+xml": { - "source": "iana" - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana" - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana" - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "apache", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana" - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana" - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana" - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana" - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana" - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana" - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las.las+xml": { - "source": "iana", - "extensions": ["lasxml"] - }, - "application/vnd.liberty-request+xml": { - "source": "iana" - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "extensions": ["lbe"] - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micrografx-igx": { - "source": "iana" - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "apache", - "extensions": ["igx"] - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "apache", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana" - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana" - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache" - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana" - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana" - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana" - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana" - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana" - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana" - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana" - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana" - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana" - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana" - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana" - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana" - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana" - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana" - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana" - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana" - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana" - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana" - }, - "application/vnd.omads-email+xml": { - "source": "iana" - }, - "application/vnd.omads-file+xml": { - "source": "iana" - }, - "application/vnd.omads-folder+xml": { - "source": "iana" - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "apache", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "apache", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "apache", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana" - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana" - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos+xml": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "apache" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana" - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "apache" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana" - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana" - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed-doc": { - "source": "iana" - }, - "application/vnd.sealed-eml": { - "source": "iana" - }, - "application/vnd.sealed-mht": { - "source": "iana" - }, - "application/vnd.sealed-ppt": { - "source": "iana" - }, - "application/vnd.sealed-tiff": { - "source": "iana" - }, - "application/vnd.sealed-xls": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "apache" - }, - "application/vnd.sealed.eml": { - "source": "apache" - }, - "application/vnd.sealed.mht": { - "source": "apache" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "apache" - }, - "application/vnd.sealed.tiff": { - "source": "apache" - }, - "application/vnd.sealed.xls": { - "source": "apache" - }, - "application/vnd.sealedmedia.softseal-html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal-pdf": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "apache" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "apache" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.sema": { - "source": "apache", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana" - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana" - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana" - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap-slc": { - "source": "iana" - }, - "application/vnd.wap-wbxml": { - "source": "iana" - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "apache" - }, - "application/vnd.wap.wbxml": { - "source": "apache", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "apache", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana" - }, - "application/vnd.wv.ssp+xml": { - "source": "iana" - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana" - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "extensions": ["vxml"] - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/vwg-multiplexed": { - "source": "iana" - }, - "application/watcherinfo+xml": { - "source": "iana" - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-otf": { - "source": "apache", - "compressible": true, - "extensions": ["otf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-ttf": { - "source": "apache", - "compressible": true, - "extensions": ["ttf","ttc"] - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "apache", - "extensions": ["der","crt"] - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana" - }, - "application/xaml+xml": { - "source": "apache", - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana" - }, - "application/xcap-caps+xml": { - "source": "iana" - }, - "application/xcap-diff+xml": { - "source": "iana", - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana" - }, - "application/xcap-error+xml": { - "source": "iana" - }, - "application/xcap-ns+xml": { - "source": "iana" - }, - "application/xcon-conference-info+xml": { - "source": "iana" - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana" - }, - "application/xenc+xml": { - "source": "iana", - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "iana" - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana" - }, - "application/xmpp+xml": { - "source": "iana" - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "extensions": ["xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yin+xml": { - "source": "iana", - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana" - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana" - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/example": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g721": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "apache" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana" - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4a","m4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx"] - }, - "audio/opus": { - "source": "apache" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal-mpeg": { - "source": "iana" - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "apache" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/opentype": { - "compressible": true, - "extensions": ["otf"] - }, - "image/bmp": { - "source": "apache", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/example": { - "source": "iana" - }, - "image/fits": { - "source": "iana" - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jp2": { - "source": "iana" - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jpm": { - "source": "iana" - }, - "image/jpx": { - "source": "iana" - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana" - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana" - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tiff","tif"] - }, - "image/tiff-fx": { - "source": "iana" - }, - "image/vnd-djvu": { - "source": "iana" - }, - "image/vnd-svf": { - "source": "iana" - }, - "image/vnd-wap-wbmp": { - "source": "iana" - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "apache", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana" - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed-png": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "apache" - }, - "image/vnd.sealedmedia.softseal-gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal-jpg": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "apache" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "apache" - }, - "image/vnd.svf": { - "source": "apache" - }, - "image/vnd.tencent.tap": { - "source": "iana" - }, - "image/vnd.valve.source.texture": { - "source": "iana" - }, - "image/vnd.wap.wbmp": { - "source": "apache", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana" - }, - "message/example": { - "source": "iana" - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana" - }, - "message/global-delivery-status": { - "source": "iana" - }, - "message/global-disposition-notification": { - "source": "iana" - }, - "message/global-headers": { - "source": "iana" - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana" - }, - "model/example": { - "source": "iana", - "compressible": false - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/vnd-dwf": { - "source": "iana" - }, - "model/vnd.collada+xml": { - "source": "iana", - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "apache", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "iana" - }, - "model/vnd.gs.gdl": { - "source": "apache" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana" - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana" - }, - "model/vnd.parasolid.transmit-binary": { - "source": "iana" - }, - "model/vnd.parasolid.transmit-text": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.binary": { - "source": "apache" - }, - "model/vnd.parasolid.transmit.text": { - "source": "apache" - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana" - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana" - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana" - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/example": { - "source": "iana" - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana", - "compressible": false - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee"] - }, - "text/css": { - "source": "iana", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/example": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "extensions": ["less"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana" - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd-a": { - "source": "iana" - }, - "text/vnd-curl": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "apache", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana" - }, - "text/vnd.wap-wml": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "apache", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["markdown","md","mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "video/1d-interleaved-parityfec": { - "source": "apache" - }, - "video/3gpp": { - "source": "apache", - "extensions": ["3gp"] - }, - "video/3gpp-tt": { - "source": "apache" - }, - "video/3gpp2": { - "source": "apache", - "extensions": ["3g2"] - }, - "video/bmpeg": { - "source": "apache" - }, - "video/bt656": { - "source": "apache" - }, - "video/celb": { - "source": "apache" - }, - "video/dv": { - "source": "apache" - }, - "video/example": { - "source": "apache" - }, - "video/h261": { - "source": "apache", - "extensions": ["h261"] - }, - "video/h263": { - "source": "apache", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "apache" - }, - "video/h263-2000": { - "source": "apache" - }, - "video/h264": { - "source": "apache", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "apache" - }, - "video/h264-svc": { - "source": "apache" - }, - "video/jpeg": { - "source": "apache", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "apache" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/mj2": { - "source": "apache", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "apache" - }, - "video/mp2p": { - "source": "apache" - }, - "video/mp2t": { - "source": "apache", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "apache", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "apache" - }, - "video/mpeg": { - "source": "apache", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "apache" - }, - "video/mpv": { - "source": "apache" - }, - "video/nv": { - "source": "apache" - }, - "video/ogg": { - "source": "apache", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "apache" - }, - "video/pointer": { - "source": "apache" - }, - "video/quicktime": { - "source": "apache", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raw": { - "source": "apache" - }, - "video/rtp-enc-aescm128": { - "source": "apache" - }, - "video/rtx": { - "source": "apache" - }, - "video/smpte292m": { - "source": "apache" - }, - "video/ulpfec": { - "source": "apache" - }, - "video/vc1": { - "source": "apache" - }, - "video/vnd.cctv": { - "source": "apache" - }, - "video/vnd.dece.hd": { - "source": "apache", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "apache", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "apache" - }, - "video/vnd.dece.pd": { - "source": "apache", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "apache", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "apache", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "apache" - }, - "video/vnd.directv.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dvb.file": { - "source": "apache", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "apache", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "apache" - }, - "video/vnd.motorola.video": { - "source": "apache" - }, - "video/vnd.motorola.videop": { - "source": "apache" - }, - "video/vnd.mpegurl": { - "source": "apache", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "apache", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "apache" - }, - "video/vnd.nokia.videovoip": { - "source": "apache" - }, - "video/vnd.objectvideo": { - "source": "apache" - }, - "video/vnd.sealed.mpeg1": { - "source": "apache" - }, - "video/vnd.sealed.mpeg4": { - "source": "apache" - }, - "video/vnd.sealed.swf": { - "source": "apache" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "apache" - }, - "video/vnd.uvvu.mp4": { - "source": "apache", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "apache", - "extensions": ["viv"] - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js deleted file mode 100644 index 551031f..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json deleted file mode 100644 index d469b30..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.2.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jshttp/mime-db" - }, - "devDependencies": { - "co": "3", - "cogent": "1", - "csv-parse": "0", - "gnode": "0.1.0", - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "stream-to-array": "2" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "db.json", - "index.js" - ], - "scripts": { - "update": "gnode scripts/extensions && gnode scripts/types && node scripts/build", - "clean": "rm src/*", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "gitHead": "caf5b253569f0267e31044602d2f1078028e2361", - "bugs": { - "url": "https://github.com/jshttp/mime-db/issues" - }, - "homepage": "https://github.com/jshttp/mime-db", - "_id": "mime-db@1.2.0", - "_shasum": "76b92e7ecac673f5dab066a10b66faea1be2f01f", - "_from": "mime-db@>=1.2.0 <1.3.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "76b92e7ecac673f5dab066a10b66faea1be2f01f", - "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json b/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json deleted file mode 100644 index cf2e69c..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.0.3", - "contributors": [ - { - "name": "Jeremiah Senkpiel", - "email": "fishrock123@rocketmail.com", - "url": "https://searchbeam.jit.su" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/mime-types" - }, - "dependencies": { - "mime-db": "~1.2.0" - }, - "devDependencies": { - "istanbul": "0", - "mocha": "~1.21.5" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec test/test.js", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" - }, - "gitHead": "7d38db8c0576cf7a2dd49df4818dc129090b3a2f", - "bugs": { - "url": "https://github.com/jshttp/mime-types/issues" - }, - "homepage": "https://github.com/jshttp/mime-types", - "_id": "mime-types@2.0.3", - "_shasum": "70b5cb5165b55dcb4972839f16d6077b0bb506f4", - "_from": "mime-types@>=2.0.3 <2.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "70b5cb5165b55dcb4972839f16d6077b0bb506f4", - "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.0.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE b/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE deleted file mode 100644 index 692b534..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 Federico Romero -Copyright (c) 2012-2014 Isaac Z. Schlueter - -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/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md b/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md deleted file mode 100644 index 2461eb1..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# negotiator - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -An HTTP content negotiator for Node.js - -## Installation - -```sh -$ npm install negotiator -``` - -## API - -```js -var Negotiator = require('negotiator') -``` - -### Accept Negotiation - -```js -availableMediaTypes = ['text/html', 'text/plain', 'application/json'] - -// The negotiator constructor receives a request object -negotiator = new Negotiator(request) - -// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' - -negotiator.mediaTypes() -// -> ['text/html', 'image/jpeg', 'application/*'] - -negotiator.mediaTypes(availableMediaTypes) -// -> ['text/html', 'application/json'] - -negotiator.mediaType(availableMediaTypes) -// -> 'text/html' -``` - -You can check a working example at `examples/accept.js`. - -#### Methods - -##### mediaTypes(availableMediaTypes): - -Returns an array of preferred media types ordered by priority from a list of available media types. - -##### mediaType(availableMediaType): - -Returns the top preferred media type from a list of available media types. - -### Accept-Language Negotiation - -```js -negotiator = new Negotiator(request) - -availableLanguages = 'en', 'es', 'fr' - -// Let's say Accept-Language header is 'en;q=0.8, es, pt' - -negotiator.languages() -// -> ['es', 'pt', 'en'] - -negotiator.languages(availableLanguages) -// -> ['es', 'en'] - -language = negotiator.language(availableLanguages) -// -> 'es' -``` - -You can check a working example at `examples/language.js`. - -#### Methods - -##### languages(availableLanguages): - -Returns an array of preferred languages ordered by priority from a list of available languages. - -##### language(availableLanguages): - -Returns the top preferred language from a list of available languages. - -### Accept-Charset Negotiation - -```js -availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' - -negotiator.charsets() -// -> ['utf-8', 'iso-8859-1', 'utf-7'] - -negotiator.charsets(availableCharsets) -// -> ['utf-8', 'iso-8859-1'] - -negotiator.charset(availableCharsets) -// -> 'utf-8' -``` - -You can check a working example at `examples/charset.js`. - -#### Methods - -##### charsets(availableCharsets): - -Returns an array of preferred charsets ordered by priority from a list of available charsets. - -##### charset(availableCharsets): - -Returns the top preferred charset from a list of available charsets. - -### Accept-Encoding Negotiation - -```js -availableEncodings = ['identity', 'gzip'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' - -negotiator.encodings() -// -> ['gzip', 'identity', 'compress'] - -negotiator.encodings(availableEncodings) -// -> ['gzip', 'identity'] - -negotiator.encoding(availableEncodings) -// -> 'gzip' -``` - -You can check a working example at `examples/encoding.js`. - -#### Methods - -##### encodings(availableEncodings): - -Returns an array of preferred encodings ordered by priority from a list of available encodings. - -##### encoding(availableEncodings): - -Returns the top preferred encoding from a list of available encodings. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/negotiator.svg?style=flat -[npm-url]: https://npmjs.org/package/negotiator -[node-version-image]: https://img.shields.io/node/v/negotiator.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/negotiator.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/negotiator -[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master -[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg?style=flat -[downloads-url]: https://npmjs.org/package/negotiator diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js deleted file mode 100644 index 58da58f..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js +++ /dev/null @@ -1,87 +0,0 @@ -module.exports = preferredCharsets; -preferredCharsets.preferredCharsets = preferredCharsets; - -function parseAcceptCharset(accept) { - return accept.split(',').map(function(e, i) { - return parseCharset(e.trim(), i); - }).filter(function(e) { - return e; - }); -} - -function parseCharset(s, i) { - var match = s.match(/^\s*(\S+?)\s*(?:;(.*))?$/); - if (!match) return null; - - var charset = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';') - for (var i = 0; i < params.length; i ++) { - var p = params[i].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - charset: charset, - q: q, - i: i - }; -} - -function getCharsetPriority(charset, accepted) { - return (accepted.map(function(a) { - return specify(charset, a); - }).filter(Boolean).sort(function (a, b) { - if(a.s == b.s) { - return a.q > b.q ? -1 : 1; - } else { - return a.s > b.s ? -1 : 1; - } - })[0] || {s: 0, q:0}); -} - -function specify(charset, spec) { - var s = 0; - if(spec.charset.toLowerCase() === charset.toLowerCase()){ - s |= 1; - } else if (spec.charset !== '*' ) { - return null - } - - return { - s: s, - q: spec.q, - } -} - -function preferredCharsets(accept, provided) { - // RFC 2616 sec 14.2: no header = * - accept = parseAcceptCharset(accept === undefined ? '*' : accept || ''); - if (provided) { - return provided.map(function(type) { - return [type, getCharsetPriority(type, accept)]; - }).filter(function(pair) { - return pair[1].q > 0; - }).sort(function(a, b) { - var pa = a[1]; - var pb = b[1]; - return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i); - }).map(function(pair) { - return pair[0]; - }); - } else { - return accept.sort(function (a, b) { - // revsort - return (b.q - a.q) || (a.i - b.i); - }).filter(function(type) { - return type.q > 0; - }).map(function(type) { - return type.charset; - }); - } -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js deleted file mode 100644 index 4b8acc1..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js +++ /dev/null @@ -1,117 +0,0 @@ -module.exports = preferredEncodings; -preferredEncodings.preferredEncodings = preferredEncodings; - -function parseAcceptEncoding(accept) { - var acceptableEncodings; - - if (accept) { - acceptableEncodings = accept.split(',').map(function(e, i) { - return parseEncoding(e.trim(), i); - }); - } else { - acceptableEncodings = []; - } - - if (!acceptableEncodings.some(function(e) { - return e && specify('identity', e); - })) { - /* - * If identity doesn't explicitly appear in the accept-encoding header, - * it's added to the list of acceptable encoding with the lowest q - * - */ - var lowestQ = 1; - - for(var i = 0; i < acceptableEncodings.length; i++){ - var e = acceptableEncodings[i]; - if(e && e.q < lowestQ){ - lowestQ = e.q; - } - } - acceptableEncodings.push({ - encoding: 'identity', - q: lowestQ / 2, - }); - } - - return acceptableEncodings.filter(function(e) { - return e; - }); -} - -function parseEncoding(s, i) { - var match = s.match(/^\s*(\S+?)\s*(?:;(.*))?$/); - - if (!match) return null; - - var encoding = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';'); - for (var i = 0; i < params.length; i ++) { - var p = params[i].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - encoding: encoding, - q: q, - i: i - }; -} - -function getEncodingPriority(encoding, accepted) { - return (accepted.map(function(a) { - return specify(encoding, a); - }).filter(Boolean).sort(function (a, b) { - if(a.s == b.s) { - return a.q > b.q ? -1 : 1; - } else { - return a.s > b.s ? -1 : 1; - } - })[0] || {s: 0, q: 0}); -} - -function specify(encoding, spec) { - var s = 0; - if(spec.encoding.toLowerCase() === encoding.toLowerCase()){ - s |= 1; - } else if (spec.encoding !== '*' ) { - return null - } - - return { - s: s, - q: spec.q, - } -}; - -function preferredEncodings(accept, provided) { - accept = parseAcceptEncoding(accept || ''); - if (provided) { - return provided.map(function(type) { - return [type, getEncodingPriority(type, accept)]; - }).filter(function(pair) { - return pair[1].q > 0; - }).sort(function(a, b) { - var pa = a[1]; - var pb = b[1]; - return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i); - }).map(function(pair) { - return pair[0]; - }); - } else { - return accept.sort(function (a, b) { - // revsort - return (b.q - a.q) || (a.i - b.i); - }).filter(function(type){ - return type.q > 0; - }).map(function(type) { - return type.encoding; - }); - } -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js deleted file mode 100644 index 8fc63df..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js +++ /dev/null @@ -1,100 +0,0 @@ -module.exports = preferredLanguages; -preferredLanguages.preferredLanguages = preferredLanguages; - -function parseAcceptLanguage(accept) { - return accept.split(',').map(function(e, i) { - return parseLanguage(e.trim(), i); - }).filter(function(e) { - return e; - }); -} - -function parseLanguage(s, i) { - var match = s.match(/^\s*(\S+?)(?:-(\S+?))?\s*(?:;(.*))?$/); - if (!match) return null; - - var prefix = match[1], - suffix = match[2], - full = prefix; - - if (suffix) full += "-" + suffix; - - var q = 1; - if (match[3]) { - var params = match[3].split(';') - for (var i = 0; i < params.length; i ++) { - var p = params[i].split('='); - if (p[0] === 'q') q = parseFloat(p[1]); - } - } - - return { - prefix: prefix, - suffix: suffix, - q: q, - i: i, - full: full - }; -} - -function getLanguagePriority(language, accepted) { - return (accepted.map(function(a){ - return specify(language, a); - }).filter(Boolean).sort(function (a, b) { - if(a.s == b.s) { - return a.q > b.q ? -1 : 1; - } else { - return a.s > b.s ? -1 : 1; - } - })[0] || {s: 0, q: 0}); -} - -function specify(language, spec) { - var p = parseLanguage(language) - if (!p) return null; - var s = 0; - if(spec.full.toLowerCase() === p.full.toLowerCase()){ - s |= 4; - } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { - s |= 2; - } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { - s |= 1; - } else if (spec.full !== '*' ) { - return null - } - - return { - s: s, - q: spec.q, - } -}; - -function preferredLanguages(accept, provided) { - // RFC 2616 sec 14.4: no header = * - accept = parseAcceptLanguage(accept === undefined ? '*' : accept || ''); - if (provided) { - - var ret = provided.map(function(type) { - return [type, getLanguagePriority(type, accept)]; - }).filter(function(pair) { - return pair[1].q > 0; - }).sort(function(a, b) { - var pa = a[1]; - var pb = b[1]; - return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i); - }).map(function(pair) { - return pair[0]; - }); - return ret; - - } else { - return accept.sort(function (a, b) { - // revsort - return (b.q - a.q) || (a.i - b.i); - }).filter(function(type) { - return type.q > 0; - }).map(function(type) { - return type.full; - }); - } -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js deleted file mode 100644 index e413cad..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js +++ /dev/null @@ -1,122 +0,0 @@ -module.exports = preferredMediaTypes; -preferredMediaTypes.preferredMediaTypes = preferredMediaTypes; - -function parseAccept(accept) { - return accept.split(',').map(function(e, i) { - return parseMediaType(e.trim(), i); - }).filter(function(e) { - return e; - }); -}; - -function parseMediaType(s, i) { - var match = s.match(/\s*(\S+?)\/([^;\s]+)\s*(?:;(.*))?/); - if (!match) return null; - - var type = match[1], - subtype = match[2], - full = "" + type + "/" + subtype, - params = {}, - q = 1; - - if (match[3]) { - params = match[3].split(';').map(function(s) { - return s.trim().split('='); - }).reduce(function (set, p) { - set[p[0]] = p[1]; - return set - }, params); - - if (params.q != null) { - q = parseFloat(params.q); - delete params.q; - } - } - - return { - type: type, - subtype: subtype, - params: params, - q: q, - i: i, - full: full - }; -} - -function getMediaTypePriority(type, accepted) { - return (accepted.map(function(a) { - return specify(type, a); - }).filter(Boolean).sort(function (a, b) { - if(a.s == b.s) { - return a.q > b.q ? -1 : 1; - } else { - return a.s > b.s ? -1 : 1; - } - })[0] || {s: 0, q: 0}); -} - -function specify(type, spec) { - var p = parseMediaType(type); - var s = 0; - - if (!p) { - return null; - } - - if(spec.type.toLowerCase() == p.type.toLowerCase()) { - s |= 4 - } else if(spec.type != '*') { - return null; - } - - if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { - s |= 2 - } else if(spec.subtype != '*') { - return null; - } - - var keys = Object.keys(spec.params); - if (keys.length > 0) { - if (keys.every(function (k) { - return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase(); - })) { - s |= 1 - } else { - return null - } - } - - return { - q: spec.q, - s: s, - } - -} - -function preferredMediaTypes(accept, provided) { - // RFC 2616 sec 14.2: no header = */* - accept = parseAccept(accept === undefined ? '*/*' : accept || ''); - if (provided) { - return provided.map(function(type) { - return [type, getMediaTypePriority(type, accept)]; - }).filter(function(pair) { - return pair[1].q > 0; - }).sort(function(a, b) { - var pa = a[1]; - var pb = b[1]; - return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i); - }).map(function(pair) { - return pair[0]; - }); - - } else { - return accept.sort(function (a, b) { - // revsort - return (b.q - a.q) || (a.i - b.i); - }).filter(function(type) { - return type.q > 0; - }).map(function(type) { - return type.full; - }); - } -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/negotiator.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/negotiator.js deleted file mode 100644 index ba0c48b..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/negotiator.js +++ /dev/null @@ -1,37 +0,0 @@ -module.exports = Negotiator; -Negotiator.Negotiator = Negotiator; - -function Negotiator(request) { - if (!(this instanceof Negotiator)) return new Negotiator(request); - this.request = request; -} - -var set = { charset: 'accept-charset', - encoding: 'accept-encoding', - language: 'accept-language', - mediaType: 'accept' }; - - -function capitalize(string){ - return string.charAt(0).toUpperCase() + string.slice(1); -} - -Object.keys(set).forEach(function (k) { - var header = set[k], - method = require('./'+k+'.js'), - singular = k, - plural = k + 's'; - - Negotiator.prototype[plural] = function (available) { - return method(this.request.headers[header], available); - }; - - Negotiator.prototype[singular] = function(available) { - var set = this[plural](available); - if (set) return set[0]; - }; - - // Keep preferred* methods for legacy compatibility - Negotiator.prototype['preferred'+capitalize(plural)] = Negotiator.prototype[plural]; - Negotiator.prototype['preferred'+capitalize(singular)] = Negotiator.prototype[singular]; -}) diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json b/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json deleted file mode 100644 index 7885c42..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "negotiator", - "description": "HTTP content negotiation", - "version": "0.4.9", - "author": { - "name": "Federico Romero", - "email": "federico.romero@outboxlabs.com" - }, - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/negotiator" - }, - "keywords": [ - "http", - "content negotiation", - "accept", - "accept-language", - "accept-encoding", - "accept-charset" - ], - "license": "MIT", - "devDependencies": { - "istanbul": "~0.3.2", - "nodeunit": "0.8.x" - }, - "scripts": { - "test": "nodeunit test", - "test-cov": "istanbul cover ./node_modules/nodeunit/bin/nodeunit test" - }, - "engines": { - "node": ">= 0.6" - }, - "main": "lib/negotiator.js", - "files": [ - "lib", - "LICENSE" - ], - "gitHead": "1e90abd710b662db80f1ea244e647cce3bd74504", - "bugs": { - "url": "https://github.com/jshttp/negotiator/issues" - }, - "homepage": "https://github.com/jshttp/negotiator", - "_id": "negotiator@0.4.9", - "_shasum": "92e46b6db53c7e421ed64a2bc94f08be7630df3f", - "_from": "negotiator@0.4.9", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "federomero", - "email": "federomero@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "92e46b6db53c7e421ed64a2bc94f08be7630df3f", - "tarball": "http://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/accepts/package.json b/node_modules/express/node_modules/accepts/package.json deleted file mode 100644 index 0f38244..0000000 --- a/node_modules/express/node_modules/accepts/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "name": "accepts", - "description": "Higher-level content negotiation", - "version": "1.1.3", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jshttp/accepts" - }, - "dependencies": { - "mime-types": "~2.0.3", - "negotiator": "0.4.9" - }, - "devDependencies": { - "istanbul": "~0.3.0", - "mocha": "~2.0.1" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "keywords": [ - "content", - "negotiation", - "accept", - "accepts" - ], - "gitHead": "8c3267ffe54e657b00dcd019ce6fdf8b342377b6", - "bugs": { - "url": "https://github.com/jshttp/accepts/issues" - }, - "homepage": "https://github.com/jshttp/accepts", - "_id": "accepts@1.1.3", - "_shasum": "14d99f8ee3ea69f8709d4bd17ffe153bef0f6c6d", - "_from": "accepts@>=1.1.3 <1.2.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "federomero", - "email": "federomero@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - } - ], - "dist": { - "shasum": "14d99f8ee3ea69f8709d4bd17ffe153bef0f6c6d", - "tarball": "http://registry.npmjs.org/accepts/-/accepts-1.1.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/content-disposition/HISTORY.md b/node_modules/express/node_modules/content-disposition/HISTORY.md deleted file mode 100644 index 1192551..0000000 --- a/node_modules/express/node_modules/content-disposition/HISTORY.md +++ /dev/null @@ -1,40 +0,0 @@ -0.5.0 / 2014-10-11 -================== - - * Add `parse` function - -0.4.0 / 2014-09-21 -================== - - * Expand non-Unicode `filename` to the full ISO-8859-1 charset - -0.3.0 / 2014-09-20 -================== - - * Add `fallback` option - * Add `type` option - -0.2.0 / 2014-09-19 -================== - - * Reduce ambiguity of file names with hex escape in buggy browsers - -0.1.2 / 2014-09-19 -================== - - * Fix periodic invalid Unicode filename header - -0.1.1 / 2014-09-19 -================== - - * Fix invalid characters appearing in `filename*` parameter - -0.1.0 / 2014-09-18 -================== - - * Make the `filename` argument optional - -0.0.0 / 2014-09-18 -================== - - * Initial release diff --git a/node_modules/express/node_modules/content-disposition/LICENSE b/node_modules/express/node_modules/content-disposition/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/content-disposition/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/content-disposition/README.md b/node_modules/express/node_modules/content-disposition/README.md deleted file mode 100644 index d265431..0000000 --- a/node_modules/express/node_modules/content-disposition/README.md +++ /dev/null @@ -1,141 +0,0 @@ -# content-disposition - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Create and parse HTTP `Content-Disposition` header - -## Installation - -```sh -$ npm install content-disposition -``` - -## API - -```js -var contentDisposition = require('content-disposition') -``` - -### contentDisposition(filename, options) - -Create an attachment `Content-Disposition` header value using the given file name, -if supplied. The `filename` is optional and if no file name is desired, but you -want to specify `options`, set `filename` to `undefined`. - -```js -res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf')) -``` - -**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this -header through a means different from `setHeader` in Node.js, you'll want to specify -the `'binary'` encoding in Node.js. - -#### Options - -`contentDisposition` accepts these properties in the options object. - -##### fallback - -If the `filename` option is outside ISO-8859-1, then the file name is actually -stored in a supplemental field for clients that support Unicode file names and -a ISO-8859-1 version of the file name is automatically generated. - -This specifies the ISO-8859-1 file name to override the automatic generation or -disables the generation all together, defaults to `true`. - - - A string will specify the ISO-8859-1 file name to use in place of automatic - generation. - - `false` will disable including a ISO-8859-1 file name and only include the - Unicode version (unless the file name is already ISO-8859-1). - - `true` will enable automatic generation if the file name is outside ISO-8859-1. - -If the `filename` option is ISO-8859-1 and this option is specified and has a -different value, then the `filename` option is encoded in the extended field -and this set as the fallback field, even though they are both ISO-8859-1. - -##### type - -Specifies the disposition type, defaults to `"attachment"`. This can also be -`"inline"`, or any other value (all values except inline are treated like -`attachment`, but can convey additional information if both parties agree to -it). The type is normalized to lower-case. - -### contentDisposition.parse(string) - -```js -var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt"'); -``` - -Parse a `Content-Disposition` header string. This automatically handles extended -("Unicode") parameters by decoding them and providing them under the standard -parameter name. This will return an object with the following properties (examples -are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`): - - - `type`: The disposition type (always lower case). Example: `'attachment'` - - - `parameters`: An object of the parameters in the disposition (name of parameter - always lower case and extended versions replace non-extended versions). Example: - `{filename: "€ rates.txt"}` - -## Examples - -### Send a file for download - -```js -var contentDisposition = require('content-disposition') -var destroy = require('destroy') -var http = require('http') -var onFinished = require('on-finished') - -var filePath = '/path/to/public/plans.pdf' - -http.createServer(function onRequest(req, res) { - // set headers - res.setHeader('Content-Type', 'application/pdf') - res.setHeader('Content-Disposition', contentDisposition(filePath)) - - // send file - var stream = fs.createReadStream(filePath) - stream.pipe(res) - onFinished(res, function (err) { - destroy(stream) - }) -}) -``` - -## Testing - -```sh -$ npm test -``` - -## References - -- [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616] -- [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987] -- [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266] -- [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231] - -[rfc-2616]: https://tools.ietf.org/html/rfc2616 -[rfc-5987]: https://tools.ietf.org/html/rfc5987 -[rfc-6266]: https://tools.ietf.org/html/rfc6266 -[tc-2231]: http://greenbytes.de/tech/tc2231/ - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/content-disposition.svg?style=flat -[npm-url]: https://npmjs.org/package/content-disposition -[node-version-image]: https://img.shields.io/node/v/content-disposition.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/content-disposition.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/content-disposition -[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master -[downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg?style=flat -[downloads-url]: https://npmjs.org/package/content-disposition diff --git a/node_modules/express/node_modules/content-disposition/index.js b/node_modules/express/node_modules/content-disposition/index.js deleted file mode 100644 index fa3bc74..0000000 --- a/node_modules/express/node_modules/content-disposition/index.js +++ /dev/null @@ -1,443 +0,0 @@ -/*! - * content-disposition - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = contentDisposition -module.exports.parse = parse - -/** - * Module dependencies. - */ - -var basename = require('path').basename - -/** - * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%") - */ - -var encodeUriAttrCharRegExp = /[\x00-\x20"'\(\)*,\/:;<=>?@\[\\\]\{\}\x7f]/g - -/** - * RegExp to match percent encoding escape. - */ - -var hexEscapeRegExp = /%[0-9A-Fa-f]{2}/ -var hexEscapeReplaceRegExp = /%([0-9A-Fa-f]{2})/g - -/** - * RegExp to match non-latin1 characters. - */ - -var nonLatin1RegExp = /[^\x20-\x7e\xa0-\xff]/g - -/** - * RegExp to match quoted-pair in RFC 2616 - * - * quoted-pair = "\" CHAR - * CHAR = - */ - -var qescRegExp = /\\([\u0000-\u007f])/g; - -/** - * RegExp to match chars that must be quoted-pair in RFC 2616 - */ - -var quoteRegExp = /([\\"])/g - -/** - * RegExp for various RFC 2616 grammar - * - * parameter = token "=" ( token | quoted-string ) - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) - * qdtext = > - * quoted-pair = "\" CHAR - * CHAR = - * TEXT = - * LWS = [CRLF] 1*( SP | HT ) - * CRLF = CR LF - * CR = - * LF = - * SP = - * HT = - * CTL = - * OCTET = - */ - -var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g -var textRegExp = /^[\x20-\x7e\x80-\xff]+$/ -var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/ - -/** - * RegExp for various RFC 5987 grammar - * - * ext-value = charset "'" [ language ] "'" value-chars - * charset = "UTF-8" / "ISO-8859-1" / mime-charset - * mime-charset = 1*mime-charsetc - * mime-charsetc = ALPHA / DIGIT - * / "!" / "#" / "$" / "%" / "&" - * / "+" / "-" / "^" / "_" / "`" - * / "{" / "}" / "~" - * language = ( 2*3ALPHA [ extlang ] ) - * / 4ALPHA - * / 5*8ALPHA - * extlang = *3( "-" 3ALPHA ) - * value-chars = *( pct-encoded / attr-char ) - * pct-encoded = "%" HEXDIG HEXDIG - * attr-char = ALPHA / DIGIT - * / "!" / "#" / "$" / "&" / "+" / "-" / "." - * / "^" / "_" / "`" / "|" / "~" - */ - -var extValueRegExp = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+\-\.^_`|~])+)$/ - -/** - * RegExp for various RFC 6266 grammar - * - * disposition-type = "inline" | "attachment" | disp-ext-type - * disp-ext-type = token - * disposition-parm = filename-parm | disp-ext-parm - * filename-parm = "filename" "=" value - * | "filename*" "=" ext-value - * disp-ext-parm = token "=" value - * | ext-token "=" ext-value - * ext-token = - */ - -var dispositionTypeRegExp = /^([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *(?:$|;)/ - -/** - * Create an attachment Content-Disposition header. - * - * @param {string} [filename] - * @param {object} [options] - * @param {string} [options.type=attachment] - * @param {string|boolean} [options.fallback=true] - * @return {string} - * @api public - */ - -function contentDisposition(filename, options) { - var opts = options || {} - - // get type - var type = opts.type || 'attachment' - - // get parameters - var params = createparams(filename, opts.fallback) - - // format into string - return format(new ContentDisposition(type, params)) -} - -/** - * Create parameters object from filename and fallback. - * - * @param {string} [filename] - * @param {string|boolean} [fallback=true] - * @return {object} - * @api private - */ - -function createparams(filename, fallback) { - if (filename === undefined) { - return - } - - var params = {} - - if (typeof filename !== 'string') { - throw new TypeError('filename must be a string') - } - - // fallback defaults to true - if (fallback === undefined) { - fallback = true - } - - if (typeof fallback !== 'string' && typeof fallback !== 'boolean') { - throw new TypeError('fallback must be a string or boolean') - } - - if (typeof fallback === 'string' && nonLatin1RegExp.test(fallback)) { - throw new TypeError('fallback must be ISO-8859-1 string') - } - - // restrict to file base name - var name = basename(filename) - - // determine if name is suitable for quoted string - var isQuotedString = textRegExp.test(name) - - // generate fallback name - var fallbackName = typeof fallback !== 'string' - ? fallback && getlatin1(name) - : basename(fallback) - var hasFallback = typeof fallbackName === 'string' && fallbackName !== name - - // set extended filename parameter - if (hasFallback || !isQuotedString || hexEscapeRegExp.test(name)) { - params['filename*'] = name - } - - // set filename parameter - if (isQuotedString || hasFallback) { - params.filename = hasFallback - ? fallbackName - : name - } - - return params -} - -/** - * Format object to Content-Disposition header. - * - * @param {object} obj - * @param {string} obj.type - * @param {object} [obj.parameters] - * @return {string} - * @api private - */ - -function format(obj) { - var parameters = obj.parameters - var type = obj.type - - if (!type || typeof type !== 'string' || !tokenRegExp.test(type)) { - throw new TypeError('invalid type') - } - - // start with normalized type - var string = String(type).toLowerCase() - - // append parameters - if (parameters && typeof parameters === 'object') { - var param - var params = Object.keys(parameters).sort() - - for (var i = 0; i < params.length; i++) { - param = params[i] - - var val = param.substr(-1) === '*' - ? ustring(parameters[param]) - : qstring(parameters[param]) - - string += '; ' + param + '=' + val - } - } - - return string -} - -/** - * Decode a RFC 6987 field value (gracefully). - * - * @param {string} str - * @return {string} - * @api private - */ - -function decodefield(str) { - var match = extValueRegExp.exec(str) - - if (!match) { - throw new TypeError('invalid extended field value') - } - - var charset = match[1].toLowerCase() - var encoded = match[2] - var value - - // to binary string - var binary = encoded.replace(hexEscapeReplaceRegExp, pdecode) - - switch (charset) { - case 'iso-8859-1': - value = getlatin1(binary) - break - case 'utf-8': - value = new Buffer(binary, 'binary').toString('utf8') - break - default: - throw new TypeError('unsupported charset in extended field') - } - - return value -} - -/** - * Get ISO-8859-1 version of string. - * - * @param {string} val - * @return {string} - * @api private - */ - -function getlatin1(val) { - // simple Unicode -> ISO-8859-1 transformation - return String(val).replace(nonLatin1RegExp, '?') -} - -/** - * Parse Content-Disposition header string. - * - * @param {string} string - * @return {object} - * @api private - */ - -function parse(string) { - if (!string || typeof string !== 'string') { - throw new TypeError('argument string is required') - } - - var match = dispositionTypeRegExp.exec(string) - - if (!match) { - throw new TypeError('invalid type format') - } - - // normalize type - var index = match[0].length - var type = match[1].toLowerCase() - - var key - var names = [] - var params = {} - var value - - // calculate index to start at - index = paramRegExp.lastIndex = match[0].substr(-1) === ';' - ? index - 1 - : index - - // match parameters - while (match = paramRegExp.exec(string)) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (names.indexOf(key) !== -1) { - throw new TypeError('invalid duplicate parameter') - } - - names.push(key) - - if (key.indexOf('*') + 1 === key.length) { - // decode extended value - key = key.slice(0, -1) - value = decodefield(value) - - // overwrite existing value - params[key] = value - continue - } - - if (typeof params[key] === 'string') { - continue - } - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(qescRegExp, '$1') - } - - params[key] = value - } - - if (index !== -1 && index !== string.length) { - throw new TypeError('invalid parameter format') - } - - return new ContentDisposition(type, params) -} - -/** - * Percent decode a single character. - * - * @param {string} str - * @param {string} hex - * @return {string} - * @api private - */ - -function pdecode(str, hex) { - return String.fromCharCode(parseInt(hex, 16)) -} - -/** - * Percent encode a single character. - * - * @param {string} char - * @return {string} - * @api private - */ - -function pencode(char) { - var hex = String(char) - .charCodeAt(0) - .toString(16) - .toUpperCase() - return hex.length === 1 - ? '%0' + hex - : '%' + hex -} - -/** - * Quote a string for HTTP. - * - * @param {string} val - * @return {string} - * @api private - */ - -function qstring(val) { - var str = String(val) - - return '"' + str.replace(quoteRegExp, '\\$1') + '"' -} - -/** - * Encode a Unicode string for HTTP (RFC 5987). - * - * @param {string} val - * @return {string} - * @api private - */ - -function ustring(val) { - var str = String(val) - - // percent encode as UTF-8 - var encoded = encodeURIComponent(str) - .replace(encodeUriAttrCharRegExp, pencode) - - return 'UTF-8\'\'' + encoded -} - -/** - * Class for parsed Content-Disposition header for v8 optimization - */ - -function ContentDisposition(type, parameters) { - this.type = type - this.parameters = parameters -} diff --git a/node_modules/express/node_modules/content-disposition/package.json b/node_modules/express/node_modules/content-disposition/package.json deleted file mode 100644 index b0bb7ec..0000000 --- a/node_modules/express/node_modules/content-disposition/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "content-disposition", - "description": "Create and parse Content-Disposition header", - "version": "0.5.0", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "keywords": [ - "content-disposition", - "http", - "rfc6266", - "res" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/content-disposition" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~1.21.4" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "f3c915f0c9d9f5ec79713dba24c8c6181b73305d", - "bugs": { - "url": "https://github.com/jshttp/content-disposition/issues" - }, - "homepage": "https://github.com/jshttp/content-disposition", - "_id": "content-disposition@0.5.0", - "_shasum": "4284fe6ae0630874639e44e80a418c2934135e9e", - "_from": "content-disposition@0.5.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "4284fe6ae0630874639e44e80a418c2934135e9e", - "tarball": "http://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/cookie-signature/.npmignore b/node_modules/express/node_modules/cookie-signature/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/node_modules/express/node_modules/cookie-signature/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/node_modules/express/node_modules/cookie-signature/History.md b/node_modules/express/node_modules/cookie-signature/History.md deleted file mode 100644 index 2bbc4b3..0000000 --- a/node_modules/express/node_modules/cookie-signature/History.md +++ /dev/null @@ -1,27 +0,0 @@ -1.0.4 / 2014-06-25 -================== - - * corrected avoidance of timing attacks (thanks @tenbits!) - - -1.0.3 / 2014-01-28 -================== - - * [incorrect] fix for timing attacks - -1.0.2 / 2014-01-28 -================== - - * fix missing repository warning - * fix typo in test - -1.0.1 / 2013-04-15 -================== - - * Revert "Changed underlying HMAC algo. to sha512." - * Revert "Fix for timing attacks on MAC verification." - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/express/node_modules/cookie-signature/Makefile b/node_modules/express/node_modules/cookie-signature/Makefile deleted file mode 100644 index 4e9c8d3..0000000 --- a/node_modules/express/node_modules/cookie-signature/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec - -.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/cookie-signature/Readme.md b/node_modules/express/node_modules/cookie-signature/Readme.md deleted file mode 100644 index 2559e84..0000000 --- a/node_modules/express/node_modules/cookie-signature/Readme.md +++ /dev/null @@ -1,42 +0,0 @@ - -# cookie-signature - - Sign and unsign cookies. - -## Example - -```js -var cookie = require('cookie-signature'); - -var val = cookie.sign('hello', 'tobiiscool'); -val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); - -var val = cookie.sign('hello', 'tobiiscool'); -cookie.unsign(val, 'tobiiscool').should.equal('hello'); -cookie.unsign(val, 'luna').should.be.false; -``` - -## License - -(The MIT License) - -Copyright (c) 2012 LearnBoost <tj@learnboost.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. \ No newline at end of file diff --git a/node_modules/express/node_modules/cookie-signature/index.js b/node_modules/express/node_modules/cookie-signature/index.js deleted file mode 100644 index b63bf84..0000000 --- a/node_modules/express/node_modules/cookie-signature/index.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Module dependencies. - */ - -var crypto = require('crypto'); - -/** - * Sign the given `val` with `secret`. - * - * @param {String} val - * @param {String} secret - * @return {String} - * @api private - */ - -exports.sign = function(val, secret){ - if ('string' != typeof val) throw new TypeError('cookie required'); - if ('string' != typeof secret) throw new TypeError('secret required'); - return val + '.' + crypto - .createHmac('sha256', secret) - .update(val) - .digest('base64') - .replace(/\=+$/, ''); -}; - -/** - * Unsign and decode the given `val` with `secret`, - * returning `false` if the signature is invalid. - * - * @param {String} val - * @param {String} secret - * @return {String|Boolean} - * @api private - */ - -exports.unsign = function(val, secret){ - if ('string' != typeof val) throw new TypeError('cookie required'); - if ('string' != typeof secret) throw new TypeError('secret required'); - var str = val.slice(0, val.lastIndexOf('.')) - , mac = exports.sign(str, secret); - - return sha1(mac) == sha1(val) ? str : false; -}; - -/** - * Private - */ - -function sha1(str){ - return crypto.createHash('sha1').update(str).digest('hex'); -} diff --git a/node_modules/express/node_modules/cookie-signature/package.json b/node_modules/express/node_modules/cookie-signature/package.json deleted file mode 100644 index 741961f..0000000 --- a/node_modules/express/node_modules/cookie-signature/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "cookie-signature", - "version": "1.0.5", - "description": "Sign and unsign cookies", - "keywords": [ - "cookie", - "sign", - "unsign" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@learnboost.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/node-cookie-signature.git" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "gitHead": "73ed69b511b3ef47555d71b4ed1deea9e5ed6e1f", - "bugs": { - "url": "https://github.com/visionmedia/node-cookie-signature/issues" - }, - "homepage": "https://github.com/visionmedia/node-cookie-signature", - "_id": "cookie-signature@1.0.5", - "scripts": {}, - "_shasum": "a122e3f1503eca0f5355795b0711bb2368d450f9", - "_from": "cookie-signature@1.0.5", - "_npmVersion": "1.4.20", - "_npmUser": { - "name": "natevw", - "email": "natevw@yahoo.com" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "natevw", - "email": "natevw@yahoo.com" - } - ], - "dist": { - "shasum": "a122e3f1503eca0f5355795b0711bb2368d450f9", - "tarball": "http://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/cookie/.npmignore b/node_modules/express/node_modules/cookie/.npmignore deleted file mode 100644 index efab07f..0000000 --- a/node_modules/express/node_modules/cookie/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test -.travis.yml diff --git a/node_modules/express/node_modules/cookie/LICENSE b/node_modules/express/node_modules/cookie/LICENSE deleted file mode 100644 index 249d9de..0000000 --- a/node_modules/express/node_modules/cookie/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -// MIT License - -Copyright (C) Roman Shtylman - -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/node_modules/express/node_modules/cookie/README.md b/node_modules/express/node_modules/cookie/README.md deleted file mode 100644 index 3170b4b..0000000 --- a/node_modules/express/node_modules/cookie/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# cookie [![Build Status](https://secure.travis-ci.org/defunctzombie/node-cookie.png?branch=master)](http://travis-ci.org/defunctzombie/node-cookie) # - -cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. - -See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. - -## how? - -``` -npm install cookie -``` - -```javascript -var cookie = require('cookie'); - -var hdr = cookie.serialize('foo', 'bar'); -// hdr = 'foo=bar'; - -var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); -// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; -``` - -## more - -The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. - -### path -> cookie path - -### expires -> absolute expiration date for the cookie (Date object) - -### maxAge -> relative max age of the cookie from when the client receives it (seconds) - -### domain -> domain for the cookie - -### secure -> true or false - -### httpOnly -> true or false - diff --git a/node_modules/express/node_modules/cookie/index.js b/node_modules/express/node_modules/cookie/index.js deleted file mode 100644 index 00d54a7..0000000 --- a/node_modules/express/node_modules/cookie/index.js +++ /dev/null @@ -1,75 +0,0 @@ - -/// Serialize the a name value pair into a cookie string suitable for -/// http headers. An optional options object specified cookie parameters -/// -/// serialize('foo', 'bar', { httpOnly: true }) -/// => "foo=bar; httpOnly" -/// -/// @param {String} name -/// @param {String} val -/// @param {Object} options -/// @return {String} -var serialize = function(name, val, opt){ - opt = opt || {}; - var enc = opt.encode || encode; - var pairs = [name + '=' + enc(val)]; - - if (null != opt.maxAge) { - var maxAge = opt.maxAge - 0; - if (isNaN(maxAge)) throw new Error('maxAge should be a Number'); - pairs.push('Max-Age=' + maxAge); - } - - if (opt.domain) pairs.push('Domain=' + opt.domain); - if (opt.path) pairs.push('Path=' + opt.path); - if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); - if (opt.httpOnly) pairs.push('HttpOnly'); - if (opt.secure) pairs.push('Secure'); - - return pairs.join('; '); -}; - -/// Parse the given cookie header string into an object -/// The object has the various cookies as keys(names) => values -/// @param {String} str -/// @return {Object} -var parse = function(str, opt) { - opt = opt || {}; - var obj = {} - var pairs = str.split(/; */); - var dec = opt.decode || decode; - - pairs.forEach(function(pair) { - var eq_idx = pair.indexOf('=') - - // skip things that don't look like key=value - if (eq_idx < 0) { - return; - } - - var key = pair.substr(0, eq_idx).trim() - var val = pair.substr(++eq_idx, pair.length).trim(); - - // quoted values - if ('"' == val[0]) { - val = val.slice(1, -1); - } - - // only assign once - if (undefined == obj[key]) { - try { - obj[key] = dec(val); - } catch (e) { - obj[key] = val; - } - } - }); - - return obj; -}; - -var encode = encodeURIComponent; -var decode = decodeURIComponent; - -module.exports.serialize = serialize; -module.exports.parse = parse; diff --git a/node_modules/express/node_modules/cookie/package.json b/node_modules/express/node_modules/cookie/package.json deleted file mode 100644 index 80aecf4..0000000 --- a/node_modules/express/node_modules/cookie/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "author": { - "name": "Roman Shtylman", - "email": "shtylman@gmail.com" - }, - "name": "cookie", - "description": "cookie parsing and serialization", - "version": "0.1.2", - "repository": { - "type": "git", - "url": "git://github.com/shtylman/node-cookie.git" - }, - "keywords": [ - "cookie", - "cookies" - ], - "main": "index.js", - "scripts": { - "test": "mocha" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "bugs": { - "url": "https://github.com/shtylman/node-cookie/issues" - }, - "homepage": "https://github.com/shtylman/node-cookie", - "_id": "cookie@0.1.2", - "dist": { - "shasum": "72fec3d24e48a3432073d90c12642005061004b1", - "tarball": "http://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz" - }, - "_from": "cookie@0.1.2", - "_npmVersion": "1.4.6", - "_npmUser": { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - "maintainers": [ - { - "name": "shtylman", - "email": "shtylman@gmail.com" - } - ], - "directories": {}, - "_shasum": "72fec3d24e48a3432073d90c12642005061004b1", - "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz" -} diff --git a/node_modules/express/node_modules/debug/.jshintrc b/node_modules/express/node_modules/debug/.jshintrc deleted file mode 100644 index 299877f..0000000 --- a/node_modules/express/node_modules/debug/.jshintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "laxbreak": true -} diff --git a/node_modules/express/node_modules/debug/.npmignore b/node_modules/express/node_modules/debug/.npmignore deleted file mode 100644 index 7e6163d..0000000 --- a/node_modules/express/node_modules/debug/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -support -test -examples -example -*.sock -dist diff --git a/node_modules/express/node_modules/debug/History.md b/node_modules/express/node_modules/debug/History.md deleted file mode 100644 index bcbc3bd..0000000 --- a/node_modules/express/node_modules/debug/History.md +++ /dev/null @@ -1,157 +0,0 @@ - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/express/node_modules/debug/Makefile b/node_modules/express/node_modules/debug/Makefile deleted file mode 100644 index b0bde6e..0000000 --- a/node_modules/express/node_modules/debug/Makefile +++ /dev/null @@ -1,33 +0,0 @@ - -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# applications -NODE ?= $(shell which node) -NPM ?= $(NODE) $(shell which npm) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -all: dist/debug.js - -install: node_modules - -clean: - @rm -rf node_modules dist - -dist: - @mkdir -p $@ - -dist/debug.js: node_modules browser.js debug.js dist - @$(BROWSERIFY) \ - --standalone debug \ - . > $@ - -node_modules: package.json - @NODE_ENV= $(NPM) install - @touch node_modules - -.PHONY: all install clean diff --git a/node_modules/express/node_modules/debug/Readme.md b/node_modules/express/node_modules/debug/Readme.md deleted file mode 100644 index e59b9ad..0000000 --- a/node_modules/express/node_modules/debug/Readme.md +++ /dev/null @@ -1,156 +0,0 @@ -# debug - - tiny node.js debugging utility modelled after node core's debugging technique. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - - With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". - -## Browser support - - Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) - -### stderr vs stdout - -You can set an alternative logging method per-namespace by overriding the `log` method on a per-namespace or globally: - -Example _stderr.js_: - -```js -var debug = require('../'); -var log = debug('app:log'); - -// by default console.log is used -log('goes to stdout!'); - -var error = debug('app:error'); -// set this namespace to log via console.error -error.log = console.error.bind(console); // don't forget to bind to console! -error('goes to stderr'); -log('still goes to stdout!'); - -// set all output to go via console.warn -// overrides all per-namespace log settings -debug.log = console.warn.bind(console); -log('now goes to stderr via console.warn'); -error('still goes to stderr, but via console.warn now'); -``` - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - -## License - -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> - -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/node_modules/express/node_modules/debug/browser.js b/node_modules/express/node_modules/debug/browser.js deleted file mode 100644 index ce6369f..0000000 --- a/node_modules/express/node_modules/debug/browser.js +++ /dev/null @@ -1,147 +0,0 @@ - -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // is webkit? http://stackoverflow.com/a/16459606/376773 - return ('WebkitAppearance' in document.documentElement.style) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (window.console && (console.firebug || (console.exception && console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - return JSON.stringify(v); -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs() { - var args = arguments; - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return args; - - var c = 'color: ' + this.color; - args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); - return args; -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // This hackery is required for IE8, - // where the `console.log` function doesn't have 'apply' - return 'object' == typeof console - && 'function' == typeof console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - localStorage.removeItem('debug'); - } else { - localStorage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = localStorage.debug; - } catch(e) {} - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); diff --git a/node_modules/express/node_modules/debug/component.json b/node_modules/express/node_modules/debug/component.json deleted file mode 100644 index 7ee3d13..0000000 --- a/node_modules/express/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.1.0", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "browser.js", - "scripts": [ - "browser.js", - "debug.js" - ], - "dependencies": { - "guille/ms.js": "0.6.1" - } -} diff --git a/node_modules/express/node_modules/debug/debug.js b/node_modules/express/node_modules/debug/debug.js deleted file mode 100644 index 7571a86..0000000 --- a/node_modules/express/node_modules/debug/debug.js +++ /dev/null @@ -1,197 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = debug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lowercased letter, i.e. "n". - */ - -exports.formatters = {}; - -/** - * Previously assigned color. - */ - -var prevColor = 0; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * - * @return {Number} - * @api private - */ - -function selectColor() { - return exports.colors[prevColor++ % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function debug(namespace) { - - // define the `disabled` version - function disabled() { - } - disabled.enabled = false; - - // define the `enabled` version - function enabled() { - - var self = enabled; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // add the `color` if not set - if (null == self.useColors) self.useColors = exports.useColors(); - if (null == self.color && self.useColors) self.color = selectColor(); - - var args = Array.prototype.slice.call(arguments); - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %o - args = ['%o'].concat(args); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - if ('function' === typeof exports.formatArgs) { - args = exports.formatArgs.apply(self, args); - } - var logFn = enabled.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - enabled.enabled = true; - - var fn = exports.enabled(namespace) ? enabled : disabled; - - fn.namespace = namespace; - - return fn; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - var split = (namespaces || '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/node_modules/express/node_modules/debug/node.js b/node_modules/express/node_modules/debug/node.js deleted file mode 100644 index 5dc999f..0000000 --- a/node_modules/express/node_modules/debug/node.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - var debugColors = (process.env.DEBUG_COLORS || '').trim().toLowerCase(); - if (0 === debugColors.length) { - return tty.isatty(fd); - } else { - return '0' !== debugColors - && 'no' !== debugColors - && 'false' !== debugColors - && 'disabled' !== debugColors; - } -} - -/** - * Map %o to `util.inspect()`, since Node doesn't do that out of the box. - */ - -var inspect = (4 === util.inspect.length ? - // node <= 0.8.x - function (v, colors) { - return util.inspect(v, void 0, void 0, colors); - } : - // node > 0.8.x - function (v, colors) { - return util.inspect(v, { colors: colors }); - } -); - -exports.formatters.o = function(v) { - return inspect(v, this.useColors) - .replace(/\s*\n\s*/g, ' '); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs() { - var args = arguments; - var useColors = this.useColors; - var name = this.namespace; - - if (useColors) { - var c = this.color; - - args[0] = ' \u001b[9' + c + 'm' + name + ' ' - + '\u001b[0m' - + args[0] + '\u001b[3' + c + 'm' - + ' +' + exports.humanize(this.diff) + '\u001b[0m'; - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } - return args; -} - -/** - * Invokes `console.error()` with the specified arguments. - */ - -function log() { - return stream.write(util.format.apply(this, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/node_modules/express/node_modules/debug/node_modules/ms/.npmignore b/node_modules/express/node_modules/debug/node_modules/ms/.npmignore deleted file mode 100644 index d1aa0ce..0000000 --- a/node_modules/express/node_modules/debug/node_modules/ms/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -test -History.md -Makefile -component.json diff --git a/node_modules/express/node_modules/debug/node_modules/ms/README.md b/node_modules/express/node_modules/debug/node_modules/ms/README.md deleted file mode 100644 index d4ab12a..0000000 --- a/node_modules/express/node_modules/debug/node_modules/ms/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# ms.js: miliseconds conversion utility - -```js -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('100') // 100 -``` - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours', { long: true })) // "10 hours" -``` - -- Node/Browser compatible. Published as `ms` in NPM. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as -a number (e.g: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of -equivalent ms is returned. - -## License - -MIT \ No newline at end of file diff --git a/node_modules/express/node_modules/debug/node_modules/ms/index.js b/node_modules/express/node_modules/debug/node_modules/ms/index.js deleted file mode 100644 index c5847f8..0000000 --- a/node_modules/express/node_modules/debug/node_modules/ms/index.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} options - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options){ - options = options || {}; - if ('string' == typeof val) return parse(val); - return options.long - ? long(val) - : short(val); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec(str); - if (!match) return; - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 's': - return n * s; - case 'ms': - return n; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function short(ms) { - if (ms >= d) return Math.round(ms / d) + 'd'; - if (ms >= h) return Math.round(ms / h) + 'h'; - if (ms >= m) return Math.round(ms / m) + 'm'; - if (ms >= s) return Math.round(ms / s) + 's'; - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function long(ms) { - return plural(ms, d, 'day') - || plural(ms, h, 'hour') - || plural(ms, m, 'minute') - || plural(ms, s, 'second') - || ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) return; - if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/node_modules/express/node_modules/debug/node_modules/ms/package.json b/node_modules/express/node_modules/debug/node_modules/ms/package.json deleted file mode 100644 index 0839b59..0000000 --- a/node_modules/express/node_modules/debug/node_modules/ms/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "ms", - "version": "0.6.2", - "description": "Tiny ms conversion utility", - "repository": { - "type": "git", - "url": "git://github.com/guille/ms.js.git" - }, - "main": "./index", - "devDependencies": { - "mocha": "*", - "expect.js": "*", - "serve": "*" - }, - "component": { - "scripts": { - "ms/index.js": "index.js" - } - }, - "bugs": { - "url": "https://github.com/guille/ms.js/issues" - }, - "_id": "ms@0.6.2", - "dist": { - "shasum": "d89c2124c6fdc1353d65a8b77bf1aac4b193708c", - "tarball": "http://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - }, - "_from": "ms@0.6.2", - "_npmVersion": "1.2.30", - "_npmUser": { - "name": "rauchg", - "email": "rauchg@gmail.com" - }, - "maintainers": [ - { - "name": "rauchg", - "email": "rauchg@gmail.com" - } - ], - "directories": {}, - "_shasum": "d89c2124c6fdc1353d65a8b77bf1aac4b193708c", - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/guille/ms.js" -} diff --git a/node_modules/express/node_modules/debug/package.json b/node_modules/express/node_modules/debug/package.json deleted file mode 100644 index 5527bc3..0000000 --- a/node_modules/express/node_modules/debug/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "debug", - "version": "2.1.0", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "description": "small debugging utility", - "keywords": [ - "debug", - "log", - "debugger" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "contributors": [ - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io" - } - ], - "license": "MIT", - "dependencies": { - "ms": "0.6.2" - }, - "devDependencies": { - "browserify": "6.1.0", - "mocha": "*" - }, - "main": "./node.js", - "browser": "./browser.js", - "component": { - "scripts": { - "debug/index.js": "browser.js", - "debug/debug.js": "debug.js" - } - }, - "gitHead": "953162b4fa8849268d147f4bac91c737baee55bb", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "homepage": "https://github.com/visionmedia/debug", - "_id": "debug@2.1.0", - "scripts": {}, - "_shasum": "33ab915659d8c2cc8a41443d94d6ebd37697ed21", - "_from": "debug@>=2.1.0 <2.2.0", - "_npmVersion": "2.1.3", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - } - ], - "dist": { - "shasum": "33ab915659d8c2cc8a41443d94d6ebd37697ed21", - "tarball": "http://registry.npmjs.org/debug/-/debug-2.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/depd/History.md b/node_modules/express/node_modules/depd/History.md deleted file mode 100644 index bdbcf58..0000000 --- a/node_modules/express/node_modules/depd/History.md +++ /dev/null @@ -1,67 +0,0 @@ -1.0.0 / 2014-09-17 -================== - - * No changes - -0.4.5 / 2014-09-09 -================== - - * Improve call speed to functions using the function wrapper - * Support Node.js 0.6 - -0.4.4 / 2014-07-27 -================== - - * Work-around v8 generating empty stack traces - -0.4.3 / 2014-07-26 -================== - - * Fix exception when global `Error.stackTraceLimit` is too low - -0.4.2 / 2014-07-19 -================== - - * Correct call site for wrapped functions and properties - -0.4.1 / 2014-07-19 -================== - - * Improve automatic message generation for function properties - -0.4.0 / 2014-07-19 -================== - - * Add `TRACE_DEPRECATION` environment variable - * Remove non-standard grey color from color output - * Support `--no-deprecation` argument - * Support `--trace-deprecation` argument - * Support `deprecate.property(fn, prop, message)` - -0.3.0 / 2014-06-16 -================== - - * Add `NO_DEPRECATION` environment variable - -0.2.0 / 2014-06-15 -================== - - * Add `deprecate.property(obj, prop, message)` - * Remove `supports-color` dependency for node.js 0.8 - -0.1.0 / 2014-06-15 -================== - - * Add `deprecate.function(fn, message)` - * Add `process.on('deprecation', fn)` emitter - * Automatically generate message when omitted from `deprecate()` - -0.0.1 / 2014-06-15 -================== - - * Fix warning for dynamic calls at singe call site - -0.0.0 / 2014-06-15 -================== - - * Initial implementation diff --git a/node_modules/express/node_modules/depd/LICENSE b/node_modules/express/node_modules/depd/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/depd/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/depd/Readme.md b/node_modules/express/node_modules/depd/Readme.md deleted file mode 100644 index 9fb2737..0000000 --- a/node_modules/express/node_modules/depd/Readme.md +++ /dev/null @@ -1,271 +0,0 @@ -# depd - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Coverage Status][coveralls-image]][coveralls-url] -[![Gratipay][gratipay-image]][gratipay-url] - -Deprecate all the things - -> With great modules comes great responsibility; mark things deprecated! - -## Install - -```sh -$ npm install depd -``` - -## API - -```js -var deprecate = require('depd')('my-module') -``` - -This library allows you to display deprecation messages to your users. -This library goes above and beyond with deprecation warnings by -introspection of the call stack (but only the bits that it is interested -in). - -Instead of just warning on the first invocation of a deprecated -function and never again, this module will warn on the first invocation -of a deprecated function per unique call site, making it ideal to alert -users of all deprecated uses across the code base, rather than just -whatever happens to execute first. - -The deprecation warnings from this module also include the file and line -information for the call into the module that the deprecated function was -in. - -**NOTE** this library has a similar interface to the `debug` module, and -this module uses the calling file to get the boundary for the call stacks, -so you should always create a new `deprecate` object in each file and not -within some central file. - -### depd(namespace) - -Create a new deprecate function that uses the given namespace name in the -messages and will display the call site prior to the stack entering the -file this function was called from. It is highly suggested you use the -name of your module as the namespace. - -### deprecate(message) - -Call this function from deprecated code to display a deprecation message. -This message will appear once per unique caller site. Caller site is the -first call site in the stack in a different file from the caller of this -function. - -If the message is omitted, a message is generated for you based on the site -of the `deprecate()` call and will display the name of the function called, -similar to the name displayed in a stack trace. - -### deprecate.function(fn, message) - -Call this function to wrap a given function in a deprecation message on any -call to the function. An optional message can be supplied to provide a custom -message. - -### deprecate.property(obj, prop, message) - -Call this function to wrap a given property on object in a deprecation message -on any accessing or setting of the property. An optional message can be supplied -to provide a custom message. - -The method must be called on the object where the property belongs (not -inherited from the prototype). - -If the property is a data descriptor, it will be converted to an accessor -descriptor in order to display the deprecation message. - -### process.on('deprecation', fn) - -This module will allow easy capturing of deprecation errors by emitting the -errors as the type "deprecation" on the global `process`. If there are no -listeners for this type, the errors are written to STDERR as normal, but if -there are any listeners, nothing will be written to STDERR and instead only -emitted. From there, you can write the errors in a different format or to a -logging source. - -The error represents the deprecation and is emitted only once with the same -rules as writing to STDERR. The error has the following properties: - - - `message` - This is the message given by the library - - `name` - This is always `'DeprecationError'` - - `namespace` - This is the namespace the deprecation came from - - `stack` - This is the stack of the call to the deprecated thing - -Example `error.stack` output: - -``` -DeprecationError: my-cool-module deprecated oldfunction - at Object. ([eval]-wrapper:6:22) - at Module._compile (module.js:456:26) - at evalScript (node.js:532:25) - at startup (node.js:80:7) - at node.js:902:3 -``` - -### process.env.NO_DEPRECATION - -As a user of modules that are deprecated, the environment variable `NO_DEPRECATION` -is provided as a quick solution to silencing deprecation warnings from being -output. The format of this is similar to that of `DEBUG`: - -```sh -$ NO_DEPRECATION=my-module,othermod node app.js -``` - -This will suppress deprecations from being output for "my-module" and "othermod". -The value is a list of comma-separated namespaces. To suppress every warning -across all namespaces, use the value `*` for a namespace. - -Providing the argument `--no-deprecation` to the `node` executable will suppress -all deprecations (only available in Node.js 0.8 or higher). - -**NOTE** This will not suppress the deperecations given to any "deprecation" -event listeners, just the output to STDERR. - -### process.env.TRACE_DEPRECATION - -As a user of modules that are deprecated, the environment variable `TRACE_DEPRECATION` -is provided as a solution to getting more detailed location information in deprecation -warnings by including the entire stack trace. The format of this is the same as -`NO_DEPRECATION`: - -```sh -$ TRACE_DEPRECATION=my-module,othermod node app.js -``` - -This will include stack traces for deprecations being output for "my-module" and -"othermod". The value is a list of comma-separated namespaces. To trace every -warning across all namespaces, use the value `*` for a namespace. - -Providing the argument `--trace-deprecation` to the `node` executable will trace -all deprecations (only available in Node.js 0.8 or higher). - -**NOTE** This will not trace the deperecations silenced by `NO_DEPRECATION`. - -## Display - -![message](files/message.png) - -When a user calls a function in your library that you mark deprecated, they -will see the following written to STDERR (in the given colors, similar colors -and layout to the `debug` module): - -``` -bright cyan bright yellow -| | reset cyan -| | | | -▼ ▼ ▼ ▼ -my-cool-module deprecated oldfunction [eval]-wrapper:6:22 -▲ ▲ ▲ ▲ -| | | | -namespace | | location of mycoolmod.oldfunction() call - | deprecation message - the word "deprecated" -``` - -If the user redirects their STDERR to a file or somewhere that does not support -colors, they see (similar layout to the `debug` module): - -``` -Sun, 15 Jun 2014 05:21:37 GMT my-cool-module deprecated oldfunction at [eval]-wrapper:6:22 -▲ ▲ ▲ ▲ ▲ -| | | | | -timestamp of message namespace | | location of mycoolmod.oldfunction() call - | deprecation message - the word "deprecated" -``` - -## Examples - -### Deprecating all calls to a function - -This will display a deprecated message about "oldfunction" being deprecated -from "my-module" on STDERR. - -```js -var deprecate = require('depd')('my-cool-module') - -// message automatically derived from function name -// Object.oldfunction -exports.oldfunction = deprecate.function(function oldfunction() { - // all calls to function are deprecated -}) - -// specific message -exports.oldfunction = deprecate.function(function () { - // all calls to function are deprecated -}, 'oldfunction') -``` - -### Conditionally deprecating a function call - -This will display a deprecated message about "weirdfunction" being deprecated -from "my-module" on STDERR when called with less than 2 arguments. - -```js -var deprecate = require('depd')('my-cool-module') - -exports.weirdfunction = function () { - if (arguments.length < 2) { - // calls with 0 or 1 args are deprecated - deprecate('weirdfunction args < 2') - } -} -``` - -When calling `deprecate` as a function, the warning is counted per call site -within your own module, so you can display different deprecations depending -on different situations and the users will still get all the warnings: - -```js -var deprecate = require('depd')('my-cool-module') - -exports.weirdfunction = function () { - if (arguments.length < 2) { - // calls with 0 or 1 args are deprecated - deprecate('weirdfunction args < 2') - } else if (typeof arguments[0] !== 'string') { - // calls with non-string first argument are deprecated - deprecate('weirdfunction non-string first arg') - } -} -``` - -### Deprecating property access - -This will display a deprecated message about "oldprop" being deprecated -from "my-module" on STDERR when accessed. A deprecation will be displayed -when setting the value and when getting the value. - -```js -var deprecate = require('depd')('my-cool-module') - -exports.oldprop = 'something' - -// message automatically derives from property name -deprecate.property(exports, 'oldprop') - -// explicit message -deprecate.property(exports, 'oldprop', 'oldprop >= 0.10') -``` - -## License - -[MIT](LICENSE) - -[npm-version-image]: https://img.shields.io/npm/v/depd.svg?style=flat -[npm-downloads-image]: https://img.shields.io/npm/dm/depd.svg?style=flat -[npm-url]: https://npmjs.org/package/depd -[travis-image]: https://img.shields.io/travis/dougwilson/nodejs-depd.svg?style=flat -[travis-url]: https://travis-ci.org/dougwilson/nodejs-depd -[coveralls-image]: https://img.shields.io/coveralls/dougwilson/nodejs-depd.svg?style=flat -[coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master -[node-image]: https://img.shields.io/node/v/depd.svg?style=flat -[node-url]: http://nodejs.org/download/ -[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg?style=flat -[gratipay-url]: https://www.gratipay.com/dougwilson/ diff --git a/node_modules/express/node_modules/depd/index.js b/node_modules/express/node_modules/depd/index.js deleted file mode 100644 index 4fee4d9..0000000 --- a/node_modules/express/node_modules/depd/index.js +++ /dev/null @@ -1,522 +0,0 @@ -/*! - * depd - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var callSiteToString = require('./lib/compat').callSiteToString -var EventEmitter = require('events').EventEmitter -var relative = require('path').relative - -/** - * Module exports. - */ - -module.exports = depd - -/** - * Get the path to base files on. - */ - -var basePath = process.cwd() - -/** - * Get listener count on event emitter. - */ - -/*istanbul ignore next*/ -var eventListenerCount = EventEmitter.listenerCount - || function (emitter, type) { return emitter.listeners(type).length } - -/** - * Determine if namespace is contained in the string. - */ - -function containsNamespace(str, namespace) { - var val = str.split(/[ ,]+/) - - namespace = String(namespace).toLowerCase() - - for (var i = 0 ; i < val.length; i++) { - if (!(str = val[i])) continue; - - // namespace contained - if (str === '*' || str.toLowerCase() === namespace) { - return true - } - } - - return false -} - -/** - * Convert a data descriptor to accessor descriptor. - */ - -function convertDataDescriptorToAccessor(obj, prop, message) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop) - var value = descriptor.value - - descriptor.get = function getter() { return value } - - if (descriptor.writable) { - descriptor.set = function setter(val) { return value = val } - } - - delete descriptor.value - delete descriptor.writable - - Object.defineProperty(obj, prop, descriptor) - - return descriptor -} - -/** - * Create arguments string to keep arity. - */ - -function createArgumentsString(arity) { - var str = '' - - for (var i = 0; i < arity; i++) { - str += ', arg' + i - } - - return str.substr(2) -} - -/** - * Create stack string from stack. - */ - -function createStackString(stack) { - var str = this.name + ': ' + this.namespace - - if (this.message) { - str += ' deprecated ' + this.message - } - - for (var i = 0; i < stack.length; i++) { - str += '\n at ' + callSiteToString(stack[i]) - } - - return str -} - -/** - * Create deprecate for namespace in caller. - */ - -function depd(namespace) { - if (!namespace) { - throw new TypeError('argument namespace is required') - } - - var stack = getStack() - var site = callSiteLocation(stack[1]) - var file = site[0] - - function deprecate(message) { - // call to self as log - log.call(deprecate, message) - } - - deprecate._file = file - deprecate._ignored = isignored(namespace) - deprecate._namespace = namespace - deprecate._traced = istraced(namespace) - deprecate._warned = Object.create(null) - - deprecate.function = wrapfunction - deprecate.property = wrapproperty - - return deprecate -} - -/** - * Determine if namespace is ignored. - */ - -function isignored(namespace) { - /* istanbul ignore next: tested in a child processs */ - if (process.noDeprecation) { - // --no-deprecation support - return true - } - - var str = process.env.NO_DEPRECATION || '' - - // namespace ignored - return containsNamespace(str, namespace) -} - -/** - * Determine if namespace is traced. - */ - -function istraced(namespace) { - /* istanbul ignore next: tested in a child processs */ - if (process.traceDeprecation) { - // --trace-deprecation support - return true - } - - var str = process.env.TRACE_DEPRECATION || '' - - // namespace traced - return containsNamespace(str, namespace) -} - -/** - * Display deprecation message. - */ - -function log(message, site) { - var haslisteners = eventListenerCount(process, 'deprecation') !== 0 - - // abort early if no destination - if (!haslisteners && this._ignored) { - return - } - - var caller - var callFile - var callSite - var i = 0 - var seen = false - var stack = getStack() - var file = this._file - - if (site) { - // provided site - callSite = callSiteLocation(stack[1]) - callSite.name = site.name - file = callSite[0] - } else { - // get call site - i = 2 - site = callSiteLocation(stack[i]) - callSite = site - } - - // get caller of deprecated thing in relation to file - for (; i < stack.length; i++) { - caller = callSiteLocation(stack[i]) - callFile = caller[0] - - if (callFile === file) { - seen = true - } else if (callFile === this._file) { - file = this._file - } else if (seen) { - break - } - } - - var key = caller - ? site.join(':') + '__' + caller.join(':') - : undefined - - if (key !== undefined && key in this._warned) { - // already warned - return - } - - this._warned[key] = true - - // generate automatic message from call site - if (!message) { - message = callSite === site || !callSite.name - ? defaultMessage(site) - : defaultMessage(callSite) - } - - // emit deprecation if listeners exist - if (haslisteners) { - var err = DeprecationError(this._namespace, message, stack.slice(i)) - process.emit('deprecation', err) - return - } - - // format and write message - var format = process.stderr.isTTY - ? formatColor - : formatPlain - var msg = format.call(this, message, caller, stack.slice(i)) - process.stderr.write(msg + '\n', 'utf8') - - return -} - -/** - * Get call site location as array. - */ - -function callSiteLocation(callSite) { - var file = callSite.getFileName() || '' - var line = callSite.getLineNumber() - var colm = callSite.getColumnNumber() - - if (callSite.isEval()) { - file = callSite.getEvalOrigin() + ', ' + file - } - - var site = [file, line, colm] - - site.callSite = callSite - site.name = callSite.getFunctionName() - - return site -} - -/** - * Generate a default message from the site. - */ - -function defaultMessage(site) { - var callSite = site.callSite - var funcName = site.name - var typeName = callSite.getTypeName() - - // make useful anonymous name - if (!funcName) { - funcName = '' - } - - // make useful type name - if (typeName === 'Function') { - typeName = callSite.getThis().name || typeName - } - - return callSite.getMethodName() - ? typeName + '.' + funcName - : funcName -} - -/** - * Format deprecation message without color. - */ - -function formatPlain(msg, caller, stack) { - var timestamp = new Date().toUTCString() - - var formatted = timestamp - + ' ' + this._namespace - + ' deprecated ' + msg - - // add stack trace - if (this._traced) { - for (var i = 0; i < stack.length; i++) { - formatted += '\n at ' + callSiteToString(stack[i]) - } - - return formatted - } - - if (caller) { - formatted += ' at ' + formatLocation(caller) - } - - return formatted -} - -/** - * Format deprecation message with color. - */ - -function formatColor(msg, caller, stack) { - var formatted = '\x1b[36;1m' + this._namespace + '\x1b[22;39m' // bold cyan - + ' \x1b[33;1mdeprecated\x1b[22;39m' // bold yellow - + ' \x1b[0m' + msg + '\x1b[39m' // reset - - // add stack trace - if (this._traced) { - for (var i = 0; i < stack.length; i++) { - formatted += '\n \x1b[36mat ' + callSiteToString(stack[i]) + '\x1b[39m' // cyan - } - - return formatted - } - - if (caller) { - formatted += ' \x1b[36m' + formatLocation(caller) + '\x1b[39m' // cyan - } - - return formatted -} - -/** - * Format call site location. - */ - -function formatLocation(callSite) { - return relative(basePath, callSite[0]) - + ':' + callSite[1] - + ':' + callSite[2] -} - -/** - * Get the stack as array of call sites. - */ - -function getStack() { - var limit = Error.stackTraceLimit - var obj = {} - var prep = Error.prepareStackTrace - - Error.prepareStackTrace = prepareObjectStackTrace - Error.stackTraceLimit = Math.max(10, limit) - - // capture the stack - Error.captureStackTrace(obj) - - // slice this function off the top - var stack = obj.stack.slice(1) - - Error.prepareStackTrace = prep - Error.stackTraceLimit = limit - - return stack -} - -/** - * Capture call site stack from v8. - */ - -function prepareObjectStackTrace(obj, stack) { - return stack -} - -/** - * Return a wrapped function in a deprecation message. - */ - -function wrapfunction(fn, message) { - if (typeof fn !== 'function') { - throw new TypeError('argument fn must be a function') - } - - var args = createArgumentsString(fn.length) - var deprecate = this - var stack = getStack() - var site = callSiteLocation(stack[1]) - - site.name = fn.name - - var deprecatedfn = eval('(function (' + args + ') {\n' - + '"use strict"\n' - + 'log.call(deprecate, message, site)\n' - + 'return fn.apply(this, arguments)\n' - + '})') - - return deprecatedfn -} - -/** - * Wrap property in a deprecation message. - */ - -function wrapproperty(obj, prop, message) { - if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { - throw new TypeError('argument obj must be object') - } - - var descriptor = Object.getOwnPropertyDescriptor(obj, prop) - - if (!descriptor) { - throw new TypeError('must call property on owner object') - } - - if (!descriptor.configurable) { - throw new TypeError('property must be configurable') - } - - var deprecate = this - var stack = getStack() - var site = callSiteLocation(stack[1]) - - // set site name - site.name = prop - - // convert data descriptor - if ('value' in descriptor) { - descriptor = convertDataDescriptorToAccessor(obj, prop, message) - } - - var get = descriptor.get - var set = descriptor.set - - // wrap getter - if (typeof get === 'function') { - descriptor.get = function getter() { - log.call(deprecate, message, site) - return get.apply(this, arguments) - } - } - - // wrap setter - if (typeof set === 'function') { - descriptor.set = function setter() { - log.call(deprecate, message, site) - return set.apply(this, arguments) - } - } - - Object.defineProperty(obj, prop, descriptor) -} - -/** - * Create DeprecationError for deprecation - */ - -function DeprecationError(namespace, message, stack) { - var error = new Error() - var stackString - - Object.defineProperty(error, 'constructor', { - value: DeprecationError - }) - - Object.defineProperty(error, 'message', { - configurable: true, - enumerable: false, - value: message, - writable: true - }) - - Object.defineProperty(error, 'name', { - enumerable: false, - configurable: true, - value: 'DeprecationError', - writable: true - }) - - Object.defineProperty(error, 'namespace', { - configurable: true, - enumerable: false, - value: namespace, - writable: true - }) - - Object.defineProperty(error, 'stack', { - configurable: true, - enumerable: false, - get: function () { - if (stackString !== undefined) { - return stackString - } - - // prepare stack trace - return stackString = createStackString.call(this, stack) - }, - set: function setter(val) { - stackString = val - } - }) - - return error -} diff --git a/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js b/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js deleted file mode 100644 index 09d9721..0000000 --- a/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! - * depd - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = bufferConcat - -/** - * Concatenate an array of Buffers. - */ - -function bufferConcat(bufs) { - var length = 0 - - for (var i = 0, len = bufs.length; i < len; i++) { - length += bufs[i].length - } - - var buf = new Buffer(length) - var pos = 0 - - for (var i = 0, len = bufs.length; i < len; i++) { - bufs[i].copy(buf, pos) - pos += bufs[i].length - } - - return buf -} diff --git a/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js b/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js deleted file mode 100644 index 17cf7ed..0000000 --- a/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js +++ /dev/null @@ -1,101 +0,0 @@ -/*! - * depd - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = callSiteToString - -/** - * Format a CallSite file location to a string. - */ - -function callSiteFileLocation(callSite) { - var fileName - var fileLocation = '' - - if (callSite.isNative()) { - fileLocation = 'native' - } else if (callSite.isEval()) { - fileName = callSite.getScriptNameOrSourceURL() - if (!fileName) { - fileLocation = callSite.getEvalOrigin() - } - } else { - fileName = callSite.getFileName() - } - - if (fileName) { - fileLocation += fileName - - var lineNumber = callSite.getLineNumber() - if (lineNumber != null) { - fileLocation += ':' + lineNumber - - var columnNumber = callSite.getColumnNumber() - if (columnNumber) { - fileLocation += ':' + columnNumber - } - } - } - - return fileLocation || 'unknown source' -} - -/** - * Format a CallSite to a string. - */ - -function callSiteToString(callSite) { - var addSuffix = true - var fileLocation = callSiteFileLocation(callSite) - var functionName = callSite.getFunctionName() - var isConstructor = callSite.isConstructor() - var isMethodCall = !(callSite.isToplevel() || isConstructor) - var line = '' - - if (isMethodCall) { - var methodName = callSite.getMethodName() - var typeName = getConstructorName(callSite) - - if (functionName) { - if (typeName && functionName.indexOf(typeName) !== 0) { - line += typeName + '.' - } - - line += functionName - - if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) { - line += ' [as ' + methodName + ']' - } - } else { - line += typeName + '.' + (methodName || '') - } - } else if (isConstructor) { - line += 'new ' + (functionName || '') - } else if (functionName) { - line += functionName - } else { - addSuffix = false - line += fileLocation - } - - if (addSuffix) { - line += ' (' + fileLocation + ')' - } - - return line -} - -/** - * Get constructor name of reviver. - */ - -function getConstructorName(obj) { - var receiver = obj.receiver - return (receiver.constructor && receiver.constructor.name) || null -} diff --git a/node_modules/express/node_modules/depd/lib/compat/index.js b/node_modules/express/node_modules/depd/lib/compat/index.js deleted file mode 100644 index 7fee026..0000000 --- a/node_modules/express/node_modules/depd/lib/compat/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * depd - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -lazyProperty(module.exports, 'bufferConcat', function bufferConcat() { - return Buffer.concat || require('./buffer-concat') -}) - -lazyProperty(module.exports, 'callSiteToString', function callSiteToString() { - var limit = Error.stackTraceLimit - var obj = {} - var prep = Error.prepareStackTrace - - function prepareObjectStackTrace(obj, stack) { - return stack - } - - Error.prepareStackTrace = prepareObjectStackTrace - Error.stackTraceLimit = 2 - - // capture the stack - Error.captureStackTrace(obj) - - // slice the stack - var stack = obj.stack.slice() - - Error.prepareStackTrace = prep - Error.stackTraceLimit = limit - - return stack[0].toString ? toString : require('./callsite-tostring') -}) - -/** - * Define a lazy property. - */ - -function lazyProperty(obj, prop, getter) { - function get() { - var val = getter() - - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - value: val - }) - - return val - } - - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - get: get - }) -} - -/** - * Call toString() on the obj - */ - -function toString(obj) { - return obj.toString() -} diff --git a/node_modules/express/node_modules/depd/package.json b/node_modules/express/node_modules/depd/package.json deleted file mode 100644 index 85dd84c..0000000 --- a/node_modules/express/node_modules/depd/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "depd", - "description": "Deprecate all the things", - "version": "1.0.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "keywords": [ - "deprecate", - "deprecated" - ], - "repository": { - "type": "git", - "url": "https://github.com/dougwilson/nodejs-depd" - }, - "devDependencies": { - "benchmark": "1.0.0", - "beautify-benchmark": "0.2.4", - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "should": "~4.0.4" - }, - "files": [ - "lib/", - "History.md", - "LICENSE", - "index.js", - "Readme.md" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "bench": "node benchmark/index.js", - "test": "mocha --reporter spec --bail --require should test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --require should test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --require should test/" - }, - "gitHead": "08b5a2182c8c1fdf7420e4ff8532bfd7e266a7b2", - "bugs": { - "url": "https://github.com/dougwilson/nodejs-depd/issues" - }, - "homepage": "https://github.com/dougwilson/nodejs-depd", - "_id": "depd@1.0.0", - "_shasum": "2fda0d00e98aae2845d4991ab1bf1f2a199073d5", - "_from": "depd@>=1.0.0 <1.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "2fda0d00e98aae2845d4991ab1bf1f2a199073d5", - "tarball": "http://registry.npmjs.org/depd/-/depd-1.0.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/depd/-/depd-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/escape-html/.npmignore b/node_modules/express/node_modules/escape-html/.npmignore deleted file mode 100644 index 48a2e24..0000000 --- a/node_modules/express/node_modules/escape-html/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -components -build diff --git a/node_modules/express/node_modules/escape-html/Makefile b/node_modules/express/node_modules/escape-html/Makefile deleted file mode 100644 index 3f6119d..0000000 --- a/node_modules/express/node_modules/escape-html/Makefile +++ /dev/null @@ -1,11 +0,0 @@ - -build: components index.js - @component build - -components: - @Component install - -clean: - rm -fr build components template.js - -.PHONY: clean diff --git a/node_modules/express/node_modules/escape-html/Readme.md b/node_modules/express/node_modules/escape-html/Readme.md deleted file mode 100644 index 2cfcc99..0000000 --- a/node_modules/express/node_modules/escape-html/Readme.md +++ /dev/null @@ -1,15 +0,0 @@ - -# escape-html - - Escape HTML entities - -## Example - -```js -var escape = require('escape-html'); -escape(str); -``` - -## License - - MIT \ No newline at end of file diff --git a/node_modules/express/node_modules/escape-html/component.json b/node_modules/express/node_modules/escape-html/component.json deleted file mode 100644 index cb9740f..0000000 --- a/node_modules/express/node_modules/escape-html/component.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "escape-html", - "description": "Escape HTML entities", - "version": "1.0.1", - "keywords": ["escape", "html", "utility"], - "dependencies": {}, - "scripts": [ - "index.js" - ] -} diff --git a/node_modules/express/node_modules/escape-html/index.js b/node_modules/express/node_modules/escape-html/index.js deleted file mode 100644 index 2765211..0000000 --- a/node_modules/express/node_modules/escape-html/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Escape special characters in the given string of html. - * - * @param {String} html - * @return {String} - * @api private - */ - -module.exports = function(html) { - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); -} diff --git a/node_modules/express/node_modules/escape-html/package.json b/node_modules/express/node_modules/escape-html/package.json deleted file mode 100644 index 68056c3..0000000 --- a/node_modules/express/node_modules/escape-html/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "escape-html", - "description": "Escape HTML entities", - "version": "1.0.1", - "keywords": [ - "escape", - "html", - "utility" - ], - "dependencies": {}, - "main": "index.js", - "component": { - "scripts": { - "escape-html/index.js": "index.js" - } - }, - "repository": { - "type": "git", - "url": "https://github.com/component/escape-html.git" - }, - "readme": "\n# escape-html\n\n Escape HTML entities\n\n## Example\n\n```js\nvar escape = require('escape-html');\nescape(str);\n```\n\n## License\n\n MIT", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/component/escape-html/issues" - }, - "homepage": "https://github.com/component/escape-html", - "_id": "escape-html@1.0.1", - "_shasum": "181a286ead397a39a92857cfb1d43052e356bff0", - "_from": "escape-html@1.0.1", - "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", - "scripts": {} -} diff --git a/node_modules/express/node_modules/etag/HISTORY.md b/node_modules/express/node_modules/etag/HISTORY.md deleted file mode 100644 index 10cf504..0000000 --- a/node_modules/express/node_modules/etag/HISTORY.md +++ /dev/null @@ -1,55 +0,0 @@ -1.5.1 / 2014-11-19 -================== - - * deps: crc@3.2.1 - - Minor fixes - -1.5.0 / 2014-10-14 -================== - - * Improve string performance - * Slightly improve speed for weak ETags over 1KB - -1.4.0 / 2014-09-21 -================== - - * Support "fake" stats objects - * Support Node.js 0.6 - -1.3.1 / 2014-09-14 -================== - - * Use the (new and improved) `crc` for crc32 - -1.3.0 / 2014-08-29 -================== - - * Default strings to strong ETags - * Improve speed for weak ETags over 1KB - -1.2.1 / 2014-08-29 -================== - - * Use the (much faster) `buffer-crc32` for crc32 - -1.2.0 / 2014-08-24 -================== - - * Add support for file stat objects - -1.1.0 / 2014-08-24 -================== - - * Add fast-path for empty entity - * Add weak ETag generation - * Shrink size of generated ETags - -1.0.1 / 2014-08-24 -================== - - * Fix behavior of string containing Unicode - -1.0.0 / 2014-05-18 -================== - - * Initial release diff --git a/node_modules/express/node_modules/etag/LICENSE b/node_modules/express/node_modules/etag/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/etag/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/etag/README.md b/node_modules/express/node_modules/etag/README.md deleted file mode 100644 index 68c16d5..0000000 --- a/node_modules/express/node_modules/etag/README.md +++ /dev/null @@ -1,141 +0,0 @@ -# etag - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Create simple ETags - -## Installation - -```sh -$ npm install etag -``` - -## API - -```js -var etag = require('etag') -``` - -### etag(entity, [options]) - -Generate a strong ETag for the given entity. This should be the complete -body of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By -default, a strong ETag is generated except for `fs.Stats`, which will -generate a weak ETag (this can be overwritten by `options.weak`). - -```js -res.setHeader('ETag', etag(body)) -``` - -#### Options - -`etag` accepts these properties in the options object. - -##### weak - -Specifies if a "strong" or a "weak" ETag will be generated. The ETag can only -really be a strong as the given input. - -## Testing - -```sh -$ npm test -``` - -## Benchmark - -```bash -$ npm run-script bench - -> etag@1.5.1 bench nodejs-etag -> node benchmark/index.js - -> node benchmark/body0-100b.js - - 100B body - - 1 test completed. - 2 tests completed. - 3 tests completed. - 4 tests completed. - - buffer - strong x 425,007 ops/sec ±1.47% (184 runs sampled) -* buffer - weak x 1,009,859 ops/sec ±0.18% (197 runs sampled) - string - strong x 442,096 ops/sec ±1.20% (181 runs sampled) - string - weak x 325,063 ops/sec ±0.31% (192 runs sampled) - -> node benchmark/body1-1kb.js - - 1KB body - - 1 test completed. - 2 tests completed. - 3 tests completed. - 4 tests completed. - - buffer - strong x 263,069 ops/sec ±1.60% (190 runs sampled) -* buffer - weak x 295,732 ops/sec ±0.43% (199 runs sampled) - string - strong x 274,822 ops/sec ±1.15% (191 runs sampled) - string - weak x 169,473 ops/sec ±1.59% (194 runs sampled) - -> node benchmark/body2-5kb.js - - 5KB body - - 1 test completed. - 2 tests completed. - 3 tests completed. - 4 tests completed. - - buffer - strong x 104,299 ops/sec ±0.60% (193 runs sampled) -* buffer - weak x 108,126 ops/sec ±0.65% (196 runs sampled) - string - strong x 101,736 ops/sec ±0.78% (194 runs sampled) - string - weak x 101,266 ops/sec ±0.85% (192 runs sampled) - -> node benchmark/body3-10kb.js - - 10KB body - - 1 test completed. - 2 tests completed. - 3 tests completed. - 4 tests completed. - - buffer - strong x 59,007 ops/sec ±0.29% (198 runs sampled) -* buffer - weak x 60,968 ops/sec ±0.48% (197 runs sampled) - string - strong x 51,873 ops/sec ±1.78% (178 runs sampled) - string - weak x 52,307 ops/sec ±2.63% (193 runs sampled) - -> node benchmark/body4-100kb.js - - 100KB body - - 1 test completed. - 2 tests completed. - 3 tests completed. - 4 tests completed. - - buffer - strong x 6,712 ops/sec ±0.11% (198 runs sampled) -* buffer - weak x 6,716 ops/sec ±0.50% (196 runs sampled) - string - strong x 6,397 ops/sec ±0.36% (196 runs sampled) - string - weak x 6,635 ops/sec ±0.15% (198 runs sampled) -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/etag.svg?style=flat -[npm-url]: https://npmjs.org/package/etag -[node-version-image]: https://img.shields.io/node/v/etag.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/etag.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/etag -[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master -[downloads-image]: https://img.shields.io/npm/dm/etag.svg?style=flat -[downloads-url]: https://npmjs.org/package/etag diff --git a/node_modules/express/node_modules/etag/index.js b/node_modules/express/node_modules/etag/index.js deleted file mode 100644 index bb05eb7..0000000 --- a/node_modules/express/node_modules/etag/index.js +++ /dev/null @@ -1,171 +0,0 @@ -/*! - * etag - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = etag - -/** - * Module dependencies. - */ - -var crc = require('crc').crc32 -var crypto = require('crypto') -var Stats = require('fs').Stats - -/** - * Module variables. - */ - -var crc32threshold = 1000 // 1KB -var NULL = new Buffer([0]) -var toString = Object.prototype.toString - -/** - * Create a simple ETag. - * - * @param {string|Buffer|Stats} entity - * @param {object} [options] - * @param {boolean} [options.weak] - * @return {String} - * @api public - */ - -function etag(entity, options) { - if (entity == null) { - throw new TypeError('argument entity is required') - } - - var isStats = isstats(entity) - var weak = options && typeof options.weak === 'boolean' - ? options.weak - : isStats - - // support fs.Stats object - if (isStats) { - return stattag(entity, weak) - } - - if (typeof entity !== 'string' && !Buffer.isBuffer(entity)) { - throw new TypeError('argument entity must be string, Buffer, or fs.Stats') - } - - var hash = weak - ? weakhash(entity) - : stronghash(entity) - - return weak - ? 'W/"' + hash + '"' - : '"' + hash + '"' -} - -/** - * Determine if object is a Stats object. - * - * @param {object} obj - * @return {boolean} - * @api private - */ - -function isstats(obj) { - // not even an object - if (obj === null || typeof obj !== 'object') { - return false - } - - // genuine fs.Stats - if (obj instanceof Stats) { - return true - } - - // quack quack - return 'atime' in obj && toString.call(obj.atime) === '[object Date]' - && 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' - && 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' - && 'ino' in obj && typeof obj.ino === 'number' - && 'size' in obj && typeof obj.size === 'number' -} - -/** - * Generate a tag for a stat. - * - * @param {Buffer} entity - * @return {String} - * @api private - */ - -function stattag(stat, weak) { - var mtime = stat.mtime.toISOString() - var size = stat.size.toString(16) - - if (weak) { - return 'W/"' + size + '-' + crc(mtime) + '"' - } - - var hash = crypto - .createHash('md5') - .update('file', 'utf8') - .update(NULL) - .update(size, 'utf8') - .update(NULL) - .update(mtime, 'utf8') - .digest('base64') - - return '"' + hash + '"' -} - -/** - * Generate a strong hash. - * - * @param {Buffer} entity - * @return {String} - * @api private - */ - -function stronghash(entity) { - if (entity.length === 0) { - // fast-path empty - return '1B2M2Y8AsgTpgAmY7PhCfg==' - } - - return crypto - .createHash('md5') - .update(entity, 'utf8') - .digest('base64') -} - -/** - * Generate a weak hash. - * - * @param {Buffer} entity - * @return {String} - * @api private - */ - -function weakhash(entity) { - if (entity.length === 0) { - // fast-path empty - return '0-0' - } - - var len = typeof entity === 'string' - ? Buffer.byteLength(entity, 'utf8') - : entity.length - - if (len <= crc32threshold) { - // crc32 plus length when it's fast - // crc(str) only accepts utf-8 encoding - return len.toString(16) + '-' + crc(entity).toString(16) - } - - // use md4 for long strings - return crypto - .createHash('md4') - .update(entity, 'utf8') - .digest('base64') -} diff --git a/node_modules/express/node_modules/etag/node_modules/crc/.npmignore b/node_modules/express/node_modules/etag/node_modules/crc/.npmignore deleted file mode 100644 index 57d4cb8..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -benchmark -src -test -.travis.yml -bitcoin.png diff --git a/node_modules/express/node_modules/etag/node_modules/crc/LICENSE b/node_modules/express/node_modules/etag/node_modules/crc/LICENSE deleted file mode 100644 index c49097c..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright 2014 Alex Gorbatchev - -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/node_modules/express/node_modules/etag/node_modules/crc/README.md b/node_modules/express/node_modules/etag/node_modules/crc/README.md deleted file mode 100644 index 6473cbd..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# crc - -[![GitTip](http://img.shields.io/gittip/alexgorbatchev.svg?style=flat)](https://www.gittip.com/alexgorbatchev/) -[![Dependency status](http://img.shields.io/david/alexgorbatchev/node-crc.svg?style=flat)](https://david-dm.org/alexgorbatchev/node-crc) -[![devDependency Status](http://img.shields.io/david/dev/alexgorbatchev/node-crc.svg?style=flat)](https://david-dm.org/alexgorbatchev/node-crc#info=devDependencies) -[![Build Status](http://img.shields.io/travis/alexgorbatchev/node-crc.svg?style=flat&branch=master)](https://travis-ci.org/alexgorbatchev/node-crc) - -[![NPM](https://nodei.co/npm/crc.svg?style=flat)](https://npmjs.org/package/node-crc) - -Module for calculating Cyclic Redundancy Check (CRC). - -## Features - -* Full test suite comparing values against reference `pycrc` implementation. -* Version 3.x is 3x to 4x faster than version 2.x. -* Pure JavaScript implementation, no dependencies. -* Provides CRC Tables for optimized calculations. -* Provides support for the following CRC algorithms: - * CRC1 `crc.crc1(…)` - * CRC8 `crc.crc8(…)` - * CRC8 1-Wire `crc.crc81wire(…)` - * CRC16 `crc.crc16(…)` - * CRC16 CCITT `crc.crc16ccitt(…)` - * CRC16 Modbus `crc.crc16modbus(…)` - * CRC24 `crc.crc24(…)` - * CRC32 `crc.crc32(…)` - -## IMPORTANT - -If you've used `crc` module prior to version 2.x, you might have some inconsistentcies with the current implementation because it relied on very old code and wasn't checked against reference implementation. If you upgrading from 1.x, please take special care. - -## Support - - Please support me on [GitTip](https://www.gittip.com/alexgorbatchev/). I've spend days developing and grooming this module and hope to spend more time. If you have bitcoin, please use the QR code or this wallet address [`1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ`](https://blockchain.info/address/1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ): - -## Installation - - npm install crc - -## Running tests - - $ npm install - $ npm test - -## Usage Example - -Calculate a CRC32: - - var crc = require('crc'); - - crc.crc32('hello').toString(16); - # => "3610a686" - -Calculate a CRC32 of a file: - - crc.crc32(fs.readFileSync('README.md', 'utf8')).toString(16); - # => "127ad531" - -Or using a `Buffer`: - - crc.crc32(fs.readFileSync('README.md')).toString(16); - # => "127ad531" - -Incrementally calculate a CRC32: - - value = crc32('one'); - value = crc32('two', value); - value = crc32('three', value); - value.toString(16); - # => "09e1c092" - -## Thanks! - -[pycrc](http://www.tty1.net/pycrc/) library is which the source of all of the CRC tables. - -# License - -The MIT License (MIT) - -Copyright (c) 2014 Alex Gorbatchev - -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/node_modules/express/node_modules/etag/node_modules/crc/lib/crc.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc.js deleted file mode 100644 index 1c342b7..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc.js +++ /dev/null @@ -1,71 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var CRC, hex; - -hex = require('./hex'); - -module.exports = CRC = (function() { - CRC.prototype.INIT_CRC = 0x00; - - CRC.prototype.XOR_MASK = 0x00; - - CRC.prototype.WIDTH = 0; - - CRC.prototype.pack = function(crc) { - return ''; - }; - - CRC.prototype.each_byte = function(buf, cb) { - var i, _i, _ref, _results; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - _results = []; - for (i = _i = 0, _ref = buf.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { - _results.push(cb(buf[i])); - } - return _results; - }; - - function CRC() { - this.crc = this.INIT_CRC; - } - - CRC.prototype.digest_length = function() { - return Math.ceil(this.WIDTH / 8.0); - }; - - CRC.prototype.update = function(data) {}; - - CRC.prototype.reset = function() { - return this.crc = this.INIT_CRC; - }; - - CRC.prototype.checksum = function(signed) { - var sum; - if (signed == null) { - signed = true; - } - sum = this.crc ^ this.XOR_MASK; - if (signed) { - sum = sum >>> 0; - } - return sum; - }; - - CRC.prototype.finish = function() { - return this.pack(this.checksum()); - }; - - CRC.prototype.hexdigest = function(value) { - var result; - if (value != null) { - this.update(value); - } - result = this.finish(); - this.reset(); - return result; - }; - - return CRC; - -})(); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc1.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc1.js deleted file mode 100644 index f094567..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -module.exports = create('crc1', function(buf, previous) { - var accum, byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = ~~previous; - accum = 0; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - accum += byte; - } - crc += accum % 256; - return crc % 256; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16.js deleted file mode 100644 index a09cd1e..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('crc-16', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = ~~previous; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = (TABLE[(crc ^ byte) & 0xff] ^ (crc >> 8)) & 0xffff; - } - return crc; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js deleted file mode 100644 index 0bdb0bf..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('ccitt', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = previous != null ? ~~previous : 0xffff; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = (TABLE[((crc >> 8) ^ byte) & 0xff] ^ (crc << 8)) & 0xffff; - } - return crc; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_modbus.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_modbus.js deleted file mode 100644 index 52a536a..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_modbus.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('crc-16-modbus', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = previous != null ? ~~previous : 0xffff; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = (TABLE[(crc ^ byte) & 0xff] ^ (crc >> 8)) & 0xffff; - } - return crc; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc24.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc24.js deleted file mode 100644 index ff67bc1..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc24.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x000000, 0x864cfb, 0x8ad50d, 0x0c99f6, 0x93e6e1, 0x15aa1a, 0x1933ec, 0x9f7f17, 0xa18139, 0x27cdc2, 0x2b5434, 0xad18cf, 0x3267d8, 0xb42b23, 0xb8b2d5, 0x3efe2e, 0xc54e89, 0x430272, 0x4f9b84, 0xc9d77f, 0x56a868, 0xd0e493, 0xdc7d65, 0x5a319e, 0x64cfb0, 0xe2834b, 0xee1abd, 0x685646, 0xf72951, 0x7165aa, 0x7dfc5c, 0xfbb0a7, 0x0cd1e9, 0x8a9d12, 0x8604e4, 0x00481f, 0x9f3708, 0x197bf3, 0x15e205, 0x93aefe, 0xad50d0, 0x2b1c2b, 0x2785dd, 0xa1c926, 0x3eb631, 0xb8faca, 0xb4633c, 0x322fc7, 0xc99f60, 0x4fd39b, 0x434a6d, 0xc50696, 0x5a7981, 0xdc357a, 0xd0ac8c, 0x56e077, 0x681e59, 0xee52a2, 0xe2cb54, 0x6487af, 0xfbf8b8, 0x7db443, 0x712db5, 0xf7614e, 0x19a3d2, 0x9fef29, 0x9376df, 0x153a24, 0x8a4533, 0x0c09c8, 0x00903e, 0x86dcc5, 0xb822eb, 0x3e6e10, 0x32f7e6, 0xb4bb1d, 0x2bc40a, 0xad88f1, 0xa11107, 0x275dfc, 0xdced5b, 0x5aa1a0, 0x563856, 0xd074ad, 0x4f0bba, 0xc94741, 0xc5deb7, 0x43924c, 0x7d6c62, 0xfb2099, 0xf7b96f, 0x71f594, 0xee8a83, 0x68c678, 0x645f8e, 0xe21375, 0x15723b, 0x933ec0, 0x9fa736, 0x19ebcd, 0x8694da, 0x00d821, 0x0c41d7, 0x8a0d2c, 0xb4f302, 0x32bff9, 0x3e260f, 0xb86af4, 0x2715e3, 0xa15918, 0xadc0ee, 0x2b8c15, 0xd03cb2, 0x567049, 0x5ae9bf, 0xdca544, 0x43da53, 0xc596a8, 0xc90f5e, 0x4f43a5, 0x71bd8b, 0xf7f170, 0xfb6886, 0x7d247d, 0xe25b6a, 0x641791, 0x688e67, 0xeec29c, 0x3347a4, 0xb50b5f, 0xb992a9, 0x3fde52, 0xa0a145, 0x26edbe, 0x2a7448, 0xac38b3, 0x92c69d, 0x148a66, 0x181390, 0x9e5f6b, 0x01207c, 0x876c87, 0x8bf571, 0x0db98a, 0xf6092d, 0x7045d6, 0x7cdc20, 0xfa90db, 0x65efcc, 0xe3a337, 0xef3ac1, 0x69763a, 0x578814, 0xd1c4ef, 0xdd5d19, 0x5b11e2, 0xc46ef5, 0x42220e, 0x4ebbf8, 0xc8f703, 0x3f964d, 0xb9dab6, 0xb54340, 0x330fbb, 0xac70ac, 0x2a3c57, 0x26a5a1, 0xa0e95a, 0x9e1774, 0x185b8f, 0x14c279, 0x928e82, 0x0df195, 0x8bbd6e, 0x872498, 0x016863, 0xfad8c4, 0x7c943f, 0x700dc9, 0xf64132, 0x693e25, 0xef72de, 0xe3eb28, 0x65a7d3, 0x5b59fd, 0xdd1506, 0xd18cf0, 0x57c00b, 0xc8bf1c, 0x4ef3e7, 0x426a11, 0xc426ea, 0x2ae476, 0xaca88d, 0xa0317b, 0x267d80, 0xb90297, 0x3f4e6c, 0x33d79a, 0xb59b61, 0x8b654f, 0x0d29b4, 0x01b042, 0x87fcb9, 0x1883ae, 0x9ecf55, 0x9256a3, 0x141a58, 0xefaaff, 0x69e604, 0x657ff2, 0xe33309, 0x7c4c1e, 0xfa00e5, 0xf69913, 0x70d5e8, 0x4e2bc6, 0xc8673d, 0xc4fecb, 0x42b230, 0xddcd27, 0x5b81dc, 0x57182a, 0xd154d1, 0x26359f, 0xa07964, 0xace092, 0x2aac69, 0xb5d37e, 0x339f85, 0x3f0673, 0xb94a88, 0x87b4a6, 0x01f85d, 0x0d61ab, 0x8b2d50, 0x145247, 0x921ebc, 0x9e874a, 0x18cbb1, 0xe37b16, 0x6537ed, 0x69ae1b, 0xefe2e0, 0x709df7, 0xf6d10c, 0xfa48fa, 0x7c0401, 0x42fa2f, 0xc4b6d4, 0xc82f22, 0x4e63d9, 0xd11cce, 0x575035, 0x5bc9c3, 0xdd8538]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('crc-24', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = previous != null ? ~~previous : 0xb704ce; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = (TABLE[((crc >> 16) ^ byte) & 0xff] ^ (crc << 8)) & 0xffffff; - } - return crc; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc32.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc32.js deleted file mode 100644 index 20bc024..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc32.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('crc-32', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = previous === 0 ? 0 : ~~previous ^ -1; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8); - } - return crc ^ -1; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8.js deleted file mode 100644 index 6ebe77c..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('crc-8', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = ~~previous; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = TABLE[(crc ^ byte) & 0xff] & 0xff; - } - return crc; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8_1wire.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8_1wire.js deleted file mode 100644 index b561246..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8_1wire.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -var Buffer, TABLE, create; - -Buffer = require('buffer').Buffer; - -create = require('./create'); - -TABLE = [0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35]; - -if (typeof Int32Array !== 'undefined') { - TABLE = new Int32Array(TABLE); -} - -module.exports = create('dallas-1-wire', function(buf, previous) { - var byte, crc, _i, _len; - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - crc = ~~previous; - for (_i = 0, _len = buf.length; _i < _len; _i++) { - byte = buf[_i]; - crc = TABLE[(crc ^ byte) & 0xff] & 0xff; - } - return crc; -}); diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/create.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/create.js deleted file mode 100644 index 2d856bd..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/create.js +++ /dev/null @@ -1,11 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -module.exports = function(model, calc) { - var fn; - fn = function(buf, previous) { - return calc(buf, previous) >>> 0; - }; - fn.signed = calc; - fn.unsigned = fn; - fn.model = model; - return fn; -}; diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/hex.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/hex.js deleted file mode 100644 index 0a6aa4c..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/hex.js +++ /dev/null @@ -1,9 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -module.exports = function(number) { - var result; - result = number.toString(16); - while (result.length % 2) { - result = "0" + result; - } - return result; -}; diff --git a/node_modules/express/node_modules/etag/node_modules/crc/lib/index.js b/node_modules/express/node_modules/etag/node_modules/crc/lib/index.js deleted file mode 100644 index 15ac34c..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/lib/index.js +++ /dev/null @@ -1,11 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -module.exports = { - crc1: require('./crc1'), - crc8: require('./crc8'), - crc81wire: require('./crc8_1wire'), - crc16: require('./crc16'), - crc16ccitt: require('./crc16_ccitt'), - crc16modbus: require('./crc16_modbus'), - crc24: require('./crc24'), - crc32: require('./crc32') -}; diff --git a/node_modules/express/node_modules/etag/node_modules/crc/package.json b/node_modules/express/node_modules/etag/node_modules/crc/package.json deleted file mode 100644 index b0ceb1e..0000000 --- a/node_modules/express/node_modules/etag/node_modules/crc/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "crc", - "version": "3.2.1", - "description": "Various CRC JavaScript implementations", - "keywords": [ - "crc" - ], - "main": "./lib/index.js", - "scripts": { - "test": "mocha test/*.spec.coffee", - "pretest": "coffee --bare --output ./lib --compile ./src/*.coffee" - }, - "author": { - "name": "Alex Gorbatchev", - "url": "https://github.com/alexgorbatchev" - }, - "devDependencies": { - "beautify-benchmark": "^0.2.4", - "benchmark": "^1.0.0", - "buffer-crc32": "^0.2.3", - "chai": "~1.9.1", - "coffee-errors": "~0.8.6", - "coffee-script": "~1.7.1", - "mocha": "*", - "seedrandom": "^2.3.6" - }, - "homepage": "https://github.com/alexgorbatchev/node-crc", - "bugs": { - "url": "https://github.com/alexgorbatchev/node-crc/issues" - }, - "repository": { - "type": "git", - "url": "git://github.com/alexgorbatchev/node-crc.git" - }, - "license": "MIT", - "gitHead": "71caf362b061992bfe4ca8706ee264e764d2e88e", - "_id": "crc@3.2.1", - "_shasum": "5d9c8fb77a245cd5eca291e5d2d005334bab0082", - "_from": "crc@3.2.1", - "_npmVersion": "1.4.13", - "_npmUser": { - "name": "alexgorbatchev", - "email": "alex.gorbatchev@gmail.com" - }, - "maintainers": [ - { - "name": "alexgorbatchev", - "email": "alex.gorbatchev@gmail.com" - } - ], - "dist": { - "shasum": "5d9c8fb77a245cd5eca291e5d2d005334bab0082", - "tarball": "http://registry.npmjs.org/crc/-/crc-3.2.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/etag/package.json b/node_modules/express/node_modules/etag/package.json deleted file mode 100644 index 901a5fe..0000000 --- a/node_modules/express/node_modules/etag/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "etag", - "description": "Create simple ETags", - "version": "1.5.1", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "David Björklund", - "email": "david.bjorklund@gmail.com" - } - ], - "license": "MIT", - "keywords": [ - "etag", - "http", - "res" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/etag" - }, - "dependencies": { - "crc": "3.2.1" - }, - "devDependencies": { - "benchmark": "1.0.0", - "beautify-benchmark": "0.2.4", - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "seedrandom": "~2.3.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "bench": "node benchmark/index.js", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "27335e2265388109e50a9f037452081dc8a8260f", - "bugs": { - "url": "https://github.com/jshttp/etag/issues" - }, - "homepage": "https://github.com/jshttp/etag", - "_id": "etag@1.5.1", - "_shasum": "54c50de04ee42695562925ac566588291be7e9ea", - "_from": "etag@>=1.5.1 <1.6.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "54c50de04ee42695562925ac566588291be7e9ea", - "tarball": "http://registry.npmjs.org/etag/-/etag-1.5.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/etag/-/etag-1.5.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/finalhandler/HISTORY.md b/node_modules/express/node_modules/finalhandler/HISTORY.md deleted file mode 100644 index 2c7e1ef..0000000 --- a/node_modules/express/node_modules/finalhandler/HISTORY.md +++ /dev/null @@ -1,51 +0,0 @@ -0.3.2 / 2014-10-22 -================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - -0.3.1 / 2014-10-16 -================== - - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - -0.3.0 / 2014-09-17 -================== - - * Terminate in progress response only on error - * Use `on-finished` to determine request status - -0.2.0 / 2014-09-03 -================== - - * Set `X-Content-Type-Options: nosniff` header - * deps: debug@~2.0.0 - -0.1.0 / 2014-07-16 -================== - - * Respond after request fully read - - prevents hung responses and socket hang ups - * deps: debug@1.0.4 - -0.0.3 / 2014-07-11 -================== - - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - -0.0.2 / 2014-06-19 -================== - - * Handle invalid status codes - -0.0.1 / 2014-06-05 -================== - - * deps: debug@1.0.2 - -0.0.0 / 2014-06-05 -================== - - * Extracted from connect/express diff --git a/node_modules/express/node_modules/finalhandler/LICENSE b/node_modules/express/node_modules/finalhandler/LICENSE deleted file mode 100644 index eda2305..0000000 --- a/node_modules/express/node_modules/finalhandler/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/finalhandler/README.md b/node_modules/express/node_modules/finalhandler/README.md deleted file mode 100644 index 2015ac0..0000000 --- a/node_modules/express/node_modules/finalhandler/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# finalhandler - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Node.js function to invoke as the final step to respond to HTTP request. - -## Installation - -```sh -$ npm install finalhandler -``` - -## API - -```js -var finalhandler = require('finalhandler') -``` - -### finalhandler(req, res, [options]) - -Returns function to be invoked as the final step for the given `req` and `res`. -This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will -write out a 404 response to the `res`. If it is truthy, an error response will -be written out to the `res`, and `res.statusCode` is set from `err.status`. - -The final handler will also unpipe anything from `req` when it is invoked. - -#### options.env - -By default, the environment is determined by `NODE_ENV` variable, but it can be -overridden by this option. - -#### options.onerror - -Provide a function to be called with the `err` when it exists. Can be used for -writing errors to a central location without excessive function generation. Called -as `onerror(err, req, res)`. - -## Examples - -### always 404 - -```js -var finalhandler = require('finalhandler') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - done() -}) - -server.listen(3000) -``` - -### perform simple action - -```js -var finalhandler = require('finalhandler') -var fs = require('fs') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - - fs.readFile('index.html', function (err, buf) { - if (err) return done(err) - res.setHeader('Content-Type', 'text/html') - res.end(buf) - }) -}) - -server.listen(3000) -``` - -### use with middleware-style functions - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -var serve = serveStatic('public') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - serve(req, res, done) -}) - -server.listen(3000) -``` - -### keep log of all errors - -```js -var finalhandler = require('finalhandler') -var fs = require('fs') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res, {onerror: logerror}) - - fs.readFile('index.html', function (err, buf) { - if (err) return done(err) - res.setHeader('Content-Type', 'text/html') - res.end(buf) - }) -}) - -server.listen(3000) - -function logerror(err) { - console.error(err.stack || err.toString()) -} -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/finalhandler.svg?style=flat -[npm-url]: https://npmjs.org/package/finalhandler -[node-image]: https://img.shields.io/node/v/finalhandler.svg?style=flat -[node-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg?style=flat -[travis-url]: https://travis-ci.org/pillarjs/finalhandler -[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg?style=flat -[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master -[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg?style=flat -[downloads-url]: https://npmjs.org/package/finalhandler diff --git a/node_modules/express/node_modules/finalhandler/index.js b/node_modules/express/node_modules/finalhandler/index.js deleted file mode 100644 index bb2bb58..0000000 --- a/node_modules/express/node_modules/finalhandler/index.js +++ /dev/null @@ -1,171 +0,0 @@ -/*! - * finalhandler - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var debug = require('debug')('finalhandler') -var escapeHtml = require('escape-html') -var http = require('http') -var onFinished = require('on-finished') - -/** - * Variables. - */ - -/* istanbul ignore next */ -var defer = typeof setImmediate === 'function' - ? setImmediate - : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) } -var isFinished = onFinished.isFinished - -/** - * Module exports. - */ - -module.exports = finalhandler - -/** - * Final handler: - * - * @param {Request} req - * @param {Response} res - * @param {Object} [options] - * @return {Function} - * @api public - */ - -function finalhandler(req, res, options) { - options = options || {} - - // get environment - var env = options.env || process.env.NODE_ENV || 'development' - - // get error callback - var onerror = options.onerror - - return function (err) { - var msg - - // ignore 404 on in-flight response - if (!err && res._header) { - debug('cannot 404 after headers sent') - return - } - - // unhandled error - if (err) { - // default status code to 500 - if (!res.statusCode || res.statusCode < 400) { - res.statusCode = 500 - } - - // respect err.status - if (err.status) { - res.statusCode = err.status - } - - // production gets a basic error message - var msg = env === 'production' - ? http.STATUS_CODES[res.statusCode] - : err.stack || err.toString() - msg = escapeHtml(msg) - .replace(/\n/g, '
') - .replace(/ /g, '  ') + '\n' - } else { - res.statusCode = 404 - msg = 'Cannot ' + escapeHtml(req.method) + ' ' + escapeHtml(req.originalUrl || req.url) + '\n' - } - - debug('default %s', res.statusCode) - - // schedule onerror callback - if (err && onerror) { - defer(onerror, err, req, res) - } - - // cannot actually respond - if (res._header) { - return req.socket.destroy() - } - - send(req, res, res.statusCode, msg) - } -} - -/** - * Send response. - * - * @param {IncomingMessage} req - * @param {OutgoingMessage} res - * @param {number} status - * @param {string} body - * @api private - */ - -function send(req, res, status, body) { - function write() { - res.statusCode = status - - // security header for content sniffing - res.setHeader('X-Content-Type-Options', 'nosniff') - - // standard headers - res.setHeader('Content-Type', 'text/html; charset=utf-8') - res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8')) - - if (req.method === 'HEAD') { - res.end() - return - } - - res.end(body, 'utf8') - } - - if (isFinished(req)) { - write() - return - } - - // unpipe everything from the request - unpipe(req) - - // flush the request - onFinished(req, write) - req.resume() -} - -/** - * Unpipe everything from a stream. - * - * @param {Object} stream - * @api private - */ - -/* istanbul ignore next: implementation differs between versions */ -function unpipe(stream) { - if (typeof stream.unpipe === 'function') { - // new-style - stream.unpipe() - return - } - - // Node.js 0.8 hack - var listener - var listeners = stream.listeners('close') - - for (var i = 0; i < listeners.length; i++) { - listener = listeners[i] - - if (listener.name !== 'cleanup' && listener.name !== 'onclose') { - continue - } - - // invoke the listener - listener.call(stream) - } -} diff --git a/node_modules/express/node_modules/finalhandler/package.json b/node_modules/express/node_modules/finalhandler/package.json deleted file mode 100644 index 19b9ecf..0000000 --- a/node_modules/express/node_modules/finalhandler/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "finalhandler", - "description": "Node.js final http responder", - "version": "0.3.2", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/pillarjs/finalhandler" - }, - "dependencies": { - "debug": "~2.1.0", - "escape-html": "1.0.1", - "on-finished": "~2.1.1" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~2.0.0", - "readable-stream": "~1.0.33", - "should": "~4.1.0", - "supertest": "~0.14.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "1dc292faf576fade3b0218caab39060f4da5fe9c", - "bugs": { - "url": "https://github.com/pillarjs/finalhandler/issues" - }, - "homepage": "https://github.com/pillarjs/finalhandler", - "_id": "finalhandler@0.3.2", - "_shasum": "7b389b0fd3647a6f90bd564e22624bf8a4a77fb5", - "_from": "finalhandler@0.3.2", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - } - ], - "dist": { - "shasum": "7b389b0fd3647a6f90bd564e22624bf8a4a77fb5", - "tarball": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.3.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/fresh/HISTORY.md b/node_modules/express/node_modules/fresh/HISTORY.md deleted file mode 100644 index 56361df..0000000 --- a/node_modules/express/node_modules/fresh/HISTORY.md +++ /dev/null @@ -1,24 +0,0 @@ -0.2.4 / 2014-09-07 -================== - - * Support Node.js 0.6 - -0.2.3 / 2014-09-07 -================== - - * Move repository to jshttp - -0.2.2 / 2014-02-19 -================== - - * Revert "Fix for blank page on Safari reload" - -0.2.1 / 2014-01-29 -================== - - * fix: support max-age=0 for end-to-end revalidation - -0.2.0 / 2013-08-11 -================== - - * fix: return false for no-cache diff --git a/node_modules/express/node_modules/fresh/LICENSE b/node_modules/express/node_modules/fresh/LICENSE deleted file mode 100644 index f527394..0000000 --- a/node_modules/express/node_modules/fresh/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk - -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/node_modules/express/node_modules/fresh/README.md b/node_modules/express/node_modules/fresh/README.md deleted file mode 100644 index 54a885f..0000000 --- a/node_modules/express/node_modules/fresh/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# fresh - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -HTTP response freshness testing - -## Installation - -``` -$ npm install fresh -``` - -## API - -```js -var fresh = require('fresh') -``` - -### fresh(req, res) - - Check freshness of `req` and `res` headers. - - When the cache is "fresh" __true__ is returned, - otherwise __false__ is returned to indicate that - the cache is now stale. - -## Example - -```js -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'luna' }; -fresh(req, res); -// => false - -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'tobi' }; -fresh(req, res); -// => true -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/fresh.svg?style=flat -[npm-url]: https://npmjs.org/package/fresh -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/fresh.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/fresh -[coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master -[downloads-image]: https://img.shields.io/npm/dm/fresh.svg?style=flat -[downloads-url]: https://npmjs.org/package/fresh diff --git a/node_modules/express/node_modules/fresh/index.js b/node_modules/express/node_modules/fresh/index.js deleted file mode 100644 index 9c3f47d..0000000 --- a/node_modules/express/node_modules/fresh/index.js +++ /dev/null @@ -1,53 +0,0 @@ - -/** - * Expose `fresh()`. - */ - -module.exports = fresh; - -/** - * Check freshness of `req` and `res` headers. - * - * When the cache is "fresh" __true__ is returned, - * otherwise __false__ is returned to indicate that - * the cache is now stale. - * - * @param {Object} req - * @param {Object} res - * @return {Boolean} - * @api public - */ - -function fresh(req, res) { - // defaults - var etagMatches = true; - var notModified = true; - - // fields - var modifiedSince = req['if-modified-since']; - var noneMatch = req['if-none-match']; - var lastModified = res['last-modified']; - var etag = res['etag']; - var cc = req['cache-control']; - - // unconditional request - if (!modifiedSince && !noneMatch) return false; - - // check for no-cache cache request directive - if (cc && cc.indexOf('no-cache') !== -1) return false; - - // parse if-none-match - if (noneMatch) noneMatch = noneMatch.split(/ *, */); - - // if-none-match - if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; - - // if-modified-since - if (modifiedSince) { - modifiedSince = new Date(modifiedSince); - lastModified = new Date(lastModified); - notModified = lastModified <= modifiedSince; - } - - return !! (etagMatches && notModified); -} \ No newline at end of file diff --git a/node_modules/express/node_modules/fresh/package.json b/node_modules/express/node_modules/fresh/package.json deleted file mode 100644 index a153522..0000000 --- a/node_modules/express/node_modules/fresh/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "fresh", - "description": "HTTP response freshness testing", - "version": "0.2.4", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "license": "MIT", - "keywords": [ - "fresh", - "http", - "conditional", - "cache" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/fresh" - }, - "devDependencies": { - "istanbul": "0", - "mocha": "1", - "should": "3" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --require should", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --require should", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot --require should" - }, - "gitHead": "8440a4ca75fb091dec06e88654b3b1c31d7e7164", - "bugs": { - "url": "https://github.com/jshttp/fresh/issues" - }, - "homepage": "https://github.com/jshttp/fresh", - "_id": "fresh@0.2.4", - "_shasum": "3582499206c9723714190edd74b4604feb4a614c", - "_from": "fresh@0.2.4", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "jonathanong", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "3582499206c9723714190edd74b4604feb4a614c", - "tarball": "http://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/media-typer/HISTORY.md b/node_modules/express/node_modules/media-typer/HISTORY.md deleted file mode 100644 index 62c2003..0000000 --- a/node_modules/express/node_modules/media-typer/HISTORY.md +++ /dev/null @@ -1,22 +0,0 @@ -0.3.0 / 2014-09-07 -================== - - * Support Node.js 0.6 - * Throw error when parameter format invalid on parse - -0.2.0 / 2014-06-18 -================== - - * Add `typer.format()` to format media types - -0.1.0 / 2014-06-17 -================== - - * Accept `req` as argument to `parse` - * Accept `res` as argument to `parse` - * Parse media type with extra LWS between type and first parameter - -0.0.0 / 2014-06-13 -================== - - * Initial implementation diff --git a/node_modules/express/node_modules/media-typer/LICENSE b/node_modules/express/node_modules/media-typer/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/media-typer/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/media-typer/README.md b/node_modules/express/node_modules/media-typer/README.md deleted file mode 100644 index d8df623..0000000 --- a/node_modules/express/node_modules/media-typer/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# media-typer - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Simple RFC 6838 media type parser - -## Installation - -```sh -$ npm install media-typer -``` - -## API - -```js -var typer = require('media-typer') -``` - -### typer.parse(string) - -```js -var obj = typer.parse('image/svg+xml; charset=utf-8') -``` - -Parse a media type string. This will return an object with the following -properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): - - - `type`: The type of the media type (always lower case). Example: `'image'` - - - `subtype`: The subtype of the media type (always lower case). Example: `'svg'` - - - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` - - - `parameters`: An object of the parameters in the media type (name of parameter always lower case). Example: `{charset: 'utf-8'}` - -### typer.parse(req) - -```js -var obj = typer.parse(req) -``` - -Parse the `content-type` header from the given `req`. Short-cut for -`typer.parse(req.headers['content-type'])`. - -### typer.parse(res) - -```js -var obj = typer.parse(res) -``` - -Parse the `content-type` header set on the given `res`. Short-cut for -`typer.parse(res.getHeader('content-type'))`. - -### typer.format(obj) - -```js -var obj = typer.format({type: 'image', subtype: 'svg', suffix: 'xml'}) -``` - -Format an object into a media type string. This will return a string of the -mime type for the given object. For the properties of the object, see the -documentation for `typer.parse(string)`. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/media-typer.svg?style=flat -[npm-url]: https://npmjs.org/package/media-typer -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/media-typer.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/media-typer -[coveralls-image]: https://img.shields.io/coveralls/jshttp/media-typer.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/media-typer -[downloads-image]: https://img.shields.io/npm/dm/media-typer.svg?style=flat -[downloads-url]: https://npmjs.org/package/media-typer diff --git a/node_modules/express/node_modules/media-typer/index.js b/node_modules/express/node_modules/media-typer/index.js deleted file mode 100644 index 07f7295..0000000 --- a/node_modules/express/node_modules/media-typer/index.js +++ /dev/null @@ -1,270 +0,0 @@ -/*! - * media-typer - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7 - * - * parameter = token "=" ( token | quoted-string ) - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) - * qdtext = > - * quoted-pair = "\" CHAR - * CHAR = - * TEXT = - * LWS = [CRLF] 1*( SP | HT ) - * CRLF = CR LF - * CR = - * LF = - * SP = - * SHT = - * CTL = - * OCTET = - */ -var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; -var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/ -var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/ - -/** - * RegExp to match quoted-pair in RFC 2616 - * - * quoted-pair = "\" CHAR - * CHAR = - */ -var qescRegExp = /\\([\u0000-\u007f])/g; - -/** - * RegExp to match chars that must be quoted-pair in RFC 2616 - */ -var quoteRegExp = /([\\"])/g; - -/** - * RegExp to match type in RFC 6838 - * - * type-name = restricted-name - * subtype-name = restricted-name - * restricted-name = restricted-name-first *126restricted-name-chars - * restricted-name-first = ALPHA / DIGIT - * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / - * "$" / "&" / "-" / "^" / "_" - * restricted-name-chars =/ "." ; Characters before first dot always - * ; specify a facet name - * restricted-name-chars =/ "+" ; Characters after last plus always - * ; specify a structured syntax suffix - * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z - * DIGIT = %x30-39 ; 0-9 - */ -var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ -var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ -var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; - -/** - * Module exports. - */ - -exports.format = format -exports.parse = parse - -/** - * Format object to media type. - * - * @param {object} obj - * @return {string} - * @api public - */ - -function format(obj) { - if (!obj || typeof obj !== 'object') { - throw new TypeError('argument obj is required') - } - - var parameters = obj.parameters - var subtype = obj.subtype - var suffix = obj.suffix - var type = obj.type - - if (!type || !typeNameRegExp.test(type)) { - throw new TypeError('invalid type') - } - - if (!subtype || !subtypeNameRegExp.test(subtype)) { - throw new TypeError('invalid subtype') - } - - // format as type/subtype - var string = type + '/' + subtype - - // append +suffix - if (suffix) { - if (!typeNameRegExp.test(suffix)) { - throw new TypeError('invalid suffix') - } - - string += '+' + suffix - } - - // append parameters - if (parameters && typeof parameters === 'object') { - var param - var params = Object.keys(parameters).sort() - - for (var i = 0; i < params.length; i++) { - param = params[i] - - if (!tokenRegExp.test(param)) { - throw new TypeError('invalid parameter name') - } - - string += '; ' + param + '=' + qstring(parameters[param]) - } - } - - return string -} - -/** - * Parse media type to object. - * - * @param {string|object} string - * @return {Object} - * @api public - */ - -function parse(string) { - if (!string) { - throw new TypeError('argument string is required') - } - - // support req/res-like objects as argument - if (typeof string === 'object') { - string = getcontenttype(string) - } - - if (typeof string !== 'string') { - throw new TypeError('argument string is required to be a string') - } - - var index = string.indexOf(';') - var type = index !== -1 - ? string.substr(0, index) - : string - - var key - var match - var obj = splitType(type) - var params = {} - var value - - paramRegExp.lastIndex = index - - while (match = paramRegExp.exec(string)) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(qescRegExp, '$1') - } - - params[key] = value - } - - if (index !== -1 && index !== string.length) { - throw new TypeError('invalid parameter format') - } - - obj.parameters = params - - return obj -} - -/** - * Get content-type from req/res objects. - * - * @param {object} - * @return {Object} - * @api private - */ - -function getcontenttype(obj) { - if (typeof obj.getHeader === 'function') { - // res-like - return obj.getHeader('content-type') - } - - if (typeof obj.headers === 'object') { - // req-like - return obj.headers && obj.headers['content-type'] - } -} - -/** - * Quote a string if necessary. - * - * @param {string} val - * @return {string} - * @api private - */ - -function qstring(val) { - var str = String(val) - - // no need to quote tokens - if (tokenRegExp.test(str)) { - return str - } - - if (str.length > 0 && !textRegExp.test(str)) { - throw new TypeError('invalid parameter value') - } - - return '"' + str.replace(quoteRegExp, '\\$1') + '"' -} - -/** - * Simply "type/subtype+siffx" into parts. - * - * @param {string} string - * @return {Object} - * @api private - */ - -function splitType(string) { - var match = typeRegExp.exec(string.toLowerCase()) - - if (!match) { - throw new TypeError('invalid media type') - } - - var type = match[1] - var subtype = match[2] - var suffix - - // suffix after last + - var index = subtype.lastIndexOf('+') - if (index !== -1) { - suffix = subtype.substr(index + 1) - subtype = subtype.substr(0, index) - } - - var obj = { - type: type, - subtype: subtype, - suffix: suffix - } - - return obj -} diff --git a/node_modules/express/node_modules/media-typer/package.json b/node_modules/express/node_modules/media-typer/package.json deleted file mode 100644 index 4bd1a51..0000000 --- a/node_modules/express/node_modules/media-typer/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "media-typer", - "description": "Simple RFC 6838 media type parser and formatter", - "version": "0.3.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jshttp/media-typer" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "should": "~4.0.4" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "d49d41ffd0bb5a0655fa44a59df2ec0bfc835b16", - "bugs": { - "url": "https://github.com/jshttp/media-typer/issues" - }, - "homepage": "https://github.com/jshttp/media-typer", - "_id": "media-typer@0.3.0", - "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748", - "_from": "media-typer@0.3.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "8710d7af0aa626f8fffa1ce00168545263255748", - "tarball": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/merge-descriptors/.npmignore b/node_modules/express/node_modules/merge-descriptors/.npmignore deleted file mode 100644 index f62e605..0000000 --- a/node_modules/express/node_modules/merge-descriptors/.npmignore +++ /dev/null @@ -1,59 +0,0 @@ -# Compiled source # -################### -*.com -*.class -*.dll -*.exe -*.o -*.so - -# Packages # -############ -# it's better to unpack these files and commit the raw source -# git has its own built in compression methods -*.7z -*.dmg -*.gz -*.iso -*.jar -*.rar -*.tar -*.zip - -# Logs and databases # -###################### -*.log -*.sql -*.sqlite - -# OS generated files # -###################### -.DS_Store* -ehthumbs.db -Icon? -Thumbs.db - -# Node.js # -########### -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -node_modules -npm-debug.log - -# Components # -############## - -/build -/components -/vendors \ No newline at end of file diff --git a/node_modules/express/node_modules/merge-descriptors/README.md b/node_modules/express/node_modules/merge-descriptors/README.md deleted file mode 100644 index 50cf50c..0000000 --- a/node_modules/express/node_modules/merge-descriptors/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Merge Descriptors [![Build Status](https://travis-ci.org/component/merge-descriptors.png)](https://travis-ci.org/component/merge-descriptors) - -Merge objects using descriptors. - -```js -var thing = { - get name() { - return 'jon' - } -} - -var animal = { - -} - -merge(animal, thing) - -animal.name === 'jon' -``` - -## API - -### merge(destination, source) - -Overwrites `destination`'s descriptors with `source`'s. - -## License - -The MIT License (MIT) - -Copyright (c) 2013 Jonathan Ong me@jongleberry.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. \ No newline at end of file diff --git a/node_modules/express/node_modules/merge-descriptors/component.json b/node_modules/express/node_modules/merge-descriptors/component.json deleted file mode 100644 index 7653906..0000000 --- a/node_modules/express/node_modules/merge-descriptors/component.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "merge-descriptors", - "description": "Merge objects using descriptors", - "version": "0.0.2", - "scripts": [ - "index.js" - ], - "repo": "component/merge-descriptors", - "license": "MIT" -} \ No newline at end of file diff --git a/node_modules/express/node_modules/merge-descriptors/index.js b/node_modules/express/node_modules/merge-descriptors/index.js deleted file mode 100644 index e4e2379..0000000 --- a/node_modules/express/node_modules/merge-descriptors/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = function (dest, src) { - Object.getOwnPropertyNames(src).forEach(function (name) { - var descriptor = Object.getOwnPropertyDescriptor(src, name) - Object.defineProperty(dest, name, descriptor) - }) - - return dest -} \ No newline at end of file diff --git a/node_modules/express/node_modules/merge-descriptors/package.json b/node_modules/express/node_modules/merge-descriptors/package.json deleted file mode 100644 index b1b83d4..0000000 --- a/node_modules/express/node_modules/merge-descriptors/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "merge-descriptors", - "description": "Merge objects using descriptors", - "version": "0.0.2", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/component/merge-descriptors.git" - }, - "bugs": { - "url": "https://github.com/component/merge-descriptors/issues" - }, - "scripts": { - "test": "make test;" - }, - "homepage": "https://github.com/component/merge-descriptors", - "_id": "merge-descriptors@0.0.2", - "dist": { - "shasum": "c36a52a781437513c57275f39dd9d317514ac8c7", - "tarball": "http://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz" - }, - "_from": "merge-descriptors@0.0.2", - "_npmVersion": "1.3.17", - "_npmUser": { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "directories": {}, - "_shasum": "c36a52a781437513c57275f39dd9d317514ac8c7", - "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/methods/.npmignore b/node_modules/express/node_modules/methods/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/node_modules/express/node_modules/methods/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/express/node_modules/methods/History.md b/node_modules/express/node_modules/methods/History.md deleted file mode 100644 index d3996c2..0000000 --- a/node_modules/express/node_modules/methods/History.md +++ /dev/null @@ -1,20 +0,0 @@ - -1.1.0 / 2014-07-05 -================== - - * add CONNECT - -1.0.1 / 2014-06-02 -================== - - * fix index.js to work with harmony transform - -1.0.0 / 2014-05-08 -================== - - * add PURGE. Closes #9 - -0.1.0 / 2013-10-28 -================== - - * add http.METHODS support diff --git a/node_modules/express/node_modules/methods/LICENSE b/node_modules/express/node_modules/methods/LICENSE deleted file mode 100644 index 8bce401..0000000 --- a/node_modules/express/node_modules/methods/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2013-2014 TJ Holowaychuk - -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/node_modules/express/node_modules/methods/Readme.md b/node_modules/express/node_modules/methods/Readme.md deleted file mode 100644 index ac0658e..0000000 --- a/node_modules/express/node_modules/methods/Readme.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Methods - - HTTP verbs that node core's parser supports. diff --git a/node_modules/express/node_modules/methods/index.js b/node_modules/express/node_modules/methods/index.js deleted file mode 100644 index f7e3c48..0000000 --- a/node_modules/express/node_modules/methods/index.js +++ /dev/null @@ -1,41 +0,0 @@ - -var http = require('http'); - -if (http.METHODS) { - - module.exports = http.METHODS.map(function(method){ - return method.toLowerCase(); - }); - -} else { - - module.exports = [ - 'get', - 'post', - 'put', - 'head', - 'delete', - 'options', - 'trace', - 'copy', - 'lock', - 'mkcol', - 'move', - 'purge', - 'propfind', - 'proppatch', - 'unlock', - 'report', - 'mkactivity', - 'checkout', - 'merge', - 'm-search', - 'notify', - 'subscribe', - 'unsubscribe', - 'patch', - 'search', - 'connect' - ]; - -} diff --git a/node_modules/express/node_modules/methods/package.json b/node_modules/express/node_modules/methods/package.json deleted file mode 100644 index df6bbdb..0000000 --- a/node_modules/express/node_modules/methods/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "methods", - "version": "1.1.0", - "description": "HTTP methods that node supports", - "main": "index.js", - "scripts": { - "test": "./node_modules/mocha/bin/mocha" - }, - "keywords": [ - "http", - "methods" - ], - "author": { - "name": "TJ Holowaychuk" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-methods.git" - }, - "devDependencies": { - "mocha": "1.17.x" - }, - "readme": "\n# Methods\n\n HTTP verbs that node core's parser supports.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-methods/issues" - }, - "homepage": "https://github.com/visionmedia/node-methods", - "_id": "methods@1.1.0", - "_shasum": "5dca4ee12df52ff3b056145986a8f01cbc86436f", - "_from": "methods@1.1.0", - "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.0.tgz" -} diff --git a/node_modules/express/node_modules/methods/test/methods.js b/node_modules/express/node_modules/methods/test/methods.js deleted file mode 100644 index 527beab..0000000 --- a/node_modules/express/node_modules/methods/test/methods.js +++ /dev/null @@ -1,33 +0,0 @@ -var http = require('http'); -var assert = require('assert'); -var methods = require('..'); - -describe('methods', function() { - - if (http.METHODS) { - - it('is a lowercased http.METHODS', function() { - var lowercased = http.METHODS.map(function(method) { - return method.toLowerCase(); - }); - assert.deepEqual(lowercased, methods); - }); - - } else { - - it('contains GET, POST, PUT, and DELETE', function() { - assert.notEqual(methods.indexOf('get'), -1); - assert.notEqual(methods.indexOf('post'), -1); - assert.notEqual(methods.indexOf('put'), -1); - assert.notEqual(methods.indexOf('delete'), -1); - }); - - it('is all lowercase', function() { - for (var i = 0; i < methods.length; i ++) { - assert(methods[i], methods[i].toLowerCase(), methods[i] + " isn't all lowercase"); - } - }); - - } - -}); diff --git a/node_modules/express/node_modules/on-finished/HISTORY.md b/node_modules/express/node_modules/on-finished/HISTORY.md deleted file mode 100644 index 1a4063d..0000000 --- a/node_modules/express/node_modules/on-finished/HISTORY.md +++ /dev/null @@ -1,71 +0,0 @@ -2.1.1 / 2014-10-22 -================== - - * Fix handling of pipelined requests - -2.1.0 / 2014-08-16 -================== - - * Check if `socket` is detached - * Return `undefined` for `isFinished` if state unknown - -2.0.0 / 2014-08-16 -================== - - * Add `isFinished` function - * Move to `jshttp` organization - * Remove support for plain socket argument - * Rename to `on-finished` - * Support both `req` and `res` as arguments - * deps: ee-first@1.0.5 - -1.2.2 / 2014-06-10 -================== - - * Reduce listeners added to emitters - - avoids "event emitter leak" warnings when used multiple times on same request - -1.2.1 / 2014-06-08 -================== - - * Fix returned value when already finished - -1.2.0 / 2014-06-05 -================== - - * Call callback when called on already-finished socket - -1.1.4 / 2014-05-27 -================== - - * Support node.js 0.8 - -1.1.3 / 2014-04-30 -================== - - * Make sure errors passed as instanceof `Error` - -1.1.2 / 2014-04-18 -================== - - * Default the `socket` to passed-in object - -1.1.1 / 2014-01-16 -================== - - * Rename module to `finished` - -1.1.0 / 2013-12-25 -================== - - * Call callback when called on already-errored socket - -1.0.1 / 2013-12-20 -================== - - * Actually pass the error to the callback - -1.0.0 / 2013-12-20 -================== - - * Initial release diff --git a/node_modules/express/node_modules/on-finished/LICENSE b/node_modules/express/node_modules/on-finished/LICENSE deleted file mode 100644 index 5931fd2..0000000 --- a/node_modules/express/node_modules/on-finished/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 Jonathan Ong -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/on-finished/README.md b/node_modules/express/node_modules/on-finished/README.md deleted file mode 100644 index 6fb0e4d..0000000 --- a/node_modules/express/node_modules/on-finished/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# on-finished - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Execute a callback when a request closes, finishes, or errors. - -## Install - -```sh -$ npm install on-finished -``` - -## API - -```js -var onFinished = require('on-finished') -``` - -### onFinished(res, listener) - -Attach a listener to listen for the response to finish. The listener will -be invoked only once when the response finished. If the response finished -to to an error, the first argument will contain the error. - -Listening to the end of a response would be used to close things associated -with the response, like open files. - -```js -onFinished(res, function (err) { - // clean up open fds, etc. -}) -``` - -### onFinished(req, listener) - -Attach a listener to listen for the request to finish. The listener will -be invoked only once when the request finished. If the request finished -to to an error, the first argument will contain the error. - -Listening to the end of a request would be used to know when to continue -after reading the data. - -```js -var data = '' - -req.setEncoding('utf8') -res.on('data', function (str) { - data += str -}) - -onFinished(req, function (err) { - // data is read unless there is err -}) -``` - -### onFinished.isFinished(res) - -Determine if `res` is already finished. This would be useful to check and -not even start certain operations if the response has already finished. - -### onFinished.isFinished(req) - -Determine if `req` is already finished. This would be useful to check and -not even start certain operations if the request has already finished. - -### Example - -The following code ensures that file descriptors are always closed -once the response finishes. - -```js -var destroy = require('destroy') -var http = require('http') -var onFinished = require('on-finished') - -http.createServer(function onRequest(req, res) { - var stream = fs.createReadStream('package.json') - stream.pipe(res) - onFinished(res, function (err) { - destroy(stream) - }) -}) -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/on-finished.svg?style=flat -[npm-url]: https://npmjs.org/package/on-finished -[node-version-image]: https://img.shields.io/node/v/on-finished.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/on-finished.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/on-finished -[coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master -[downloads-image]: https://img.shields.io/npm/dm/on-finished.svg?style=flat -[downloads-url]: https://npmjs.org/package/on-finished diff --git a/node_modules/express/node_modules/on-finished/index.js b/node_modules/express/node_modules/on-finished/index.js deleted file mode 100644 index e75a7e9..0000000 --- a/node_modules/express/node_modules/on-finished/index.js +++ /dev/null @@ -1,191 +0,0 @@ -/*! - * on-finished - * Copyright(c) 2013 Jonathan Ong - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = onFinished; -module.exports.isFinished = isFinished; - -/** -* Module dependencies. -*/ - -var first = require('ee-first') - -/** -* Variables. -*/ - -/* istanbul ignore next */ -var defer = typeof setImmediate === 'function' - ? setImmediate - : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) } - -/** - * Invoke callback when the response has finished, useful for - * cleaning up resources afterwards. - * - * @param {object} msg - * @param {function} listener - * @return {object} - * @api public - */ - -function onFinished(msg, listener) { - if (isFinished(msg) !== false) { - defer(listener) - return msg - } - - // attach the listener to the message - attachListener(msg, listener) - - return msg -} - -/** - * Determine if message is already finished. - * - * @param {object} msg - * @return {boolean} - * @api public - */ - -function isFinished(msg) { - var socket = msg.socket - - if (typeof msg.finished === 'boolean') { - // OutgoingMessage - return Boolean(msg.finished || (socket && !socket.writable)) - } - - if (typeof msg.complete === 'boolean') { - // IncomingMessage - return Boolean(!socket || msg.complete || !socket.readable) - } - - // don't know - return undefined -} - -/** - * Attach a finished listener to the message. - * - * @param {object} msg - * @param {function} callback - * @private - */ - -function attachFinishedListener(msg, callback) { - var eeMsg - var eeSocket - var finished = false - - function onFinish(error) { - eeMsg.cancel() - eeSocket.cancel() - - finished = true - callback(error) - } - - // finished on first message event - eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish) - - function onSocket(socket) { - // remove listener - msg.removeListener('socket', onSocket) - - if (finished) return - if (eeMsg !== eeSocket) return - - // finished on first socket event - eeSocket = first([[socket, 'error', 'close']], onFinish) - } - - if (msg.socket) { - // socket already assigned - onSocket(msg.socket) - return - } - - // wait for socket to be assigned - msg.on('socket', onSocket) - - if (msg.socket === undefined) { - // node.js 0.8 patch - patchAssignSocket(msg, onSocket) - } -} - -/** - * Attach the listener to the message. - * - * @param {object} msg - * @return {function} - * @api private - */ - -function attachListener(msg, listener) { - var attached = msg.__onFinished - - // create a private single listener with queue - if (!attached || !attached.queue) { - attached = msg.__onFinished = createListener(msg) - attachFinishedListener(msg, attached) - } - - attached.queue.push(listener) -} - -/** - * Create listener on message. - * - * @param {object} msg - * @return {function} - * @api private - */ - -function createListener(msg) { - function listener(err) { - if (msg.__onFinished === listener) msg.__onFinished = null - if (!listener.queue) return - - var queue = listener.queue - listener.queue = null - - for (var i = 0; i < queue.length; i++) { - queue[i](err) - } - } - - listener.queue = [] - - return listener -} - -/** - * Patch ServerResponse.prototype.assignSocket for node.js 0.8. - * - * @param {ServerResponse} res - * @param {function} callback - * @private - */ - -function patchAssignSocket(res, callback) { - var assignSocket = res.assignSocket - - if (typeof assignSocket !== 'function') return - - // res.on('socket', callback) is broken in 0.8 - res.assignSocket = function _assignSocket(socket) { - assignSocket.call(this, socket) - callback(socket) - } -} diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE b/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE deleted file mode 100644 index c1b15a1..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.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/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md b/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md deleted file mode 100644 index bb16aab..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md +++ /dev/null @@ -1,80 +0,0 @@ -# EE First - -[![NPM version][npm-image]][npm-url] -[![Build status][travis-image]][travis-url] -[![Test coverage][coveralls-image]][coveralls-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] -[![Gittip][gittip-image]][gittip-url] - -Get the first event in a set of event emitters and event pairs, -then clean up after itself. - -## Install - -```sh -$ npm install ee-first -``` - -## API - -```js -var first = require('ee-first') -``` - -### first(arr, listener) - -Invoke `listener` on the first event from the list specified in `arr`. `arr` is -an array of arrays, with each array in the format `[ee, ...event]`. `listener` -will be called only once, the first time any of the given events are emitted. If -`error` is one of the listened events, then if that fires first, the `listener` -will be given the `err` argument. - -The `listener` is invoked as `listener(err, ee, event, args)`, where `err` is the -first argument emitted from an `error` event, if applicable; `ee` is the event -emitter that fired; `event` is the string event name that fired; and `args` is an -array of the arguments that were emitted on the event. - -```js -var ee1 = new EventEmitter() -var ee2 = new EventEmitter() - -first([ - [ee1, 'close', 'end', 'error'], - [ee2, 'error'] -], function (err, ee, event, args) { - // listener invoked -}) -``` - -#### .cancel() - -The group of listeners can be cancelled before being invoked and have all the event -listeners removed from the underlying event emitters. - -```js -var thunk = first([ - [ee1, 'close', 'end', 'error'], - [ee2, 'error'] -], function (err, ee, event, args) { - // listener invoked -}) - -// cancel and clean up -thunk.cancel() -``` - -[npm-image]: https://img.shields.io/npm/v/ee-first.svg?style=flat-square -[npm-url]: https://npmjs.org/package/ee-first -[github-tag]: http://img.shields.io/github/tag/jonathanong/ee-first.svg?style=flat-square -[github-url]: https://github.com/jonathanong/ee-first/tags -[travis-image]: https://img.shields.io/travis/jonathanong/ee-first.svg?style=flat-square -[travis-url]: https://travis-ci.org/jonathanong/ee-first -[coveralls-image]: https://img.shields.io/coveralls/jonathanong/ee-first.svg?style=flat-square -[coveralls-url]: https://coveralls.io/r/jonathanong/ee-first?branch=master -[license-image]: http://img.shields.io/npm/l/ee-first.svg?style=flat-square -[license-url]: LICENSE.md -[downloads-image]: http://img.shields.io/npm/dm/ee-first.svg?style=flat-square -[downloads-url]: https://npmjs.org/package/ee-first -[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square -[gittip-url]: https://www.gittip.com/jonathanong/ diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js b/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js deleted file mode 100644 index 1d66203..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js +++ /dev/null @@ -1,68 +0,0 @@ - -module.exports = function first(stuff, done) { - if (!Array.isArray(stuff)) - throw new TypeError('arg must be an array of [ee, events...] arrays') - - var cleanups = [] - - for (var i = 0; i < stuff.length; i++) { - var arr = stuff[i] - - if (!Array.isArray(arr) || arr.length < 2) - throw new TypeError('each array member must be [ee, events...]') - - var ee = arr[0] - - for (var j = 1; j < arr.length; j++) { - var event = arr[j] - var fn = listener(event, callback) - - // listen to the event - ee.on(event, fn) - // push this listener to the list of cleanups - cleanups.push({ - ee: ee, - event: event, - fn: fn, - }) - } - } - - function callback() { - cleanup() - done.apply(null, arguments) - } - - function cleanup() { - var x - for (var i = 0; i < cleanups.length; i++) { - x = cleanups[i] - x.ee.removeListener(x.event, x.fn) - } - } - - function thunk(fn) { - done = fn - } - - thunk.cancel = cleanup - - return thunk -} - -function listener(event, done) { - return function onevent(arg1) { - var args = new Array(arguments.length) - var ee = this - var err = event === 'error' - ? arg1 - : null - - // copy args to prevent arguments escaping scope - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - - done(err, ee, event, args) - } -} diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json b/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json deleted file mode 100644 index 5b39931..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "ee-first", - "description": "return the first event in a set of ee/event pairs", - "version": "1.1.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jonathanong/ee-first" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "1" - }, - "files": [ - "index.js", - "LICENSE" - ], - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "a6412004da4745941af2fc98ec30c8da570da7ea", - "bugs": { - "url": "https://github.com/jonathanong/ee-first/issues" - }, - "homepage": "https://github.com/jonathanong/ee-first", - "_id": "ee-first@1.1.0", - "_shasum": "6a0d7c6221e490feefd92ec3f441c9ce8cd097f4", - "_from": "ee-first@1.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "6a0d7c6221e490feefd92ec3f441c9ce8cd097f4", - "tarball": "http://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/on-finished/package.json b/node_modules/express/node_modules/on-finished/package.json deleted file mode 100644 index 0963431..0000000 --- a/node_modules/express/node_modules/on-finished/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "on-finished", - "description": "Execute a callback when a request closes, finishes, or errors", - "version": "2.1.1", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jshttp/on-finished" - }, - "dependencies": { - "ee-first": "1.1.0" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~2.0.0" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "8ec5fa639ace400b543b5bc1821ce909b9acdc03", - "bugs": { - "url": "https://github.com/jshttp/on-finished/issues" - }, - "homepage": "https://github.com/jshttp/on-finished", - "_id": "on-finished@2.1.1", - "_shasum": "f82ca1c9e3a4f3286b1b9938610e5b8636bd3cb2", - "_from": "on-finished@>=2.1.1 <2.2.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "f82ca1c9e3a4f3286b1b9938610e5b8636bd3cb2", - "tarball": "http://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/parseurl/.npmignore b/node_modules/express/node_modules/parseurl/.npmignore deleted file mode 100644 index 85c82a5..0000000 --- a/node_modules/express/node_modules/parseurl/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -benchmark/ -coverage/ -test/ -.travis.yml diff --git a/node_modules/express/node_modules/parseurl/HISTORY.md b/node_modules/express/node_modules/parseurl/HISTORY.md deleted file mode 100644 index 65a0860..0000000 --- a/node_modules/express/node_modules/parseurl/HISTORY.md +++ /dev/null @@ -1,42 +0,0 @@ -1.3.0 / 2014-08-09 -================== - - * Add `parseurl.original` for parsing `req.originalUrl` with fallback - * Return `undefined` if `req.url` is `undefined` - -1.2.0 / 2014-07-21 -================== - - * Cache URLs based on original value - * Remove no-longer-needed URL mis-parse work-around - * Simplify the "fast-path" `RegExp` - -1.1.3 / 2014-07-08 -================== - - * Fix typo - -1.1.2 / 2014-07-08 -================== - - * Seriously fix Node.js 0.8 compatibility - -1.1.1 / 2014-07-08 -================== - - * Fix Node.js 0.8 compatibility - -1.1.0 / 2014-07-08 -================== - - * Incorporate URL href-only parse fast-path - -1.0.1 / 2014-03-08 -================== - - * Add missing `require` - -1.0.0 / 2014-03-08 -================== - - * Genesis from `connect` diff --git a/node_modules/express/node_modules/parseurl/LICENSE b/node_modules/express/node_modules/parseurl/LICENSE deleted file mode 100644 index ec7dfe7..0000000 --- a/node_modules/express/node_modules/parseurl/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ - -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/parseurl/README.md b/node_modules/express/node_modules/parseurl/README.md deleted file mode 100644 index 0db1d02..0000000 --- a/node_modules/express/node_modules/parseurl/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# parseurl - -[![NPM version](https://badge.fury.io/js/parseurl.svg)](http://badge.fury.io/js/parseurl) -[![Build Status](https://travis-ci.org/expressjs/parseurl.svg?branch=master)](https://travis-ci.org/expressjs/parseurl) -[![Coverage Status](https://img.shields.io/coveralls/expressjs/parseurl.svg?branch=master)](https://coveralls.io/r/expressjs/parseurl) - -Parse a URL with memoization. - -## Install - -```bash -$ npm install parseurl -``` - -## API - -```js -var parseurl = require('parseurl') -``` - -### parseurl(req) - -Parse the URL of the given request object (looks at the `req.url` property) -and return the result. The result is the same as `url.parse` in Node.js core. -Calling this function multiple times on the same `req` where `req.url` does -not change will return a cached parsed object, rather than parsing again. - -### parseurl.original(req) - -Parse the original URL of the given request object and return the result. -This works by trying to parse `req.originalUrl` if it is a string, otherwise -parses `req.url`. The result is the same as `url.parse` in Node.js core. -Calling this function multiple times on the same `req` where `req.originalUrl` -does not change will return a cached parsed object, rather than parsing again. - -## Benchmark - -```bash -$ npm run-script bench - -> parseurl@1.3.0 bench nodejs-parseurl -> node benchmark/index.js - -> node benchmark/fullurl.js - - Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy" - - 1 test completed. - 2 tests completed. - 3 tests completed. - - fasturl x 1,290,780 ops/sec ±0.46% (195 runs sampled) - nativeurl x 56,401 ops/sec ±0.22% (196 runs sampled) - parseurl x 55,231 ops/sec ±0.22% (194 runs sampled) - -> node benchmark/pathquery.js - - Parsing URL "/foo/bar?user=tj&pet=fluffy" - - 1 test completed. - 2 tests completed. - 3 tests completed. - - fasturl x 1,986,668 ops/sec ±0.27% (190 runs sampled) - nativeurl x 98,740 ops/sec ±0.21% (195 runs sampled) - parseurl x 2,628,171 ops/sec ±0.36% (195 runs sampled) - -> node benchmark/samerequest.js - - Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object - - 1 test completed. - 2 tests completed. - 3 tests completed. - - fasturl x 2,184,468 ops/sec ±0.40% (194 runs sampled) - nativeurl x 99,437 ops/sec ±0.71% (194 runs sampled) - parseurl x 10,498,005 ops/sec ±0.61% (186 runs sampled) - -> node benchmark/simplepath.js - - Parsing URL "/foo/bar" - - 1 test completed. - 2 tests completed. - 3 tests completed. - - fasturl x 4,535,825 ops/sec ±0.27% (191 runs sampled) - nativeurl x 98,769 ops/sec ±0.54% (191 runs sampled) - parseurl x 4,164,865 ops/sec ±0.34% (192 runs sampled) - -> node benchmark/slash.js - - Parsing URL "/" - - 1 test completed. - 2 tests completed. - 3 tests completed. - - fasturl x 4,908,405 ops/sec ±0.42% (191 runs sampled) - nativeurl x 100,945 ops/sec ±0.59% (188 runs sampled) - parseurl x 4,333,208 ops/sec ±0.27% (194 runs sampled) -``` - -## License - - [MIT](LICENSE) diff --git a/node_modules/express/node_modules/parseurl/index.js b/node_modules/express/node_modules/parseurl/index.js deleted file mode 100644 index 8632347..0000000 --- a/node_modules/express/node_modules/parseurl/index.js +++ /dev/null @@ -1,136 +0,0 @@ -/*! - * parseurl - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var url = require('url') -var parse = url.parse -var Url = url.Url - -/** - * Pattern for a simple path case. - * See: https://github.com/joyent/node/pull/7878 - */ - -var simplePathRegExp = /^(\/\/?(?!\/)[^\?#\s]*)(\?[^#\s]*)?$/ - -/** - * Exports. - */ - -module.exports = parseurl -module.exports.original = originalurl - -/** - * Parse the `req` url with memoization. - * - * @param {ServerRequest} req - * @return {Object} - * @api public - */ - -function parseurl(req) { - var url = req.url - - if (url === undefined) { - // URL is undefined - return undefined - } - - var parsed = req._parsedUrl - - if (fresh(url, parsed)) { - // Return cached URL parse - return parsed - } - - // Parse the URL - parsed = fastparse(url) - parsed._raw = url - - return req._parsedUrl = parsed -}; - -/** - * Parse the `req` original url with fallback and memoization. - * - * @param {ServerRequest} req - * @return {Object} - * @api public - */ - -function originalurl(req) { - var url = req.originalUrl - - if (typeof url !== 'string') { - // Fallback - return parseurl(req) - } - - var parsed = req._parsedOriginalUrl - - if (fresh(url, parsed)) { - // Return cached URL parse - return parsed - } - - // Parse the URL - parsed = fastparse(url) - parsed._raw = url - - return req._parsedOriginalUrl = parsed -}; - -/** - * Parse the `str` url with fast-path short-cut. - * - * @param {string} str - * @return {Object} - * @api private - */ - -function fastparse(str) { - // Try fast path regexp - // See: https://github.com/joyent/node/pull/7878 - var simplePath = typeof str === 'string' && simplePathRegExp.exec(str) - - // Construct simple URL - if (simplePath) { - var pathname = simplePath[1] - var search = simplePath[2] || null - var url = Url !== undefined - ? new Url() - : {} - url.path = str - url.href = str - url.pathname = pathname - url.search = search - url.query = search && search.substr(1) - - return url - } - - return parse(str) -} - -/** - * Determine if parsed is still fresh for url. - * - * @param {string} url - * @param {object} parsedUrl - * @return {boolean} - * @api private - */ - -function fresh(url, parsedUrl) { - return typeof parsedUrl === 'object' - && parsedUrl !== null - && (Url === undefined || parsedUrl instanceof Url) - && parsedUrl._raw === url -} diff --git a/node_modules/express/node_modules/parseurl/package.json b/node_modules/express/node_modules/parseurl/package.json deleted file mode 100644 index cf8409f..0000000 --- a/node_modules/express/node_modules/parseurl/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "parseurl", - "description": "parse a url with memoization", - "version": "1.3.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/expressjs/parseurl" - }, - "license": "MIT", - "devDependencies": { - "benchmark": "1.0.0", - "beautify-benchmark": "0.2.4", - "fast-url-parser": "~1.0.0", - "istanbul": "0.3.0", - "mocha": "~1.21.4" - }, - "scripts": { - "bench": "node benchmark/index.js", - "test": "mocha --check-leaks --bail --reporter spec test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/" - }, - "readme": "# parseurl\n\n[![NPM version](https://badge.fury.io/js/parseurl.svg)](http://badge.fury.io/js/parseurl)\n[![Build Status](https://travis-ci.org/expressjs/parseurl.svg?branch=master)](https://travis-ci.org/expressjs/parseurl)\n[![Coverage Status](https://img.shields.io/coveralls/expressjs/parseurl.svg?branch=master)](https://coveralls.io/r/expressjs/parseurl)\n\nParse a URL with memoization.\n\n## Install\n\n```bash\n$ npm install parseurl\n```\n\n## API\n\n```js\nvar parseurl = require('parseurl')\n```\n\n### parseurl(req)\n\nParse the URL of the given request object (looks at the `req.url` property)\nand return the result. The result is the same as `url.parse` in Node.js core.\nCalling this function multiple times on the same `req` where `req.url` does\nnot change will return a cached parsed object, rather than parsing again.\n\n### parseurl.original(req)\n\nParse the original URL of the given request object and return the result.\nThis works by trying to parse `req.originalUrl` if it is a string, otherwise\nparses `req.url`. The result is the same as `url.parse` in Node.js core.\nCalling this function multiple times on the same `req` where `req.originalUrl`\ndoes not change will return a cached parsed object, rather than parsing again.\n\n## Benchmark\n\n```bash\n$ npm run-script bench\n\n> parseurl@1.3.0 bench nodejs-parseurl\n> node benchmark/index.js\n\n> node benchmark/fullurl.js\n\n Parsing URL \"http://localhost:8888/foo/bar?user=tj&pet=fluffy\"\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n\n fasturl x 1,290,780 ops/sec ±0.46% (195 runs sampled)\n nativeurl x 56,401 ops/sec ±0.22% (196 runs sampled)\n parseurl x 55,231 ops/sec ±0.22% (194 runs sampled)\n\n> node benchmark/pathquery.js\n\n Parsing URL \"/foo/bar?user=tj&pet=fluffy\"\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n\n fasturl x 1,986,668 ops/sec ±0.27% (190 runs sampled)\n nativeurl x 98,740 ops/sec ±0.21% (195 runs sampled)\n parseurl x 2,628,171 ops/sec ±0.36% (195 runs sampled)\n\n> node benchmark/samerequest.js\n\n Parsing URL \"/foo/bar?user=tj&pet=fluffy\" on same request object\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n\n fasturl x 2,184,468 ops/sec ±0.40% (194 runs sampled)\n nativeurl x 99,437 ops/sec ±0.71% (194 runs sampled)\n parseurl x 10,498,005 ops/sec ±0.61% (186 runs sampled)\n\n> node benchmark/simplepath.js\n\n Parsing URL \"/foo/bar\"\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n\n fasturl x 4,535,825 ops/sec ±0.27% (191 runs sampled)\n nativeurl x 98,769 ops/sec ±0.54% (191 runs sampled)\n parseurl x 4,164,865 ops/sec ±0.34% (192 runs sampled)\n\n> node benchmark/slash.js\n\n Parsing URL \"/\"\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n\n fasturl x 4,908,405 ops/sec ±0.42% (191 runs sampled)\n nativeurl x 100,945 ops/sec ±0.59% (188 runs sampled)\n parseurl x 4,333,208 ops/sec ±0.27% (194 runs sampled)\n```\n\n## License\n\n [MIT](LICENSE)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/expressjs/parseurl/issues" - }, - "homepage": "https://github.com/expressjs/parseurl", - "_id": "parseurl@1.3.0", - "_shasum": "b58046db4223e145afa76009e61bac87cc2281b3", - "_from": "parseurl@>=1.3.0 <1.4.0", - "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz" -} diff --git a/node_modules/express/node_modules/path-to-regexp/.npmignore b/node_modules/express/node_modules/path-to-regexp/.npmignore deleted file mode 100644 index ba2a97b..0000000 --- a/node_modules/express/node_modules/path-to-regexp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -coverage diff --git a/node_modules/express/node_modules/path-to-regexp/History.md b/node_modules/express/node_modules/path-to-regexp/History.md deleted file mode 100644 index f962cfa..0000000 --- a/node_modules/express/node_modules/path-to-regexp/History.md +++ /dev/null @@ -1,16 +0,0 @@ -0.1.3 / 2014-07-06 -================== - - * Better array support - * Improved support for trailing slash in non-ending mode - -0.1.0 / 2014-03-06 -================== - - * add options.end - -0.0.2 / 2013-02-10 -================== - - * Update to match current express - * add .license property to component.json diff --git a/node_modules/express/node_modules/path-to-regexp/Readme.md b/node_modules/express/node_modules/path-to-regexp/Readme.md deleted file mode 100644 index 9199e38..0000000 --- a/node_modules/express/node_modules/path-to-regexp/Readme.md +++ /dev/null @@ -1,33 +0,0 @@ - -# Path-to-RegExp - - Turn an Express-style path string such as `/user/:name` into a regular expression. - -## Usage - -```javascript -var pathToRegexp = require('path-to-regexp'); -``` -### pathToRegexp(path, keys, options) - - - **path** A string in the express format, an array of such strings, or a regular expression - - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings. - - **options** - - **options.sensitive** Defaults to false, set this to true to make routes case sensitive - - **options.strict** Defaults to false, set this to true to make the trailing slash matter. - - **options.end** Defaults to true, set this to false to only match the prefix of the URL. - -```javascript -var keys = []; -var exp = pathToRegexp('/foo/:bar', keys); -//keys = ['bar'] -//exp = /^\/foo\/(?:([^\/]+?))\/?$/i -``` - -## Live Demo - -You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/). - -## License - - MIT \ No newline at end of file diff --git a/node_modules/express/node_modules/path-to-regexp/component.json b/node_modules/express/node_modules/path-to-regexp/component.json deleted file mode 100644 index 6ab37d3..0000000 --- a/node_modules/express/node_modules/path-to-regexp/component.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "path-to-regexp", - "description": "Express style path to RegExp utility", - "version": "0.1.3", - "keywords": [ - "express", - "regexp", - "route", - "routing" - ], - "scripts": [ - "index.js" - ], - "license": "MIT" -} diff --git a/node_modules/express/node_modules/path-to-regexp/index.js b/node_modules/express/node_modules/path-to-regexp/index.js deleted file mode 100644 index 2801f91..0000000 --- a/node_modules/express/node_modules/path-to-regexp/index.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Expose `pathtoRegexp`. - */ - -module.exports = pathtoRegexp; - -/** - * Normalize the given path string, - * returning a regular expression. - * - * An empty array should be passed, - * which will contain the placeholder - * key names. For example "/user/:id" will - * then contain ["id"]. - * - * @param {String|RegExp|Array} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - * @api private - */ - -function pathtoRegexp(path, keys, options) { - options = options || {}; - var strict = options.strict; - var end = options.end !== false; - var flags = options.sensitive ? '' : 'i'; - keys = keys || []; - - if (path instanceof RegExp) { - return path; - } - - if (Array.isArray(path)) { - // Map array parts into regexps and return their source. We also pass - // the same keys and options instance into every generation to get - // consistent matching groups before we join the sources together. - path = path.map(function (value) { - return pathtoRegexp(value, keys, options).source; - }); - - return new RegExp('(?:' + path.join('|') + ')', flags); - } - - path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?')) - .replace(/\/\(/g, '/(?:') - .replace(/([\/\.])/g, '\\$1') - .replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g, function (match, slash, format, key, capture, star, optional) { - slash = slash || ''; - format = format || ''; - capture = capture || '([^\\/' + format + ']+?)'; - optional = optional || ''; - - keys.push({ name: key, optional: !!optional }); - - return '' - + (optional ? '' : slash) - + '(?:' - + format + (optional ? slash : '') + capture - + (star ? '((?:[\\/' + format + '].+?)?)' : '') - + ')' - + optional; - }) - .replace(/\*/g, '(.*)'); - - // If the path is non-ending, match until the end or a slash. - path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\/|$)')); - - return new RegExp(path, flags); -}; diff --git a/node_modules/express/node_modules/path-to-regexp/package.json b/node_modules/express/node_modules/path-to-regexp/package.json deleted file mode 100644 index bccfe25..0000000 --- a/node_modules/express/node_modules/path-to-regexp/package.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "name": "path-to-regexp", - "description": "Express style path to RegExp utility", - "version": "0.1.3", - "scripts": { - "test": "istanbul cover _mocha -- -R spec" - }, - "keywords": [ - "express", - "regexp" - ], - "component": { - "scripts": { - "path-to-regexp": "index.js" - } - }, - "repository": { - "type": "git", - "url": "https://github.com/component/path-to-regexp.git" - }, - "devDependencies": { - "mocha": "^1.17.1", - "istanbul": "^0.2.6" - }, - "bugs": { - "url": "https://github.com/component/path-to-regexp/issues" - }, - "homepage": "https://github.com/component/path-to-regexp", - "_id": "path-to-regexp@0.1.3", - "_shasum": "21b9ab82274279de25b156ea08fd12ca51b8aecb", - "_from": "path-to-regexp@0.1.3", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "blakeembrey", - "email": "hello@blakeembrey.com" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dominicbarnes", - "email": "dominic@dbarnes.info" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rauchg", - "email": "rauchg@gmail.com" - }, - { - "name": "retrofox", - "email": "rdsuarez@gmail.com" - }, - { - "name": "coreh", - "email": "thecoreh@gmail.com" - }, - { - "name": "forbeslindesay", - "email": "forbes@lindesay.co.uk" - }, - { - "name": "kelonye", - "email": "kelonyemitchel@gmail.com" - }, - { - "name": "mattmueller", - "email": "mattmuelle@gmail.com" - }, - { - "name": "yields", - "email": "yields@icloud.com" - }, - { - "name": "anthonyshort", - "email": "antshort@gmail.com" - }, - { - "name": "ianstormtaylor", - "email": "ian@ianstormtaylor.com" - }, - { - "name": "cristiandouce", - "email": "cristian@gravityonmars.com" - }, - { - "name": "swatinem", - "email": "arpad.borsos@googlemail.com" - }, - { - "name": "stagas", - "email": "gstagas@gmail.com" - }, - { - "name": "amasad", - "email": "amjad.masad@gmail.com" - }, - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "calvinfo", - "email": "calvin@calv.info" - }, - { - "name": "blakeembrey", - "email": "hello@blakeembrey.com" - }, - { - "name": "timoxley", - "email": "secoif@gmail.com" - }, - { - "name": "jonathanong", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "queckezz", - "email": "fabian.eichenberger@gmail.com" - }, - { - "name": "nami-doc", - "email": "vendethiel@hotmail.fr" - }, - { - "name": "clintwood", - "email": "clint@anotherway.co.za" - }, - { - "name": "thehydroimpulse", - "email": "dnfagnan@gmail.com" - }, - { - "name": "stephenmathieson", - "email": "me@stephenmathieson.com" - }, - { - "name": "trevorgerhardt", - "email": "trevorgerhardt@gmail.com" - } - ], - "dist": { - "shasum": "21b9ab82274279de25b156ea08fd12ca51b8aecb", - "tarball": "http://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/path-to-regexp/test.js b/node_modules/express/node_modules/path-to-regexp/test.js deleted file mode 100644 index 4a0c270..0000000 --- a/node_modules/express/node_modules/path-to-regexp/test.js +++ /dev/null @@ -1,616 +0,0 @@ -var pathToRegExp = require('./'); -var assert = require('assert'); - -describe('path-to-regexp', function () { - describe('strings', function () { - it('should match simple paths', function () { - var params = []; - var m = pathToRegExp('/test', params).exec('/test'); - - assert.equal(params.length, 0); - - assert.equal(m.length, 1); - assert.equal(m[0], '/test'); - }); - - it('should match express format params', function () { - var params = []; - var m = pathToRegExp('/:test', params).exec('/pathname'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], '/pathname'); - assert.equal(m[1], 'pathname'); - }); - - it('should do strict matches', function () { - var params = []; - var re = pathToRegExp('/:test', params, { strict: true }); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - m = re.exec('/route'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/route'); - assert.equal(m[1], 'route'); - - m = re.exec('/route/'); - - assert.ok(!m); - }); - - it('should do strict matches with trailing slashes', function () { - var params = []; - var re = pathToRegExp('/:test/', params, { strict: true }); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - m = re.exec('/route'); - - assert.ok(!m); - - m = re.exec('/route/'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/route/'); - assert.equal(m[1], 'route'); - - m = re.exec('/route//'); - - assert.ok(!m); - }); - - it('should allow optional express format params', function () { - var params = []; - var re = pathToRegExp('/:test?', params); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, true); - - m = re.exec('/route'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/route'); - assert.equal(m[1], 'route'); - - m = re.exec('/'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/'); - assert.equal(m[1], undefined); - }); - - it('should allow express format param regexps', function () { - var params = []; - var m = pathToRegExp('/:page(\\d+)', params).exec('/56'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'page'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], '/56'); - assert.equal(m[1], '56'); - }); - - it('should match without a prefixed slash', function () { - var params = []; - var m = pathToRegExp(':test', params).exec('string'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], 'string'); - assert.equal(m[1], 'string'); - }); - - it('should not match format parts', function () { - var params = []; - var m = pathToRegExp('/:test.json', params).exec('/route.json'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], '/route.json'); - assert.equal(m[1], 'route'); - }); - - it('should match format parts', function () { - var params = []; - var re = pathToRegExp('/:test.:format', params); - var m; - - assert.equal(params.length, 2); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - assert.equal(params[1].name, 'format'); - assert.equal(params[1].optional, false); - - m = re.exec('/route.json'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/route.json'); - assert.equal(m[1], 'route'); - assert.equal(m[2], 'json'); - - m = re.exec('/route'); - - assert.ok(!m); - }); - - it('should match route parts with a trailing format', function () { - var params = []; - var m = pathToRegExp('/:test.json', params).exec('/route.json'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], '/route.json'); - assert.equal(m[1], 'route'); - }); - - it('should match optional trailing routes', function () { - var params = []; - var m = pathToRegExp('/test*', params).exec('/test/route'); - - assert.equal(params.length, 0); - - assert.equal(m.length, 2); - assert.equal(m[0], '/test/route'); - assert.equal(m[1], '/route'); - }); - - it('should match optional trailing routes after a param', function () { - var params = []; - var re = pathToRegExp('/:test*', params); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - m = re.exec('/test/route'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/test/route'); - assert.equal(m[1], 'test'); - assert.equal(m[2], '/route'); - - m = re.exec('/testing'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/testing'); - assert.equal(m[1], 'testing'); - assert.equal(m[2], ''); - }); - - it('should match optional trailing routes before a format', function () { - var params = []; - var re = pathToRegExp('/test*.json', params); - var m; - - assert.equal(params.length, 0); - - m = re.exec('/test.json'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/test.json'); - assert.equal(m[1], ''); - - m = re.exec('/testing.json'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/testing.json'); - assert.equal(m[1], 'ing'); - - m = re.exec('/test/route.json'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/test/route.json'); - assert.equal(m[1], '/route'); - }); - - it('should match optional trailing routes after a param and before a format', function () { - var params = []; - var re = pathToRegExp('/:test*.json', params); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - m = re.exec('/testing.json'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/testing.json'); - assert.equal(m[1], 'testing'); - assert.equal(m[2], ''); - - m = re.exec('/test/route.json'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/test/route.json'); - assert.equal(m[1], 'test'); - assert.equal(m[2], '/route'); - - m = re.exec('.json'); - - assert.ok(!m); - }); - - it('should match optional trailing routes between a normal param and a format param', function () { - var params = []; - var re = pathToRegExp('/:test*.:format', params); - var m; - - assert.equal(params.length, 2); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - assert.equal(params[1].name, 'format'); - assert.equal(params[1].optional, false); - - m = re.exec('/testing.json'); - - assert.equal(m.length, 4); - assert.equal(m[0], '/testing.json'); - assert.equal(m[1], 'testing'); - assert.equal(m[2], ''); - assert.equal(m[3], 'json'); - - m = re.exec('/test/route.json'); - - assert.equal(m.length, 4); - assert.equal(m[0], '/test/route.json'); - assert.equal(m[1], 'test'); - assert.equal(m[2], '/route'); - assert.equal(m[3], 'json'); - - m = re.exec('/test'); - - assert.ok(!m); - - m = re.exec('.json'); - - assert.ok(!m); - }); - - it('should match optional trailing routes after a param and before an optional format param', function () { - var params = []; - var re = pathToRegExp('/:test*.:format?', params); - var m; - - assert.equal(params.length, 2); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - assert.equal(params[1].name, 'format'); - assert.equal(params[1].optional, true); - - m = re.exec('/testing.json'); - - assert.equal(m.length, 4); - assert.equal(m[0], '/testing.json'); - assert.equal(m[1], 'testing'); - assert.equal(m[2], ''); - assert.equal(m[3], 'json'); - - m = re.exec('/test/route.json'); - - assert.equal(m.length, 4); - assert.equal(m[0], '/test/route.json'); - assert.equal(m[1], 'test'); - assert.equal(m[2], '/route'); - assert.equal(m[3], 'json'); - - m = re.exec('/test'); - - assert.equal(m.length, 4); - assert.equal(m[0], '/test'); - assert.equal(m[1], 'test'); - assert.equal(m[2], ''); - assert.equal(m[3], undefined); - - m = re.exec('.json'); - - assert.ok(!m); - }); - - it('should match optional trailing routes inside optional express param', function () { - var params = []; - var re = pathToRegExp('/:test*?', params); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, true); - - m = re.exec('/test/route'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/test/route'); - assert.equal(m[1], 'test'); - assert.equal(m[2], '/route'); - - m = re.exec('/test'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/test'); - assert.equal(m[1], 'test'); - assert.equal(m[2], ''); - - m = re.exec('/'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/'); - assert.equal(m[1], undefined); - assert.equal(m[2], undefined); - }); - - it('should do case insensitive matches', function () { - var m = pathToRegExp('/test').exec('/TEST'); - - assert.equal(m[0], '/TEST'); - }); - - it('should do case sensitive matches', function () { - var re = pathToRegExp('/test', null, { sensitive: true }); - var m; - - m = re.exec('/test'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/test'); - - m = re.exec('/TEST'); - - assert.ok(!m); - }); - - it('should do non-ending matches', function () { - var params = []; - var m = pathToRegExp('/:test', params, { end: false }).exec('/test/route'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], '/test'); - assert.equal(m[1], 'test'); - }); - - it('should match trailing slashes in non-ending non-strict mode', function () { - var params = []; - var re = pathToRegExp('/:test', params, { end: false }); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - m = re.exec('/test/'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/test/'); - assert.equal(m[1], 'test'); - }); - - it('should match trailing slashes in non-ending non-strict mode', function () { - var params = []; - var re = pathToRegExp('/route/', params, { end: false }); - var m; - - assert.equal(params.length, 0); - - m = re.exec('/route/'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route/'); - - m = re.exec('/route/test'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route'); - - m = re.exec('/route'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route'); - - m = re.exec('/route//'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route/'); - }); - - it('should match trailing slashing in non-ending strict mode', function () { - var params = []; - var re = pathToRegExp('/route/', params, { end: false, strict: true }); - - assert.equal(params.length, 0); - - m = re.exec('/route/'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route/'); - - m = re.exec('/route/test'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route/'); - - m = re.exec('/route'); - - assert.ok(!m); - - m = re.exec('/route//'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route/'); - }); - - it('should not match trailing slashes in non-ending strict mode', function () { - var params = []; - var re = pathToRegExp('/route', params, { end: false, strict: true }); - - assert.equal(params.length, 0); - - m = re.exec('/route'); - - assert.equal(m.length, 1); - assert.equal(m[0], '/route'); - - m = re.exec('/route/'); - - assert.ok(m.length, 1); - assert.equal(m[0], '/route'); - }); - - it('should match text after an express param', function () { - var params = []; - var re = pathToRegExp('/(:test)route', params); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - m = re.exec('/route'); - - assert.ok(!m); - - m = re.exec('/testroute'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/testroute'); - assert.equal(m[1], 'test'); - - m = re.exec('testroute'); - - assert.ok(!m); - }); - - it('should match text after an optional express param', function () { - var params = []; - var re = pathToRegExp('/(:test?)route', params); - var m; - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, true); - - m = re.exec('/route'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/route'); - assert.equal(m[1], undefined); - - m = re.exec('/testroute'); - - assert.equal(m.length, 2); - assert.equal(m[0], '/testroute'); - assert.equal(m[1], 'test'); - - m = re.exec('route'); - - assert.ok(!m); - }); - - it('should match optional formats', function () { - var params = []; - var re = pathToRegExp('/:test.:format?', params); - var m; - - assert.equal(params.length, 2); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - assert.equal(params[1].name, 'format'); - assert.equal(params[1].optional, true); - - m = re.exec('/route'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/route'); - assert.equal(m[1], 'route'); - assert.equal(m[2], undefined); - - m = re.exec('/route.json'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/route.json'); - assert.equal(m[1], 'route'); - assert.equal(m[2], 'json'); - }); - - it('should match full paths with format by default', function () { - var params = []; - var m = pathToRegExp('/:test', params).exec('/test.json'); - - assert.equal(params.length, 1); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - - assert.equal(m.length, 2); - assert.equal(m[0], '/test.json'); - assert.equal(m[1], 'test.json'); - }); - }); - - describe('regexps', function () { - it('should return the regexp', function () { - assert.deepEqual(pathToRegExp(/.*/), /.*/); - }); - }); - - describe('arrays', function () { - it('should join arrays parts', function () { - var re = pathToRegExp(['/test', '/route']); - - assert.ok(re.test('/test')); - assert.ok(re.test('/route')); - assert.ok(!re.test('/else')); - }); - - it('should match parts properly', function () { - var params = []; - var re = pathToRegExp(['/:test', '/test/:route'], params); - var m; - - assert.equal(params.length, 2); - assert.equal(params[0].name, 'test'); - assert.equal(params[0].optional, false); - assert.equal(params[1].name, 'route'); - assert.equal(params[1].optional, false); - - m = re.exec('/route'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/route'); - assert.equal(m[1], 'route'); - assert.equal(m[2], undefined); - - m = re.exec('/test/path'); - - assert.equal(m.length, 3); - assert.equal(m[0], '/test/path'); - assert.equal(m[1], undefined); - assert.equal(m[2], 'path'); - }); - }); -}); diff --git a/node_modules/express/node_modules/proxy-addr/HISTORY.md b/node_modules/express/node_modules/proxy-addr/HISTORY.md deleted file mode 100644 index b5dc477..0000000 --- a/node_modules/express/node_modules/proxy-addr/HISTORY.md +++ /dev/null @@ -1,45 +0,0 @@ -1.0.4 / 2014-11-23 -================== - - * deps: ipaddr.js@0.1.5 - - Fix edge cases with `isValid` - -1.0.3 / 2014-09-21 -================== - - * Use `forwarded` npm module - -1.0.2 / 2014-09-18 -================== - - * Fix a global leak when multiple subnets are trusted - * Support Node.js 0.6 - * deps: ipaddr.js@0.1.3 - -1.0.1 / 2014-06-03 -================== - - * Fix links in npm package - -1.0.0 / 2014-05-08 -================== - - * Add `trust` argument to determine proxy trust on - * Accepts custom function - * Accepts IPv4/IPv6 address(es) - * Accepts subnets - * Accepts pre-defined names - * Add optional `trust` argument to `proxyaddr.all` to - stop at first untrusted - * Add `proxyaddr.compile` to pre-compile `trust` function - to make subsequent calls faster - -0.0.1 / 2014-05-04 -================== - - * Fix bad npm publish - -0.0.0 / 2014-05-04 -================== - - * Initial release diff --git a/node_modules/express/node_modules/proxy-addr/LICENSE b/node_modules/express/node_modules/proxy-addr/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/proxy-addr/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/proxy-addr/README.md b/node_modules/express/node_modules/proxy-addr/README.md deleted file mode 100644 index 57ec4cd..0000000 --- a/node_modules/express/node_modules/proxy-addr/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# proxy-addr - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Determine address of proxied request - -## Install - -```sh -$ npm install proxy-addr -``` - -## API - -```js -var proxyaddr = require('proxy-addr') -``` - -### proxyaddr(req, trust) - -Return the address of the request, using the given `trust` parameter. - -The `trust` argument is a function that returns `true` if you trust -the address, `false` if you don't. The closest untrusted address is -returned. - -```js -proxyaddr(req, function(addr){ return addr === '127.0.0.1' }) -proxyaddr(req, function(addr, i){ return i < 1 }) -``` - -The `trust` arugment may also be a single IP address string or an -array of trusted addresses, as plain IP addresses, CIDR-formatted -strings, or IP/netmask strings. - -```js -proxyaddr(req, '127.0.0.1') -proxyaddr(req, ['127.0.0.0/8', '10.0.0.0/8']) -proxyaddr(req, ['127.0.0.0/255.0.0.0', '192.168.0.0/255.255.0.0']) -``` - -This module also supports IPv6. Your IPv6 addresses will be normalized -automatically (i.e. `fe80::00ed:1` equals `fe80:0:0:0:0:0:ed:1`). - -```js -proxyaddr(req, '::1') -proxyaddr(req, ['::1/128', 'fe80::/10']) -proxyaddr(req, ['fe80::/ffc0::']) -``` - -This module will automatically work with IPv4-mapped IPv6 addresses -as well to support node.js in IPv6-only mode. This means that you do -not have to specify both `::ffff:a00:1` and `10.0.0.1`. - -As a convenience, this module also takes certain pre-defined names -in addition to IP addresses, which expand into IP addresses: - -```js -proxyaddr(req, 'loopback') -proxyaddr(req, ['loopback', 'fc00:ac:1ab5:fff::1/64']) -``` - - * `loopback`: IPv4 and IPv6 loopback addresses (like `::1` and - `127.0.0.1`). - * `linklocal`: IPv4 and IPv6 link-local addresses (like - `fe80::1:1:1:1` and `169.254.0.1`). - * `uniquelocal`: IPv4 private addresses and IPv6 unique-local - addresses (like `fc00:ac:1ab5:fff::1` and `192.168.0.1`). - -When `trust` is specified as a function, it will be called for each -address to determine if it is a trusted address. The function is -given two arguments: `addr` and `i`, where `addr` is a string of -the address to check and `i` is a number that represents the distance -from the socket address. - -### proxyaddr.all(req, [trust]) - -Return all the addresses of the request, optionally stopping at the -first untrusted. This array is ordered from closest to furthest -(i.e. `arr[0] === req.connection.remoteAddress`). - -```js -proxyaddr.all(req) -``` - -The optional `trust` argument takes the same arguments as `trust` -does in `proxyaddr(req, trust)`. - -```js -proxyaddr.all(req, 'loopback') -``` - -### proxyaddr.compile(val) - -Compiles argument `val` into a `trust` function. This function takes -the same arguments as `trust` does in `proxyaddr(req, trust)` and -returns a function suitable for `proxyaddr(req, trust)`. - -```js -var trust = proxyaddr.compile('localhost') -var addr = proxyaddr(req, trust) -``` - -This function is meant to be optimized for use against every request. -It is recommend to compile a trust function up-front for the trusted -configuration and pass that to `proxyaddr(req, trust)` for each request. - -## Testing - -```sh -$ npm test -``` - -## Benchmarks - -```sh -$ npm run-script bench -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/proxy-addr.svg?style=flat -[npm-url]: https://npmjs.org/package/proxy-addr -[node-version-image]: https://img.shields.io/node/v/proxy-addr.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/proxy-addr.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/proxy-addr -[coveralls-image]: https://img.shields.io/coveralls/jshttp/proxy-addr.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/proxy-addr?branch=master -[downloads-image]: https://img.shields.io/npm/dm/proxy-addr.svg?style=flat -[downloads-url]: https://npmjs.org/package/proxy-addr diff --git a/node_modules/express/node_modules/proxy-addr/index.js b/node_modules/express/node_modules/proxy-addr/index.js deleted file mode 100644 index d739513..0000000 --- a/node_modules/express/node_modules/proxy-addr/index.js +++ /dev/null @@ -1,345 +0,0 @@ -/*! - * proxy-addr - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = proxyaddr; -module.exports.all = alladdrs; -module.exports.compile = compile; - -/** - * Module dependencies. - */ - -var forwarded = require('forwarded'); -var ipaddr = require('ipaddr.js'); - -/** - * Variables. - */ - -var digitre = /^[0-9]+$/; -var isip = ipaddr.isValid; -var parseip = ipaddr.parse; - -/** - * Pre-defined IP ranges. - */ - -var ipranges = { - linklocal: ['169.254.0.0/16', 'fe80::/10'], - loopback: ['127.0.0.1/8', '::1/128'], - uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7'] -}; - -/** - * Get all addresses in the request, optionally stopping - * at the first untrusted. - * - * @param {Object} request - * @param {Function|Array|String} [trust] - * @api public - */ - -function alladdrs(req, trust) { - // get addresses - var addrs = forwarded(req); - - if (!trust) { - // Return all addresses - return addrs; - } - - if (typeof trust !== 'function') { - trust = compile(trust); - } - - for (var i = 0; i < addrs.length - 1; i++) { - if (trust(addrs[i], i)) continue; - - addrs.length = i + 1; - } - - return addrs; -} - -/** - * Compile argument into trust function. - * - * @param {Array|String} val - * @api private - */ - -function compile(val) { - if (!val) { - throw new TypeError('argument is required'); - } - - var trust = typeof val === 'string' - ? [val] - : val; - - if (!Array.isArray(trust)) { - throw new TypeError('unsupported trust argument'); - } - - for (var i = 0; i < trust.length; i++) { - val = trust[i]; - - if (!ipranges.hasOwnProperty(val)) { - continue; - } - - // Splice in pre-defined range - val = ipranges[val]; - trust.splice.apply(trust, [i, 1].concat(val)); - i += val.length - 1; - } - - return compileTrust(compileRangeSubnets(trust)); -} - -/** - * Compile `arr` elements into range subnets. - * - * @param {Array} arr - * @api private - */ - -function compileRangeSubnets(arr) { - var rangeSubnets = new Array(arr.length); - - for (var i = 0; i < arr.length; i++) { - rangeSubnets[i] = parseipNotation(arr[i]); - } - - return rangeSubnets; -} - -/** - * Compile range subnet array into trust function. - * - * @param {Array} rangeSubnets - * @api private - */ - -function compileTrust(rangeSubnets) { - // Return optimized function based on length - var len = rangeSubnets.length; - return len === 0 - ? trustNone - : len === 1 - ? trustSingle(rangeSubnets[0]) - : trustMulti(rangeSubnets); -} - -/** - * Parse IP notation string into range subnet. - * - * @param {String} note - * @api private - */ - -function parseipNotation(note) { - var ip; - var kind; - var max; - var pos = note.lastIndexOf('/'); - var range; - - ip = pos !== -1 - ? note.substring(0, pos) - : note; - - if (!isip(ip)) { - throw new TypeError('invalid IP address: ' + ip); - } - - ip = parseip(ip); - - kind = ip.kind(); - max = kind === 'ipv6' - ? 128 - : 32; - - range = pos !== -1 - ? note.substring(pos + 1, note.length) - : max; - - if (typeof range !== 'number') { - range = digitre.test(range) - ? parseInt(range, 10) - : isip(range) - ? parseNetmask(range) - : 0; - } - - if (ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) { - // Store as IPv4 - ip = ip.toIPv4Address(); - range = range <= max - ? range - 96 - : range; - } - - if (range <= 0 || range > max) { - throw new TypeError('invalid range on address: ' + note); - } - - return [ip, range]; -} - -/** - * Parse netmask string into CIDR range. - * - * @param {String} note - * @api private - */ - -function parseNetmask(netmask) { - var ip = parseip(netmask); - var parts; - var size; - - switch (ip.kind()) { - case 'ipv4': - parts = ip.octets; - size = 8; - break; - case 'ipv6': - parts = ip.parts; - size = 16; - break; - } - - var max = Math.pow(2, size) - 1; - var part; - var range = 0; - - for (var i = 0; i < parts.length; i++) { - part = parts[i] & max; - - if (part === max) { - range += size; - continue; - } - - while (part) { - part = (part << 1) & max; - range += 1; - } - - break; - } - - return range; -} - -/** - * Determine address of proxied request. - * - * @param {Object} request - * @param {Function|Array|String} trust - * @api public - */ - -function proxyaddr(req, trust) { - if (!req) { - throw new TypeError('req argument is required'); - } - - if (!trust) { - throw new TypeError('trust argument is required'); - } - - var addrs = alladdrs(req, trust); - var addr = addrs[addrs.length - 1]; - - return addr; -} - -/** - * Static trust function to trust nothing. - * - * @api private - */ - -function trustNone() { - return false; -} - -/** - * Compile trust function for multiple subnets. - * - * @param {Array} subnets - * @api private - */ - -function trustMulti(subnets) { - return function trust(addr) { - if (!isip(addr)) return false; - - var ip = parseip(addr); - var ipv4; - var kind = ip.kind(); - var subnet; - var subnetip; - var subnetkind; - var subnetrange; - var trusted; - - for (var i = 0; i < subnets.length; i++) { - subnet = subnets[i]; - subnetip = subnet[0]; - subnetkind = subnetip.kind(); - subnetrange = subnet[1]; - trusted = ip; - - if (kind !== subnetkind) { - if (kind !== 'ipv6' || subnetkind !== 'ipv4' || !ip.isIPv4MappedAddress()) { - continue; - } - - // Store addr as IPv4 - ipv4 = ipv4 || ip.toIPv4Address(); - trusted = ipv4; - } - - if (trusted.match(subnetip, subnetrange)) return true; - } - - return false; - }; -} - -/** - * Compile trust function for single subnet. - * - * @param {Object} subnet - * @api private - */ - -function trustSingle(subnet) { - var subnetip = subnet[0]; - var subnetkind = subnetip.kind(); - var subnetisipv4 = subnetkind === 'ipv4'; - var subnetrange = subnet[1]; - - return function trust(addr) { - if (!isip(addr)) return false; - - var ip = parseip(addr); - var kind = ip.kind(); - - return kind === subnetkind - ? ip.match(subnetip, subnetrange) - : subnetisipv4 && kind === 'ipv6' && ip.isIPv4MappedAddress() - ? ip.toIPv4Address().match(subnetip, subnetrange) - : false; - }; -} diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/HISTORY.md b/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/HISTORY.md deleted file mode 100644 index 97fa1d1..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/HISTORY.md +++ /dev/null @@ -1,4 +0,0 @@ -0.1.0 / 2014-09-21 -================== - - * Initial release diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/LICENSE b/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/README.md b/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/README.md deleted file mode 100644 index 2b4988f..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# forwarded - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Parse HTTP X-Forwarded-For header - -## Installation - -```sh -$ npm install forwarded -``` - -## API - -```js -var forwarded = require('forwarded') -``` - -### forwarded(req) - -```js -var addresses = forwarded(req) -``` - -Parse the `X-Forwarded-For` header from the request. Returns an array -of the addresses, including the socket address for the `req`. In reverse -order (i.e. index `0` is the socket address and the last index is the -furthest address, typically the end-user). - -## Testing - -```sh -$ npm test -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/forwarded.svg?style=flat -[npm-url]: https://npmjs.org/package/forwarded -[node-version-image]: https://img.shields.io/node/v/forwarded.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/forwarded.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/forwarded -[coveralls-image]: https://img.shields.io/coveralls/jshttp/forwarded.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/forwarded?branch=master -[downloads-image]: https://img.shields.io/npm/dm/forwarded.svg?style=flat -[downloads-url]: https://npmjs.org/package/forwarded diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/index.js b/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/index.js deleted file mode 100644 index 2f5c340..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/index.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! - * forwarded - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = forwarded - -/** - * Get all addresses in the request, using the `X-Forwarded-For` header. - * - * @param {Object} req - * @api public - */ - -function forwarded(req) { - if (!req) { - throw new TypeError('argument req is required') - } - - // simple header parsing - var proxyAddrs = (req.headers['x-forwarded-for'] || '') - .split(/ *, */) - .filter(Boolean) - .reverse() - var socketAddr = req.connection.remoteAddress - var addrs = [socketAddr].concat(proxyAddrs) - - // return all addresses - return addrs -} diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/package.json b/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/package.json deleted file mode 100644 index fa8af9e..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "forwarded", - "description": "Parse HTTP X-Forwarded-For header", - "version": "0.1.0", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "keywords": [ - "x-forwarded-for", - "http", - "req" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/forwarded" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~1.21.4" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "e9a9faeb3cfaadf40eb57d144fff26bca9b818e8", - "bugs": { - "url": "https://github.com/jshttp/forwarded/issues" - }, - "homepage": "https://github.com/jshttp/forwarded", - "_id": "forwarded@0.1.0", - "_shasum": "19ef9874c4ae1c297bcf078fde63a09b66a84363", - "_from": "forwarded@>=0.1.0 <0.2.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "19ef9874c4ae1c297bcf078fde63a09b66a84363", - "tarball": "http://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.npmignore b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.npmignore deleted file mode 100644 index 7a1537b..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea -node_modules diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/Cakefile b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/Cakefile deleted file mode 100644 index 7fd355a..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/Cakefile +++ /dev/null @@ -1,18 +0,0 @@ -fs = require 'fs' -CoffeeScript = require 'coffee-script' -nodeunit = require 'nodeunit' -UglifyJS = require 'uglify-js' - -task 'build', 'build the JavaScript files from CoffeeScript source', build = (cb) -> - source = fs.readFileSync 'src/ipaddr.coffee' - fs.writeFileSync 'lib/ipaddr.js', CoffeeScript.compile source.toString() - - invoke 'test' - invoke 'compress' - -task 'test', 'run the bundled tests', (cb) -> - nodeunit.reporters.default.run ['test'] - -task 'compress', 'uglify the resulting javascript', (cb) -> - result = UglifyJS.minify('lib/ipaddr.js') - fs.writeFileSync('ipaddr.min.js', result.code) diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/LICENSE b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/LICENSE deleted file mode 100644 index 3493f0d..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2011 Peter Zotov - -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. \ No newline at end of file diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/README.md b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/README.md deleted file mode 100644 index a816672..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/README.md +++ /dev/null @@ -1,149 +0,0 @@ -# ipaddr.js — an IPv6 and IPv4 address manipulation library - -ipaddr.js is a small (1.9K minified and gzipped) library for manipulating -IP addresses in JavaScript environments. It runs on both CommonJS runtimes -(e.g. [nodejs]) and in a web browser. - -ipaddr.js allows you to verify and parse string representation of an IP -address, match it against a CIDR range or range list, determine if it falls -into some reserved ranges (examples include loopback and private ranges), -and convert between IPv4 and IPv4-mapped IPv6 addresses. - -[nodejs]: http://nodejs.org - -## Installation - -`npm install ipaddr.js` - -## API - -ipaddr.js defines one object in the global scope: `ipaddr`. In CommonJS, -it is exported from the module: - -```js -var ipaddr = require('ipaddr.js'); -``` - -The API consists of several global methods and two classes: ipaddr.IPv6 and ipaddr.IPv4. - -### Global methods - -There are three global methods defined: `ipaddr.isValid`, `ipaddr.parse` and -`ipaddr.process`. All of them receive a string as a single parameter. - -The `ipaddr.isValid` method returns `true` if the address is a valid IPv4 or -IPv6 address, and `false` otherwise. It does not throw any exceptions. - -The `ipaddr.parse` method returns an object representing the IP address, -or throws an `Error` if the passed string is not a valid representation of an -IP address. - -The `ipaddr.process` method works just like the `ipaddr.parse` one, but it -automatically converts IPv4-mapped IPv6 addresses to their IPv4 couterparts -before returning. It is useful when you have a Node.js instance listening -on an IPv6 socket, and the `net.ivp6.bindv6only` sysctl parameter (or its -equivalent on non-Linux OS) is set to 0. In this case, you can accept IPv4 -connections on your IPv6-only socket, but the remote address will be mangled. -Use `ipaddr.process` method to automatically demangle it. - -### Object representation - -Parsing methods return an object which descends from `ipaddr.IPv6` or -`ipaddr.IPv4`. These objects share some properties, but most of them differ. - -#### Shared properties - -One can determine the type of address by calling `addr.kind()`. It will return -either `"ipv6"` or `"ipv4"`. - -An address can be converted back to its string representation with `addr.toString()`. -Note that this method: - * does not return the original string used to create the object (in fact, there is - no way of getting that string) - * returns a compact representation (when it is applicable) - -A `match(range, bits)` method can be used to check if the address falls into a -certain CIDR range. -Note that an address can be (obviously) matched only against an address of the same type. - -For example: - -```js -var addr = ipaddr.parse("2001:db8:1234::1"); -var range = ipaddr.parse("2001:db8::"); - -addr.match(range, 32); // => true -``` - -A `range()` method returns one of predefined names for several special ranges defined -by IP protocols. The exact names (and their respective CIDR ranges) can be looked up -in the source: [IPv6 ranges] and [IPv4 ranges]. Some common ones include `"unicast"` -(the default one) and `"reserved"`. - -You can match against your own range list by using -`ipaddr.subnetMatch(address, rangeList, defaultName)` method. It can work with both -IPv6 and IPv4 addresses, and accepts a name-to-subnet map as the range list. For example: - -```js -var rangeList = { - documentationOnly: [ ipaddr.parse('2001:db8::'), 32 ], - tunnelProviders: [ - [ ipaddr.parse('2001:470::'), 32 ], // he.net - [ ipaddr.parse('2001:5c0::'), 32 ] // freenet6 - ] -}; -ipaddr.subnetMatch(ipaddr.parse('2001:470:8:66::1'), rangeList, 'unknown'); // => "he.net" -``` - -The addresses can be converted to their byte representation with `toByteArray()`. -(Actually, JavaScript mostly does not know about byte buffers. They are emulated with -arrays of numbers, each in range of 0..255.) - -```js -var bytes = ipaddr.parse('2a00:1450:8007::68').toByteArray(); // ipv6.google.com -bytes // => [42, 0x00, 0x14, 0x50, 0x80, 0x07, 0x00, , 0x00, 0x68 ] -``` - -The `ipaddr.IPv4` and `ipaddr.IPv6` objects have some methods defined, too. All of them -have the same interface for both protocols, and are similar to global methods. - -`ipaddr.IPvX.isValid(string)` can be used to check if the string is a valid address -for particular protocol, and `ipaddr.IPvX.parse(string)` is the error-throwing parser. - -[IPv6 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L186 -[IPv4 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L71 - -#### IPv6 properties - -Sometimes you will want to convert IPv6 not to a compact string representation (with -the `::` substitution); the `toNormalizedString()` method will return an address where -all zeroes are explicit. - -For example: - -```js -var addr = ipaddr.parse("2001:0db8::0001"); -addr.toString(); // => "2001:db8::1" -addr.toNormalizedString(); // => "2001:db8:0:0:0:0:0:1" -``` - -The `isIPv4MappedAddress()` method will return `true` if this address is an IPv4-mapped -one, and `toIPv4Address()` will return an IPv4 object address. - -To access the underlying binary representation of the address, use `addr.parts`. - -```js -var addr = ipaddr.parse("2001:db8:10::1234:DEAD"); -addr.parts // => [0x2001, 0xdb8, 0x10, 0, 0, 0, 0x1234, 0xdead] -``` - -#### IPv4 properties - -`toIPv4MappedAddress()` will return a corresponding IPv4-mapped IPv6 address. - -To access the underlying representation of the address, use `addr.octets`. - -```js -var addr = ipaddr.parse("192.168.1.1"); -addr.octets // => [192, 168, 1, 1] -``` diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js deleted file mode 100644 index db44419..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var t,r,n,e,i,o,a,s;r={},s=this,"undefined"!=typeof module&&null!==module&&module.exports?module.exports=r:s.ipaddr=r,a=function(t,r,n,e){var i,o;if(t.length!==r.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;e>0;){if(o=n-e,0>o&&(o=0),t[i]>>o!==r[i]>>o)return!1;e-=n,i+=1}return!0},r.subnetMatch=function(t,r,n){var e,i,o,a,s;null==n&&(n="unicast");for(e in r)for(i=r[e],"[object Array]"!==toString.call(i[0])&&(i=[i]),a=0,s=i.length;s>a;a++)if(o=i[a],t.match.apply(t,o))return e;return n},r.IPv4=function(){function t(t){var r,n,e;if(4!==t.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(n=0,e=t.length;e>n;n++)if(r=t[n],!(r>=0&&255>=r))throw new Error("ipaddr: ipv4 octet is a byte");this.octets=t}return t.prototype.kind=function(){return"ipv4"},t.prototype.toString=function(){return this.octets.join(".")},t.prototype.toByteArray=function(){return this.octets.slice(0)},t.prototype.match=function(t,r){if("ipv4"!==t.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,t.octets,8,r)},t.prototype.SpecialRanges={broadcast:[[new t([255,255,255,255]),32]],multicast:[[new t([224,0,0,0]),4]],linkLocal:[[new t([169,254,0,0]),16]],loopback:[[new t([127,0,0,0]),8]],"private":[[new t([10,0,0,0]),8],[new t([172,16,0,0]),12],[new t([192,168,0,0]),16]],reserved:[[new t([192,0,0,0]),24],[new t([192,0,2,0]),24],[new t([192,88,99,0]),24],[new t([198,51,100,0]),24],[new t([203,0,113,0]),24],[new t([240,0,0,0]),4]]},t.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},t.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},t}(),n="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new RegExp("^"+n+"$","i")},r.IPv4.parser=function(t){var r,n,i,o,a;if(n=function(t){return"0"===t[0]&&"x"!==t[1]?parseInt(t,8):parseInt(t)},r=t.match(e.fourOctet))return function(){var t,e,o,a;for(o=r.slice(1,6),a=[],t=0,e=o.length;e>t;t++)i=o[t],a.push(n(i));return a}();if(r=t.match(e.longValue)){if(a=n(r[1]),a>4294967295||0>a)throw new Error("ipaddr: address outside defined range");return function(){var t,r;for(r=[],o=t=0;24>=t;o=t+=8)r.push(a>>o&255);return r}().reverse()}return null},r.IPv6=function(){function t(t){var r,n,e;if(8!==t.length)throw new Error("ipaddr: ipv6 part count should be 8");for(n=0,e=t.length;e>n;n++)if(r=t[n],!(r>=0&&65535>=r))throw new Error("ipaddr: ipv6 part should fit to two octets");this.parts=t}return t.prototype.kind=function(){return"ipv6"},t.prototype.toString=function(){var t,r,n,e,i,o,a;for(i=function(){var t,n,e,i;for(e=this.parts,i=[],t=0,n=e.length;n>t;t++)r=e[t],i.push(r.toString(16));return i}.call(this),t=[],n=function(r){return t.push(r)},e=0,o=0,a=i.length;a>o;o++)switch(r=i[o],e){case 0:n("0"===r?"":r),e=1;break;case 1:"0"===r?e=2:n(r);break;case 2:"0"!==r&&(n(""),n(r),e=3);break;case 3:n(r)}return 2===e&&(n(""),n("")),t.join(":")},t.prototype.toByteArray=function(){var t,r,n,e,i;for(t=[],i=this.parts,n=0,e=i.length;e>n;n++)r=i[n],t.push(r>>8),t.push(255&r);return t},t.prototype.toNormalizedString=function(){var t;return function(){var r,n,e,i;for(e=this.parts,i=[],r=0,n=e.length;n>r;r++)t=e[r],i.push(t.toString(16));return i}.call(this).join(":")},t.prototype.match=function(t,r){if("ipv6"!==t.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,t.parts,16,r)},t.prototype.SpecialRanges={unspecified:[new t([0,0,0,0,0,0,0,0]),128],linkLocal:[new t([65152,0,0,0,0,0,0,0]),10],multicast:[new t([65280,0,0,0,0,0,0,0]),8],loopback:[new t([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new t([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new t([0,0,0,0,0,65535,0,0]),96],rfc6145:[new t([0,0,0,0,65535,0,0,0]),96],rfc6052:[new t([100,65435,0,0,0,0,0,0]),96],"6to4":[new t([8194,0,0,0,0,0,0,0]),16],teredo:[new t([8193,0,0,0,0,0,0,0]),32],reserved:[[new t([8193,3512,0,0,0,0,0,0]),32]]},t.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},t.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},t.prototype.toIPv4Address=function(){var t,n,e;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=this.parts.slice(-2),t=e[0],n=e[1],new r.IPv4([t>>8,255&t,n>>8,255&n])},t}(),i="(?:[0-9a-f]+::?)+",o={"native":new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(""+n+"\\."+n+"\\."+n+"\\."+n+"$"),"i")},t=function(t,r){var n,e,i,o,a;if(t.indexOf("::")!==t.lastIndexOf("::"))return null;for(n=0,e=-1;(e=t.indexOf(":",e+1))>=0;)n++;for(":"===t[0]&&n--,":"===t[t.length-1]&&n--,a=r-n,o=":";a--;)o+="0:";return t=t.replace("::",o),":"===t[0]&&(t=t.slice(1)),":"===t[t.length-1]&&(t=t.slice(0,-1)),function(){var r,n,e,o;for(e=t.split(":"),o=[],r=0,n=e.length;n>r;r++)i=e[r],o.push(parseInt(i,16));return o}()},r.IPv6.parser=function(r){var n,e;return r.match(o["native"])?t(r,8):(n=r.match(o.transitional))&&(e=t(n[1].slice(0,-1),6))?(e.push(parseInt(n[2])<<8|parseInt(n[3])),e.push(parseInt(n[4])<<8|parseInt(n[5])),e):null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(t){return null!==this.parser(t)},r.IPv4.isValid=r.IPv6.isValid=function(t){var r;try{return new this(this.parser(t)),!0}catch(n){return r=n,!1}},r.IPv4.parse=r.IPv6.parse=function(t){var r;if(r=this.parser(t),null===r)throw new Error("ipaddr: string is not formatted like ip address");return new this(r)},r.isValid=function(t){return r.IPv6.isValid(t)||r.IPv4.isValid(t)},r.parse=function(t){if(r.IPv6.isValid(t))return r.IPv6.parse(t);if(r.IPv4.isValid(t))return r.IPv4.parse(t);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.process=function(t){var r;return r=this.parse(t),"ipv6"===r.kind()&&r.isIPv4MappedAddress()?r.toIPv4Address():r}}).call(this); \ No newline at end of file diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js deleted file mode 100644 index 1e6d801..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js +++ /dev/null @@ -1,404 +0,0 @@ -(function() { - var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root; - - ipaddr = {}; - - root = this; - - if ((typeof module !== "undefined" && module !== null) && module.exports) { - module.exports = ipaddr; - } else { - root['ipaddr'] = ipaddr; - } - - matchCIDR = function(first, second, partSize, cidrBits) { - var part, shift; - if (first.length !== second.length) { - throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); - } - part = 0; - while (cidrBits > 0) { - shift = partSize - cidrBits; - if (shift < 0) { - shift = 0; - } - if (first[part] >> shift !== second[part] >> shift) { - return false; - } - cidrBits -= partSize; - part += 1; - } - return true; - }; - - ipaddr.subnetMatch = function(address, rangeList, defaultName) { - var rangeName, rangeSubnets, subnet, _i, _len; - if (defaultName == null) { - defaultName = 'unicast'; - } - for (rangeName in rangeList) { - rangeSubnets = rangeList[rangeName]; - if (toString.call(rangeSubnets[0]) !== '[object Array]') { - rangeSubnets = [rangeSubnets]; - } - for (_i = 0, _len = rangeSubnets.length; _i < _len; _i++) { - subnet = rangeSubnets[_i]; - if (address.match.apply(address, subnet)) { - return rangeName; - } - } - } - return defaultName; - }; - - ipaddr.IPv4 = (function() { - function IPv4(octets) { - var octet, _i, _len; - if (octets.length !== 4) { - throw new Error("ipaddr: ipv4 octet count should be 4"); - } - for (_i = 0, _len = octets.length; _i < _len; _i++) { - octet = octets[_i]; - if (!((0 <= octet && octet <= 255))) { - throw new Error("ipaddr: ipv4 octet is a byte"); - } - } - this.octets = octets; - } - - IPv4.prototype.kind = function() { - return 'ipv4'; - }; - - IPv4.prototype.toString = function() { - return this.octets.join("."); - }; - - IPv4.prototype.toByteArray = function() { - return this.octets.slice(0); - }; - - IPv4.prototype.match = function(other, cidrRange) { - if (other.kind() !== 'ipv4') { - throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); - } - return matchCIDR(this.octets, other.octets, 8, cidrRange); - }; - - IPv4.prototype.SpecialRanges = { - broadcast: [[new IPv4([255, 255, 255, 255]), 32]], - multicast: [[new IPv4([224, 0, 0, 0]), 4]], - linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], - loopback: [[new IPv4([127, 0, 0, 0]), 8]], - "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], - reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] - }; - - IPv4.prototype.range = function() { - return ipaddr.subnetMatch(this, this.SpecialRanges); - }; - - IPv4.prototype.toIPv4MappedAddress = function() { - return ipaddr.IPv6.parse("::ffff:" + (this.toString())); - }; - - return IPv4; - - })(); - - ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; - - ipv4Regexes = { - fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", 'i'), - longValue: new RegExp("^" + ipv4Part + "$", 'i') - }; - - ipaddr.IPv4.parser = function(string) { - var match, parseIntAuto, part, shift, value; - parseIntAuto = function(string) { - if (string[0] === "0" && string[1] !== "x") { - return parseInt(string, 8); - } else { - return parseInt(string); - } - }; - if (match = string.match(ipv4Regexes.fourOctet)) { - return (function() { - var _i, _len, _ref, _results; - _ref = match.slice(1, 6); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - part = _ref[_i]; - _results.push(parseIntAuto(part)); - } - return _results; - })(); - } else if (match = string.match(ipv4Regexes.longValue)) { - value = parseIntAuto(match[1]); - if (value > 0xffffffff || value < 0) { - throw new Error("ipaddr: address outside defined range"); - } - return ((function() { - var _i, _results; - _results = []; - for (shift = _i = 0; _i <= 24; shift = _i += 8) { - _results.push((value >> shift) & 0xff); - } - return _results; - })()).reverse(); - } else { - return null; - } - }; - - ipaddr.IPv6 = (function() { - function IPv6(parts) { - var part, _i, _len; - if (parts.length !== 8) { - throw new Error("ipaddr: ipv6 part count should be 8"); - } - for (_i = 0, _len = parts.length; _i < _len; _i++) { - part = parts[_i]; - if (!((0 <= part && part <= 0xffff))) { - throw new Error("ipaddr: ipv6 part should fit to two octets"); - } - } - this.parts = parts; - } - - IPv6.prototype.kind = function() { - return 'ipv6'; - }; - - IPv6.prototype.toString = function() { - var compactStringParts, part, pushPart, state, stringParts, _i, _len; - stringParts = (function() { - var _i, _len, _ref, _results; - _ref = this.parts; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - part = _ref[_i]; - _results.push(part.toString(16)); - } - return _results; - }).call(this); - compactStringParts = []; - pushPart = function(part) { - return compactStringParts.push(part); - }; - state = 0; - for (_i = 0, _len = stringParts.length; _i < _len; _i++) { - part = stringParts[_i]; - switch (state) { - case 0: - if (part === '0') { - pushPart(''); - } else { - pushPart(part); - } - state = 1; - break; - case 1: - if (part === '0') { - state = 2; - } else { - pushPart(part); - } - break; - case 2: - if (part !== '0') { - pushPart(''); - pushPart(part); - state = 3; - } - break; - case 3: - pushPart(part); - } - } - if (state === 2) { - pushPart(''); - pushPart(''); - } - return compactStringParts.join(":"); - }; - - IPv6.prototype.toByteArray = function() { - var bytes, part, _i, _len, _ref; - bytes = []; - _ref = this.parts; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - part = _ref[_i]; - bytes.push(part >> 8); - bytes.push(part & 0xff); - } - return bytes; - }; - - IPv6.prototype.toNormalizedString = function() { - var part; - return ((function() { - var _i, _len, _ref, _results; - _ref = this.parts; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - part = _ref[_i]; - _results.push(part.toString(16)); - } - return _results; - }).call(this)).join(":"); - }; - - IPv6.prototype.match = function(other, cidrRange) { - if (other.kind() !== 'ipv6') { - throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); - } - return matchCIDR(this.parts, other.parts, 16, cidrRange); - }; - - IPv6.prototype.SpecialRanges = { - unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], - linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10], - multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8], - loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], - uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7], - ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96], - rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96], - rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96], - '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16], - teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32], - reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]] - }; - - IPv6.prototype.range = function() { - return ipaddr.subnetMatch(this, this.SpecialRanges); - }; - - IPv6.prototype.isIPv4MappedAddress = function() { - return this.range() === 'ipv4Mapped'; - }; - - IPv6.prototype.toIPv4Address = function() { - var high, low, _ref; - if (!this.isIPv4MappedAddress()) { - throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); - } - _ref = this.parts.slice(-2), high = _ref[0], low = _ref[1]; - return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]); - }; - - return IPv6; - - })(); - - ipv6Part = "(?:[0-9a-f]+::?)+"; - - ipv6Regexes = { - "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?$", 'i'), - transitional: new RegExp(("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)") + ("" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$"), 'i') - }; - - expandIPv6 = function(string, parts) { - var colonCount, lastColon, part, replacement, replacementCount; - if (string.indexOf('::') !== string.lastIndexOf('::')) { - return null; - } - colonCount = 0; - lastColon = -1; - while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) { - colonCount++; - } - if (string[0] === ':') { - colonCount--; - } - if (string[string.length - 1] === ':') { - colonCount--; - } - replacementCount = parts - colonCount; - replacement = ':'; - while (replacementCount--) { - replacement += '0:'; - } - string = string.replace('::', replacement); - if (string[0] === ':') { - string = string.slice(1); - } - if (string[string.length - 1] === ':') { - string = string.slice(0, -1); - } - return (function() { - var _i, _len, _ref, _results; - _ref = string.split(":"); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - part = _ref[_i]; - _results.push(parseInt(part, 16)); - } - return _results; - })(); - }; - - ipaddr.IPv6.parser = function(string) { - var match, parts; - if (string.match(ipv6Regexes['native'])) { - return expandIPv6(string, 8); - } else if (match = string.match(ipv6Regexes['transitional'])) { - parts = expandIPv6(match[1].slice(0, -1), 6); - if (parts) { - parts.push(parseInt(match[2]) << 8 | parseInt(match[3])); - parts.push(parseInt(match[4]) << 8 | parseInt(match[5])); - return parts; - } - } - return null; - }; - - ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) { - return this.parser(string) !== null; - }; - - ipaddr.IPv4.isValid = ipaddr.IPv6.isValid = function(string) { - var e; - try { - new this(this.parser(string)); - return true; - } catch (_error) { - e = _error; - return false; - } - }; - - ipaddr.IPv4.parse = ipaddr.IPv6.parse = function(string) { - var parts; - parts = this.parser(string); - if (parts === null) { - throw new Error("ipaddr: string is not formatted like ip address"); - } - return new this(parts); - }; - - ipaddr.isValid = function(string) { - return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string); - }; - - ipaddr.parse = function(string) { - if (ipaddr.IPv6.isValid(string)) { - return ipaddr.IPv6.parse(string); - } else if (ipaddr.IPv4.isValid(string)) { - return ipaddr.IPv4.parse(string); - } else { - throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); - } - }; - - ipaddr.process = function(string) { - var addr; - addr = this.parse(string); - if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) { - return addr.toIPv4Address(); - } else { - return addr; - } - }; - -}).call(this); diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json deleted file mode 100644 index 45bc5bf..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "ipaddr.js", - "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.", - "version": "0.1.5", - "author": { - "name": "Peter Zotov", - "email": "whitequark@whitequark.org" - }, - "directories": { - "lib": "./lib" - }, - "dependencies": {}, - "devDependencies": { - "coffee-script": "~1.6", - "nodeunit": "~0.5.3", - "uglify-js": "latest" - }, - "scripts": { - "test": "cake build test" - }, - "keywords": [ - "ip", - "ipv4", - "ipv6" - ], - "repository": { - "type": "git", - "url": "git://github.com/whitequark/ipaddr.js" - }, - "main": "./lib/ipaddr", - "engines": { - "node": ">= 0.2.5" - }, - "gitHead": "5914ebd176f5333977f68ce372cc247f13de2a35", - "bugs": { - "url": "https://github.com/whitequark/ipaddr.js/issues" - }, - "_id": "ipaddr.js@0.1.5", - "_shasum": "33d2693c95fbd4715165328dbfe25fb4fb5bbed8", - "_from": "ipaddr.js@0.1.5", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "whitequark", - "email": "whitequark@whitequark.org" - }, - "maintainers": [ - { - "name": "whitequark", - "email": "whitequark@whitequark.org" - } - ], - "dist": { - "shasum": "33d2693c95fbd4715165328dbfe25fb4fb5bbed8", - "tarball": "http://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.5.tgz" - }, - "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.5.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/whitequark/ipaddr.js" -} diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee deleted file mode 100644 index 2a26833..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee +++ /dev/null @@ -1,346 +0,0 @@ -# Define the main object -ipaddr = {} - -root = this - -# Export for both the CommonJS and browser-like environment -if module? && module.exports - module.exports = ipaddr -else - root['ipaddr'] = ipaddr - -# A generic CIDR (Classless Inter-Domain Routing) RFC1518 range matcher. -matchCIDR = (first, second, partSize, cidrBits) -> - if first.length != second.length - throw new Error "ipaddr: cannot match CIDR for objects with different lengths" - - part = 0 - while cidrBits > 0 - shift = partSize - cidrBits - shift = 0 if shift < 0 - - if first[part] >> shift != second[part] >> shift - return false - - cidrBits -= partSize - part += 1 - - return true - -# An utility function to ease named range matching. See examples below. -ipaddr.subnetMatch = (address, rangeList, defaultName='unicast') -> - for rangeName, rangeSubnets of rangeList - # ECMA5 Array.isArray isn't available everywhere - if toString.call(rangeSubnets[0]) != '[object Array]' - rangeSubnets = [ rangeSubnets ] - - for subnet in rangeSubnets - return rangeName if address.match.apply(address, subnet) - - return defaultName - -# An IPv4 address (RFC791). -class ipaddr.IPv4 - # Constructs a new IPv4 address from an array of four octets. - # Verifies the input. - constructor: (octets) -> - if octets.length != 4 - throw new Error "ipaddr: ipv4 octet count should be 4" - - for octet in octets - if !(0 <= octet <= 255) - throw new Error "ipaddr: ipv4 octet is a byte" - - @octets = octets - - # The 'kind' method exists on both IPv4 and IPv6 classes. - kind: -> - return 'ipv4' - - # Returns the address in convenient, decimal-dotted format. - toString: -> - return @octets.join "." - - # Returns an array of byte-sized values in network order - toByteArray: -> - return @octets.slice(0) # octets.clone - - # Checks if this address matches other one within given CIDR range. - match: (other, cidrRange) -> - if other.kind() != 'ipv4' - throw new Error "ipaddr: cannot match ipv4 address with non-ipv4 one" - - return matchCIDR(this.octets, other.octets, 8, cidrRange) - - # Special IPv4 address ranges. - SpecialRanges: - broadcast: [ - [ new IPv4([255, 255, 255, 255]), 32 ] - ] - multicast: [ # RFC3171 - [ new IPv4([224, 0, 0, 0]), 4 ] - ] - linkLocal: [ # RFC3927 - [ new IPv4([169, 254, 0, 0]), 16 ] - ] - loopback: [ # RFC5735 - [ new IPv4([127, 0, 0, 0]), 8 ] - ] - private: [ # RFC1918 - [ new IPv4([10, 0, 0, 0]), 8 ] - [ new IPv4([172, 16, 0, 0]), 12 ] - [ new IPv4([192, 168, 0, 0]), 16 ] - ] - reserved: [ # Reserved and testing-only ranges; RFCs 5735, 5737, 2544, 1700 - [ new IPv4([192, 0, 0, 0]), 24 ] - [ new IPv4([192, 0, 2, 0]), 24 ] - [ new IPv4([192, 88, 99, 0]), 24 ] - [ new IPv4([198, 51, 100, 0]), 24 ] - [ new IPv4([203, 0, 113, 0]), 24 ] - [ new IPv4([240, 0, 0, 0]), 4 ] - ] - - # Checks if the address corresponds to one of the special ranges. - range: -> - return ipaddr.subnetMatch(this, @SpecialRanges) - - # Convrets this IPv4 address to an IPv4-mapped IPv6 address. - toIPv4MappedAddress: -> - return ipaddr.IPv6.parse "::ffff:#{@toString()}" - -# A list of regular expressions that match arbitrary IPv4 addresses, -# for which a number of weird notations exist. -# Note that an address like 0010.0xa5.1.1 is considered legal. -ipv4Part = "(0?\\d+|0x[a-f0-9]+)" -ipv4Regexes = - fourOctet: new RegExp "^#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}$", 'i' - longValue: new RegExp "^#{ipv4Part}$", 'i' - -# Classful variants (like a.b, where a is an octet, and b is a 24-bit -# value representing last three octets; this corresponds to a class C -# address) are omitted due to classless nature of modern Internet. -ipaddr.IPv4.parser = (string) -> - parseIntAuto = (string) -> - if string[0] == "0" && string[1] != "x" - parseInt(string, 8) - else - parseInt(string) - - # parseInt recognizes all that octal & hexadecimal weirdness for us - if match = string.match(ipv4Regexes.fourOctet) - return (parseIntAuto(part) for part in match[1..5]) - else if match = string.match(ipv4Regexes.longValue) - value = parseIntAuto(match[1]) - if value > 0xffffffff || value < 0 - throw new Error "ipaddr: address outside defined range" - return ((value >> shift) & 0xff for shift in [0..24] by 8).reverse() - else - return null - -# An IPv6 address (RFC2460) -class ipaddr.IPv6 - # Constructs an IPv6 address from an array of eight 16-bit parts. - # Throws an error if the input is invalid. - constructor: (parts) -> - if parts.length != 8 - throw new Error "ipaddr: ipv6 part count should be 8" - - for part in parts - if !(0 <= part <= 0xffff) - throw new Error "ipaddr: ipv6 part should fit to two octets" - - @parts = parts - - # The 'kind' method exists on both IPv4 and IPv6 classes. - kind: -> - return 'ipv6' - - # Returns the address in compact, human-readable format like - # 2001:db8:8:66::1 - toString: -> - stringParts = (part.toString(16) for part in @parts) - - compactStringParts = [] - pushPart = (part) -> compactStringParts.push part - - state = 0 - for part in stringParts - switch state - when 0 - if part == '0' - pushPart('') - else - pushPart(part) - - state = 1 - when 1 - if part == '0' - state = 2 - else - pushPart(part) - when 2 - unless part == '0' - pushPart('') - pushPart(part) - state = 3 - when 3 - pushPart(part) - - if state == 2 - pushPart('') - pushPart('') - - return compactStringParts.join ":" - - # Returns an array of byte-sized values in network order - toByteArray: -> - bytes = [] - for part in @parts - bytes.push(part >> 8) - bytes.push(part & 0xff) - - return bytes - - # Returns the address in expanded format with all zeroes included, like - # 2001:db8:8:66:0:0:0:1 - toNormalizedString: -> - return (part.toString(16) for part in @parts).join ":" - - # Checks if this address matches other one within given CIDR range. - match: (other, cidrRange) -> - if other.kind() != 'ipv6' - throw new Error "ipaddr: cannot match ipv6 address with non-ipv6 one" - - return matchCIDR(this.parts, other.parts, 16, cidrRange) - - # Special IPv6 ranges - SpecialRanges: - unspecified: [ new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128 ] # RFC4291, here and after - linkLocal: [ new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10 ] - multicast: [ new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8 ] - loopback: [ new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128 ] - uniqueLocal: [ new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7 ] - ipv4Mapped: [ new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96 ] - rfc6145: [ new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96 ] # RFC6145 - rfc6052: [ new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96 ] # RFC6052 - '6to4': [ new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16 ] # RFC3056 - teredo: [ new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32 ] # RFC6052, RFC6146 - reserved: [ - [ new IPv6([ 0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32 ] # RFC4291 - ] - - # Checks if the address corresponds to one of the special ranges. - range: -> - return ipaddr.subnetMatch(this, @SpecialRanges) - - # Checks if this address is an IPv4-mapped IPv6 address. - isIPv4MappedAddress: -> - return @range() == 'ipv4Mapped' - - # Converts this address to IPv4 address if it is an IPv4-mapped IPv6 address. - # Throws an error otherwise. - toIPv4Address: -> - unless @isIPv4MappedAddress() - throw new Error "ipaddr: trying to convert a generic ipv6 address to ipv4" - - [high, low] = @parts[-2..-1] - - return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]) - -# IPv6-matching regular expressions. -# For IPv6, the task is simpler: it is enough to match the colon-delimited -# hexadecimal IPv6 and a transitional variant with dotted-decimal IPv4 at -# the end. -ipv6Part = "(?:[0-9a-f]+::?)+" -ipv6Regexes = - native: new RegExp "^(::)?(#{ipv6Part})?([0-9a-f]+)?(::)?$", 'i' - transitional: new RegExp "^((?:#{ipv6Part})|(?:::)(?:#{ipv6Part})?)" + - "#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}$", 'i' - -# Expand :: in an IPv6 address or address part consisting of `parts` groups. -expandIPv6 = (string, parts) -> - # More than one '::' means invalid adddress - if string.indexOf('::') != string.lastIndexOf('::') - return null - - # How many parts do we already have? - colonCount = 0 - lastColon = -1 - while (lastColon = string.indexOf(':', lastColon + 1)) >= 0 - colonCount++ - - # 0::0 is two parts more than :: - colonCount-- if string[0] == ':' - colonCount-- if string[string.length-1] == ':' - - # replacement = ':' + '0:' * (parts - colonCount) - replacementCount = parts - colonCount - replacement = ':' - while replacementCount-- - replacement += '0:' - - # Insert the missing zeroes - string = string.replace('::', replacement) - - # Trim any garbage which may be hanging around if :: was at the edge in - # the source string - string = string[1..-1] if string[0] == ':' - string = string[0..-2] if string[string.length-1] == ':' - - return (parseInt(part, 16) for part in string.split(":")) - -# Parse an IPv6 address. -ipaddr.IPv6.parser = (string) -> - if string.match(ipv6Regexes['native']) - return expandIPv6(string, 8) - - else if match = string.match(ipv6Regexes['transitional']) - parts = expandIPv6(match[1][0..-2], 6) - if parts - parts.push(parseInt(match[2]) << 8 | parseInt(match[3])) - parts.push(parseInt(match[4]) << 8 | parseInt(match[5])) - return parts - - return null - -# Checks if a given string is formatted like IPv4/IPv6 address. -ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = (string) -> - return @parser(string) != null - -# Checks if a given string is a valid IPv4/IPv6 address. -ipaddr.IPv4.isValid = ipaddr.IPv6.isValid = (string) -> - try - new this(@parser(string)) - return true - catch e - return false - -# Tries to parse and validate a string with IPv4/IPv6 address. -# Throws an error if it fails. -ipaddr.IPv4.parse = ipaddr.IPv6.parse = (string) -> - parts = @parser(string) - if parts == null - throw new Error "ipaddr: string is not formatted like ip address" - - return new this(parts) - -# Checks if the address is valid IP address -ipaddr.isValid = (string) -> - return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string) - -# Try to parse an address and throw an error if it is impossible -ipaddr.parse = (string) -> - if ipaddr.IPv6.isValid(string) - return ipaddr.IPv6.parse(string) - else if ipaddr.IPv4.isValid(string) - return ipaddr.IPv4.parse(string) - else - throw new Error "ipaddr: the address has neither IPv6 nor IPv4 format" - -# Parse an address and return plain IPv4 address if it is an IPv4-mapped address -ipaddr.process = (string) -> - addr = @parse(string) - if addr.kind() == 'ipv6' && addr.isIPv4MappedAddress() - return addr.toIPv4Address() - else - return addr diff --git a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee deleted file mode 100644 index a06836a..0000000 --- a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee +++ /dev/null @@ -1,220 +0,0 @@ -ipaddr = require '../lib/ipaddr' - -module.exports = - 'should define main classes': (test) -> - test.ok(ipaddr.IPv4?, 'defines IPv4 class') - test.ok(ipaddr.IPv6?, 'defines IPv6 class') - test.done() - - 'can construct IPv4 from octets': (test) -> - test.doesNotThrow -> - new ipaddr.IPv4([192, 168, 1, 2]) - test.done() - - 'refuses to construct invalid IPv4': (test) -> - test.throws -> - new ipaddr.IPv4([300, 1, 2, 3]) - test.throws -> - new ipaddr.IPv4([8, 8, 8]) - test.done() - - 'converts IPv4 to string correctly': (test) -> - addr = new ipaddr.IPv4([192, 168, 1, 1]) - test.equal(addr.toString(), '192.168.1.1') - test.done() - - 'returns correct kind for IPv4': (test) -> - addr = new ipaddr.IPv4([1, 2, 3, 4]) - test.equal(addr.kind(), 'ipv4') - test.done() - - 'allows to access IPv4 octets': (test) -> - addr = new ipaddr.IPv4([42, 0, 0, 0]) - test.equal(addr.octets[0], 42) - test.done() - - 'checks IPv4 address format': (test) -> - test.equal(ipaddr.IPv4.isIPv4('192.168.007.0xa'), true) - test.equal(ipaddr.IPv4.isIPv4('1024.0.0.1'), true) - test.equal(ipaddr.IPv4.isIPv4('8.0xa.wtf.6'), false) - test.done() - - 'validates IPv4 addresses': (test) -> - test.equal(ipaddr.IPv4.isValid('192.168.007.0xa'), true) - test.equal(ipaddr.IPv4.isValid('1024.0.0.1'), false) - test.equal(ipaddr.IPv4.isValid('8.0xa.wtf.6'), false) - test.done() - - 'parses IPv4 in several weird formats': (test) -> - test.deepEqual(ipaddr.IPv4.parse('192.168.1.1').octets, [192, 168, 1, 1]) - test.deepEqual(ipaddr.IPv4.parse('0xc0.168.1.1').octets, [192, 168, 1, 1]) - test.deepEqual(ipaddr.IPv4.parse('192.0250.1.1').octets, [192, 168, 1, 1]) - test.deepEqual(ipaddr.IPv4.parse('0xc0a80101').octets, [192, 168, 1, 1]) - test.deepEqual(ipaddr.IPv4.parse('030052000401').octets, [192, 168, 1, 1]) - test.deepEqual(ipaddr.IPv4.parse('3232235777').octets, [192, 168, 1, 1]) - test.done() - - 'barfs at invalid IPv4': (test) -> - test.throws -> - ipaddr.IPv4.parse('10.0.0.wtf') - test.done() - - 'matches IPv4 CIDR correctly': (test) -> - addr = new ipaddr.IPv4([10, 5, 0, 1]) - test.equal(addr.match(ipaddr.IPv4.parse('0.0.0.0'), 0), true) - test.equal(addr.match(ipaddr.IPv4.parse('11.0.0.0'), 8), false) - test.equal(addr.match(ipaddr.IPv4.parse('10.0.0.0'), 8), true) - test.equal(addr.match(ipaddr.IPv4.parse('10.0.0.1'), 8), true) - test.equal(addr.match(ipaddr.IPv4.parse('10.0.0.10'), 8), true) - test.equal(addr.match(ipaddr.IPv4.parse('10.5.5.0'), 16), true) - test.equal(addr.match(ipaddr.IPv4.parse('10.4.5.0'), 16), false) - test.equal(addr.match(ipaddr.IPv4.parse('10.4.5.0'), 15), true) - test.equal(addr.match(ipaddr.IPv4.parse('10.5.0.2'), 32), false) - test.equal(addr.match(addr, 32), true) - test.done() - - 'detects reserved IPv4 networks': (test) -> - test.equal(ipaddr.IPv4.parse('10.1.0.1').range(), 'private') - test.equal(ipaddr.IPv4.parse('192.168.2.1').range(), 'private') - test.equal(ipaddr.IPv4.parse('224.100.0.1').range(), 'multicast') - test.equal(ipaddr.IPv4.parse('169.254.15.0').range(), 'linkLocal') - test.equal(ipaddr.IPv4.parse('127.1.1.1').range(), 'loopback') - test.equal(ipaddr.IPv4.parse('255.255.255.255').range(), 'broadcast') - test.equal(ipaddr.IPv4.parse('240.1.2.3').range(), 'reserved') - test.equal(ipaddr.IPv4.parse('8.8.8.8').range(), 'unicast') - test.done() - - 'can construct IPv6 from parts': (test) -> - test.doesNotThrow -> - new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1]) - test.done() - - 'refuses to construct invalid IPv6': (test) -> - test.throws -> - new ipaddr.IPv6([0xfffff, 0, 0, 0, 0, 0, 0, 1]) - test.throws -> - new ipaddr.IPv6([0xfffff, 0, 0, 0, 0, 0, 1]) - test.done() - - 'converts IPv6 to string correctly': (test) -> - addr = new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1]) - test.equal(addr.toNormalizedString(), '2001:db8:f53a:0:0:0:0:1') - test.equal(addr.toString(), '2001:db8:f53a::1') - test.equal(new ipaddr.IPv6([0, 0, 0, 0, 0, 0, 0, 1]).toString(), '::1') - test.equal(new ipaddr.IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]).toString(), '2001:db8::') - test.done() - - 'returns correct kind for IPv6': (test) -> - addr = new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1]) - test.equal(addr.kind(), 'ipv6') - test.done() - - 'allows to access IPv6 address parts': (test) -> - addr = new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 42, 0, 1]) - test.equal(addr.parts[5], 42) - test.done() - - 'checks IPv6 address format': (test) -> - test.equal(ipaddr.IPv6.isIPv6('2001:db8:F53A::1'), true) - test.equal(ipaddr.IPv6.isIPv6('200001::1'), true) - test.equal(ipaddr.IPv6.isIPv6('::ffff:192.168.1.1'), true) - test.equal(ipaddr.IPv6.isIPv6('::ffff:300.168.1.1'), true) - test.equal(ipaddr.IPv6.isIPv6('::ffff:300.168.1.1:0'), false) - test.equal(ipaddr.IPv6.isIPv6('fe80::wtf'), false) - test.done() - - 'validates IPv6 addresses': (test) -> - test.equal(ipaddr.IPv6.isValid('2001:db8:F53A::1'), true) - test.equal(ipaddr.IPv6.isValid('200001::1'), false) - test.equal(ipaddr.IPv6.isValid('::ffff:192.168.1.1'), true) - test.equal(ipaddr.IPv6.isValid('::ffff:300.168.1.1'), false) - test.equal(ipaddr.IPv6.isValid('::ffff:300.168.1.1:0'), false) - test.equal(ipaddr.IPv6.isValid('2001:db8::F53A::1'), false) - test.equal(ipaddr.IPv6.isValid('fe80::wtf'), false) - test.done() - - 'parses IPv6 in different formats': (test) -> - test.deepEqual(ipaddr.IPv6.parse('2001:db8:F53A:0:0:0:0:1').parts, [0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1]) - test.deepEqual(ipaddr.IPv6.parse('fe80::10').parts, [0xfe80, 0, 0, 0, 0, 0, 0, 0x10]) - test.deepEqual(ipaddr.IPv6.parse('2001:db8:F53A::').parts, [0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 0]) - test.deepEqual(ipaddr.IPv6.parse('::1').parts, [0, 0, 0, 0, 0, 0, 0, 1]) - test.deepEqual(ipaddr.IPv6.parse('::').parts, [0, 0, 0, 0, 0, 0, 0, 0]) - test.done() - - 'barfs at invalid IPv6': (test) -> - test.throws -> - ipaddr.IPv6.parse('fe80::0::1') - test.done() - - 'matches IPv6 CIDR correctly': (test) -> - addr = ipaddr.IPv6.parse('2001:db8:f53a::1') - test.equal(addr.match(ipaddr.IPv6.parse('::'), 0), true) - test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f53a::1:1'), 64), true) - test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f53b::1:1'), 48), false) - test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f531::1:1'), 44), true) - test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f500::1'), 40), true) - test.equal(addr.match(ipaddr.IPv6.parse('2001:db9:f500::1'), 40), false) - test.equal(addr.match(addr, 128), true) - test.done() - - 'converts between IPv4-mapped IPv6 addresses and IPv4 addresses': (test) -> - addr = ipaddr.IPv4.parse('77.88.21.11') - mapped = addr.toIPv4MappedAddress() - test.deepEqual(mapped.parts, [0, 0, 0, 0, 0, 0xffff, 0x4d58, 0x150b]) - test.deepEqual(mapped.toIPv4Address().octets, addr.octets) - test.done() - - 'refuses to convert non-IPv4-mapped IPv6 address to IPv4 address': (test) -> - test.throws -> - ipaddr.IPv6.parse('2001:db8::1').toIPv4Address() - test.done() - - 'detects reserved IPv6 networks': (test) -> - test.equal(ipaddr.IPv6.parse('::').range(), 'unspecified') - test.equal(ipaddr.IPv6.parse('fe80::1234:5678:abcd:0123').range(), 'linkLocal') - test.equal(ipaddr.IPv6.parse('ff00::1234').range(), 'multicast') - test.equal(ipaddr.IPv6.parse('::1').range(), 'loopback') - test.equal(ipaddr.IPv6.parse('fc00::').range(), 'uniqueLocal') - test.equal(ipaddr.IPv6.parse('::ffff:192.168.1.10').range(), 'ipv4Mapped') - test.equal(ipaddr.IPv6.parse('::ffff:0:192.168.1.10').range(), 'rfc6145') - test.equal(ipaddr.IPv6.parse('64:ff9b::1234').range(), 'rfc6052') - test.equal(ipaddr.IPv6.parse('2002:1f63:45e8::1').range(), '6to4') - test.equal(ipaddr.IPv6.parse('2001::4242').range(), 'teredo') - test.equal(ipaddr.IPv6.parse('2001:db8::3210').range(), 'reserved') - test.equal(ipaddr.IPv6.parse('2001:470:8:66::1').range(), 'unicast') - test.done() - - 'is able to determine IP address type': (test) -> - test.equal(ipaddr.parse('8.8.8.8').kind(), 'ipv4') - test.equal(ipaddr.parse('2001:db8:3312::1').kind(), 'ipv6') - test.done() - - 'throws an error if tried to parse an invalid address': (test) -> - test.throws -> - ipaddr.parse('::some.nonsense') - test.done() - - 'correctly processes IPv4-mapped addresses': (test) -> - test.equal(ipaddr.process('8.8.8.8').kind(), 'ipv4') - test.equal(ipaddr.process('2001:db8:3312::1').kind(), 'ipv6') - test.equal(ipaddr.process('::ffff:192.168.1.1').kind(), 'ipv4') - test.done() - - 'correctly converts IPv6 and IPv4 addresses to byte arrays': (test) -> - test.deepEqual(ipaddr.parse('1.2.3.4').toByteArray(), - [0x1, 0x2, 0x3, 0x4]); - # Fuck yeah. The first byte of Google's IPv6 address is 42. 42! - test.deepEqual(ipaddr.parse('2a00:1450:8007::68').toByteArray(), - [42, 0x00, 0x14, 0x50, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68 ]) - test.done() - - 'correctly parses 1 as an IPv4 address': (test) -> - test.equal(ipaddr.IPv6.isValid('1'), false) - test.equal(ipaddr.IPv4.isValid('1'), true) - test.deepEqual(new ipaddr.IPv4([0, 0, 0, 1]), ipaddr.parse('1')) - test.done() - - 'does not consider a very large or very small number a valid IP address': (test) -> - test.equal(ipaddr.isValid('4999999999'), false) - test.equal(ipaddr.isValid('-1'), false) - test.done() diff --git a/node_modules/express/node_modules/proxy-addr/package.json b/node_modules/express/node_modules/proxy-addr/package.json deleted file mode 100644 index 39a9aa6..0000000 --- a/node_modules/express/node_modules/proxy-addr/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "name": "proxy-addr", - "description": "Determine address of proxied request", - "version": "1.0.4", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "keywords": [ - "ip", - "proxy", - "x-forwarded-for" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/proxy-addr" - }, - "dependencies": { - "forwarded": "~0.1.0", - "ipaddr.js": "0.1.5" - }, - "devDependencies": { - "benchmark": "1.0.0", - "beautify-benchmark": "0.2.4", - "istanbul": "0.3.2", - "mocha": "~1.21.5" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "bench": "node benchmark/index.js", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "f72c40adfeeb81fa905f017030d2ecd1cd4d1821", - "bugs": { - "url": "https://github.com/jshttp/proxy-addr/issues" - }, - "homepage": "https://github.com/jshttp/proxy-addr", - "_id": "proxy-addr@1.0.4", - "_shasum": "51dbebbb22cc0eb04b77a76d871b75970f198cdd", - "_from": "proxy-addr@>=1.0.4 <1.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - } - ], - "dist": { - "shasum": "51dbebbb22cc0eb04b77a76d871b75970f198cdd", - "tarball": "http://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/qs/.jshintignore b/node_modules/express/node_modules/qs/.jshintignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/express/node_modules/qs/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/express/node_modules/qs/.jshintrc b/node_modules/express/node_modules/qs/.jshintrc deleted file mode 100644 index 997b3f7..0000000 --- a/node_modules/express/node_modules/qs/.jshintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "node": true, - - "curly": true, - "latedef": true, - "quotmark": true, - "undef": true, - "unused": true, - "trailing": true -} diff --git a/node_modules/express/node_modules/qs/.npmignore b/node_modules/express/node_modules/qs/.npmignore deleted file mode 100644 index 7e1574d..0000000 --- a/node_modules/express/node_modules/qs/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md diff --git a/node_modules/express/node_modules/qs/.travis.yml b/node_modules/express/node_modules/qs/.travis.yml deleted file mode 100644 index c891dd0..0000000 --- a/node_modules/express/node_modules/qs/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js - -node_js: - - 0.10 \ No newline at end of file diff --git a/node_modules/express/node_modules/qs/CHANGELOG.md b/node_modules/express/node_modules/qs/CHANGELOG.md deleted file mode 100644 index f5ee8b4..0000000 --- a/node_modules/express/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,68 +0,0 @@ - -## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=open) -- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index - diff --git a/node_modules/express/node_modules/qs/CONTRIBUTING.md b/node_modules/express/node_modules/qs/CONTRIBUTING.md deleted file mode 100644 index 8928361..0000000 --- a/node_modules/express/node_modules/qs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md). diff --git a/node_modules/express/node_modules/qs/LICENSE b/node_modules/express/node_modules/qs/LICENSE deleted file mode 100755 index d456948..0000000 --- a/node_modules/express/node_modules/qs/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014 Nathan LaFreniere and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/node_modules/express/node_modules/qs/Makefile b/node_modules/express/node_modules/qs/Makefile deleted file mode 100644 index 31cc899..0000000 --- a/node_modules/express/node_modules/qs/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -test: - @node node_modules/lab/bin/lab -a code -L -test-cov: - @node node_modules/lab/bin/lab -a code -t 100 -L -test-cov-html: - @node node_modules/lab/bin/lab -a code -L -r html -o coverage.html - -.PHONY: test test-cov test-cov-html diff --git a/node_modules/express/node_modules/qs/README.md b/node_modules/express/node_modules/qs/README.md deleted file mode 100755 index 21bf3fa..0000000 --- a/node_modules/express/node_modules/qs/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# qs - -A querystring parsing and stringifying library with some added security. - -[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs) - -Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var Qs = require('qs'); - -var obj = Qs.parse('a=c'); // { a: 'c' } -var str = Qs.stringify(obj); // 'a=c' -``` - -### Parsing Objects - -```javascript -Qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -{ - foo: { - bar: 'baz' - } -} -``` - -URI encoded strings work too: - -```javascript -Qs.parse('a%5Bb%5D=c'); -// { a: { b: 'c' } } -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -{ - foo: { - bar: { - baz: 'foobarbaz' - } - } -} -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -{ - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -} -``` - -This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`: - -```javascript -Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } } -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -Qs.parse('a=b&c=d', { parameterLimit: 1 }); -// { a: 'b' } -``` - -An optional delimiter can also be passed: - -```javascript -Qs.parse('a=b;c=d', { delimiter: ';' }); -// { a: 'b', c: 'd' } -``` - -Delimiters can be a regular expression too: - -```javascript -Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -// { a: 'b', c: 'd', e: 'f' } -``` - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -Qs.parse('a[]=b&a[]=c'); -// { a: ['b', 'c'] } -``` - -You may specify an index as well: - -```javascript -Qs.parse('a[1]=c&a[0]=b'); -// { a: ['b', 'c'] } -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: - -```javascript -Qs.parse('a[1]=b&a[15]=c'); -// { a: ['b', 'c'] } -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -Qs.parse('a[]=&a[]=b'); -// { a: ['', 'b'] } -Qs.parse('a[0]=b&a[1]=&a[2]=c'); -// { a: ['b', '', 'c'] } -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key: - -```javascript -Qs.parse('a[100]=b'); -// { a: { '100': 'b' } } -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -Qs.parse('a[1]=b', { arrayLimit: 0 }); -// { a: { '1': 'b' } } -``` - -To disable array parsing entirely, set `arrayLimit` to `-1`. - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -Qs.parse('a[0]=b&a[b]=c'); -// { a: { '0': 'b', b: 'c' } } -``` - -You can also create arrays of objects: - -```javascript -Qs.parse('a[][b]=c'); -// { a: [{ b: 'c' }] } -``` - -### Stringifying - -```javascript -Qs.stringify(object, [options]); -``` - -When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect: - -```javascript -Qs.stringify({ a: 'b' }); -// 'a=b' -Qs.stringify({ a: { b: 'c' } }); -// 'a%5Bb%5D=c' -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, by default they are given explicit indices: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -Qs.stringify({ a: '' }); -// 'a=' -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -Qs.stringify({ a: null, b: undefined }); -// 'a=' -``` - -The delimiter may be overridden with stringify as well: - -```javascript -Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }); -// 'a=b;c=d' -``` diff --git a/node_modules/express/node_modules/qs/index.js b/node_modules/express/node_modules/qs/index.js deleted file mode 100644 index 2291cd8..0000000 --- a/node_modules/express/node_modules/qs/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/'); diff --git a/node_modules/express/node_modules/qs/lib/index.js b/node_modules/express/node_modules/qs/lib/index.js deleted file mode 100755 index 0e09493..0000000 --- a/node_modules/express/node_modules/qs/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Load modules - -var Stringify = require('./stringify'); -var Parse = require('./parse'); - - -// Declare internals - -var internals = {}; - - -module.exports = { - stringify: Stringify, - parse: Parse -}; diff --git a/node_modules/express/node_modules/qs/lib/parse.js b/node_modules/express/node_modules/qs/lib/parse.js deleted file mode 100755 index 4e7d02a..0000000 --- a/node_modules/express/node_modules/qs/lib/parse.js +++ /dev/null @@ -1,157 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - depth: 5, - arrayLimit: 20, - parameterLimit: 1000 -}; - - -internals.parseValues = function (str, options) { - - var obj = {}; - var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit); - - for (var i = 0, il = parts.length; i < il; ++i) { - var part = parts[i]; - var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1; - - if (pos === -1) { - obj[Utils.decode(part)] = ''; - } - else { - var key = Utils.decode(part.slice(0, pos)); - var val = Utils.decode(part.slice(pos + 1)); - - if (!obj.hasOwnProperty(key)) { - obj[key] = val; - } - else { - obj[key] = [].concat(obj[key]).concat(val); - } - } - } - - return obj; -}; - - -internals.parseObject = function (chain, val, options) { - - if (!chain.length) { - return val; - } - - var root = chain.shift(); - - var obj = {}; - if (root === '[]') { - obj = []; - obj = obj.concat(internals.parseObject(chain, val, options)); - } - else { - var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root; - var index = parseInt(cleanRoot, 10); - var indexString = '' + index; - if (!isNaN(index) && - root !== cleanRoot && - indexString === cleanRoot && - index >= 0 && - index <= options.arrayLimit) { - - obj = []; - obj[index] = internals.parseObject(chain, val, options); - } - else { - obj[cleanRoot] = internals.parseObject(chain, val, options); - } - } - - return obj; -}; - - -internals.parseKeys = function (key, val, options) { - - if (!key) { - return; - } - - // The regex chunks - - var parent = /^([^\[\]]*)/; - var child = /(\[[^\[\]]*\])/g; - - // Get the parent - - var segment = parent.exec(key); - - // Don't allow them to overwrite object prototype properties - - if (Object.prototype.hasOwnProperty(segment[1])) { - return; - } - - // Stash the parent if it exists - - var keys = []; - if (segment[1]) { - keys.push(segment[1]); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - - ++i; - if (!Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) { - keys.push(segment[1]); - } - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return internals.parseObject(keys, val, options); -}; - - -module.exports = function (str, options) { - - if (str === '' || - str === null || - typeof str === 'undefined') { - - return {}; - } - - options = options || {}; - options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : internals.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit; - - var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str; - var obj = {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - var newObj = internals.parseKeys(key, tempObj[key], options); - obj = Utils.merge(obj, newObj); - } - - return Utils.compact(obj); -}; diff --git a/node_modules/express/node_modules/qs/lib/stringify.js b/node_modules/express/node_modules/qs/lib/stringify.js deleted file mode 100755 index b441104..0000000 --- a/node_modules/express/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,77 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - indices: true -}; - - -internals.stringify = function (obj, prefix, options) { - - if (Utils.isBuffer(obj)) { - obj = obj.toString(); - } - else if (obj instanceof Date) { - obj = obj.toISOString(); - } - else if (obj === null) { - obj = ''; - } - - if (typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean') { - - return [encodeURIComponent(prefix) + '=' + encodeURIComponent(obj)]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys = Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - if (!options.indices && - Array.isArray(obj)) { - - values = values.concat(internals.stringify(obj[key], prefix, options)); - } - else { - values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', options)); - } - } - - return values; -}; - - -module.exports = function (obj, options) { - - options = options || {}; - var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter; - options.indices = typeof options.indices === 'boolean' ? options.indices : internals.indices; - - var keys = []; - - if (typeof obj !== 'object' || - obj === null) { - - return ''; - } - - var objKeys = Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - keys = keys.concat(internals.stringify(obj[key], key, options)); - } - - return keys.join(delimiter); -}; diff --git a/node_modules/express/node_modules/qs/lib/utils.js b/node_modules/express/node_modules/qs/lib/utils.js deleted file mode 100755 index 5240bd5..0000000 --- a/node_modules/express/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,132 +0,0 @@ -// Load modules - - -// Declare internals - -var internals = {}; - - -exports.arrayToObject = function (source) { - - var obj = {}; - for (var i = 0, il = source.length; i < il; ++i) { - if (typeof source[i] !== 'undefined') { - - obj[i] = source[i]; - } - } - - return obj; -}; - - -exports.merge = function (target, source) { - - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } - else { - target[source] = true; - } - - return target; - } - - if (typeof target !== 'object') { - target = [target].concat(source); - return target; - } - - if (Array.isArray(target) && - !Array.isArray(source)) { - - target = exports.arrayToObject(target); - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - - if (!target[key]) { - target[key] = value; - } - else { - target[key] = exports.merge(target[key], value); - } - } - - return target; -}; - - -exports.decode = function (str) { - - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - - -exports.compact = function (obj, refs) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - refs = refs || []; - var lookup = refs.indexOf(obj); - if (lookup !== -1) { - return refs[lookup]; - } - - refs.push(obj); - - if (Array.isArray(obj)) { - var compacted = []; - - for (var i = 0, il = obj.length; i < il; ++i) { - if (typeof obj[i] !== 'undefined') { - compacted.push(obj[i]); - } - } - - return compacted; - } - - var keys = Object.keys(obj); - for (i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - obj[key] = exports.compact(obj[key], refs); - } - - return obj; -}; - - -exports.isRegExp = function (obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - - -exports.isBuffer = function (obj) { - - if (obj === null || - typeof obj === 'undefined') { - - return false; - } - - return !!(obj.constructor && - obj.constructor.isBuffer && - obj.constructor.isBuffer(obj)); -}; diff --git a/node_modules/express/node_modules/qs/package.json b/node_modules/express/node_modules/qs/package.json deleted file mode 100644 index 540b33e..0000000 --- a/node_modules/express/node_modules/qs/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "qs", - "version": "2.3.3", - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "homepage": "https://github.com/hapijs/qs", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "code": "1.x.x", - "lab": "5.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "repository": { - "type": "git", - "url": "https://github.com/hapijs/qs.git" - }, - "keywords": [ - "querystring", - "qs" - ], - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hapijs/qs/raw/master/LICENSE" - } - ], - "gitHead": "9250c4cda5102fcf72441445816e6d311fc6813d", - "bugs": { - "url": "https://github.com/hapijs/qs/issues" - }, - "_id": "qs@2.3.3", - "_shasum": "e9e85adbe75da0bbe4c8e0476a086290f863b404", - "_from": "qs@2.3.3", - "_npmVersion": "2.1.6", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - "maintainers": [ - { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - { - "name": "hueniverse", - "email": "eran@hueniverse.com" - } - ], - "dist": { - "shasum": "e9e85adbe75da0bbe4c8e0476a086290f863b404", - "tarball": "http://registry.npmjs.org/qs/-/qs-2.3.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz" -} diff --git a/node_modules/express/node_modules/qs/test/parse.js b/node_modules/express/node_modules/qs/test/parse.js deleted file mode 100755 index 6c20cc1..0000000 --- a/node_modules/express/node_modules/qs/test/parse.js +++ /dev/null @@ -1,413 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('parse()', function () { - - it('parses a simple string', function (done) { - - expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' }); - expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' }); - expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } }); - expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } }); - expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } }); - expect(Qs.parse('foo')).to.deep.equal({ foo: '' }); - expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' }); - expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' }); - expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' }); - expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' }); - expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' }); - expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({ - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - done(); - }); - - it('parses a single nested string', function (done) { - - expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } }); - done(); - }); - - it('parses a double nested string', function (done) { - - expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } }); - done(); - }); - - it('defaults to a depth of 5', function (done) { - - expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }); - done(); - }); - - it('only parses one level when depth = 1', function (done) { - - expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } }); - expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } }); - done(); - }); - - it('parses a simple array', function (done) { - - expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses an explicit array', function (done) { - - expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] }); - expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - done(); - }); - - it('parses a mix of simple and explicit arrays', function (done) { - - expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses a nested array', function (done) { - - expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } }); - expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } }); - done(); - }); - - it('allows to specify array indices', function (done) { - - expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] }); - done(); - }); - - it('limits specific array indices to 20', function (done) { - - expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] }); - expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } }); - done(); - }); - - it('supports keys that begin with a number', function (done) { - - expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } }); - done(); - }); - - it('supports encoded = signs', function (done) { - - expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' }); - done(); - }); - - it('is ok with url encoded strings', function (done) { - - expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } }); - expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } }); - done(); - }); - - it('allows brackets in the value', function (done) { - - expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' }); - expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' }); - done(); - }); - - it('allows empty values', function (done) { - - expect(Qs.parse('')).to.deep.equal({}); - expect(Qs.parse(null)).to.deep.equal({}); - expect(Qs.parse(undefined)).to.deep.equal({}); - done(); - }); - - it('transforms arrays to objects', function (done) { - - expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }); - expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]}); - done(); - }); - - it('can add keys to objects', function (done) { - - expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } }); - done(); - }); - - it('correctly prunes undefined values when converting an array to an object', function (done) { - - expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } }); - done(); - }); - - it('supports malformed uri characters', function (done) { - - expect(Qs.parse('{%:%}')).to.deep.equal({ '{%:%}': '' }); - expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' }); - done(); - }); - - it('doesn\'t produce empty keys', function (done) { - - expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' }); - done(); - }); - - it('cannot override prototypes', function (done) { - - var obj = Qs.parse('toString=bad&bad[toString]=bad&constructor=bad'); - expect(typeof obj.toString).to.equal('function'); - expect(typeof obj.bad.toString).to.equal('function'); - expect(typeof obj.constructor).to.equal('function'); - done(); - }); - - it('cannot access Object prototype', function (done) { - - Qs.parse('constructor[prototype][bad]=bad'); - Qs.parse('bad[constructor][prototype][bad]=bad'); - expect(typeof Object.prototype.bad).to.equal('undefined'); - done(); - }); - - it('parses arrays of objects', function (done) { - - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - done(); - }); - - it('allows for empty strings in arrays', function (done) { - - expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] }); - expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]=')).to.deep.equal({ a: ['b', '', 'c', ''] }); - expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] }); - done(); - }); - - it('compacts sparse arrays', function (done) { - - expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] }); - done(); - }); - - it('parses semi-parsed strings', function (done) { - - expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } }); - expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } }); - done(); - }); - - it('parses buffers correctly', function (done) { - - var b = new Buffer('test'); - expect(Qs.parse({ a: b })).to.deep.equal({ a: b }); - done(); - }); - - it('continues parsing when no parent is found', function (done) { - - expect(Qs.parse('[]&a=b')).to.deep.equal({ '0': '', a: 'b' }); - expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' }); - done(); - }); - - it('does not error when parsing a very long array', function (done) { - - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str += '&' + str; - } - - expect(function () { - - Qs.parse(str); - }).to.not.throw(); - - done(); - }); - - it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) { - - Object.prototype.crash = ''; - Array.prototype.crash = ''; - expect(Qs.parse.bind(null, 'a=b')).to.not.throw(); - expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' }); - expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw(); - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - delete Object.prototype.crash; - delete Array.prototype.crash; - done(); - }); - - it('parses a string with an alternative string delimiter', function (done) { - - expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('parses a string with an alternative RegExp delimiter', function (done) { - - expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not use non-splittable objects as delimiters', function (done) { - - expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding parameter limit', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' }); - done(); - }); - - it('allows setting the parameter limit to Infinity', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding array limit', function (done) { - - expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } }); - expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } }); - expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }); - done(); - }); - - it('parses an object', function (done) { - - var input = { - 'user[name]': {'pop[bob]': 3}, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': 3}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('parses an object and not child values', function (done) { - - var input = { - 'user[name]': {'pop[bob]': { 'test': 3 }}, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': { 'test': 3 }}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('does not blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = Qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; - expect(result).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not crash when using invalid dot notation', function (done) { - - expect(Qs.parse('roomInfoList[0].childrenAges[0]=15&roomInfoList[0].numberOfAdults=2')).to.deep.equal({ roomInfoList: [['15', '2']] }); - done(); - }); - - it('does not crash when parsing circular references', function (done) { - - var a = {}; - a.b = a; - - var parsed; - - expect(function () { - - parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }).to.not.throw(); - - expect(parsed).to.contain('foo'); - expect(parsed.foo).to.contain('bar', 'baz'); - expect(parsed.foo.bar).to.equal('baz'); - expect(parsed.foo.baz).to.deep.equal(a); - done(); - }); - - it('parses plain objects correctly', function (done) { - - var a = Object.create(null); - a.b = 'c'; - - expect(Qs.parse(a)).to.deep.equal({ b: 'c' }); - var result = Qs.parse({ a: a }); - expect(result).to.contain('a'); - expect(result.a).to.deep.equal(a); - done(); - }); - - it('parses dates correctly', function (done) { - - var now = new Date(); - expect(Qs.parse({ a: now })).to.deep.equal({ a: now }); - done(); - }); - - it('parses regular expressions correctly', function (done) { - - var re = /^test$/; - expect(Qs.parse({ a: re })).to.deep.equal({ a: re }); - done(); - }); -}); diff --git a/node_modules/express/node_modules/qs/test/stringify.js b/node_modules/express/node_modules/qs/test/stringify.js deleted file mode 100755 index 75e397a..0000000 --- a/node_modules/express/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,179 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('stringify()', function () { - - it('stringifies a querystring object', function (done) { - - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 })).to.equal('a=1'); - expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2'); - done(); - }); - - it('stringifies a nested object', function (done) { - - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - done(); - }); - - it('stringifies an array value', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d'); - done(); - }); - - it('omits array indices when asked', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d'); - done(); - }); - - it('stringifies a nested array value', function (done) { - - expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - done(); - }); - - it('stringifies an object inside an array', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c'); - expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1'); - done(); - }); - - it('does not omit object keys when indices = false', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('stringifies a complicated object', function (done) { - - expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e'); - done(); - }); - - it('stringifies an empty value', function (done) { - - expect(Qs.stringify({ a: '' })).to.equal('a='); - expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b='); - expect(Qs.stringify({ a: null })).to.equal('a='); - expect(Qs.stringify({ a: { b: null } })).to.equal('a%5Bb%5D='); - done(); - }); - - it('stringifies an empty object', function (done) { - - var obj = Object.create(null); - obj.a = 'b'; - expect(Qs.stringify(obj)).to.equal('a=b'); - done(); - }); - - it('returns an empty string for invalid input', function (done) { - - expect(Qs.stringify(undefined)).to.equal(''); - expect(Qs.stringify(false)).to.equal(''); - expect(Qs.stringify(null)).to.equal(''); - expect(Qs.stringify('')).to.equal(''); - done(); - }); - - it('stringifies an object with an empty object as a child', function (done) { - - var obj = { - a: Object.create(null) - }; - - obj.a.b = 'c'; - expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('drops keys with a value of undefined', function (done) { - - expect(Qs.stringify({ a: undefined })).to.equal(''); - expect(Qs.stringify({ a: { b: undefined, c: null } })).to.equal('a%5Bc%5D='); - done(); - }); - - it('url encodes values', function (done) { - - expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c'); - done(); - }); - - it('stringifies a date', function (done) { - - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - expect(Qs.stringify({ a: now })).to.equal(str); - done(); - }); - - it('stringifies the weird object from qs', function (done) { - - expect(Qs.stringify({ 'my weird field': 'q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=q1!2%22\'w%245%267%2Fz8)%3F'); - done(); - }); - - it('skips properties that are part of the object prototype', function (done) { - - Object.prototype.crash = 'test'; - expect(Qs.stringify({ a: 'b'})).to.equal('a=b'); - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - delete Object.prototype.crash; - done(); - }); - - it('stringifies boolean values', function (done) { - - expect(Qs.stringify({ a: true })).to.equal('a=true'); - expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true'); - expect(Qs.stringify({ b: false })).to.equal('b=false'); - expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false'); - done(); - }); - - it('stringifies buffer values', function (done) { - - expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test'); - expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test'); - done(); - }); - - it('stringifies an object using an alternative delimiter', function (done) { - - expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d'); - done(); - }); - - it('doesn\'t blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d'); - global.Buffer = tempBuffer; - done(); - }); -}); diff --git a/node_modules/express/node_modules/range-parser/HISTORY.md b/node_modules/express/node_modules/range-parser/HISTORY.md deleted file mode 100644 index 1bb53bd..0000000 --- a/node_modules/express/node_modules/range-parser/HISTORY.md +++ /dev/null @@ -1,35 +0,0 @@ -1.0.2 / 2014-09-08 -================== - - * Support Node.js 0.6 - -1.0.1 / 2014-09-07 -================== - - * Move repository to jshttp - -1.0.0 / 2013-12-11 -================== - - * Add repository to package.json - * Add MIT license - -0.0.4 / 2012-06-17 -================== - - * Change ret -1 for unsatisfiable and -2 when invalid - -0.0.3 / 2012-06-17 -================== - - * Fix last-byte-pos default to len - 1 - -0.0.2 / 2012-06-14 -================== - - * Add `.type` - -0.0.1 / 2012-06-11 -================== - - * Initial release diff --git a/node_modules/express/node_modules/range-parser/LICENSE b/node_modules/express/node_modules/range-parser/LICENSE deleted file mode 100644 index a491841..0000000 --- a/node_modules/express/node_modules/range-parser/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 TJ Holowaychuk - -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/node_modules/express/node_modules/range-parser/README.md b/node_modules/express/node_modules/range-parser/README.md deleted file mode 100644 index 6a2682f..0000000 --- a/node_modules/express/node_modules/range-parser/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# range-parser - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Range header field parser. - -## Installation - -``` -$ npm install range-parser -``` - -## Examples - -```js -assert(-1 == parse(200, 'bytes=500-20')); -assert(-2 == parse(200, 'bytes=malformed')); -parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); -parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); -parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); -parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); -parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); -parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); -parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); -parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); -parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/range-parser.svg?style=flat -[npm-url]: https://npmjs.org/package/range-parser -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/range-parser.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/range-parser -[coveralls-image]: https://img.shields.io/coveralls/jshttp/range-parser.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/range-parser -[downloads-image]: https://img.shields.io/npm/dm/range-parser.svg?style=flat -[downloads-url]: https://npmjs.org/package/range-parser diff --git a/node_modules/express/node_modules/range-parser/index.js b/node_modules/express/node_modules/range-parser/index.js deleted file mode 100644 index 09a6c40..0000000 --- a/node_modules/express/node_modules/range-parser/index.js +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Parse "Range" header `str` relative to the given file `size`. - * - * @param {Number} size - * @param {String} str - * @return {Array} - * @api public - */ - -module.exports = function(size, str){ - var valid = true; - var i = str.indexOf('='); - - if (-1 == i) return -2; - - var arr = str.slice(i + 1).split(',').map(function(range){ - var range = range.split('-') - , start = parseInt(range[0], 10) - , end = parseInt(range[1], 10); - - // -nnn - if (isNaN(start)) { - start = size - end; - end = size - 1; - // nnn- - } else if (isNaN(end)) { - end = size - 1; - } - - // limit last-byte-pos to current length - if (end > size - 1) end = size - 1; - - // invalid - if (isNaN(start) - || isNaN(end) - || start > end - || start < 0) valid = false; - - return { - start: start, - end: end - }; - }); - - arr.type = str.slice(0, i); - - return valid ? arr : -1; -}; diff --git a/node_modules/express/node_modules/range-parser/package.json b/node_modules/express/node_modules/range-parser/package.json deleted file mode 100644 index c4f8b2f..0000000 --- a/node_modules/express/node_modules/range-parser/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "range-parser", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "Range header field string parser", - "version": "1.0.2", - "license": "MIT", - "keywords": [ - "range", - "parser", - "http" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/range-parser" - }, - "devDependencies": { - "istanbul": "0", - "mocha": "1", - "should": "2" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --require should", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --require should", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot --require should" - }, - "gitHead": "ae23b02ce705b56e7f7c48e832d41fa710227ecc", - "bugs": { - "url": "https://github.com/jshttp/range-parser/issues" - }, - "homepage": "https://github.com/jshttp/range-parser", - "_id": "range-parser@1.0.2", - "_shasum": "06a12a42e5131ba8e457cd892044867f2344e549", - "_from": "range-parser@>=1.0.2 <1.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "jonathanong", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "06a12a42e5131ba8e457cd892044867f2344e549", - "tarball": "http://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/send/History.md b/node_modules/express/node_modules/send/History.md deleted file mode 100644 index ad5efc5..0000000 --- a/node_modules/express/node_modules/send/History.md +++ /dev/null @@ -1,221 +0,0 @@ -0.10.1 / 2014-10-22 -=================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - -0.10.0 / 2014-10-15 -=================== - - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: etag@~1.5.0 - - Improve string performance - - Slightly improve speed for weak ETags over 1KB - -0.9.3 / 2014-09-24 -================== - - * deps: etag@~1.4.0 - - Support "fake" stats objects - -0.9.2 / 2014-09-15 -================== - - * deps: depd@0.4.5 - * deps: etag@~1.3.1 - * deps: range-parser@~1.0.2 - -0.9.1 / 2014-09-07 -================== - - * deps: fresh@0.2.4 - -0.9.0 / 2014-09-07 -================== - - * Add `lastModified` option - * Use `etag` to generate `ETag` header - * deps: debug@~2.0.0 - -0.8.5 / 2014-09-04 -================== - - * Fix malicious path detection for empty string path - -0.8.4 / 2014-09-04 -================== - - * Fix a path traversal issue when using `root` - -0.8.3 / 2014-08-16 -================== - - * deps: destroy@1.0.3 - - renamed from dethroy - * deps: on-finished@2.1.0 - -0.8.2 / 2014-08-14 -================== - - * Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - * deps: dethroy@1.0.2 - -0.8.1 / 2014-08-05 -================== - - * Fix `extensions` behavior when file already has extension - -0.8.0 / 2014-08-05 -================== - - * Add `extensions` option - -0.7.4 / 2014-08-04 -================== - - * Fix serving index files without root dir - -0.7.3 / 2014-07-29 -================== - - * Fix incorrect 403 on Windows and Node.js 0.11 - -0.7.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - -0.7.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - -0.7.0 / 2014-07-20 -================== - - * Deprecate `hidden` option; use `dotfiles` option - * Add `dotfiles` option - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - -0.6.0 / 2014-07-11 -================== - - * Deprecate `from` option; use `root` option - * Deprecate `send.etag()` -- use `etag` in `options` - * Deprecate `send.hidden()` -- use `hidden` in `options` - * Deprecate `send.index()` -- use `index` in `options` - * Deprecate `send.maxage()` -- use `maxAge` in `options` - * Deprecate `send.root()` -- use `root` in `options` - * Cap `maxAge` value to 1 year - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - -0.5.0 / 2014-06-28 -================== - - * Accept string for `maxAge` (converted by `ms`) - * Add `headers` event - * Include link in default redirect response - * Use `EventEmitter.listenerCount` to count listeners - -0.4.3 / 2014-06-11 -================== - - * Do not throw un-catchable error on file open race condition - * Use `escape-html` for HTML escaping - * deps: debug@1.0.2 - - fix some debugging output colors on node.js 0.8 - * deps: finished@1.2.2 - * deps: fresh@0.2.2 - -0.4.2 / 2014-06-09 -================== - - * fix "event emitter leak" warnings - * deps: debug@1.0.1 - * deps: finished@1.2.1 - -0.4.1 / 2014-06-02 -================== - - * Send `max-age` in `Cache-Control` in correct format - -0.4.0 / 2014-05-27 -================== - - * Calculate ETag with md5 for reduced collisions - * Fix wrong behavior when index file matches directory - * Ignore stream errors after request ends - - Goodbye `EBADF, read` - * Skip directories in index file search - * deps: debug@0.8.1 - -0.3.0 / 2014-04-24 -================== - - * Fix sending files with dots without root set - * Coerce option types - * Accept API options in options object - * Set etags to "weak" - * Include file path in etag - * Make "Can't set headers after they are sent." catchable - * Send full entity-body for multi range requests - * Default directory access to 403 when index disabled - * Support multiple index paths - * Support "If-Range" header - * Control whether to generate etags - * deps: mime@1.2.11 - -0.2.0 / 2014-01-29 -================== - - * update range-parser and fresh - -0.1.4 / 2013-08-11 -================== - - * update fresh - -0.1.3 / 2013-07-08 -================== - - * Revert "Fix fd leak" - -0.1.2 / 2013-07-03 -================== - - * Fix fd leak - -0.1.0 / 2012-08-25 -================== - - * add options parameter to send() that is passed to fs.createReadStream() [kanongil] - -0.0.4 / 2012-08-16 -================== - - * allow custom "Accept-Ranges" definition - -0.0.3 / 2012-07-16 -================== - - * fix normalization of the root directory. Closes #3 - -0.0.2 / 2012-07-09 -================== - - * add passing of req explicitly for now (YUCK) - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/express/node_modules/send/LICENSE b/node_modules/express/node_modules/send/LICENSE deleted file mode 100644 index 3b87e2d..0000000 --- a/node_modules/express/node_modules/send/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/send/Readme.md b/node_modules/express/node_modules/send/Readme.md deleted file mode 100644 index 78bd40d..0000000 --- a/node_modules/express/node_modules/send/Readme.md +++ /dev/null @@ -1,182 +0,0 @@ -# send - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] -[![Gittip][gittip-image]][gittip-url] - - Send is Connect's `static()` extracted for generalized use, a streaming static file - server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. - -## Installation - -```bash -$ npm install send -``` - -## API - -```js -var send = require('send') -``` - -### send(req, path, [options]) - -Create a new `SendStream` for the given path to send to a `res`. The `req` is -the Node.js HTTP request and the `path` is a urlencoded path to send (urlencoded, -not the actual file-system path). - -#### Options - -##### dotfiles - - Set how "dotfiles" are treated when encountered. A dotfile is a file - or directory that begins with a dot ("."). Note this check is done on - the path itself without checking if the path actually exists on the - disk. If `root` is specified, only the dotfiles above the root are - checked (i.e. the root itself can be within a dotfile when when set - to "deny"). - - The default value is `'ignore'`. - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Send a 403 for any request for a dotfile. - - `'ignore'` Pretend like the dotfile does not exist and 404. - -##### etag - - Enable or disable etag generation, defaults to true. - -##### extensions - - If a given file doesn't exist, try appending one of the given extensions, - in the given order. By default, this is disabled (set to `false`). An - example value that will serve extension-less HTML files: `['html', 'htm']`. - This is skipped if the requested file already has an extension. - -##### index - - By default send supports "index.html" files, to disable this - set `false` or to supply a new index pass a string or an array - in preferred order. - -##### lastModified - - Enable or disable `Last-Modified` header, defaults to true. Uses the file - system's last modified value. - -##### maxAge - - Provide a max-age in milliseconds for http caching, defaults to 0. - This can also be a string accepted by the - [ms](https://www.npmjs.org/package/ms#readme) module. - -##### root - - Serve files relative to `path`. - -### Events - -The `SendStream` is an event emitter and will emit the following events: - - - `error` an error occurred `(err)` - - `directory` a directory was requested - - `file` a file was requested `(path, stat)` - - `headers` the headers are about to be set on a file `(res, path, stat)` - - `stream` file streaming has started `(stream)` - - `end` streaming has completed - -### .pipe - -The `pipe` method is used to pipe the response into the Node.js HTTP response -object, typically `send(req, path, options).pipe(res)`. - -## Error-handling - - By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. - -## Caching - - It does _not_ perform internal caching, you should use a reverse proxy cache such - as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). - -## Debugging - - To enable `debug()` instrumentation output export __DEBUG__: - -``` -$ DEBUG=send node app -``` - -## Running tests - -``` -$ npm install -$ npm test -``` - -## Examples - - Small: - -```js -var http = require('http'); -var send = require('send'); - -var app = http.createServer(function(req, res){ - send(req, req.url).pipe(res); -}).listen(3000); -``` - - Serving from a root directory with custom error-handling: - -```js -var http = require('http'); -var send = require('send'); -var url = require('url'); - -var app = http.createServer(function(req, res){ - // your custom error-handling logic: - function error(err) { - res.statusCode = err.status || 500; - res.end(err.message); - } - - // your custom headers - function headers(res, path, stat) { - // serve all files for download - res.setHeader('Content-Disposition', 'attachment'); - } - - // your custom directory handling logic: - function redirect() { - res.statusCode = 301; - res.setHeader('Location', req.url + '/'); - res.end('Redirecting to ' + req.url + '/'); - } - - // transfer arbitrary files from within - // /www/example.com/public/* - send(req, url.parse(req.url).pathname, {root: '/www/example.com/public'}) - .on('error', error) - .on('directory', redirect) - .on('headers', headers) - .pipe(res); -}).listen(3000); -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/send.svg?style=flat -[npm-url]: https://npmjs.org/package/send -[travis-image]: https://img.shields.io/travis/tj/send.svg?style=flat -[travis-url]: https://travis-ci.org/tj/send -[coveralls-image]: https://img.shields.io/coveralls/tj/send.svg?style=flat -[coveralls-url]: https://coveralls.io/r/tj/send?branch=master -[downloads-image]: https://img.shields.io/npm/dm/send.svg?style=flat -[downloads-url]: https://npmjs.org/package/send -[gittip-image]: https://img.shields.io/gittip/dougwilson.svg?style=flat -[gittip-url]: https://www.gittip.com/dougwilson/ diff --git a/node_modules/express/node_modules/send/index.js b/node_modules/express/node_modules/send/index.js deleted file mode 100644 index 64b6d64..0000000 --- a/node_modules/express/node_modules/send/index.js +++ /dev/null @@ -1,773 +0,0 @@ - -/** - * Module dependencies. - */ - -var debug = require('debug')('send') -var deprecate = require('depd')('send') -var destroy = require('destroy') -var escapeHtml = require('escape-html') - , parseRange = require('range-parser') - , Stream = require('stream') - , mime = require('mime') - , fresh = require('fresh') - , path = require('path') - , http = require('http') - , fs = require('fs') - , normalize = path.normalize - , join = path.join -var etag = require('etag') -var EventEmitter = require('events').EventEmitter; -var ms = require('ms'); -var onFinished = require('on-finished') - -/** - * Variables. - */ -var extname = path.extname -var maxMaxAge = 60 * 60 * 24 * 365 * 1000; // 1 year -var resolve = path.resolve -var sep = path.sep -var toString = Object.prototype.toString -var upPathRegexp = /(?:^|[\\\/])\.\.(?:[\\\/]|$)/ - -/** - * Expose `send`. - */ - -exports = module.exports = send; - -/** - * Expose mime module. - */ - -exports.mime = mime; - -/** - * Shim EventEmitter.listenerCount for node.js < 0.10 - */ - -/* istanbul ignore next */ -var listenerCount = EventEmitter.listenerCount - || function(emitter, type){ return emitter.listeners(type).length; }; - -/** - * Return a `SendStream` for `req` and `path`. - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @return {SendStream} - * @api public - */ - -function send(req, path, options) { - return new SendStream(req, path, options); -} - -/** - * Initialize a `SendStream` with the given `path`. - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @api private - */ - -function SendStream(req, path, options) { - var self = this; - options = options || {}; - this.req = req; - this.path = path; - this.options = options; - - this._etag = options.etag !== undefined - ? Boolean(options.etag) - : true - - this._dotfiles = options.dotfiles !== undefined - ? options.dotfiles - : 'ignore' - - if (['allow', 'deny', 'ignore'].indexOf(this._dotfiles) === -1) { - throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"') - } - - this._hidden = Boolean(options.hidden) - - if ('hidden' in options) { - deprecate('hidden: use dotfiles: \'' + (this._hidden ? 'allow' : 'ignore') + '\' instead') - } - - // legacy support - if (!('dotfiles' in options)) { - this._dotfiles = undefined - } - - this._extensions = options.extensions !== undefined - ? normalizeList(options.extensions) - : [] - - this._index = options.index !== undefined - ? normalizeList(options.index) - : ['index.html'] - - this._lastModified = options.lastModified !== undefined - ? Boolean(options.lastModified) - : true - - this._maxage = options.maxAge || options.maxage - this._maxage = typeof this._maxage === 'string' - ? ms(this._maxage) - : Number(this._maxage) - this._maxage = !isNaN(this._maxage) - ? Math.min(Math.max(0, this._maxage), maxMaxAge) - : 0 - - this._root = options.root - ? resolve(options.root) - : null - - if (!this._root && options.from) { - this.from(options.from); - } -} - -/** - * Inherits from `Stream.prototype`. - */ - -SendStream.prototype.__proto__ = Stream.prototype; - -/** - * Enable or disable etag generation. - * - * @param {Boolean} val - * @return {SendStream} - * @api public - */ - -SendStream.prototype.etag = deprecate.function(function etag(val) { - val = Boolean(val); - debug('etag %s', val); - this._etag = val; - return this; -}, 'send.etag: pass etag as option'); - -/** - * Enable or disable "hidden" (dot) files. - * - * @param {Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.hidden = deprecate.function(function hidden(val) { - val = Boolean(val); - debug('hidden %s', val); - this._hidden = val; - this._dotfiles = undefined - return this; -}, 'send.hidden: use dotfiles option'); - -/** - * Set index `paths`, set to a falsy - * value to disable index support. - * - * @param {String|Boolean|Array} paths - * @return {SendStream} - * @api public - */ - -SendStream.prototype.index = deprecate.function(function index(paths) { - var index = !paths ? [] : normalizeList(paths); - debug('index %o', paths); - this._index = index; - return this; -}, 'send.index: pass index as option'); - -/** - * Set root `path`. - * - * @param {String} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.root = function(path){ - path = String(path); - this._root = resolve(path) - return this; -}; - -SendStream.prototype.from = deprecate.function(SendStream.prototype.root, - 'send.from: pass root as option'); - -SendStream.prototype.root = deprecate.function(SendStream.prototype.root, - 'send.root: pass root as option'); - -/** - * Set max-age to `maxAge`. - * - * @param {Number} maxAge - * @return {SendStream} - * @api public - */ - -SendStream.prototype.maxage = deprecate.function(function maxage(maxAge) { - maxAge = typeof maxAge === 'string' - ? ms(maxAge) - : Number(maxAge); - if (isNaN(maxAge)) maxAge = 0; - if (Infinity == maxAge) maxAge = 60 * 60 * 24 * 365 * 1000; - debug('max-age %d', maxAge); - this._maxage = maxAge; - return this; -}, 'send.maxage: pass maxAge as option'); - -/** - * Emit error with `status`. - * - * @param {Number} status - * @api private - */ - -SendStream.prototype.error = function(status, err){ - var res = this.res; - var msg = http.STATUS_CODES[status]; - - err = err || new Error(msg); - err.status = status; - - // emit if listeners instead of responding - if (listenerCount(this, 'error') !== 0) { - return this.emit('error', err); - } - - // wipe all existing headers - res._headers = undefined; - - res.statusCode = err.status; - res.end(msg); -}; - -/** - * Check if the pathname ends with "/". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasTrailingSlash = function(){ - return '/' == this.path[this.path.length - 1]; -}; - -/** - * Check if this is a conditional GET request. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isConditionalGET = function(){ - return this.req.headers['if-none-match'] - || this.req.headers['if-modified-since']; -}; - -/** - * Strip content-* header fields. - * - * @api private - */ - -SendStream.prototype.removeContentHeaderFields = function(){ - var res = this.res; - Object.keys(res._headers).forEach(function(field){ - if (0 == field.indexOf('content')) { - res.removeHeader(field); - } - }); -}; - -/** - * Respond with 304 not modified. - * - * @api private - */ - -SendStream.prototype.notModified = function(){ - var res = this.res; - debug('not modified'); - this.removeContentHeaderFields(); - res.statusCode = 304; - res.end(); -}; - -/** - * Raise error that headers already sent. - * - * @api private - */ - -SendStream.prototype.headersAlreadySent = function headersAlreadySent(){ - var err = new Error('Can\'t set headers after they are sent.'); - debug('headers already sent'); - this.error(500, err); -}; - -/** - * Check if the request is cacheable, aka - * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isCachable = function(){ - var res = this.res; - return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; -}; - -/** - * Handle stat() error. - * - * @param {Error} err - * @api private - */ - -SendStream.prototype.onStatError = function(err){ - var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; - if (~notfound.indexOf(err.code)) return this.error(404, err); - this.error(500, err); -}; - -/** - * Check if the cache is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isFresh = function(){ - return fresh(this.req.headers, this.res._headers); -}; - -/** - * Check if the range is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isRangeFresh = function isRangeFresh(){ - var ifRange = this.req.headers['if-range']; - - if (!ifRange) return true; - - return ~ifRange.indexOf('"') - ? ~ifRange.indexOf(this.res._headers['etag']) - : Date.parse(this.res._headers['last-modified']) <= Date.parse(ifRange); -}; - -/** - * Redirect to `path`. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.redirect = function(path){ - if (listenerCount(this, 'directory') !== 0) { - return this.emit('directory'); - } - - if (this.hasTrailingSlash()) return this.error(403); - var res = this.res; - path += '/'; - res.statusCode = 301; - res.setHeader('Content-Type', 'text/html; charset=utf-8'); - res.setHeader('Location', path); - res.end('Redirecting to ' + escapeHtml(path) + '\n'); -}; - -/** - * Pipe to `res. - * - * @param {Stream} res - * @return {Stream} res - * @api public - */ - -SendStream.prototype.pipe = function(res){ - var self = this - , args = arguments - , root = this._root; - - // references - this.res = res; - - // decode the path - var path = decode(this.path) - if (path === -1) return this.error(400) - - // null byte(s) - if (~path.indexOf('\0')) return this.error(400); - - var parts - if (root !== null) { - // join / normalize from optional root dir - path = normalize(join(root, path)) - root = normalize(root + sep) - - // malicious path - if ((path + sep).substr(0, root.length) !== root) { - debug('malicious path "%s"', path) - return this.error(403) - } - - // explode path parts - parts = path.substr(root.length).split(sep) - } else { - // ".." is malicious without "root" - if (upPathRegexp.test(path)) { - debug('malicious path "%s"', path) - return this.error(403) - } - - // explode path parts - parts = normalize(path).split(sep) - - // resolve the path - path = resolve(path) - } - - // dotfile handling - if (containsDotFile(parts)) { - var access = this._dotfiles - - // legacy support - if (access === undefined) { - access = parts[parts.length - 1][0] === '.' - ? (this._hidden ? 'allow' : 'ignore') - : 'allow' - } - - debug('%s dotfile "%s"', access, path) - switch (access) { - case 'allow': - break - case 'deny': - return this.error(403) - case 'ignore': - default: - return this.error(404) - } - } - - // index file support - if (this._index.length && this.path[this.path.length - 1] === '/') { - this.sendIndex(path); - return res; - } - - this.sendFile(path); - return res; -}; - -/** - * Transfer `path`. - * - * @param {String} path - * @api public - */ - -SendStream.prototype.send = function(path, stat){ - var options = this.options; - var len = stat.size; - var res = this.res; - var req = this.req; - var ranges = req.headers.range; - var offset = options.start || 0; - - if (res._header) { - // impossible to send now - return this.headersAlreadySent(); - } - - debug('pipe "%s"', path) - - // set header fields - this.setHeader(path, stat); - - // set content-type - this.type(path); - - // conditional GET support - if (this.isConditionalGET() - && this.isCachable() - && this.isFresh()) { - return this.notModified(); - } - - // adjust len to start/end options - len = Math.max(0, len - offset); - if (options.end !== undefined) { - var bytes = options.end - offset + 1; - if (len > bytes) len = bytes; - } - - // Range support - if (ranges) { - ranges = parseRange(len, ranges); - - // If-Range support - if (!this.isRangeFresh()) { - debug('range stale'); - ranges = -2; - } - - // unsatisfiable - if (-1 == ranges) { - debug('range unsatisfiable'); - res.setHeader('Content-Range', 'bytes */' + stat.size); - return this.error(416); - } - - // valid (syntactically invalid/multiple ranges are treated as a regular response) - if (-2 != ranges && ranges.length === 1) { - debug('range %j', ranges); - - options.start = offset + ranges[0].start; - options.end = offset + ranges[0].end; - - // Content-Range - res.statusCode = 206; - res.setHeader('Content-Range', 'bytes ' - + ranges[0].start - + '-' - + ranges[0].end - + '/' - + len); - len = options.end - options.start + 1; - } - } - - // content-length - res.setHeader('Content-Length', len); - - // HEAD support - if ('HEAD' == req.method) return res.end(); - - this.stream(path, options); -}; - -/** - * Transfer file for `path`. - * - * @param {String} path - * @api private - */ -SendStream.prototype.sendFile = function sendFile(path) { - var i = 0 - var self = this - - debug('stat "%s"', path); - fs.stat(path, function onstat(err, stat) { - if (err && err.code === 'ENOENT' - && !extname(path) - && path[path.length - 1] !== sep) { - // not found, check extensions - return next(err) - } - if (err) return self.onStatError(err) - if (stat.isDirectory()) return self.redirect(self.path) - self.emit('file', path, stat) - self.send(path, stat) - }) - - function next(err) { - if (self._extensions.length <= i) { - return err - ? self.onStatError(err) - : self.error(404) - } - - var p = path + '.' + self._extensions[i++] - - debug('stat "%s"', p) - fs.stat(p, function (err, stat) { - if (err) return next(err) - if (stat.isDirectory()) return next() - self.emit('file', p, stat) - self.send(p, stat) - }) - } -} - -/** - * Transfer index for `path`. - * - * @param {String} path - * @api private - */ -SendStream.prototype.sendIndex = function sendIndex(path){ - var i = -1; - var self = this; - - function next(err){ - if (++i >= self._index.length) { - if (err) return self.onStatError(err); - return self.error(404); - } - - var p = join(path, self._index[i]); - - debug('stat "%s"', p); - fs.stat(p, function(err, stat){ - if (err) return next(err); - if (stat.isDirectory()) return next(); - self.emit('file', p, stat); - self.send(p, stat); - }); - } - - next(); -}; - -/** - * Stream `path` to the response. - * - * @param {String} path - * @param {Object} options - * @api private - */ - -SendStream.prototype.stream = function(path, options){ - // TODO: this is all lame, refactor meeee - var finished = false; - var self = this; - var res = this.res; - var req = this.req; - - // pipe - var stream = fs.createReadStream(path, options); - this.emit('stream', stream); - stream.pipe(res); - - // response finished, done with the fd - onFinished(res, function onfinished(){ - finished = true; - destroy(stream); - }); - - // error handling code-smell - stream.on('error', function onerror(err){ - // request already finished - if (finished) return; - - // clean up stream - finished = true; - destroy(stream); - - // error - self.onStatError(err); - }); - - // end - stream.on('end', function onend(){ - self.emit('end'); - }); -}; - -/** - * Set content-type based on `path` - * if it hasn't been explicitly set. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.type = function(path){ - var res = this.res; - if (res.getHeader('Content-Type')) return; - var type = mime.lookup(path); - var charset = mime.charsets.lookup(type); - debug('content-type %s', type); - res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); -}; - -/** - * Set response header fields, most - * fields may be pre-defined. - * - * @param {String} path - * @param {Object} stat - * @api private - */ - -SendStream.prototype.setHeader = function setHeader(path, stat){ - var res = this.res; - - this.emit('headers', res, path, stat); - - if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); - if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); - if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + Math.floor(this._maxage / 1000)); - - if (this._lastModified && !res.getHeader('Last-Modified')) { - var modified = stat.mtime.toUTCString() - debug('modified %s', modified) - res.setHeader('Last-Modified', modified) - } - - if (this._etag && !res.getHeader('ETag')) { - var val = etag(stat) - debug('etag %s', val) - res.setHeader('ETag', val) - } -}; - -/** - * Determine if path parts contain a dotfile. - * - * @api private - */ - -function containsDotFile(parts) { - for (var i = 0; i < parts.length; i++) { - if (parts[i][0] === '.') { - return true - } - } - - return false -} - -/** - * decodeURIComponent. - * - * Allows V8 to only deoptimize this fn instead of all - * of send(). - * - * @param {String} path - * @api private - */ - -function decode(path) { - try { - return decodeURIComponent(path) - } catch (err) { - return -1 - } -} - -/** - * Normalize the index option into an array. - * - * @param {boolean|string|array} val - * @api private - */ - -function normalizeList(val){ - return [].concat(val || []) -} diff --git a/node_modules/express/node_modules/send/node_modules/destroy/README.md b/node_modules/express/node_modules/send/node_modules/destroy/README.md deleted file mode 100644 index 665acb7..0000000 --- a/node_modules/express/node_modules/send/node_modules/destroy/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Destroy - -[![NPM version][npm-image]][npm-url] -[![Build status][travis-image]][travis-url] -[![Test coverage][coveralls-image]][coveralls-url] -[![Dependency Status][david-image]][david-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] -[![Gittip][gittip-image]][gittip-url] - -Destroy a stream. - -## API - -```js -var destroy = require('destroy') - -var fs = require('fs') -var stream = fs.createReadStream('package.json') -destroy(stream) -``` - -[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square -[npm-url]: https://npmjs.org/package/destroy -[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square -[github-url]: https://github.com/stream-utils/destroy/tags -[travis-image]: https://img.shields.io/travis/stream-utils/destroy.svg?style=flat-square -[travis-url]: https://travis-ci.org/stream-utils/destroy -[coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square -[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master -[david-image]: http://img.shields.io/david/stream-utils/destroy.svg?style=flat-square -[david-url]: https://david-dm.org/stream-utils/destroy -[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square -[license-url]: LICENSE.md -[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square -[downloads-url]: https://npmjs.org/package/destroy -[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square -[gittip-url]: https://www.gittip.com/jonathanong/ diff --git a/node_modules/express/node_modules/send/node_modules/destroy/index.js b/node_modules/express/node_modules/send/node_modules/destroy/index.js deleted file mode 100644 index b455217..0000000 --- a/node_modules/express/node_modules/send/node_modules/destroy/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var ReadStream = require('fs').ReadStream -var Stream = require('stream') - -module.exports = function destroy(stream) { - if (stream instanceof ReadStream) { - return destroyReadStream(stream) - } - - if (!(stream instanceof Stream)) { - return stream - } - - if (typeof stream.destroy === 'function') { - stream.destroy() - } - - return stream -} - -function destroyReadStream(stream) { - stream.destroy() - - if (typeof stream.close === 'function') { - // node.js core bug work-around - stream.on('open', onopenClose) - } - - return stream -} - -function onopenClose() { - if (typeof this.fd === 'number') { - // actually close down the fd - this.close() - } -} diff --git a/node_modules/express/node_modules/send/node_modules/destroy/package.json b/node_modules/express/node_modules/send/node_modules/destroy/package.json deleted file mode 100644 index c88380a..0000000 --- a/node_modules/express/node_modules/send/node_modules/destroy/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "destroy", - "description": "destroy a stream if possible", - "version": "1.0.3", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/stream-utils/destroy" - }, - "devDependencies": { - "istanbul": "0", - "mocha": "1" - }, - "scripts": { - "test": "mocha --reporter spec", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot" - }, - "files": [ - "index.js" - ], - "keywords": [ - "stream", - "streams", - "destroy", - "cleanup", - "leak", - "fd" - ], - "gitHead": "50af95ece4a70202f9301bc3edc8f9fdbbad0f26", - "bugs": { - "url": "https://github.com/stream-utils/destroy/issues" - }, - "homepage": "https://github.com/stream-utils/destroy", - "_id": "destroy@1.0.3", - "_shasum": "b433b4724e71fd8551d9885174851c5fc377e2c9", - "_from": "destroy@1.0.3", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "b433b4724e71fd8551d9885174851c5fc377e2c9", - "tarball": "http://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/node_modules/express/node_modules/send/node_modules/mime/LICENSE deleted file mode 100644 index 451fc45..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -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/node_modules/express/node_modules/send/node_modules/mime/README.md b/node_modules/express/node_modules/send/node_modules/mime/README.md deleted file mode 100644 index 6ca19bd..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/express/node_modules/send/node_modules/mime/mime.js b/node_modules/express/node_modules/send/node_modules/mime/mime.js deleted file mode 100644 index 48be0c5..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/mime.js +++ /dev/null @@ -1,114 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/node_modules/express/node_modules/send/node_modules/mime/package.json b/node_modules/express/node_modules/send/node_modules/mime/package.json deleted file mode 100644 index 759f112..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.2.11", - "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "homepage": "https://github.com/broofa/node-mime", - "_id": "mime@1.2.11", - "_shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10", - "_from": "mime@1.2.11", - "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "scripts": {} -} diff --git a/node_modules/express/node_modules/send/node_modules/mime/test.js b/node_modules/express/node_modules/send/node_modules/mime/test.js deleted file mode 100644 index 2cda1c7..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/test.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); -var path = require('path'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); // normal file -eq('text/plain', mime.lookup('TEXT.TXT')); // uppercase -eq('text/plain', mime.lookup('dir/text.txt')); // dir + file -eq('text/plain', mime.lookup('.text.txt')); // hidden file -eq('text/plain', mime.lookup('.txt')); // nameless -eq('text/plain', mime.lookup('txt')); // extension-only -eq('text/plain', mime.lookup('/txt')); // extension-less () -eq('text/plain', mime.lookup('\\txt')); // Windows, extension-less -eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized -eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq('bin', mime.extension('application/octet-stream ')); -eq('html', mime.extension(' text/html; charset=UTF-8')); -eq('html', mime.extension('text/html; charset=UTF-8 ')); -eq('html', mime.extension('text/html; charset=UTF-8')); -eq('html', mime.extension('text/html ; charset=UTF-8')); -eq('html', mime.extension('text/html;charset=UTF-8')); -eq('html', mime.extension('text/Html;charset=UTF-8')); -eq(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -eq('application/font-woff', mime.lookup('file.woff')); -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); -eq('font/opentype', mime.lookup('file.otf')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -// -// Test for overlaps between mime.types and node.types -// - -var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime(); -apacheTypes.load(path.join(__dirname, 'types/mime.types')); -nodeTypes.load(path.join(__dirname, 'types/node.types')); - -var keys = [].concat(Object.keys(apacheTypes.types)) - .concat(Object.keys(nodeTypes.types)); -keys.sort(); -for (var i = 1; i < keys.length; i++) { - if (keys[i] == keys[i-1]) { - console.warn('Warning: ' + - 'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] + - ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]); - } -} - -console.log('\nOK'); diff --git a/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/node_modules/express/node_modules/send/node_modules/mime/types/mime.types deleted file mode 100644 index da8cd69..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1588 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at . -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice diff --git a/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/node_modules/express/node_modules/send/node_modules/mime/types/node.types deleted file mode 100644 index 55b2cf7..0000000 --- a/node_modules/express/node_modules/send/node_modules/mime/types/node.types +++ /dev/null @@ -1,77 +0,0 @@ -# What: WebVTT -# Why: To allow formats intended for marking up external text track resources. -# http://dev.w3.org/html5/webvtt/ -# Added by: niftylettuce -text/vtt vtt - -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifes ('.manifest' extension) -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Lua file types -# Why: Googling around shows de-facto consensus on these -# Added by: creationix (Issue #45) -text/x-lua lua -application/x-lua-bytecode luac - -# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax -# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown -# Added by: avoidwork -text/x-markdown markdown md mkd - -# What: ini files -# Why: because they're just text files -# Added by: Matthew Kastor -text/plain ini - -# What: DASH Adaptive Streaming manifest -# Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video -# Added by: eelcocramer -application/dash+xml mdp - -# What: OpenType font files - http://www.microsoft.com/typography/otspec/ -# Why: Browsers usually ignore the font MIME types and sniff the content, -# but Chrome, shows a warning if OpenType fonts aren't served with -# the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png. -# Added by: alrra -font/opentype otf diff --git a/node_modules/express/node_modules/send/node_modules/ms/.npmignore b/node_modules/express/node_modules/send/node_modules/ms/.npmignore deleted file mode 100644 index d1aa0ce..0000000 --- a/node_modules/express/node_modules/send/node_modules/ms/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -test -History.md -Makefile -component.json diff --git a/node_modules/express/node_modules/send/node_modules/ms/README.md b/node_modules/express/node_modules/send/node_modules/ms/README.md deleted file mode 100644 index d4ab12a..0000000 --- a/node_modules/express/node_modules/send/node_modules/ms/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# ms.js: miliseconds conversion utility - -```js -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('100') // 100 -``` - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours', { long: true })) // "10 hours" -``` - -- Node/Browser compatible. Published as `ms` in NPM. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as -a number (e.g: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of -equivalent ms is returned. - -## License - -MIT \ No newline at end of file diff --git a/node_modules/express/node_modules/send/node_modules/ms/index.js b/node_modules/express/node_modules/send/node_modules/ms/index.js deleted file mode 100644 index c5847f8..0000000 --- a/node_modules/express/node_modules/send/node_modules/ms/index.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} options - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options){ - options = options || {}; - if ('string' == typeof val) return parse(val); - return options.long - ? long(val) - : short(val); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec(str); - if (!match) return; - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 's': - return n * s; - case 'ms': - return n; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function short(ms) { - if (ms >= d) return Math.round(ms / d) + 'd'; - if (ms >= h) return Math.round(ms / h) + 'h'; - if (ms >= m) return Math.round(ms / m) + 'm'; - if (ms >= s) return Math.round(ms / s) + 's'; - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function long(ms) { - return plural(ms, d, 'day') - || plural(ms, h, 'hour') - || plural(ms, m, 'minute') - || plural(ms, s, 'second') - || ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) return; - if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/node_modules/express/node_modules/send/node_modules/ms/package.json b/node_modules/express/node_modules/send/node_modules/ms/package.json deleted file mode 100644 index 0839b59..0000000 --- a/node_modules/express/node_modules/send/node_modules/ms/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "ms", - "version": "0.6.2", - "description": "Tiny ms conversion utility", - "repository": { - "type": "git", - "url": "git://github.com/guille/ms.js.git" - }, - "main": "./index", - "devDependencies": { - "mocha": "*", - "expect.js": "*", - "serve": "*" - }, - "component": { - "scripts": { - "ms/index.js": "index.js" - } - }, - "bugs": { - "url": "https://github.com/guille/ms.js/issues" - }, - "_id": "ms@0.6.2", - "dist": { - "shasum": "d89c2124c6fdc1353d65a8b77bf1aac4b193708c", - "tarball": "http://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - }, - "_from": "ms@0.6.2", - "_npmVersion": "1.2.30", - "_npmUser": { - "name": "rauchg", - "email": "rauchg@gmail.com" - }, - "maintainers": [ - { - "name": "rauchg", - "email": "rauchg@gmail.com" - } - ], - "directories": {}, - "_shasum": "d89c2124c6fdc1353d65a8b77bf1aac4b193708c", - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/guille/ms.js" -} diff --git a/node_modules/express/node_modules/send/package.json b/node_modules/express/node_modules/send/package.json deleted file mode 100644 index f96feec..0000000 --- a/node_modules/express/node_modules/send/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "name": "send", - "description": "Better streaming static file server with Range and conditional-GET support", - "version": "0.10.1", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/tj/send" - }, - "keywords": [ - "static", - "file", - "server" - ], - "dependencies": { - "debug": "~2.1.0", - "depd": "~1.0.0", - "destroy": "1.0.3", - "escape-html": "1.0.1", - "etag": "~1.5.0", - "fresh": "0.2.4", - "mime": "1.2.11", - "ms": "0.6.2", - "on-finished": "~2.1.1", - "range-parser": "~1.0.2" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~2.0.0", - "should": "~4.1.0", - "supertest": "~0.14.0" - }, - "files": [ - "History.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --check-leaks --reporter spec --bail", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec" - }, - "gitHead": "a5e6237f3e812a99d079e2100f6294251ef5f465", - "bugs": { - "url": "https://github.com/tj/send/issues" - }, - "homepage": "https://github.com/tj/send", - "_id": "send@0.10.1", - "_shasum": "7745c50ec72f115115980e8fb179aec01900e08a", - "_from": "send@0.10.1", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "7745c50ec72f115115980e8fb179aec01900e08a", - "tarball": "http://registry.npmjs.org/send/-/send-0.10.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/send/-/send-0.10.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/serve-static/HISTORY.md b/node_modules/express/node_modules/serve-static/HISTORY.md deleted file mode 100644 index 5692c01..0000000 --- a/node_modules/express/node_modules/serve-static/HISTORY.md +++ /dev/null @@ -1,201 +0,0 @@ -1.7.1 / 2014-10-22 -================== - - * deps: send@0.10.1 - - deps: on-finished@~2.1.1 - -1.7.0 / 2014-10-15 -================== - - * deps: send@0.10.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - -1.6.4 / 2014-10-08 -================== - - * Fix redirect loop when index file serving disabled - -1.6.3 / 2014-09-24 -================== - - * deps: send@0.9.3 - - deps: etag@~1.4.0 - -1.6.2 / 2014-09-15 -================== - - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - -1.6.1 / 2014-09-07 -================== - - * deps: send@0.9.1 - - deps: fresh@0.2.4 - -1.6.0 / 2014-09-07 -================== - - * deps: send@0.9.0 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - -1.5.4 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - -1.5.3 / 2014-08-17 -================== - - * deps: send@0.8.3 - -1.5.2 / 2014-08-14 -================== - - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - -1.5.1 / 2014-08-09 -================== - - * Fix parsing of weird `req.originalUrl` values - * deps: parseurl@~1.3.0 - * deps: utils-merge@1.0.0 - -1.5.0 / 2014-08-05 -================== - - * deps: send@0.8.1 - - Add `extensions` option - -1.4.4 / 2014-08-04 -================== - - * deps: send@0.7.4 - - Fix serving index files without root dir - -1.4.3 / 2014-07-29 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - -1.4.2 / 2014-07-27 -================== - - * deps: send@0.7.2 - - deps: depd@0.4.4 - -1.4.1 / 2014-07-26 -================== - - * deps: send@0.7.1 - - deps: depd@0.4.3 - -1.4.0 / 2014-07-21 -================== - - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - deps: debug@1.0.4 - - deps: depd@0.4.2 - -1.3.2 / 2014-07-11 -================== - - * deps: send@0.6.0 - - Cap `maxAge` value to 1 year - - deps: debug@1.0.3 - -1.3.1 / 2014-07-09 -================== - - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - -1.3.0 / 2014-06-28 -================== - - * Add `setHeaders` option - * Include HTML link in redirect response - * deps: send@0.5.0 - - Accept string for `maxAge` (converted by `ms`) - -1.2.3 / 2014-06-11 -================== - - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - -1.2.2 / 2014-06-09 -================== - - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - -1.2.1 / 2014-06-02 -================== - - * use `escape-html` for escaping - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - -1.2.0 / 2014-05-29 -================== - - * deps: send@0.4.0 - - Calculate ETag with md5 for reduced collisions - - Fix wrong behavior when index file matches directory - - Ignore stream errors after request ends - - Skip directories in index file search - - deps: debug@0.8.1 - -1.1.0 / 2014-04-24 -================== - - * Accept options directly to `send` module - * deps: send@0.3.0 - -1.0.4 / 2014-04-07 -================== - - * Resolve relative paths at middleware setup - * Use parseurl to parse the URL from request - -1.0.3 / 2014-03-20 -================== - - * Do not rely on connect-like environments - -1.0.2 / 2014-03-06 -================== - - * deps: send@0.2.0 - -1.0.1 / 2014-03-05 -================== - - * Add mime export for back-compat - -1.0.0 / 2014-03-05 -================== - - * Genesis from `connect` diff --git a/node_modules/express/node_modules/serve-static/LICENSE b/node_modules/express/node_modules/serve-static/LICENSE deleted file mode 100644 index b7bc085..0000000 --- a/node_modules/express/node_modules/serve-static/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -(The MIT License) - -Copyright (c) 2010 Sencha Inc. -Copyright (c) 2011 LearnBoost -Copyright (c) 2011 TJ Holowaychuk -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/serve-static/README.md b/node_modules/express/node_modules/serve-static/README.md deleted file mode 100644 index 0be4fb8..0000000 --- a/node_modules/express/node_modules/serve-static/README.md +++ /dev/null @@ -1,159 +0,0 @@ -# serve-static - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] -[![Gratipay][gratipay-image]][gratipay-url] - -## Install - -```sh -$ npm install serve-static -``` - -## API - -```js -var serveStatic = require('serve-static') -``` - -### serveStatic(root, options) - -Create a new middleware function to serve files from within a given root -directory. The file to serve will be determined by combining `req.url` -with the provided root directory. When a file is not found, instead of -sending a 404 response, this module will instead call `next()` to move on -to the next middleware, allowing for stacking and fall-backs. - -#### Options - -##### dotfiles - - Set how "dotfiles" are treated when encountered. A dotfile is a file -or directory that begins with a dot ("."). Note this check is done on -the path itself without checking if the path actually exists on the -disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when when set -to "deny"). - -The default value is `'ignore'`. - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Send a 403 for any request for a dotfile. - - `'ignore'` Pretend like the dotfile does not exist and call `next()`. - -##### etag - -Enable or disable etag generation, defaults to true. - -##### extensions - -Set file extension fallbacks. When set, if a file is not found, the given -extensions will be added to the file name and search for. The first that -exists will be served. Example: `['html', 'htm']`. - -The default value is `false`. - -##### index - -By default this module will send "index.html" files in response to a request -on a directory. To disable this set `false` or to supply a new index pass a -string or an array in preferred order. - -##### lastModified - -Enable or disable `Last-Modified` header, defaults to true. Uses the file -system's last modified value. - -##### maxAge - -Provide a max-age in milliseconds for http caching, defaults to 0. This -can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme) -module. - -##### redirect - -Redirect to trailing "/" when the pathname is a dir. Defaults to `true`. - -##### setHeaders - -Function to set custom headers on response. - -## Examples - -### Serve files with vanilla node.js http server - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', {'index': ['index.html', 'index.htm']}) - -// Create server -var server = http.createServer(function(req, res){ - var done = finalhandler(req, res) - serve(req, res, done) -}) - -// Listen -server.listen(3000) -``` - -### Serve all files as downloads - -```js -var contentDisposition = require('content-disposition') -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', { - 'index': false, - 'setHeaders': setHeaders -}) - -// Set header to force download -function setHeaders(res, path) { - res.setHeader('Content-Disposition', contentDisposition(path)) -} - -// Create server -var server = http.createServer(function(req, res){ - var done = finalhandler(req, res) - serve(req, res, done) -}) - -// Listen -server.listen(3000) -``` - -### Serving using express - -```js -var connect = require('connect') -var serveStatic = require('serve-static') - -var app = connect() - -app.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']})) -app.listen(3000) -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/serve-static.svg?style=flat -[npm-url]: https://npmjs.org/package/serve-static -[travis-image]: https://img.shields.io/travis/expressjs/serve-static.svg?style=flat -[travis-url]: https://travis-ci.org/expressjs/serve-static -[coveralls-image]: https://img.shields.io/coveralls/expressjs/serve-static.svg?style=flat -[coveralls-url]: https://coveralls.io/r/expressjs/serve-static -[downloads-image]: https://img.shields.io/npm/dm/serve-static.svg?style=flat -[downloads-url]: https://npmjs.org/package/serve-static -[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg?style=flat -[gratipay-url]: https://gratipay.com/dougwilson/ diff --git a/node_modules/express/node_modules/serve-static/index.js b/node_modules/express/node_modules/serve-static/index.js deleted file mode 100644 index 12ea659..0000000 --- a/node_modules/express/node_modules/serve-static/index.js +++ /dev/null @@ -1,118 +0,0 @@ -/*! - * serve-static - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var escapeHtml = require('escape-html'); -var merge = require('utils-merge'); -var parseurl = require('parseurl'); -var resolve = require('path').resolve; -var send = require('send'); -var url = require('url'); - -/** - * @param {String} root - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function serveStatic(root, options) { - if (!root) { - throw new TypeError('root path required') - } - - if (typeof root !== 'string') { - throw new TypeError('root path must be a string') - } - - // copy options object - options = merge({}, options) - - // resolve root to absolute - root = resolve(root) - - // default redirect - var redirect = options.redirect !== false - - // headers listener - var setHeaders = options.setHeaders - delete options.setHeaders - - if (setHeaders && typeof setHeaders !== 'function') { - throw new TypeError('option setHeaders must be function') - } - - // setup options for send - options.maxage = options.maxage || options.maxAge || 0 - options.root = root - - return function serveStatic(req, res, next) { - if (req.method !== 'GET' && req.method !== 'HEAD') { - return next() - } - - var opts = merge({}, options) - var originalUrl = parseurl.original(req) - var path = parseurl(req).pathname - var hasTrailingSlash = originalUrl.pathname[originalUrl.pathname.length - 1] === '/' - - if (path === '/' && !hasTrailingSlash) { - // make sure redirect occurs at mount - path = '' - } - - // create send stream - var stream = send(req, path, opts) - - if (redirect) { - // redirect relative to originalUrl - stream.on('directory', function redirect() { - if (hasTrailingSlash) { - return next() - } - - originalUrl.pathname += '/' - - var target = url.format(originalUrl) - - res.statusCode = 303 - res.setHeader('Content-Type', 'text/html; charset=utf-8') - res.setHeader('Location', target) - res.end('Redirecting to ' + escapeHtml(target) + '\n') - }) - } else { - // forward to next middleware on directory - stream.on('directory', next) - } - - // add headers listener - if (setHeaders) { - stream.on('headers', setHeaders) - } - - // forward non-404 errors - stream.on('error', function error(err) { - next(err.status === 404 ? null : err) - }) - - // pipe - stream.pipe(res) - } -} - -/** - * Expose mime module. - * - * If you wish to extend the mime table use this - * reference to the "mime" module in the npm registry. - */ - -exports.mime = send.mime diff --git a/node_modules/express/node_modules/serve-static/package.json b/node_modules/express/node_modules/serve-static/package.json deleted file mode 100644 index cd04ac2..0000000 --- a/node_modules/express/node_modules/serve-static/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "serve-static", - "description": "Serve static files", - "version": "1.7.1", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/serve-static" - }, - "dependencies": { - "escape-html": "1.0.1", - "parseurl": "~1.3.0", - "send": "0.10.1", - "utils-merge": "1.0.0" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~2.0.0", - "should": "~4.1.0", - "supertest": "~0.14.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks --require should test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks --require should test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks --require should test/" - }, - "gitHead": "61f59894e6a3d41532383ca440a395772bcdc8ed", - "bugs": { - "url": "https://github.com/expressjs/serve-static/issues" - }, - "homepage": "https://github.com/expressjs/serve-static", - "_id": "serve-static@1.7.1", - "_shasum": "6ea54d5ba7ef563f00e5fad25d0e4f5307e9809b", - "_from": "serve-static@>=1.7.1 <1.8.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - } - ], - "dist": { - "shasum": "6ea54d5ba7ef563f00e5fad25d0e4f5307e9809b", - "tarball": "http://registry.npmjs.org/serve-static/-/serve-static-1.7.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.7.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/type-is/HISTORY.md b/node_modules/express/node_modules/type-is/HISTORY.md deleted file mode 100644 index 980a779..0000000 --- a/node_modules/express/node_modules/type-is/HISTORY.md +++ /dev/null @@ -1,85 +0,0 @@ -1.5.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - Add new mime types - - deps: mime-db@~1.2.0 - -1.5.2 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - Add new mime types - - deps: mime-db@~1.1.0 - -1.5.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - * deps: media-typer@0.3.0 - * deps: mime-types@~2.0.1 - - Support Node.js 0.6 - -1.5.0 / 2014-09-05 -================== - - * fix `hasbody` to be true for `content-length: 0` - -1.4.0 / 2014-09-02 -================== - - * update mime-types - -1.3.2 / 2014-06-24 -================== - - * use `~` range on mime-types - -1.3.1 / 2014-06-19 -================== - - * fix global variable leak - -1.3.0 / 2014-06-19 -================== - - * improve type parsing - - - invalid media type never matches - - media type not case-sensitive - - extra LWS does not affect results - -1.2.2 / 2014-06-19 -================== - - * fix behavior on unknown type argument - -1.2.1 / 2014-06-03 -================== - - * switch dependency from `mime` to `mime-types@1.0.0` - -1.2.0 / 2014-05-11 -================== - - * support suffix matching: - - - `+json` matches `application/vnd+json` - - `*/vnd+json` matches `application/vnd+json` - - `application/*+json` matches `application/vnd+json` - -1.1.0 / 2014-04-12 -================== - - * add non-array values support - * expose internal utilities: - - - `.is()` - - `.hasBody()` - - `.normalize()` - - `.match()` - -1.0.1 / 2014-03-30 -================== - - * add `multipart` as a shorthand diff --git a/node_modules/express/node_modules/type-is/LICENSE b/node_modules/express/node_modules/type-is/LICENSE deleted file mode 100644 index 4164d08..0000000 --- a/node_modules/express/node_modules/type-is/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.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/node_modules/express/node_modules/type-is/README.md b/node_modules/express/node_modules/type-is/README.md deleted file mode 100644 index 99e5320..0000000 --- a/node_modules/express/node_modules/type-is/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# type-is - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Infer the content-type of a request. - -### Install - -```sh -$ npm install type-is -``` - -## API - -```js -var http = require('http') -var is = require('type-is') - -http.createServer(function (req, res) { - var istext = is(req, ['text/*']) - res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text') -}) -``` - -### type = is(request, types) - -`request` is the node HTTP request. `types` is an array of types. - -```js -// req.headers.content-type = 'application/json' - -is(req, ['json']) // 'json' -is(req, ['html', 'json']) // 'json' -is(req, ['application/*']) // 'application/json' -is(req, ['application/json']) // 'application/json' - -is(req, ['html']) // false -``` - -#### Each type can be: - -- An extension name such as `json`. This name will be returned if matched. -- A mime type such as `application/json`. -- A mime type with a wildcard such as `*/json` or `application/*`. The full mime type will be returned if matched -- A suffix such as `+json`. This can be combined with a wildcard such as `*/vnd+json` or `application/*+json`. The full mime type will be returned if matched. - -`false` will be returned if no type matches. - -## Examples - -#### Example body parser - -```js -var is = require('type-is'); - -function bodyParser(req, res, next) { - if (!is.hasBody(req)) { - return next() - } - - switch (is(req, ['urlencoded', 'json', 'multipart'])) { - case 'urlencoded': - // parse urlencoded body - throw new Error('implement urlencoded body parsing') - break - case 'json': - // parse json body - throw new Error('implement json body parsing') - break - case 'multipart': - // parse multipart body - throw new Error('implement multipart body parsing') - break - default: - // 415 error code - res.statusCode = 415 - res.end() - return - } -} -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/type-is.svg?style=flat -[npm-url]: https://npmjs.org/package/type-is -[node-version-image]: https://img.shields.io/node/v/type-is.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/type-is.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/type-is -[coveralls-image]: https://img.shields.io/coveralls/jshttp/type-is.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master -[downloads-image]: https://img.shields.io/npm/dm/type-is.svg?style=flat -[downloads-url]: https://npmjs.org/package/type-is diff --git a/node_modules/express/node_modules/type-is/index.js b/node_modules/express/node_modules/type-is/index.js deleted file mode 100644 index 8d220d1..0000000 --- a/node_modules/express/node_modules/type-is/index.js +++ /dev/null @@ -1,226 +0,0 @@ - -var typer = require('media-typer') -var mime = require('mime-types') - -module.exports = typeofrequest; -typeofrequest.is = typeis; -typeofrequest.hasBody = hasbody; -typeofrequest.normalize = normalize; -typeofrequest.match = mimeMatch; - -/** - * Compare a `value` content-type with `types`. - * Each `type` can be an extension like `html`, - * a special shortcut like `multipart` or `urlencoded`, - * or a mime type. - * - * If no types match, `false` is returned. - * Otherwise, the first `type` that matches is returned. - * - * @param {String} value - * @param {Array} types - * @return String - */ - -function typeis(value, types_) { - var i - var types = types_ - - // remove parameters and normalize - value = typenormalize(value) - - // no type or invalid - if (!value) { - return false - } - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length - 1) - for (i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // no types, return the content type - if (!types || !types.length) return value; - - var type - for (i = 0; i < types.length; i++) { - if (mimeMatch(normalize(type = types[i]), value)) { - return type[0] === '+' || ~type.indexOf('*') - ? value - : type - } - } - - // no matches - return false; -} - -/** - * Check if a request has a request body. - * A request with a body __must__ either have `transfer-encoding` - * or `content-length` headers set. - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 - * - * @param {Object} request - * @return {Boolean} - * @api public - */ - -function hasbody(req) { - var headers = req.headers; - if ('transfer-encoding' in headers) return true; - return !isNaN(headers['content-length']); -} - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains any of the give mime `type`s. - * If there is no request body, `null` is returned. - * If there is no content type, `false` is returned. - * Otherwise, it returns the first `type` that matches. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * this.is('html'); // => 'html' - * this.is('text/html'); // => 'text/html' - * this.is('text/*', 'application/json'); // => 'text/html' - * - * // When Content-Type is application/json - * this.is('json', 'urlencoded'); // => 'json' - * this.is('application/json'); // => 'application/json' - * this.is('html', 'application/*'); // => 'application/json' - * - * this.is('html'); // => false - * - * @param {String|Array} types... - * @return {String|false|null} - * @api public - */ - -function typeofrequest(req, types_) { - var types = types_ - - // no body - if (!hasbody(req)) { - return null - } - - // support flattened arguments - if (arguments.length > 2) { - types = new Array(arguments.length - 1) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // request content type - var value = req.headers['content-type'] - - return typeis(value, types); -} - -/** - * Normalize a mime type. - * If it's a shorthand, expand it to a valid mime type. - * - * In general, you probably want: - * - * var type = is(req, ['urlencoded', 'json', 'multipart']); - * - * Then use the appropriate body parsers. - * These three are the most common request body types - * and are thus ensured to work. - * - * @param {String} type - * @api private - */ - -function normalize(type) { - switch (type) { - case 'urlencoded': return 'application/x-www-form-urlencoded'; - case 'multipart': - type = 'multipart/*'; - break; - } - - return type[0] === '+' || ~type.indexOf('/') - ? type - : mime.lookup(type) -} - -/** - * Check if `exected` mime type - * matches `actual` mime type with - * wildcard and +suffix support. - * - * @param {String} expected - * @param {String} actual - * @return {Boolean} - * @api private - */ - -function mimeMatch(expected, actual) { - // invalid type - if (expected === false) { - return false - } - - // exact match - if (expected === actual) { - return true - } - - actual = actual.split('/'); - - if (expected[0] === '+') { - // support +suffix - return Boolean(actual[1]) - && expected.length <= actual[1].length - && expected === actual[1].substr(0 - expected.length) - } - - if (!~expected.indexOf('*')) return false; - - expected = expected.split('/'); - - if (expected[0] === '*') { - // support */yyy - return expected[1] === actual[1] - } - - if (expected[1] === '*') { - // support xxx/* - return expected[0] === actual[0] - } - - if (expected[1][0] === '*' && expected[1][1] === '+') { - // support xxx/*+zzz - return expected[0] === actual[0] - && expected[1].length <= actual[1].length + 1 - && expected[1].substr(1) === actual[1].substr(1 - expected[1].length) - } - - return false -} - -/** - * Normalize a type and remove parameters. - * - * @param {string} value - * @return {string} - * @api private - */ - -function typenormalize(value) { - try { - var type = typer.parse(value) - delete type.parameters - return typer.format(type) - } catch (err) { - return null - } -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md deleted file mode 100644 index 0e00bf7..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,45 +0,0 @@ -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Add additional compressible - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE b/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.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/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md deleted file mode 100644 index 99d658b..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# mime-types - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [node-mime](https://github.com/broofa/node-mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, - so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) -- No `.define()` functionality - -Otherwise, the API is compatible. - -## Install - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://github.com/jshttp/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/x-markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/x-markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/mime-types.svg?style=flat -[npm-url]: https://npmjs.org/package/mime-types -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/mime-types.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/mime-types -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types -[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg?style=flat -[downloads-url]: https://npmjs.org/package/mime-types diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js b/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js deleted file mode 100644 index b46a202..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js +++ /dev/null @@ -1,63 +0,0 @@ - -var db = require('mime-db') - -// types[extension] = type -exports.types = Object.create(null) -// extensions[type] = [extensions] -exports.extensions = Object.create(null) - -Object.keys(db).forEach(function (name) { - var mime = db[name] - var exts = mime.extensions - if (!exts || !exts.length) return - exports.extensions[name] = exts - exts.forEach(function (ext) { - exports.types[ext] = name - }) -}) - -exports.lookup = function (string) { - if (!string || typeof string !== "string") return false - // remove any leading paths, though we should just use path.basename - string = string.replace(/.*[\.\/\\]/, '').toLowerCase() - if (!string) return false - return exports.types[string] || false -} - -exports.extension = function (type) { - if (!type || typeof type !== "string") return false - // to do: use media-typer - type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/) - if (!type) return false - var exts = exports.extensions[type[1].toLowerCase()] - if (!exts || !exts.length) return false - return exts[0] -} - -// type has to be an exact mime type -exports.charset = function (type) { - var mime = db[type] - if (mime && mime.charset) return mime.charset - - // default text/* to utf-8 - if (/^text\//.test(type)) return 'UTF-8' - - return false -} - -// backwards compatibility -exports.charsets = { - lookup: exports.charset -} - -// to do: maybe use set-type module or something -exports.contentType = function (type) { - if (!type || typeof type !== "string") return false - if (!~type.indexOf('/')) type = exports.lookup(type) - if (!type) return false - if (!~type.indexOf('charset')) { - var charset = exports.charset(type) - if (charset) type += '; charset=' + charset.toLowerCase() - } - return type -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.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/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md deleted file mode 100644 index 3b6364e..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a database of all mime types. -It consistents of a single, public JSON file and does not include any logic, -allowing it to remain as unopinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - -## Usage - -```bash -npm i mime-db -``` - -```js -var db = require('mime-db'); - -// grab data on .js files -var data = db['application/javascript']; -``` - -If you're crazy enough to use this in the browser, -you can just grab the JSON file: - -``` -https://cdn.rawgit.com/jshttp/mime-db/master/db.json -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type is can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Repository Structure - -- `scripts` - these are scripts to run to build the database -- `src/` - this is a folder of files created from remote sources like Apache and IANA -- `lib/` - this is a folder of our own custom sources and db, which will be merged into `db.json` -- `db.json` - the final built JSON file for end-user usage - -## Contributing - -To edit the database, only make PRs against files in the `lib/` folder. -To update the build, run `npm run update`. - -[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg?style=flat -[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg?style=flat -[npm-url]: https://npmjs.org/package/mime-db -[travis-image]: https://img.shields.io/travis/jshttp/mime-db.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/mime-db -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://img.shields.io/node/v/mime-db.svg?style=flat -[node-url]: http://nodejs.org/download/ diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json deleted file mode 100644 index 5542caf..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json +++ /dev/null @@ -1,6337 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana" - }, - "application/3gpp-ims+xml": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/atf": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana" - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "extensions": ["atomsvc"] - }, - "application/auth-policy+xml": { - "source": "iana" - }, - "application/bacnet-xdd+zip": { - "source": "iana" - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/beep+xml": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana" - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/cbor": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana" - }, - "application/ccxml+xml": { - "source": "iana", - "extensions": ["ccxml"] - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana" - }, - "application/cellml+xml": { - "source": "iana" - }, - "application/cfw": { - "source": "iana" - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana" - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana" - }, - "application/cstadata+xml": { - "source": "iana" - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "extensions": ["mdp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana" - }, - "application/dicom": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "extensions": ["dbk"] - }, - "application/dskpp+xml": { - "source": "iana" - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/emma+xml": { - "source": "iana", - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana" - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana" - }, - "application/epub+zip": { - "source": "iana", - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/example": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana" - }, - "application/fits": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false, - "extensions": ["woff"] - }, - "application/font-woff2": { - "compressible": false, - "extensions": ["woff2"] - }, - "application/framework-attributes+xml": { - "source": "iana" - }, - "application/gml+xml": { - "source": "apache", - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana" - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana" - }, - "application/ibe-pkg-reply+xml": { - "source": "iana" - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana" - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana" - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js"] - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/kpml-request+xml": { - "source": "iana" - }, - "application/kpml-response+xml": { - "source": "iana" - }, - "application/ld+json": { - "source": "iana", - "compressible": true - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "extensions": ["mads"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana" - }, - "application/mathml-presentation+xml": { - "source": "iana" - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana" - }, - "application/mbms-deregister+xml": { - "source": "iana" - }, - "application/mbms-envelope+xml": { - "source": "iana" - }, - "application/mbms-msk+xml": { - "source": "iana" - }, - "application/mbms-msk-response+xml": { - "source": "iana" - }, - "application/mbms-protection-description+xml": { - "source": "iana" - }, - "application/mbms-reception-report+xml": { - "source": "iana" - }, - "application/mbms-register+xml": { - "source": "iana" - }, - "application/mbms-register-response+xml": { - "source": "iana" - }, - "application/mbms-schedule+xml": { - "source": "iana" - }, - "application/mbms-user-service-description+xml": { - "source": "iana" - }, - "application/mbox": { - "source": "apache", - "extensions": ["mbox"] - }, - "application/mbox+xml": { - "source": "iana" - }, - "application/media-policy-dataset+xml": { - "source": "iana" - }, - "application/media_control+xml": { - "source": "iana" - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "extensions": ["mets"] - }, - "application/mikey": { - "source": "iana" - }, - "application/mods+xml": { - "source": "iana", - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana" - }, - "application/mrb-publish+xml": { - "source": "iana" - }, - "application/msc-ivr+xml": { - "source": "iana" - }, - "application/msc-mixer+xml": { - "source": "iana" - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana" - }, - "application/news-groupinfo": { - "source": "iana" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana" - }, - "application/nss": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "apache" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/oscp-response": { - "source": "iana" - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p2p-overlay+xml": { - "source": "iana" - }, - "application/parityfec": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana" - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana" - }, - "application/pidf-diff+xml": { - "source": "iana" - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana" - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/provenance+xml": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.hpub+zip": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana" - }, - "application/pskc+xml": { - "source": "iana", - "extensions": ["pskcxml"] - }, - "application/qsig": { - "source": "iana" - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf"] - }, - "application/reginfo+xml": { - "source": "iana", - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "extensions": ["rld"] - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana" - }, - "application/rls-services+xml": { - "source": "iana", - "extensions": ["rs"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana" - }, - "application/samlmetadata+xml": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana" - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/sep+xml": { - "source": "iana" - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana" - }, - "application/simple-filter+xml": { - "source": "iana" - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "extensions": ["srx"] - }, - "application/spirits-event+xml": { - "source": "iana" - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "extensions": ["ssml"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "extensions": ["tei","teicorpus"] - }, - "application/thraud+xml": { - "source": "iana", - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/ttml+xml": { - "source": "iana" - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana" - }, - "application/urc-ressheet+xml": { - "source": "iana" - }, - "application/urc-targetdesc+xml": { - "source": "iana" - }, - "application/urc-uisocketdesc+xml": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana" - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd-acucobol": { - "source": "iana" - }, - "application/vnd-curl": { - "source": "iana" - }, - "application/vnd-dart": { - "source": "iana" - }, - "application/vnd-dxr": { - "source": "iana" - }, - "application/vnd-fdf": { - "source": "iana" - }, - "application/vnd-mif": { - "source": "iana" - }, - "application/vnd-sema": { - "source": "iana" - }, - "application/vnd-wap-wmlc": { - "source": "iana" - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "apache", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "extensions": ["air"] - }, - "application/vnd.adobe.flash-movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "extensions": ["mpkg"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avistar+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana" - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "extensions": ["cdxml"] - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "extensions": ["wbs"] - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana" - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "apache" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana" - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "apache", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece-zip": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "apache", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume-movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana" - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana" - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "apache", - "extensions": ["svc"] - }, - "application/vnd.dvb_service": { - "source": "iana" - }, - "application/vnd.dxr": { - "source": "apache" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana" - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.eprints.data+xml": { - "source": "iana" - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana" - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana" - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana" - }, - "application/vnd.etsi.cug+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana" - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana" - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana" - }, - "application/vnd.etsi.sci+xml": { - "source": "iana" - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana" - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana" - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "apache", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana" - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana" - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana" - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana" - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana" - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana" - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las.las+xml": { - "source": "iana", - "extensions": ["lasxml"] - }, - "application/vnd.liberty-request+xml": { - "source": "iana" - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "extensions": ["lbe"] - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micrografx-igx": { - "source": "iana" - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "apache", - "extensions": ["igx"] - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "apache", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana" - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana" - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache" - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana" - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana" - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana" - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana" - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana" - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana" - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana" - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana" - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana" - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana" - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana" - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana" - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana" - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana" - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana" - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana" - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana" - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana" - }, - "application/vnd.omads-email+xml": { - "source": "iana" - }, - "application/vnd.omads-file+xml": { - "source": "iana" - }, - "application/vnd.omads-folder+xml": { - "source": "iana" - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "apache", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "apache", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "apache", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana" - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana" - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos+xml": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "apache" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana" - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "apache" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana" - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana" - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed-doc": { - "source": "iana" - }, - "application/vnd.sealed-eml": { - "source": "iana" - }, - "application/vnd.sealed-mht": { - "source": "iana" - }, - "application/vnd.sealed-ppt": { - "source": "iana" - }, - "application/vnd.sealed-tiff": { - "source": "iana" - }, - "application/vnd.sealed-xls": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "apache" - }, - "application/vnd.sealed.eml": { - "source": "apache" - }, - "application/vnd.sealed.mht": { - "source": "apache" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "apache" - }, - "application/vnd.sealed.tiff": { - "source": "apache" - }, - "application/vnd.sealed.xls": { - "source": "apache" - }, - "application/vnd.sealedmedia.softseal-html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal-pdf": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "apache" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "apache" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.sema": { - "source": "apache", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana" - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana" - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana" - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap-slc": { - "source": "iana" - }, - "application/vnd.wap-wbxml": { - "source": "iana" - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "apache" - }, - "application/vnd.wap.wbxml": { - "source": "apache", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "apache", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana" - }, - "application/vnd.wv.ssp+xml": { - "source": "iana" - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana" - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "extensions": ["vxml"] - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/vwg-multiplexed": { - "source": "iana" - }, - "application/watcherinfo+xml": { - "source": "iana" - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-otf": { - "source": "apache", - "compressible": true, - "extensions": ["otf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-ttf": { - "source": "apache", - "compressible": true, - "extensions": ["ttf","ttc"] - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "apache", - "extensions": ["der","crt"] - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana" - }, - "application/xaml+xml": { - "source": "apache", - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana" - }, - "application/xcap-caps+xml": { - "source": "iana" - }, - "application/xcap-diff+xml": { - "source": "iana", - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana" - }, - "application/xcap-error+xml": { - "source": "iana" - }, - "application/xcap-ns+xml": { - "source": "iana" - }, - "application/xcon-conference-info+xml": { - "source": "iana" - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana" - }, - "application/xenc+xml": { - "source": "iana", - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "iana" - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana" - }, - "application/xmpp+xml": { - "source": "iana" - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "extensions": ["xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yin+xml": { - "source": "iana", - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana" - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana" - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/example": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g721": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "apache" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana" - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4a","m4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx"] - }, - "audio/opus": { - "source": "apache" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal-mpeg": { - "source": "iana" - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "apache" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/opentype": { - "compressible": true, - "extensions": ["otf"] - }, - "image/bmp": { - "source": "apache", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/example": { - "source": "iana" - }, - "image/fits": { - "source": "iana" - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jp2": { - "source": "iana" - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jpm": { - "source": "iana" - }, - "image/jpx": { - "source": "iana" - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana" - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana" - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tiff","tif"] - }, - "image/tiff-fx": { - "source": "iana" - }, - "image/vnd-djvu": { - "source": "iana" - }, - "image/vnd-svf": { - "source": "iana" - }, - "image/vnd-wap-wbmp": { - "source": "iana" - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "apache", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana" - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed-png": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "apache" - }, - "image/vnd.sealedmedia.softseal-gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal-jpg": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "apache" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "apache" - }, - "image/vnd.svf": { - "source": "apache" - }, - "image/vnd.tencent.tap": { - "source": "iana" - }, - "image/vnd.valve.source.texture": { - "source": "iana" - }, - "image/vnd.wap.wbmp": { - "source": "apache", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana" - }, - "message/example": { - "source": "iana" - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana" - }, - "message/global-delivery-status": { - "source": "iana" - }, - "message/global-disposition-notification": { - "source": "iana" - }, - "message/global-headers": { - "source": "iana" - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana" - }, - "model/example": { - "source": "iana", - "compressible": false - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/vnd-dwf": { - "source": "iana" - }, - "model/vnd.collada+xml": { - "source": "iana", - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "apache", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "iana" - }, - "model/vnd.gs.gdl": { - "source": "apache" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana" - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana" - }, - "model/vnd.parasolid.transmit-binary": { - "source": "iana" - }, - "model/vnd.parasolid.transmit-text": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.binary": { - "source": "apache" - }, - "model/vnd.parasolid.transmit.text": { - "source": "apache" - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana" - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana" - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana" - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/example": { - "source": "iana" - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana", - "compressible": false - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee"] - }, - "text/css": { - "source": "iana", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/example": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "extensions": ["less"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana" - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd-a": { - "source": "iana" - }, - "text/vnd-curl": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "apache", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana" - }, - "text/vnd.wap-wml": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "apache", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["markdown","md","mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "video/1d-interleaved-parityfec": { - "source": "apache" - }, - "video/3gpp": { - "source": "apache", - "extensions": ["3gp"] - }, - "video/3gpp-tt": { - "source": "apache" - }, - "video/3gpp2": { - "source": "apache", - "extensions": ["3g2"] - }, - "video/bmpeg": { - "source": "apache" - }, - "video/bt656": { - "source": "apache" - }, - "video/celb": { - "source": "apache" - }, - "video/dv": { - "source": "apache" - }, - "video/example": { - "source": "apache" - }, - "video/h261": { - "source": "apache", - "extensions": ["h261"] - }, - "video/h263": { - "source": "apache", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "apache" - }, - "video/h263-2000": { - "source": "apache" - }, - "video/h264": { - "source": "apache", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "apache" - }, - "video/h264-svc": { - "source": "apache" - }, - "video/jpeg": { - "source": "apache", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "apache" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/mj2": { - "source": "apache", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "apache" - }, - "video/mp2p": { - "source": "apache" - }, - "video/mp2t": { - "source": "apache", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "apache", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "apache" - }, - "video/mpeg": { - "source": "apache", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "apache" - }, - "video/mpv": { - "source": "apache" - }, - "video/nv": { - "source": "apache" - }, - "video/ogg": { - "source": "apache", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "apache" - }, - "video/pointer": { - "source": "apache" - }, - "video/quicktime": { - "source": "apache", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raw": { - "source": "apache" - }, - "video/rtp-enc-aescm128": { - "source": "apache" - }, - "video/rtx": { - "source": "apache" - }, - "video/smpte292m": { - "source": "apache" - }, - "video/ulpfec": { - "source": "apache" - }, - "video/vc1": { - "source": "apache" - }, - "video/vnd.cctv": { - "source": "apache" - }, - "video/vnd.dece.hd": { - "source": "apache", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "apache", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "apache" - }, - "video/vnd.dece.pd": { - "source": "apache", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "apache", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "apache", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "apache" - }, - "video/vnd.directv.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dvb.file": { - "source": "apache", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "apache", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "apache" - }, - "video/vnd.motorola.video": { - "source": "apache" - }, - "video/vnd.motorola.videop": { - "source": "apache" - }, - "video/vnd.mpegurl": { - "source": "apache", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "apache", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "apache" - }, - "video/vnd.nokia.videovoip": { - "source": "apache" - }, - "video/vnd.objectvideo": { - "source": "apache" - }, - "video/vnd.sealed.mpeg1": { - "source": "apache" - }, - "video/vnd.sealed.mpeg4": { - "source": "apache" - }, - "video/vnd.sealed.swf": { - "source": "apache" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "apache" - }, - "video/vnd.uvvu.mp4": { - "source": "apache", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "apache", - "extensions": ["viv"] - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js deleted file mode 100644 index 551031f..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json deleted file mode 100644 index d469b30..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.2.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jshttp/mime-db" - }, - "devDependencies": { - "co": "3", - "cogent": "1", - "csv-parse": "0", - "gnode": "0.1.0", - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "stream-to-array": "2" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "db.json", - "index.js" - ], - "scripts": { - "update": "gnode scripts/extensions && gnode scripts/types && node scripts/build", - "clean": "rm src/*", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "gitHead": "caf5b253569f0267e31044602d2f1078028e2361", - "bugs": { - "url": "https://github.com/jshttp/mime-db/issues" - }, - "homepage": "https://github.com/jshttp/mime-db", - "_id": "mime-db@1.2.0", - "_shasum": "76b92e7ecac673f5dab066a10b66faea1be2f01f", - "_from": "mime-db@>=1.2.0 <1.3.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "76b92e7ecac673f5dab066a10b66faea1be2f01f", - "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json b/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json deleted file mode 100644 index cf2e69c..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.0.3", - "contributors": [ - { - "name": "Jeremiah Senkpiel", - "email": "fishrock123@rocketmail.com", - "url": "https://searchbeam.jit.su" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/mime-types" - }, - "dependencies": { - "mime-db": "~1.2.0" - }, - "devDependencies": { - "istanbul": "0", - "mocha": "~1.21.5" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec test/test.js", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" - }, - "gitHead": "7d38db8c0576cf7a2dd49df4818dc129090b3a2f", - "bugs": { - "url": "https://github.com/jshttp/mime-types/issues" - }, - "homepage": "https://github.com/jshttp/mime-types", - "_id": "mime-types@2.0.3", - "_shasum": "70b5cb5165b55dcb4972839f16d6077b0bb506f4", - "_from": "mime-types@>=2.0.3 <2.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "70b5cb5165b55dcb4972839f16d6077b0bb506f4", - "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.0.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/type-is/package.json b/node_modules/express/node_modules/type-is/package.json deleted file mode 100644 index 661ae29..0000000 --- a/node_modules/express/node_modules/type-is/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "type-is", - "description": "Infer the content-type of a request.", - "version": "1.5.3", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/jshttp/type-is" - }, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.0.3" - }, - "devDependencies": { - "istanbul": "~0.3.0", - "mocha": "~1.21.5" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "keywords": [ - "content", - "type", - "checking" - ], - "gitHead": "202b4823bcc0aeda3595c14a03fdcb2c60cb0ebf", - "bugs": { - "url": "https://github.com/jshttp/type-is/issues" - }, - "homepage": "https://github.com/jshttp/type-is", - "_id": "type-is@1.5.3", - "_shasum": "b7fb92d0abc628393f10dd260932cca65fe9ff68", - "_from": "type-is@>=1.5.3 <1.6.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - } - ], - "dist": { - "shasum": "b7fb92d0abc628393f10dd260932cca65fe9ff68", - "tarball": "http://registry.npmjs.org/type-is/-/type-is-1.5.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/utils-merge/.travis.yml b/node_modules/express/node_modules/utils-merge/.travis.yml deleted file mode 100644 index af92b02..0000000 --- a/node_modules/express/node_modules/utils-merge/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: "node_js" -node_js: - - "0.4" - - "0.6" - - "0.8" - - "0.10" diff --git a/node_modules/express/node_modules/utils-merge/LICENSE b/node_modules/express/node_modules/utils-merge/LICENSE deleted file mode 100644 index e33bd10..0000000 --- a/node_modules/express/node_modules/utils-merge/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 Jared Hanson - -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/node_modules/express/node_modules/utils-merge/README.md b/node_modules/express/node_modules/utils-merge/README.md deleted file mode 100644 index 2f94e9b..0000000 --- a/node_modules/express/node_modules/utils-merge/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# utils-merge - -Merges the properties from a source object into a destination object. - -## Install - - $ npm install utils-merge - -## Usage - -```javascript -var a = { foo: 'bar' } - , b = { bar: 'baz' }; - -merge(a, b); -// => { foo: 'bar', bar: 'baz' } -``` - -## Tests - - $ npm install - $ npm test - -[![Build Status](https://secure.travis-ci.org/jaredhanson/utils-merge.png)](http://travis-ci.org/jaredhanson/utils-merge) - -## Credits - - - [Jared Hanson](http://github.com/jaredhanson) - -## License - -[The MIT License](http://opensource.org/licenses/MIT) - -Copyright (c) 2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)> diff --git a/node_modules/express/node_modules/utils-merge/index.js b/node_modules/express/node_modules/utils-merge/index.js deleted file mode 100644 index 4265c69..0000000 --- a/node_modules/express/node_modules/utils-merge/index.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Merge object b with object a. - * - * var a = { foo: 'bar' } - * , b = { bar: 'baz' }; - * - * merge(a, b); - * // => { foo: 'bar', bar: 'baz' } - * - * @param {Object} a - * @param {Object} b - * @return {Object} - * @api public - */ - -exports = module.exports = function(a, b){ - if (a && b) { - for (var key in b) { - a[key] = b[key]; - } - } - return a; -}; diff --git a/node_modules/express/node_modules/utils-merge/package.json b/node_modules/express/node_modules/utils-merge/package.json deleted file mode 100644 index 8315772..0000000 --- a/node_modules/express/node_modules/utils-merge/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "utils-merge", - "version": "1.0.0", - "description": "merge() utility function", - "keywords": [ - "util" - ], - "repository": { - "type": "git", - "url": "git://github.com/jaredhanson/utils-merge.git" - }, - "bugs": { - "url": "http://github.com/jaredhanson/utils-merge/issues" - }, - "author": { - "name": "Jared Hanson", - "email": "jaredhanson@gmail.com", - "url": "http://www.jaredhanson.net/" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/MIT" - } - ], - "main": "./index", - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x", - "chai": "1.x.x" - }, - "scripts": { - "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js" - }, - "engines": { - "node": ">= 0.4.0" - }, - "readme": "# utils-merge\n\nMerges the properties from a source object into a destination object.\n\n## Install\n\n $ npm install utils-merge\n\n## Usage\n\n```javascript\nvar a = { foo: 'bar' }\n , b = { bar: 'baz' };\n\nmerge(a, b);\n// => { foo: 'bar', bar: 'baz' }\n```\n\n## Tests\n\n $ npm install\n $ npm test\n\n[![Build Status](https://secure.travis-ci.org/jaredhanson/utils-merge.png)](http://travis-ci.org/jaredhanson/utils-merge)\n\n## Credits\n\n - [Jared Hanson](http://github.com/jaredhanson)\n\n## License\n\n[The MIT License](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/jaredhanson/utils-merge", - "_id": "utils-merge@1.0.0", - "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8", - "_from": "utils-merge@1.0.0", - "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" -} diff --git a/node_modules/express/node_modules/vary/.npmignore b/node_modules/express/node_modules/vary/.npmignore deleted file mode 100644 index cd39b77..0000000 --- a/node_modules/express/node_modules/vary/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -coverage/ -test/ -.travis.yml diff --git a/node_modules/express/node_modules/vary/History.md b/node_modules/express/node_modules/vary/History.md deleted file mode 100644 index e5d8e69..0000000 --- a/node_modules/express/node_modules/vary/History.md +++ /dev/null @@ -1,16 +0,0 @@ -1.0.0 / 2014-08-10 -================== - - * Accept valid `Vary` header string as `field` - * Add `vary.append` for low-level string manipulation - * Move to `jshttp` orgainzation - -0.1.0 / 2014-06-05 -================== - - * Support array of fields to set - -0.0.0 / 2014-06-04 -================== - - * Initial release diff --git a/node_modules/express/node_modules/vary/LICENSE b/node_modules/express/node_modules/vary/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/vary/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -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/node_modules/express/node_modules/vary/README.md b/node_modules/express/node_modules/vary/README.md deleted file mode 100644 index 82392d0..0000000 --- a/node_modules/express/node_modules/vary/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# vary - -[![NPM Version](http://img.shields.io/npm/v/vary.svg?style=flat)](https://www.npmjs.org/package/vary) -[![Node.js Version](http://img.shields.io/badge/node.js->=_0.8-blue.svg?style=flat)](http://nodejs.org/download/) -[![Build Status](http://img.shields.io/travis/jshttp/vary.svg?style=flat)](https://travis-ci.org/jshttp/vary) -[![Coverage Status](https://img.shields.io/coveralls/jshttp/vary.svg?style=flat)](https://coveralls.io/r/jshttp/vary) -[![Gittip](http://img.shields.io/gittip/dougwilson.svg?style=flat)](https://www.gittip.com/dougwilson/) - -Manipulate the HTTP Vary header - -## Install - -```sh -$ npm install vary -``` - -## API - -```js -var vary = require('vary') -``` - -### vary(res, field) - -Adds the given header `field` to the `Vary` response header of `res`. -This can be a string of a single field, a string of a valid `Vary` -header, or an array of multiple fields. - -This will append the header if not already listed, otherwise leaves -it listed in the current location. - -```js -// Append "Origin" to the Vary header of the response -vary(res, 'Origin') -``` - -### vary.append(header, field) - -Adds the given header `field` to the `Vary` response header string `header`. -This can be a string of a single field, a string of a valid `Vary` header, -or an array of multiple fields. - -This will append the header if not already listed, otherwise leaves -it listed in the current location. The new header string is returned. - -```js -// Get header string appending "Origin" to "Accept, User-Agent" -vary.append('Accept, User-Agent', 'Origin') -``` - -## Testing - -```sh -$ npm test -``` - -## License - -[MIT](LICENSE) diff --git a/node_modules/express/node_modules/vary/index.js b/node_modules/express/node_modules/vary/index.js deleted file mode 100644 index 1e544e8..0000000 --- a/node_modules/express/node_modules/vary/index.js +++ /dev/null @@ -1,112 +0,0 @@ -/*! - * vary - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = vary; -module.exports.append = append; - -/** - * Variables. - */ - -var separators = /[\(\)<>@,;:\\"\/\[\]\?=\{\}\u0020\u0009]/; - -/** - * Append a field to a vary header. - * - * @param {String} header - * @param {String|Array} field - * @return {String} - * @api public - */ - -function append(header, field) { - if (typeof header !== 'string') { - throw new TypeError('header argument is required'); - } - - if (!field) { - throw new TypeError('field argument is required'); - } - - // get fields array - var fields = !Array.isArray(field) - ? parse(String(field)) - : field; - - // assert on invalid fields - for (var i = 0; i < fields.length; i++) { - if (separators.test(fields[i])) { - throw new TypeError('field argument contains an invalid header'); - } - } - - // existing, unspecified vary - if (header === '*') { - return header; - } - - // enumerate current values - var vals = parse(header.toLowerCase()); - - // unspecified vary - if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) { - return '*'; - } - - for (var i = 0; i < fields.length; i++) { - field = fields[i].toLowerCase(); - - // append value (case-preserving) - if (vals.indexOf(field) === -1) { - vals.push(field); - header = header - ? header + ', ' + fields[i] - : fields[i]; - } - } - - return header; -} - -/** - * Parse a vary header into an array. - * - * @param {String} header - * @return {Array} - * @api private - */ - -function parse(header) { - return header.trim().split(/ *, */); -} - -/** - * Mark that a request is varied on a header field. - * - * @param {Object} res - * @param {String|Array} field - * @api public - */ - -function vary(res, field) { - if (!res || !res.getHeader || !res.setHeader) { - // quack quack - throw new TypeError('res argument is required'); - } - - // get existing header - var val = res.getHeader('Vary') || '' - var header = Array.isArray(val) - ? val.join(', ') - : String(val); - - // set new header - res.setHeader('Vary', append(header, field)); -} diff --git a/node_modules/express/node_modules/vary/package.json b/node_modules/express/node_modules/vary/package.json deleted file mode 100644 index 4e43572..0000000 --- a/node_modules/express/node_modules/vary/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "vary", - "description": "Manipulate the HTTP Vary header", - "version": "1.0.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "keywords": [ - "http", - "res", - "vary" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/vary" - }, - "devDependencies": { - "istanbul": "0.3.0", - "mocha": "~1.21.4", - "should": "~4.0.4", - "supertest": "~0.13.0" - }, - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "56acecd9fa20888132563b00576625ea02a69a35", - "bugs": { - "url": "https://github.com/jshttp/vary/issues" - }, - "homepage": "https://github.com/jshttp/vary", - "_id": "vary@1.0.0", - "_shasum": "c5e76cec20d3820d8f2a96e7bee38731c34da1e7", - "_from": "vary@>=1.0.0 <1.1.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - } - ], - "dist": { - "shasum": "c5e76cec20d3820d8f2a96e7bee38731c34da1e7", - "tarball": "http://registry.npmjs.org/vary/-/vary-1.0.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/vary/-/vary-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/package.json b/node_modules/express/package.json deleted file mode 100644 index d294c3c..0000000 --- a/node_modules/express/package.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "name": "express", - "description": "Fast, unopinionated, minimalist web framework", - "version": "4.10.4", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "contributors": [ - { - "name": "Aaron Heckmann", - "email": "aaron.heckmann+github@gmail.com" - }, - { - "name": "Ciaran Jessup", - "email": "ciaranj@gmail.com" - }, - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Guillermo Rauch", - "email": "rauchg@gmail.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com" - }, - { - "name": "Roman Shtylman", - "email": "shtylman+expressjs@gmail.com" - }, - { - "name": "Young Jae Sim", - "email": "hanul@hanul.me" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/strongloop/express" - }, - "homepage": "http://expressjs.com/", - "keywords": [ - "express", - "framework", - "sinatra", - "web", - "rest", - "restful", - "router", - "app", - "api" - ], - "dependencies": { - "accepts": "~1.1.3", - "content-disposition": "0.5.0", - "cookie-signature": "1.0.5", - "debug": "~2.1.0", - "depd": "~1.0.0", - "escape-html": "1.0.1", - "etag": "~1.5.1", - "finalhandler": "0.3.2", - "fresh": "0.2.4", - "media-typer": "0.3.0", - "methods": "1.1.0", - "on-finished": "~2.1.1", - "parseurl": "~1.3.0", - "path-to-regexp": "0.1.3", - "proxy-addr": "~1.0.4", - "qs": "2.3.3", - "range-parser": "~1.0.2", - "send": "0.10.1", - "serve-static": "~1.7.1", - "type-is": "~1.5.3", - "vary": "~1.0.0", - "cookie": "0.1.2", - "merge-descriptors": "0.0.2", - "utils-merge": "1.0.0" - }, - "devDependencies": { - "after": "0.8.1", - "istanbul": "0.3.2", - "mocha": "~2.0.0", - "should": "~4.3.0", - "supertest": "~0.15.0", - "ejs": "~1.0.0", - "marked": "0.3.2", - "hjs": "~0.0.6", - "body-parser": "~1.9.3", - "connect-redis": "~2.1.0", - "cookie-parser": "~1.3.3", - "express-session": "~1.9.2", - "jade": "~1.7.0", - "method-override": "~2.3.0", - "morgan": "~1.5.0", - "multiparty": "~4.0.0", - "vhost": "~3.0.0" - }, - "engines": { - "node": ">= 0.10.0" - }, - "files": [ - "LICENSE", - "History.md", - "Readme.md", - "index.js", - "lib/" - ], - "scripts": { - "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/", - "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/" - }, - "gitHead": "656e214937889536b0faa73097422061315496f2", - "bugs": { - "url": "https://github.com/strongloop/express/issues" - }, - "_id": "express@4.10.4", - "_shasum": "31aa70acdad6b6093945c30523df8537336deb58", - "_from": "express@*", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "aredridel", - "email": "aredridel@nbtsc.org" - }, - { - "name": "strongloop", - "email": "callback@strongloop.com" - }, - { - "name": "rfeng", - "email": "enjoyjava@gmail.com" - } - ], - "dist": { - "shasum": "31aa70acdad6b6093945c30523df8537336deb58", - "tarball": "http://registry.npmjs.org/express/-/express-4.10.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/express/-/express-4.10.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/jquery/.bowerrc b/node_modules/jquery/.bowerrc deleted file mode 100644 index baa91a3..0000000 --- a/node_modules/jquery/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "bower_components" -} \ No newline at end of file diff --git a/node_modules/jquery/.jscsrc b/node_modules/jquery/.jscsrc deleted file mode 100644 index 27f14e6..0000000 --- a/node_modules/jquery/.jscsrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "preset": "jquery", - - "excludeFiles": [ "src/intro.js", "src/outro.js", "src/sizzle/**/*" ] -} diff --git a/node_modules/jquery/.npmignore b/node_modules/jquery/.npmignore deleted file mode 100644 index 60368eb..0000000 --- a/node_modules/jquery/.npmignore +++ /dev/null @@ -1,14 +0,0 @@ -.jshintignore -.jshintrc - -/.editorconfig -/.gitattributes -/.jscs.json -/.mailmap -/.travis.yml - -/build -/dist/cdn -/speed -/test -/Gruntfile.js diff --git a/node_modules/jquery/AUTHORS.txt b/node_modules/jquery/AUTHORS.txt deleted file mode 100644 index d0a36dd..0000000 --- a/node_modules/jquery/AUTHORS.txt +++ /dev/null @@ -1,227 +0,0 @@ -Authors ordered by first contribution. - -John Resig -Gilles van den Hoven -Michael Geary -Stefan Petre -Yehuda Katz -Corey Jewett -Klaus Hartl -Franck Marcia -Jörn Zaefferer -Paul Bakaus -Brandon Aaron -Mike Alsup -Dave Methvin -Ed Engelhardt -Sean Catchpole -Paul Mclanahan -David Serduke -Richard D. Worth -Scott González -Ariel Flesler -Jon Evans -TJ Holowaychuk -Michael Bensoussan -Robert Katić -Louis-Rémi Babé -Earle Castledine -Damian Janowski -Rich Dougherty -Kim Dalsgaard -Andrea Giammarchi -Mark Gibson -Karl Swedberg -Justin Meyer -Ben Alman -James Padolsey -David Petersen -Batiste Bieler -Alexander Farkas -Rick Waldron -Filipe Fortes -Neeraj Singh -Paul Irish -Iraê Carvalho -Matt Curry -Michael Monteleone -Noah Sloan -Tom Viner -Douglas Neiner -Adam J. Sontag -Dave Reed -Ralph Whitbeck -Carl Fürstenberg -Jacob Wright -J. Ryan Stinnett -unknown -temp01 -Heungsub Lee -Colin Snover -Ryan W Tenney -Pinhook -Ron Otten -Jephte Clain -Anton Matzneller -Alex Sexton -Dan Heberden -Henri Wiechers -Russell Holbrook -Julian Aubourg -Gianni Alessandro Chiappetta -Scott Jehl -James Burke -Jonas Pfenniger -Xavi Ramirez -Jared Grippe -Sylvester Keil -Brandon Sterne -Mathias Bynens -Timmy Willison -Corey Frang -Digitalxero -Anton Kovalyov -David Murdoch -Josh Varner -Charles McNulty -Jordan Boesch -Jess Thrysoee -Michael Murray -Lee Carpenter -Alexis Abril -Rob Morgan -John Firebaugh -Sam Bisbee -Gilmore Davidson -Brian Brennan -Xavier Montillet -Daniel Pihlstrom -Sahab Yazdani -avaly -Scott Hughes -Mike Sherov -Greg Hazel -Schalk Neethling -Denis Knauf -Timo Tijhof -Steen Nielsen -Anton Ryzhov -Shi Chuan -Berker Peksag -Toby Brain -Matt Mueller -Justin -Daniel Herman -Oleg Gaidarenko -Richard Gibson -Rafaël Blais Masson -cmc3cn <59194618@qq.com> -Joe Presbrey -Sindre Sorhus -Arne de Bree -Vladislav Zarakovsky -Andrew E Monat -Oskari -Joao Henrique de Andrade Bruni -tsinha -Matt Farmer -Trey Hunner -Jason Moon -Jeffery To -Kris Borchers -Vladimir Zhuravlev -Jacob Thornton -Chad Killingsworth -Nowres Rafid -David Benjamin -Uri Gilad -Chris Faulkner -Elijah Manor -Daniel Chatfield -Nikita Govorov -Wesley Walser -Mike Pennisi -Markus Staab -Dave Riddle -Callum Macrae -Benjamin Truyman -James Huston -Erick Ruiz de Chávez -David Bonner -Akintayo Akinwunmi -MORGAN -Ismail Khair -Carl Danley -Mike Petrovich -Greg Lavallee -Daniel Gálvez -Sai Lung Wong -Tom H Fuertes -Roland Eckl -Jay Merrifield -Allen J Schmidt Jr -Jonathan Sampson -Marcel Greter -Matthias Jäggli -David Fox -Yiming He -Devin Cooper -Paul Ramos -Rod Vagg -Bennett Sorbo -Sebastian Burkhard -Zachary Adam Kaplan -nanto_vi -nanto -Danil Somsikov -Ryunosuke SATO -Jean Boussier -Adam Coulombe -Andrew Plummer -Mark Raddatz -Isaac Z. Schlueter -Karl Sieburg -Pascal Borreli -Nguyen Phuc Lam -Dmitry Gusev -Michał Gołębiowski -Li Xudong -Steven Benner -Tom H Fuertes -Renato Oliveira dos Santos -ros3cin -Jason Bedard -Kyle Robinson Young -Chris Talkington -Eddie Monge -Terry Jones -Jason Merino -Jeremy Dunck -Chris Price -Guy Bedford -Amey Sakhadeo -Mike Sidorov -Anthony Ryan -Dominik D. Geyer -George Kats -Lihan Li -Ronny Springer -Chris Antaki -Marian Sollmann -njhamann -Ilya Kantor -David Hong -John Paul -Jakob Stoeck -Christopher Jones -Forbes Lindesay -S. Andrew Sheppard -Leonardo Balter -Roman Reiß -Benjy Cui -Rodrigo Rosenfeld Rosas -John Hoven -Philip Jägenstedt -Christian Kosmowski -Liang Peng -TJ VanToll diff --git a/node_modules/jquery/CONTRIBUTING.md b/node_modules/jquery/CONTRIBUTING.md deleted file mode 100644 index dd6b183..0000000 --- a/node_modules/jquery/CONTRIBUTING.md +++ /dev/null @@ -1,214 +0,0 @@ -# Contributing to jQuery - -1. [Getting Involved](#getting-involved) -2. [Discussion](#discussion) -3. [How To Report Bugs](#how-to-report-bugs) -4. [Core Style Guide](#jquery-core-style-guide) -5. [Tips For Bug Patching](#tips-for-bug-patching) - - - -## Getting Involved - -There are a number of ways to get involved with the development of jQuery core. Even if you've never contributed code to an Open Source project before, we're always looking for help identifying bugs, writing and reducing test cases and documentation. - -This is the best way to contribute to jQuery core. Please read through the full guide detailing [How to Report Bugs](#how-to-report-bugs). - -## Discussion - -### Forum and IRC - -The jQuery core development team frequently tracks posts on the [jQuery Development Forum](http://forum.jquery.com/developing-jquery-core). If you have longer posts or questions please feel free to post them there. If you think you've found a bug please [file it in the bug tracker](#how-to-report-bugs). - -Additionally most of the jQuery core development team can be found in the [#jquery-dev](http://webchat.freenode.net/?channels=jquery-dev) IRC channel on irc.freenode.net. - -### Weekly Status Meetings - -Every week (unless otherwise noted) the jQuery core dev team has a meeting to discuss the progress of current work and to bring forward possible new blocker bugs for discussion. - -The meeting is held in the [#jquery-meeting](http://webchat.freenode.net/?channels=jquery-meeting) IRC channel on irc.freenode.net at [Noon EST](http://www.timeanddate.com/worldclock/fixedtime.html?month=1&day=17&year=2011&hour=12&min=0&sec=0&p1=43) on Mondays. - -[Past Meeting Notes](https://docs.google.com/document/d/1MrLFvoxW7GMlH9KK-bwypn77cC98jUnz7sMW1rg_TP4/edit?hl=en) - - -## How to Report Bugs - -### Make sure it is a jQuery bug - -Many bugs reported to our bug tracker are actually bugs in user code, not in jQuery code. Keep in mind that just because your code throws an error and the console points to a line number inside of jQuery, this does *not* mean the bug is a jQuery bug; more often than not, these errors result from providing incorrect arguments when calling a jQuery function. - -If you are new to jQuery, it is usually a much better idea to ask for help first in the [Using jQuery Forum](http://forum.jquery.com/using-jquery) or the [jQuery IRC channel](http://webchat.freenode.net/?channels=%23jquery). You will get much quicker support, and you will help avoid tying up the jQuery team with invalid bug reports. These same resources can also be useful if you want to confirm that your bug is indeed a bug in jQuery before filing any tickets. - - -### Disable any browser extensions - -Make sure you have reproduced the bug with all browser extensions and add-ons disabled, as these can sometimes cause things to break in interesting and unpredictable ways. Try using incognito, stealth or anonymous browsing modes. - - -### Try the latest version of jQuery - -Bugs in old versions of jQuery may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the [latest build](http://code.jquery.com/jquery.js). - -### Try an older version of jQuery - -Sometimes, bugs are introduced in newer versions of jQuery that do not exist in previous versions. When possible, it can be useful to try testing with an older release. - -### Reduce, reduce, reduce! - -When you are experiencing a problem, the most useful thing you can possibly do is to [reduce your code](http://webkit.org/quality/reduction.html) to the bare minimum required to reproduce the issue. This makes it *much* easier to isolate and fix the offending code. Bugs that are reported without reduced test cases take on average 9001% longer to fix than bugs that are submitted with them, so you really should try to do this if at all possible. - -## jQuery Core Style Guide - -See: [jQuery's Style Guides](http://contribute.jquery.org/style-guide/) - -## Tips For Bug Patching - - -### Environment: localhost w/ PHP, Node & Grunt - -Starting in jQuery 1.8, a newly overhauled development workflow has been introduced. In this new system, we rely on node & gruntjs to automate the building and validation of source code—while you write code. - -The Ajax tests still depend on PHP running locally*, so make sure you have the following installed: - -* Some kind of localhost server program that supports PHP (any will do) -* Node.js -* NPM (comes with the latest version of Node.js) -* Grunt (install with: `npm install grunt -g` - - -Maintaining a list of platform specific instructions is outside of the scope of this document and there is plenty of existing documentation for the above technologies. - -* The PHP dependency will soon be shed in favor of an all-node solution. - - -### Build a Local Copy of jQuery - -Create a fork of the jQuery repo on github at http://github.com/jquery/jquery - -Change directory to your web root directory, whatever that might be: - -```bash -$ cd /path/to/your/www/root/ -``` - -Clone your jQuery fork to work locally - -```bash -$ git clone git@github.com:username/jquery.git -``` - -Change directory to the newly created dir jquery/ - -```bash -$ cd jquery -``` - -Add the jQuery master as a remote. I label mine "upstream" - -```bash -$ git remote add upstream git://github.com/jquery/jquery.git -``` - -Get in the habit of pulling in the "upstream" master to stay up to date as jQuery receives new commits - -```bash -$ git pull upstream master -``` - -Run the Grunt tools: - -```bash -$ grunt && grunt watch -``` - -Now open the jQuery test suite in a browser at http://localhost/test. If there is a port, be sure to include it. - -Success! You just built and tested jQuery! - - -### Fix a bug from a ticket filed at bugs.jquery.com: - -**NEVER write your patches to the master branch** - it gets messy (I say this from experience!) - -**ALWAYS USE A "TOPIC" BRANCH!** Like so (#### = the ticket #)... - -Make sure you start with your up-to-date master: - -```bash -$ git checkout master -``` - -Create and checkout a new branch that includes the ticket # - -```bash -$ git checkout -b bug_#### - -# ( Explanation: this useful command will: -# "checkout" a "-b" (branch) by the name of "bug_####" -# or create it if it doesn't exist ) -``` - -Now you're on branch: bug_#### - -Determine the module/file you'll be working in... - -Open up the corresponding /test/unit/?????.js and add the initial failing unit tests. This may seem awkward at first, but in the long run it will make sense. To truly and efficiently patch a bug, you need to be working against that bug. - -Next, open the module files and make your changes - -Run http://localhost/test --> **ALL TESTS MUST PASS** - -Once you're satisfied with your patch... - -Stage the files to be tracked: - -```bash -$ git add filename -# (you can use "git status" to list the files you've changed) -``` - - -( I recommend NEVER, EVER using "git add . " ) - -Once you've staged all of your changed files, go ahead and commit them - -```bash -$ git commit -m "Brief description of fix. Fixes #0000" -``` - -For a multiple line commit message, leave off the `-m "description"`. - -You will then be led into vi (or the text editor that you have set up) to complete your commit message. - -Then, push your branch with the bug fix commits to your github fork - -```bash -$ git push origin -u bug_#### -``` - -Before you tackle your next bug patch, return to the master: - -```bash -$ git checkout master -``` - - - -### Test Suite Tips... - -During the process of writing your patch, you will run the test suite MANY times. You can speed up the process by narrowing the running test suite down to the module you are testing by either double clicking the title of the test or appending it to the url. The following examples assume you're working on a local repo, hosted on your localhost server. - -Example: - -http://localhost/test/?filter=css - -This will only run the "css" module tests. This will significantly speed up your development and debugging. - -**ALWAYS RUN THE FULL SUITE BEFORE COMMITTING AND PUSHING A PATCH!** - - -### Browser support - -Remember that jQuery supports multiple browsers and their versions; any contributed code must work in all of them. You can refer to the [browser support page](http://jquery.com/browser-support/) for the current list of supported browsers. - -Note that browser support differs depending on whether you are targeting the `master` or `1.x-master` branch. diff --git a/node_modules/jquery/MIT-LICENSE.txt b/node_modules/jquery/MIT-LICENSE.txt deleted file mode 100644 index cdd31b5..0000000 --- a/node_modules/jquery/MIT-LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2014 jQuery Foundation and other contributors -http://jquery.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/node_modules/jquery/README.md b/node_modules/jquery/README.md deleted file mode 100644 index cffa003..0000000 --- a/node_modules/jquery/README.md +++ /dev/null @@ -1,372 +0,0 @@ -[jQuery](http://jquery.com/) - New Wave JavaScript -================================================== - -Contribution Guides --------------------------------------- - -In the spirit of open source software development, jQuery always encourages community code contribution. To help you get started and before you jump into writing code, be sure to read these important contribution guidelines thoroughly: - -1. [Getting Involved](http://contribute.jquery.org/) -2. [Core Style Guide](http://contribute.jquery.org/style-guide/js/) -3. [Writing Code for jQuery Foundation Projects](http://contribute.jquery.org/code/) - - -Environments in which to use jQuery --------------------------------------- - -- [Browser support](http://jquery.com/browser-support/) differs between the master (2.x) branch and the 1.x-master branch. Specifically, 2.x does not support legacy browsers such as IE6-8. The jQuery team continues to provide support for legacy browsers on the 1.x-master branch. Use the latest 1.x release if support for those browsers is required. See [browser support](http://jquery.com/browser-support/) for more info. -- To use jQuery in Node, browser extensions, and other non-browser environments, use only **2.x** releases. 1.x does not support these environments. - - -What you need to build your own jQuery --------------------------------------- - -In order to build jQuery, you need to have Node.js/npm latest and git 1.7 or later. -(Earlier versions might work OK, but are not tested.) - -For Windows you have to download and install [git](http://git-scm.com/downloads) and [Node.js](http://nodejs.org/download/). - -Mac OS users should install [Homebrew](http://mxcl.github.com/homebrew/). Once Homebrew is installed, run `brew install git` to install git, -and `brew install node` to install Node.js. - -Linux/BSD users should use their appropriate package managers to install git and Node.js, or build from source -if you swing that way. Easy-peasy. - - -How to build your own jQuery ----------------------------- - -Clone a copy of the main jQuery git repo by running: - -```bash -git clone git://github.com/jquery/jquery.git -``` - -Enter the jquery directory and run the build script: -```bash -cd jquery && npm run build -``` -The built version of jQuery will be put in the `dist/` subdirectory, along with the minified copy and associated map file. - -If you want create custom build or help with jQuery development, it would be better to install [grunt command line interface](https://github.com/gruntjs/grunt-cli) as a global package: - -``` -npm install -g grunt-cli -``` -Make sure you have `grunt` installed by testing: -``` -grunt -v -``` - -Now by running `grunt` command, in the jquery directory, you could build full version of jQuery, just like with `npm run build` command: -``` -grunt -``` - -There are many other tasks available for jQuery Core: -``` -grunt -help -``` - -### Modules - -Special builds can be created that exclude subsets of jQuery functionality. -This allows for smaller custom builds when the builder is certain that those parts of jQuery are not being used. -For example, an app that only used JSONP for `$.ajax()` and did not need to calculate offsets or positions of elements could exclude the offset and ajax/xhr modules. - -Any module may be excluded except for `core`, and `selector`. To exclude a module, pass its path relative to the `src` folder (without the `.js` extension). - -Some example modules that can be excluded are: - -- **ajax**: All AJAX functionality: `$.ajax()`, `$.get()`, `$.post()`, `$.ajaxSetup()`, `.load()`, transports, and ajax event shorthands such as `.ajaxStart()`. -- **ajax/xhr**: The XMLHTTPRequest AJAX transport only. -- **ajax/script**: The ` - - - - - - - diff --git a/node_modules/jquery/src/sizzle/test/data/testinit.js b/node_modules/jquery/src/sizzle/test/data/testinit.js deleted file mode 100644 index 1c49c7a..0000000 --- a/node_modules/jquery/src/sizzle/test/data/testinit.js +++ /dev/null @@ -1,136 +0,0 @@ -var fireNative, - jQuery = this.jQuery || "jQuery", // For testing .noConflict() - $ = this.$ || "$", - originaljQuery = jQuery, - original$ = $; - -(function() { - // Config parameter to force basic code paths - QUnit.config.urlConfig.push({ - id: "basic", - label: "Bypass optimizations", - tooltip: "Force use of the most basic code by disabling native querySelectorAll; contains; compareDocumentPosition" - }); - if ( QUnit.urlParams.basic ) { - document.querySelectorAll = null; - document.documentElement.contains = null; - document.documentElement.compareDocumentPosition = null; - // Return array of length two to pass assertion - // But support should be false as its not native - document.getElementsByClassName = function() { return [ 0, 1 ]; }; - } -})(); - -/** - * Returns an array of elements with the given IDs - * @example q("main", "foo", "bar") - * @result [
, , ] - */ -function q() { - var r = [], - i = 0; - - for ( ; i < arguments.length; i++ ) { - r.push( document.getElementById( arguments[i] ) ); - } - return r; -} - -/** - * Asserts that a select matches the given IDs - * @param {String} a - Assertion name - * @param {String} b - Sizzle selector - * @param {String} c - Array of ids to construct what is expected - * @example t("Check for something", "//[a]", ["foo", "baar"]); - * @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar' - */ -function t( a, b, c ) { - var f = Sizzle(b), - s = "", - i = 0; - - for ( ; i < f.length; i++ ) { - s += ( s && "," ) + '"' + f[ i ].id + '"'; - } - - deepEqual(f, q.apply( q, c ), a + " (" + b + ")"); -} - -/** - * Add random number to url to stop caching - * - * @example url("data/test.html") - * @result "data/test.html?10538358428943" - * - * @example url("data/test.php?foo=bar") - * @result "data/test.php?foo=bar&10538358345554" - */ -function url( value ) { - return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000); -} - -var createWithFriesXML = function() { - var string = ' \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - 1 \ - \ - \ - \ - \ - foo \ - \ - \ - \ - \ - \ - \ - '; - - return jQuery.parseXML( string ); -}; - -fireNative = document.createEvent ? - function( node, type ) { - var event = document.createEvent("HTMLEvents"); - event.initEvent( type, true, true ); - node.dispatchEvent( event ); - } : - function( node, type ) { - var event = document.createEventObject(); - node.fireEvent( "on" + type, event ); - }; - -function testIframeWithCallback( title, fileName, func ) { - test( title, function() { - var iframe; - - stop(); - window.iframeCallback = function() { - var self = this, - args = arguments; - setTimeout(function() { - window.iframeCallback = undefined; - iframe.remove(); - func.apply( self, args ); - func = function() {}; - start(); - }, 0 ); - }; - iframe = jQuery( "
" ).css({ position: "absolute", width: "500px", left: "-600px" }) - .append( jQuery( " -
- - -
-
- -
- - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
hi there
-
-
-
-
-
-
-
- -
-
-
- - -
- - -
- - -
C
-
-
- -
-
    -
  1. Rice
  2. -
  3. Beans
  4. -
  5. Blinis
  6. -
  7. Tofu
  8. -
- -
I'm hungry. I should...
- ...Eat lots of food... | - ...Eat a little food... | - ...Eat no food... - ...Eat a burger... - ...Eat some funyuns... - ...Eat some funyuns... -
- -
- - -
- -
- 1 - 2 - - - - - - - - -
​ -
- -
- - diff --git a/node_modules/jquery/src/sizzle/test/jquery.js b/node_modules/jquery/src/sizzle/test/jquery.js deleted file mode 100644 index 86a3305..0000000 --- a/node_modules/jquery/src/sizzle/test/jquery.js +++ /dev/null @@ -1,9597 +0,0 @@ -/*! - * jQuery JavaScript Library v1.9.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-2-4 - */ -(function( window, undefined ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -//"use strict"; -var - // The deferred used on DOM ready - readyList, - - // A central reference to the root jQuery(document) - rootjQuery, - - // Support: IE<9 - // For `typeof node.method` instead of `node.method !== undefined` - core_strundefined = typeof undefined, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - location = window.location, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // [[Class]] -> type pairs - class2type = {}, - - // List of deleted data cache ids, so we can reuse them - core_deletedIds = [], - - core_version = "1.9.1", - - // Save a reference to some core methods - core_concat = core_deletedIds.concat, - core_push = core_deletedIds.push, - core_slice = core_deletedIds.slice, - core_indexOf = core_deletedIds.indexOf, - core_toString = class2type.toString, - core_hasOwn = class2type.hasOwnProperty, - core_trim = core_version.trim, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Used for matching numbers - core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, - - // Used for splitting on whitespace - core_rnotwhite = /\S+/g, - - // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, - rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // The ready event handler - completed = function( event ) { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } - }, - // Clean-up method for dom ready events - detach = function() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: core_version, - - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return core_slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; - }, - - slice: function() { - return this.pushStack( core_slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: core_push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, 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; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger("ready").off("ready"); - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - if ( obj == null ) { - return String( obj ); - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ core_toString.call(obj) ] || "object" : - typeof obj; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !core_hasOwn.call(obj, "constructor") && - !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - 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 key === undefined || core_hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - // data: string of html - // context (optional): If specified, the fragment will be created in this context, defaults to document - // keepScripts (optional): If true, will include scripts passed in the html string - parseHTML: function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - if ( scripts ) { - jQuery( scripts ).remove(); - } - return jQuery.merge( [], parsed.childNodes ); - }, - - parseJSON: function( data ) { - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - if ( data === null ) { - return data; - } - - if ( typeof data === "string" ) { - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - if ( data ) { - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return ( new Function( "return " + data ) )(); - } - } - } - - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Use native String.trim function wherever possible - trim: core_trim && !core_trim.call("\uFEFF\xA0") ? - function( text ) { - return text == null ? - "" : - core_trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - core_push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( core_indexOf ) { - return core_indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var l = second.length, - i = first.length, - j = 0; - - if ( typeof l === "number" ) { - for ( ; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var retVal, - ret = [], - i = 0, - length = elems.length; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return core_concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = core_slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - access: function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; - }, - - now: function() { - return ( new Date() ).getTime(); - } -}); - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || type !== "function" && - ( length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj ); -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( list && ( !fired || stack ) ) { - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var action = tuple[ 0 ], - fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = core_slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; - if( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); -jQuery.support = (function() { - - var support, all, a, - input, select, fragment, - opt, eventName, isSupported, i, - div = document.createElement("div"); - - // Setup - div.setAttribute( "className", "t" ); - div.innerHTML = "
a"; - - // Support tests won't run in some limited or non-browser environments - all = div.getElementsByTagName("*"); - a = div.getElementsByTagName("a")[ 0 ]; - if ( !all || !a || !all.length ) { - return {}; - } - - // First batch of tests - select = document.createElement("select"); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName("input")[ 0 ]; - - a.style.cssText = "top:1px;float:left;opacity:.5"; - support = { - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: div.firstChild.nodeType === 3, - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: a.getAttribute("href") === "/a", - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.5/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) - checkOn: !!input.value, - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Tests for enctype support on a form (#6743) - enctype: !!document.createElement("form").enctype, - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", - - // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode - boxModel: document.compatMode === "CSS1Compat", - - // Will be defined later - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true, - boxSizingReliable: true, - pixelPosition: false - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<9 - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - // Check if we can trust getAttribute("value") - input = document.createElement("input"); - input.setAttribute( "value", "" ); - support.input = input.getAttribute( "value" ) === ""; - - // Check if an input maintains its value after becoming a radio - input.value = "t"; - input.setAttribute( "type", "radio" ); - support.radioValue = input.value === "t"; - - // #11217 - WebKit loses check when the name is after the checked attribute - input.setAttribute( "checked", "t" ); - input.setAttribute( "name", "t" ); - - fragment = document.createDocumentFragment(); - fragment.appendChild( input ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php - for ( i in { submit: true, change: true, focusin: true }) { - div.setAttribute( eventName = "on" + i, "t" ); - - support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; - } - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, marginDiv, tds, - divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", - body = document.getElementsByTagName("body")[0]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - container = document.createElement("div"); - container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; - - body.appendChild( container ).appendChild( div ); - - // Support: IE8 - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - div.innerHTML = "
t
"; - tds = div.getElementsByTagName("td"); - tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Support: IE8 - // Check if empty table cells still have offsetWidth/Height - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - - // Check box-sizing and margin behavior - div.innerHTML = ""; - div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; - support.boxSizing = ( div.offsetWidth === 4 ); - support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); - - // Use window.getComputedStyle because jsdom on node.js will break without it. - if ( window.getComputedStyle ) { - support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; - support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - marginDiv = div.appendChild( document.createElement("div") ); - marginDiv.style.cssText = div.style.cssText = divReset; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - - support.reliableMarginRight = - !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); - } - - if ( typeof div.style.zoom !== core_strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.innerHTML = ""; - div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - div.style.display = "block"; - div.innerHTML = "
"; - div.firstChild.style.width = "5px"; - support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); - - if ( support.inlineBlockNeedsLayout ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); - - // Null elements to avoid leaks in IE - container = div = tds = marginDiv = null; - }); - - // Null elements to avoid leaks in IE - all = select = fragment = opt = a = input = null; - - return support; -})(); - -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rmultiDash = /([A-Z])/g; - -function internalData( elem, name, data, pvt /* Internal Use Only */ ){ - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, ret, - internalKey = jQuery.expando, - getByName = typeof name === "string", - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // Avoids exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( getByName ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var i, l, thisCache, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - for ( i = 0, l = name.length; i < l; i++ ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - } else if ( jQuery.support.deleteExpando || cache != cache.window ) { - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - // Do not set data on non-element because it will not be cleared (#8335). - if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { - return false; - } - - var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; - - // nodes accept data unless otherwise specified; rejection can be conditional - return !noData || noData !== true && elem.getAttribute("classid") === noData; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var attrs, name, - elem = this[0], - i = 0, - data = null; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - attrs = elem.attributes; - for ( ; i < attrs.length; i++ ) { - name = attrs[i].name; - - if ( !name.indexOf( "data-" ) ) { - name = jQuery.camelCase( name.slice(5) ); - - dataAttr( elem, name, data[ name ] ); - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return jQuery.access( this, function( value ) { - - if ( value === undefined ) { - // Try to fetch any internally stored data first - return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; - } - - this.each(function() { - jQuery.data( this, key, value ); - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - hooks.cur = fn; - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var nodeHook, boolHook, - rclass = /[\t\r\n]/g, - rreturn = /\r/g, - rfocusable = /^(?:input|select|textarea|button|object)$/i, - rclickable = /^(?:a|area)$/i, - rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, - ruseDefault = /^(?:checked|selected)$/i, - getSetAttribute = jQuery.support.getSetAttribute, - getSetInput = jQuery.support.input; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - elem.className = jQuery.trim( cur ); - - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - elem.className = value ? jQuery.trim( cur ) : ""; - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.match( core_rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - // Toggle whole class name - } else if ( type === core_strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var ret, hooks, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val, - self = jQuery(this); - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // oldIE doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attr: function( elem, name, value ) { - var hooks, notxml, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === core_strundefined ) { - return jQuery.prop( elem, name, value ); - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( notxml ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - // In IE9+, Flash objects don't have .getAttribute (#12945) - // Support: IE9+ - if ( typeof elem.getAttribute !== core_strundefined ) { - ret = elem.getAttribute( name ); - } - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( core_rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( rboolean.test( name ) ) { - // Set corresponding property to false for boolean attributes - // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8 - if ( !getSetAttribute && ruseDefault.test( name ) ) { - elem[ jQuery.camelCase( "default-" + name ) ] = - elem[ propName ] = false; - } else { - elem[ propName ] = false; - } - - // See #9699 for explanation of this approach (setting first, then removal) - } else { - jQuery.attr( elem, name, "" ); - } - - elem.removeAttribute( getSetAttribute ? name : propName ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return ( elem[ name ] = value ); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - var - // Use .prop to determine if this attribute is understood as boolean - prop = jQuery.prop( elem, name ), - - // Fetch it accordingly - attr = typeof prop === "boolean" && elem.getAttribute( name ), - detail = typeof prop === "boolean" ? - - getSetInput && getSetAttribute ? - attr != null : - // oldIE fabricates an empty string for missing boolean attributes - // and conflates checked/selected into attroperties - ruseDefault.test( name ) ? - elem[ jQuery.camelCase( "default-" + name ) ] : - !!attr : - - // fetch an attribute node for properties not recognized as boolean - elem.getAttributeNode( name ); - - return detail && detail.value !== false ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - // IE<8 needs the *property* name - elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); - - // Use defaultChecked and defaultSelected for oldIE - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; - } - - return name; - } -}; - -// fix oldIE value attroperty -if ( !getSetInput || !getSetAttribute ) { - jQuery.attrHooks.value = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - return jQuery.nodeName( elem, "input" ) ? - - // Ignore the value *property* by using defaultValue - elem.defaultValue : - - ret && ret.specified ? ret.value : undefined; - }, - set: function( elem, value, name ) { - if ( jQuery.nodeName( elem, "input" ) ) { - // Does not return so that setAttribute is also used - elem.defaultValue = value; - } else { - // Use nodeHook if defined (#1954); otherwise setAttribute is fine - return nodeHook && nodeHook.set( elem, value, name ); - } - } - }; -} - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ? - ret.value : - undefined; - }, - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - elem.setAttributeNode( - (ret = elem.ownerDocument.createAttribute( name )) - ); - } - - ret.value = value += ""; - - // Break association with cloned elements by also using setAttribute (#9646) - return name === "value" || value === elem.getAttribute( name ) ? - value : - undefined; - } - }; - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - get: nodeHook.get, - set: function( elem, value, name ) { - nodeHook.set( elem, value === "" ? false : value, name ); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret == null ? undefined : ret; - } - }); - }); - - // href/src property should get the full normalized URL (#10299/#12915) - jQuery.each([ "href", "src" ], function( i, name ) { - jQuery.propHooks[ name ] = { - get: function( elem ) { - return elem.getAttribute( name, 4 ); - } - }; - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Note: IE uppercases css property names, but if we were to .toLowerCase() - // .cssText, that would destroy case senstitivity in URL's, like in "background" - return elem.style.cssText || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = value + "" ); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }); -} - -// IE6/7 call enctype encoding -if ( !jQuery.support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }); -}); -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = core_hasOwn.call( event, "type" ) ? event.type : event, - namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - event.isTrigger = true; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = core_slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur != this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - } - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== document.activeElement && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === document.activeElement && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - - beforeunload: { - postDispatch: function( event ) { - - // Even when returnValue equals to undefined Firefox will still show alert - if ( event.result !== undefined ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === core_strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !jQuery.support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license - * http://sizzlejs.com/ - */ -(function( window, undefined ) { - -var i, - cachedruns, - Expr, - getText, - isXML, - compile, - hasDuplicate, - outermostContext, - - // Local document vars - setDocument, - document, - docElem, - documentIsXML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - sortOrder, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - support = {}, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Array methods - arr = [], - pop = arr.pop, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors - operators = "([*^$|!~]?=)", - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + - "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", - - // Prefer arguments quoted, - // then not containing pseudos/brackets, - // then attribute selectors/non-parenthetical expressions, - // then anything else - // These preferences are here to reduce the number of selectors - // needing tokenize in the PSEUDO preFilter - pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rsibling = /[\x20\t\r\n\f]*[+~]/, - - rnative = /^[^{]+\{\s*\[native code/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rescape = /'|\\/g, - rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, - funescape = function( _, escaped ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - return high !== high ? - escaped : - // BMP codepoint - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Use a stripped-down slice if we can't use a native one -try { - slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType; -} catch ( e ) { - slice = function( i ) { - var elem, - results = []; - while ( (elem = this[i++]) ) { - results.push( elem ); - } - return results; - }; -} - -/** - * For feature detection - * @param {Function} fn The function to test for native support - */ -function isNative( fn ) { - return rnative.test( fn + "" ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var cache, - keys = []; - - return (cache = function( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key += " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key ] = value); - }); -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return fn( div ); - } catch (e) { - return false; - } finally { - // release memory in IE - div = null; - } -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( !documentIsXML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { - push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); - return results; - } - } - - // QSA path - if ( support.qsa && !rbuggyQSA.test(selector) ) { - old = true; - nid = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && context.parentNode || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, slice.call( newContext.querySelectorAll( - newSelector - ), 0 ) ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Detect xml - * @param {Element|Object} elem An element or a document - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsXML = isXML( doc ); - - // Check if getElementsByTagName("*") returns only elements - support.tagNameNoComments = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if attributes should be retrieved by attribute nodes - support.attributes = assert(function( div ) { - div.innerHTML = ""; - var type = typeof div.lastChild.getAttribute("multiple"); - // IE8 returns a string for some attributes even when not present - return type !== "boolean" && type !== "string"; - }); - - // Check if getElementsByClassName can be trusted - support.getByClassName = assert(function( div ) { - // Opera can't find a second classname (in 9.6) - div.innerHTML = ""; - if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { - return false; - } - - // Safari 3.2 caches class attributes and doesn't catch changes - div.lastChild.className = "e"; - return div.getElementsByClassName("e").length === 2; - }); - - // Check if getElementById returns elements by name - // Check if getElementsByName privileges form controls or returns elements by ID - support.getByName = assert(function( div ) { - // Inject content - div.id = expando + 0; - div.innerHTML = "
"; - docElem.insertBefore( div, docElem.firstChild ); - - // Test - var pass = doc.getElementsByName && - // buggy browsers will return fewer than the correct 2 - doc.getElementsByName( expando ).length === 2 + - // buggy browsers will return more than the correct 0 - doc.getElementsByName( expando + 0 ).length; - support.getIdNotName = !doc.getElementById( expando ); - - // Cleanup - docElem.removeChild( div ); - - return pass; - }); - - // IE6/7 return modified attributes - Expr.attrHandle = assert(function( div ) { - div.innerHTML = ""; - return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && - div.firstChild.getAttribute("href") === "#"; - }) ? - {} : - { - "href": function( elem ) { - return elem.getAttribute( "href", 2 ); - }, - "type": function( elem ) { - return elem.getAttribute("type"); - } - }; - - // ID find and filter - if ( support.getIdNotName ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && !documentIsXML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && !documentIsXML ) { - var m = context.getElementById( id ); - - return m ? - m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? - [m] : - undefined : - []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.tagNameNoComments ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Name - Expr.find["NAME"] = support.getByName && function( tag, context ) { - if ( typeof context.getElementsByName !== strundefined ) { - return context.getElementsByName( name ); - } - }; - - // Class - Expr.find["CLASS"] = support.getByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { - return context.getElementsByClassName( className ); - } - }; - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21), - // no need to also add to buggyMatches since matches checks buggyQSA - // A support test would require too much code (would include document ready) - rbuggyQSA = [ ":focus" ]; - - if ( (support.qsa = isNative(doc.querySelectorAll)) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explictly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // IE8 - Some boolean attributes are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - - // Opera 10-12/IE8 - ^= $= *= and empty values - // Should not select anything - div.innerHTML = ""; - if ( div.querySelectorAll("[i^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || - docElem.mozMatchesSelector || - docElem.webkitMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = new RegExp( rbuggyMatches.join("|") ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - // Document order sorting - sortOrder = docElem.compareDocumentPosition ? - function( a, b ) { - var compare; - - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) { - if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) { - if ( a === doc || contains( preferredDoc, a ) ) { - return -1; - } - if ( b === doc || contains( preferredDoc, b ) ) { - return 1; - } - return 0; - } - return compare & 4 ? -1 : 1; - } - - return a.compareDocumentPosition ? -1 : 1; - } : - function( a, b ) { - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Parentless nodes are either documents or disconnected - } else if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - // Always assume the presence of duplicates if sort doesn't - // pass them to our comparison function (as in Google Chrome). - hasDuplicate = false; - [0, 0].sort( sortOrder ); - support.detectDuplicates = hasDuplicate; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - // rbuggyQSA always contains :focus, so no need for an existence check - if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [elem] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - var val; - - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - if ( !documentIsXML ) { - name = name.toLowerCase(); - } - if ( (val = Expr.attrHandle[ name ]) ) { - return val( elem ); - } - if ( documentIsXML || support.attributes ) { - return elem.getAttribute( name ); - } - return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? - name : - val && val.specified ? val.value : null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -// Document sorting and removing duplicates -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - i = 1, - j = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( ; (elem = results[i]); i++ ) { - if ( elem === results[ i - 1 ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - return results; -}; - -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -// Returns a function to use in pseudos for input types -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -// Returns a function to use in pseudos for buttons -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -// Returns a function to use in pseudos for positionals -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - for ( ; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (see #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[5] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[4] ) { - match[2] = match[4]; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeName ) { - if ( nodeName === "*" ) { - return function() { return true; }; - } - - nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifider - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsXML ? - elem.getAttribute("xml:lang") || elem.getAttribute("lang") : - elem.lang) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), - // not comment, processing instructions, or others - // Thanks to Diego Perini for the nodeName shortcut - // Greater than "@" means alpha characters (specifically not starting with "#" or "?") - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( tokens = [] ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push( { - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var data, cache, outerCache, - dirkey = dirruns + " " + doneName; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { - if ( (data = cache[1]) === true || data === cachedruns ) { - return data === true; - } - } else { - cache = outerCache[ dir ] = [ dirkey ]; - cache[1] = matcher( elem, context, xml ) || cachedruns; - if ( cache[1] === true ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - // A counter to specify which element is currently being matched - var matcherCachedRuns = 0, - bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, expandContext ) { - var elem, j, matcher, - setMatched = [], - matchedCount = 0, - i = "0", - unmatched = seed && [], - outermost = expandContext != null, - contextBackup = outermostContext, - // We must always have either seed elements or context - elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); - - if ( outermost ) { - outermostContext = context !== document && context; - cachedruns = matcherCachedRuns; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - for ( ; (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - cachedruns = ++matcherCachedRuns; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !group ) { - group = tokenize( selector ); - } - i = group.length; - while ( i-- ) { - cached = matcherFromTokens( group[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - } - return cached; -}; - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - match = tokenize( selector ); - - if ( !seed ) { - // Try to minimize operations if there is only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && !documentIsXML && - Expr.relative[ tokens[1].type ] ) { - - context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0]; - if ( !context ) { - return results; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && context.parentNode || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, slice.call( seed, 0 ) ); - return results; - } - - break; - } - } - } - } - } - - // Compile and execute a filtering function - // Provide `match` to avoid retokenization if we modified the selector above - compile( selector, match )( - seed, - context, - documentIsXML, - results, - rsibling.test( selector ) - ); - return results; -} - -// Deprecated -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Easy API for creating new setFilters -function setFilters() {} -Expr.filters = setFilters.prototype = Expr.pseudos; -Expr.setFilters = new setFilters(); - -// Initialize with the default document -setDocument(); - -// Override sizzle attribute retrieval -Sizzle.attr = jQuery.attr; -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})( window ); -var runtil = /Until$/, - rparentsprev = /^(?:parents|prev(?:Until|All))/, - isSimple = /^.[^:#\[\.,]*$/, - rneedsContext = jQuery.expr.match.needsContext, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var i, ret, self, - len = this.length; - - if ( typeof selector !== "string" ) { - self = this; - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - ret = []; - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, this[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = ( this.selector ? this.selector + " " : "" ) + selector; - return ret; - }, - - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false) ); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true) ); - }, - - is: function( selector ) { - return !!selector && ( - typeof selector === "string" ? - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - rneedsContext.test( selector ) ? - jQuery( selector, this.context ).index( this[0] ) >= 0 : - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - ret = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - cur = this[i]; - - while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - } - cur = cur.parentNode; - } - } - - return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( jQuery.unique(all) ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -jQuery.fn.andSelf = jQuery.fn.addBack; - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( this.length > 1 && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem ) { - return ( elem === qualifier ) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; - }); -} -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - col: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -jQuery.fn.extend({ - text: function( value ) { - return jQuery.access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - wrapAll: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapAll( html.call(this, i) ); - }); - } - - if ( this[0] ) { - // The elements to wrap the target around - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); - - if ( this[0].parentNode ) { - wrap.insertBefore( this[0] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { - elem = elem.firstChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function(i) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - }, - - append: function() { - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.insertBefore( elem, this.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, false, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, false, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - // keepData is for internal use only--do not document - remove: function( selector, keepData ) { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function () { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return jQuery.access( this, function( value ) { - var elem = this[0] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function( value ) { - var isFunc = jQuery.isFunction( value ); - - // Make sure that the elements are removed from the DOM before they are inserted - // this can help fix replacing a parent with child elements - if ( !isFunc && typeof value !== "string" ) { - value = jQuery( value ).not( this ).detach(); - } - - return this.domManip( [ value ], true, function( elem ) { - var next = this.nextSibling, - parent = this.parentNode; - - if ( parent ) { - jQuery( this ).remove(); - parent.insertBefore( elem, next ); - } - }); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, table, callback ) { - - // Flatten any nested arrays - args = core_concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, table ? self.html() : undefined ); - } - self.domManip( args, table, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - table = table && jQuery.nodeName( first, "tr" ); - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( - table && jQuery.nodeName( this[i], "table" ) ? - findOrAppend( this[i], "tbody" ) : - this[i], - node, - i - ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Hope ajax is available... - jQuery.ajax({ - url: node.src, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -function findOrAppend( elem, tag ) { - return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - var attr = elem.getAttributeNode("type"); - elem.type = ( attr && attr.specified ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - core_push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( manipulation_rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !jQuery.support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !jQuery.support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = jQuery.support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== core_strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - core_deletedIds.push( id ); - } - } - } - } - } -}); -var iframe, getStyles, curCSS, - ralpha = /alpha\([^)]*\)/i, - ropacity = /opacity\s*=\s*([^)]*)/, - rposition = /^(top|right|bottom|left)$/, - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rmargin = /^margin/, - rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), - rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), - elemdisplay = { BODY: "block" }, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: 0, - fontWeight: 400 - }, - - cssExpand = [ "Top", "Right", "Bottom", "Left" ], - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt(0).toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function isHidden( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = jQuery._data( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); - } - } else { - - if ( !values[ index ] ) { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.fn.extend({ - css: function( name, value ) { - return jQuery.access( this, function( elem, name, value ) { - var len, styles, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - var bool = typeof state === "boolean"; - - return this.each(function() { - if ( bool ? state : isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Exclude the following css properties to add px - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that NaN and null values aren't set. See: #7116 - if ( value == null || type === "number" && isNaN( value ) ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - - // Wrapped to prevent IE from throwing errors when 'invalid' values are provided - // Fixes bug #5509 - try { - style[ name ] = value; - } catch(e) {} - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var num, val, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - }, - - // A method for quickly swapping in/out CSS properties to get correct calculations - swap: function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; - } -}); - -// NOTE: we've included the "window" in window.getComputedStyle -// because jsdom on node.js will break without it. -if ( window.getComputedStyle ) { - getStyles = function( elem ) { - return window.getComputedStyle( elem, null ); - }; - - curCSS = function( elem, name, _computed ) { - var width, minWidth, maxWidth, - computed = _computed || getStyles( elem ), - - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, - style = elem.style; - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right - // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret; - }; -} else if ( document.documentElement.currentStyle ) { - getStyles = function( elem ) { - return elem.currentStyle; - }; - - curCSS = function( elem, name, _computed ) { - var left, rs, rsLeft, - computed = _computed || getStyles( elem ), - ret = computed ? computed[ name ] : undefined, - style = elem.style; - - // Avoid setting ret to empty string here - // so we don't default to auto - if ( ret == null && style && style[ name ] ) { - ret = style[ name ]; - } - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - // but not position css attributes, as those are proportional to the parent element instead - // and we can't measure the parent instead because it might trigger a "stacking dolls" problem - if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { - - // Remember the original values - left = style.left; - rs = elem.runtimeStyle; - rsLeft = rs && rs.left; - - // Put in the new values to get a computed value out - if ( rsLeft ) { - rs.left = elem.currentStyle.left; - } - style.left = name === "fontSize" ? "1em" : ret; - ret = style.pixelLeft + "px"; - - // Revert the changed values - style.left = left; - if ( rsLeft ) { - rs.left = rsLeft; - } - } - - return ret === "" ? "auto" : ret; - }; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -// Try to determine the default display value of an element -function css_defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - // Use the already-created iframe if possible - iframe = ( iframe || - jQuery(" -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/CHANGELOG.md b/node_modules/materialize-css/CHANGELOG.md deleted file mode 100644 index 9c7c172..0000000 --- a/node_modules/materialize-css/CHANGELOG.md +++ /dev/null @@ -1,162 +0,0 @@ -## v0.97.5 (December 21st, 2015) -- Fixed Meteor package crash - -## v0.97.4 (Dec 20, 2015) -- Added Jasmine testing with Travis CI -- Select bugfixes -- Grid Offset bugfix -- Dropdown overflow bugfix -- Range slider error bugfix - -## v0.97.3 (Nov 15, 2015) -- Meteor font issues fixed -- Select rendering issue fixed -- Added Push and Pull to grid -- Dynamic accordion appends fixed - -## v0.97.2 (Nov 8, 2015) -- Image support inside select -- Optgroup supported in select -- Multiple select added -- Card styling fixes -- Breadcrumbs added -- Scrollable tabs -- Tooltips and dropdowns position themselves more intelligently inside the window -- FAB menu is click-toggleable -- Horizontal FAB support added - -## v0.97.1 (Sep 13, 2015) -- Added new range slider with uses noUiSlider to provide powerful options -- Added CSS for Chips -- Toasts support adding of html elements -- Fixed select destroy/creation bug -- Bugfixes for dropdown, badges, collections, scrollfire -- Added default preloader color variable -- File input now supports multiple files and dynamically loaded elements - -## v0.97.0 (June 21, 2015) -- **Documentation changed to use Official Google Icon web font** -- **Input errors added** -- Flicker on Firefox on dropdowns fixed -- Pagination made more responsive -- Modal now prevents scrolling -- Modal animation added -- Support for multiple modals added -- Programmatic control of FAB to open/close added -- Programmatic control of slider to play/pause added -- Plus many more bug fixes - -## v0.96.0 (April 1, 2015) -- Toasts, transitions, scrollfire added under Materialize namespace -- Dropdown is now created as a child of its parent -- Collapsibles supports nesting -- Modal Bottom Sheet added -- Indeterminate Checkboxes added -- New Checkbox Style added -- Text Inputs supports placeholder/readonly -- Google Inbox-like Collapsible added -- Text Character Counter added -- Waves no longer breaks on SVGs - -## v0.95.3 (Feb 25, 2015) -- Parallax image loading / responsiveness fixes -- Date picker supports month/year as dropdown -- Dismissable collection items -- Avatar collection items -- Pagination Added -- ScrollFire fixes - - -## v0.95.2 (Feb 10, 2015) -- Switches added -- Transition animation functions added -- ScrollFire Plugin added (fires functions dependent on scroll position) -- Responsive Video tag added -- Custom File Input Button added -- Modals has a fixed footer option -- SideNav implementation changed (needs 2 UL menus) -- Slider Responsive Fixes - - -## v0.95.1 (Jan 26, 2015) -- Sidenav Fixes -- Dropdown alignment/gutter options added -- Parallax fixes -- JavaScript Initialization no longer needed for many components -- HTML options through data-attributes -- Site colors can be defined through Primary and Secondary color in Sass -- Tables no longer resonsive by default - - -## v0.95.0 (Jan 17, 2015) -- Drag Out Menu fixed with Touch Interactions -- Toasts minor bugfix -- OL element has default styling -- Fullscreen Slider added -- Footer requires page-footer class -- Progress Bars added -- Form autofill support added -- Responsive Tables support added -- Scrollspy Plugin released -- Waves events are now delegated / behavior enhanced - - -## v0.94.0 (Dec 30, 2014) -- Sidenav supports right edge positioning -- Responsive Embeds -- Image Vertical align classes -- border-box added -- Variable file created -- Pushpin added -- Tooltips support all directions -- Layout helper classes added -- Materialbox Fixes -- Form Element Enhancements -- Navbar supports search bar -- Waves fixes -- Materialbox Captions -- Image Slider Fixes - - -## v0.93.1 (Dec 20, 2014) -- Flexbox Sticky Footer removed due to IE incompatibility - - -## v0.93.0 (Dec 19, 2014) -- Card Reveal -- Image Slider -- Dynamically loaded forms work correctly -- Badges added -- Circular Image -- Waves Fixes -- Footer Added -- Toast support Custom HTML -- Modals support programmatic opening/closing -- Responsive Image support - - -## v0.92.1 (Dec 14, 2014) -- Bower semver fix -- Added new radio button style - - -## v0.92.0 (Dec 13, 2014) -- Clicking icon in dropdown in navbar no longer closes dropdown immediately -- Multiple select inputs now work properly -- Mobile navbar no longer extends past screen width -- Parallax improved -- Modal restructured / can be opened programmatically -- Callbacks added to modals -- Added dist folder to repo -- Cards restructured - -## v0.91 (Dec 3, 2014) -- bug fixes to forms -- added waves color classes -- toast thickened to look better on mobile -- many other bug fixes - - -## v0.9 (Nov 30, 2014) -- Touch interactions added -- tons more... \ No newline at end of file diff --git a/node_modules/materialize-css/CNAME b/node_modules/materialize-css/CNAME deleted file mode 100644 index 32e446b..0000000 --- a/node_modules/materialize-css/CNAME +++ /dev/null @@ -1 +0,0 @@ -materializecss.com diff --git a/node_modules/materialize-css/CONTRIBUTING.md b/node_modules/materialize-css/CONTRIBUTING.md deleted file mode 100644 index e5bcdc8..0000000 --- a/node_modules/materialize-css/CONTRIBUTING.md +++ /dev/null @@ -1,94 +0,0 @@ -## Contributing -- Compiling Files - - `npm install` - - `grunt monitor`, this will compile .scss, .js., .jade files -- Documentation - - If you notice an error in the documentation, please edit the corresponding .html page under jade/page-contents/. -- Issues - - If you have an issue please make sure you document the problems in depth. - - Create screenshots of your issue and include a [Codepen](http://codepen.io/Dogfalo/pen/xbzPQV) of the problem where applicable - - Unclear issues with little explanations will be closed. - - Issues without a Codepen (where applicable) will be closed or ignored. -- Feature Requests - - We like feature requests but make sure that it can be seen within the goals of the project and not just something you need individually. Also you should try and give as much examples and details about the new feature as possible. -- Code Examples - - Use this [Codepen](http://codepen.io/Dogfalo/pen/xbzPQV) to illustrate your problem. - -## Contribution 101 -- Fork this repo to your own git -- Make your changes -- Submit a pull request with full remarks documenting your changes -- Pull request MAY then be accepted by project creators -- Make sure you are altering the correct source files (Never alter compiled / dist files) - -## Jasmine Testing Guide -**References:** -- [Jasmine Documentation](http://jasmine.github.io/2.0/introduction.html) -- [Grunt Jasmine Plugin](https://github.com/gruntjs/grunt-contrib-jasmine) -- [Example Jasmine Tests](https://github.com/Dogfalo/materialize/tree/master/tests/spec) -- [Travis CI](https://travis-ci.org/Dogfalo/materialize) - -Before you start, make sure you install grunt and all its dependencies. To verify you have all the correct dependencies you can run `grunt travis` and it will run the tests. If you get an errors and have not made any changes, it means you have not installed the proper dependencies. - -Materialize uses Jasmine as the testing framework. We also include a jQuery library which allows you to write tests using jQuery syntax. - -### Starting Out - -First to familiarize yourself with how the tests are structured, you can take a look inside the `tests/` directory. Each component should have its own folder. Follow the file-naming conventions that are used in the existing tests. - -Before writing tests, make sure you are working off of a clean git branch of your fork. This will greatly simplify the Pull Request process. - -### Writing Tests - -Before writing tests, make sure you understand what the expected-behavior of the component actually is. Reading over the component code and documentation will greatly aid you in this regard. - -Use `describe` blocks to section disparate portions of tests and `it` blocks inside those to further break up tests into features. Inside `it` blocks, you can have multiple except statements. As a general testing principle, be sure to try and test both the case and its “inverse” to lessen the chance for false positives. - -Example: -```javascript -expect(toast.first('span').text()).toBe('I am toast content'); -expect(toast.first('span').text()).not.toBe('I am toast'); -``` - -You can use beforeEach, and afterEach in either block to designate code that will execute before or after each item. This is useful if you need to setup some scenario for each test, or reset some things after each test. - -When writing expect statements (Jasmine’s form of assert), it is very important to write an expected behavior string so in the event of an error, the test that failed is very clear. - -Example: -```javascript -expect(toast.length).toBe(0, 'because toast should be removed by now'); -``` -When this expect statement fails it will list the reason as “because toast should be removed by now”. - -Because our components are very front end heavy, familiarize yourself with jQuery ways of interacting with the dom and our components. You can use methods like [trigger](http://api.jquery.com/trigger/), to simulate certain events like the user clicking a button. - -We also understand that testing CSS properties is pretty tough so you’ll have to be creative when writing good tests that ensure the styling is still working. Try and cover as many cases as you can but don’t worry if there are some edge cases. You can add comments describing some problematic edge cases in TODOs so we know about them. - -### Submitting Your Pull Request - -Try and keep your commit history clean and concise. Once you submit your pull request, [Travis CI](https://travis-ci.org/Dogfalo/materialize) will automatically run your tests and will show a checkmark to show that all the tests have passed. Once this is done, we’ll review your tests and code and make comments if there are issues or things we think could be improved. Then once everything looks good we’ll merge the code in! - - -### Useful Jasmine Tips - -1. To only run a specific spec at a time, to avoid wasting your time running all our other tests, you can set the flag `--filter`. For example: - ``` - `grunt travis --filter=tabs` - ``` - - This would only run specs with tabs in its name. - -2. If you need a timeout in your test (waiting for some animation or action to be executed) you need to use the done callback. In your `it()` behavior function set done as an argument to your anonymous function. Then you can use javascript’s window `setTimeout`s normally. And when you want the test to finish just call the `done()` function. For example: - - ```javascript - it ('should wait for a timeout', function(done) { - // Execute action - timeout(setTimeout(function() { - // Wait a second - // Test for result - done(); - }, 1000); - }); - ``` - - **Note:** If you add done as a callback, and you don’t call the `done()` function, it will stall forever and error after a max limit of around 5 seconds. diff --git a/node_modules/materialize-css/Gruntfile.js b/node_modules/materialize-css/Gruntfile.js deleted file mode 100644 index 6d445fb..0000000 --- a/node_modules/materialize-css/Gruntfile.js +++ /dev/null @@ -1,604 +0,0 @@ -module.exports = function(grunt) { - - // configure the tasks - grunt.initConfig({ - // Copy - copy: { - dist: { cwd: 'fonts', src: [ '**' ], dest: 'dist/fonts', expand: true }, - }, - - // Jasmine - jasmine: { - components: { - src: [ - 'bin/materialize.js' - ], - options: { - vendor: [ - 'node_modules/jquery/dist/jquery.min.js', - 'node_modules/jasmine-jquery/lib/jasmine-jquery.js' - ], - styles: 'bin/materialize.css', - specs: 'tests/spec/**/*Spec.js', - helpers: 'tests/spec/helper.js', - keepRunner : true, - //helpers: 'test/spec/*.js' - } - } - }, - - - - // Sass - sass: { // Task - expanded: { // Target - options: { // Target options - outputStyle: 'expanded', - sourcemap: false, - }, - files: { - 'dist/css/materialize.css': 'sass/materialize.scss', - } - }, - - min: { - options: { - outputStyle: 'compressed', - sourcemap: false - }, - files: { - 'dist/css/materialize.min.css': 'sass/materialize.scss', - } - }, - - // Compile ghpages css - gh: { - options: { - outputStyle: 'compressed', - sourcemap: false - }, - files: { - 'css/ghpages-materialize.css': 'sass/ghpages-materialize.scss', - } - }, - - // Compile bin css - bin: { - options: { - outputStyle: 'expanded', - sourcemap: false - }, - files: { - 'bin/materialize.css': 'sass/materialize.scss', - } - } - }, - - // PostCss Autoprefixer - postcss: { - options: { - processors: [ - require('autoprefixer')({ - browsers: [ - 'last 2 versions', - 'Chrome >= 30', - 'Firefox >= 30', - 'ie >= 10', - 'Safari >= 8'] - }) - ] - }, - expended: { - src: 'dist/css/materialize.css' - }, - min: { - src: 'dist/css/materialize.min.css' - }, - gh: { - src: 'css/ghpages-materialize.css' - }, - bin: { - src: 'bin/materialize.css' - } - }, - - // Browser Sync integration - browserSync: { - bsFiles: ["bin/*.js", "bin/*.css", "!**/node_modules/**/*"], - options: { - server: { - baseDir: "./" // make server from root dir - }, - port: 8000, - ui: { - port: 8080, - weinre: { - port: 9090 - } - }, - open: false - } - }, - - // Concat - concat: { - options: { - separator: ';' - }, - dist: { - // the files to concatenate - src: [ - "js/initial.js", - "js/jquery.easing.1.3.js", - "js/animation.js", - "js/velocity.min.js", - "js/hammer.min.js", - "js/jquery.hammer.js", - "js/global.js", - "js/collapsible.js", - "js/dropdown.js", - "js/modal.js", - "js/materialbox.js", - "js/parallax.js", - "js/tabs.js", - "js/tooltip.js", - "js/waves.js", - "js/toasts.js", - "js/sideNav.js", - "js/scrollspy.js", - "js/forms.js", - "js/slider.js", - "js/cards.js", - "js/chips.js", - "js/pushpin.js", - "js/buttons.js", - "js/transitions.js", - "js/scrollFire.js", - "js/date_picker/picker.js", - "js/date_picker/picker.date.js", - "js/character_counter.js", - "js/carousel.js", - ], - // the location of the resulting JS file - dest: 'dist/js/materialize.js' - }, - temp: { - // the files to concatenate - src: [ - "js/initial.js", - "js/jquery.easing.1.3.js", - "js/animation.js", - "js/velocity.min.js", - "js/hammer.min.js", - "js/jquery.hammer.js", - "js/global.js", - "js/collapsible.js", - "js/dropdown.js", - "js/modal.js", - "js/materialbox.js", - "js/parallax.js", - "js/tabs.js", - "js/tooltip.js", - "js/waves.js", - "js/toasts.js", - "js/sideNav.js", - "js/scrollspy.js", - "js/forms.js", - "js/slider.js", - "js/cards.js", - "js/chips.js", - "js/pushpin.js", - "js/buttons.js", - "js/transitions.js", - "js/scrollFire.js", - "js/date_picker/picker.js", - "js/date_picker/picker.date.js", - "js/character_counter.js", - "js/carousel.js", - ], - // the location of the resulting JS file - dest: 'temp/js/materialize.js' - }, - }, - - // Uglify - uglify: { - options: { - // Use these options when debugging - // mangle: false, - // compress: false, - // beautify: true - - }, - dist: { - files: { - 'dist/js/materialize.min.js': ['dist/js/materialize.js'] - } - }, - bin: { - files: { - 'bin/materialize.js': ['temp/js/materialize.js'] - } - }, - extras: { - files: { - 'extras/noUiSlider/nouislider.min.js': ['extras/noUiSlider/nouislider.js'] - } - } - }, - - - // Compress - compress: { - main: { - options: { - archive: 'bin/materialize.zip', - level: 6 - }, - files:[ - { expand: true, cwd: 'dist/', src: ['**/*'], dest: 'materialize/'}, - { expand: true, cwd: './', src: ['LICENSE', 'README.md'], dest: 'materialize/'}, - ] - }, - - src: { - options: { - archive: 'bin/materialize-src.zip', - level: 6 - }, - files:[ - {expand: true, cwd: 'fonts/', src: ['**/*'], dest: 'materialize-src/fonts/'}, - {expand: true, cwd: 'sass/', src: ['materialize.scss'], dest: 'materialize-src/sass/'}, - {expand: true, cwd: 'sass/', src: ['components/**/*'], dest: 'materialize-src/sass/'}, - {expand: true, cwd: 'js/', src: [ - "initial.js", - "jquery.easing.1.3.js", - "animation.js", - "velocity.min.js", - "hammer.min.js", - "jquery.hammer.js", - "global.js", - "collapsible.js", - "dropdown.js", - "modal.js", - "materialbox.js", - "parallax.js", - "tabs.js", - "tooltip.js", - "waves.js", - "toasts.js", - "sideNav.js", - "scrollspy.js", - "forms.js", - "slider.js", - "cards.js", - "chips.js", - "pushpin.js", - "buttons.js", - "transitions.js", - "scrollFire.js", - "date_picker/picker.js", - "date_picker/picker.date.js", - "character_counter.js", - "carousel.js", - ], dest: 'materialize-src/js/'}, - {expand: true, cwd: 'dist/js/', src: ['**/*'], dest: 'materialize-src/js/bin/'}, - {expand: true, cwd: './', src: ['LICENSE', 'README.md'], dest: 'materialize-src/'} - - ] - }, - - starter_template: { - options: { - archive: 'templates/starter-template.zip', - level: 6 - }, - files:[ - { expand: true, cwd: 'dist/', src: ['**/*'], dest: 'starter-template/'}, - { expand: true, cwd: 'templates/starter-template/', src: ['index.html', 'LICENSE'], dest: 'starter-template/'}, - { expand: true, cwd: 'templates/starter-template/css', src: ['style.css'], dest: 'starter-template/css'}, - { expand: true, cwd: 'templates/starter-template/js', src: ['init.js'], dest: 'starter-template/js'} - - ] - }, - - parallax_template: { - options: { - archive: 'templates/parallax-template.zip', - level: 6 - }, - files:[ - { expand: true, cwd: 'dist/', src: ['**/*'], dest: 'parallax-template/'}, - { expand: true, cwd: 'templates/parallax-template/', src: ['index.html', 'LICENSE', 'background1.jpg', 'background2.jpg', 'background3.jpg'], dest: 'parallax-template/'}, - { expand: true, cwd: 'templates/parallax-template/css', src: ['style.css'], dest: 'parallax-template/css'}, - { expand: true, cwd: 'templates/parallax-template/js', src: ['init.js'], dest: 'parallax-template/js'} - - ] - } - - }, - - - // Clean - clean: { - temp: { - src: [ 'temp/' ] - }, - }, - - // Jade - jade: { - compile: { - options: { - pretty: true, - data: { - debug: false - } - }, - files: { - "index.html": "jade/index.jade", - "icons.html": "jade/icons.jade", - "about.html": "jade/about.jade", - "sass.html": "jade/sass.jade", - "getting-started.html": "jade/getting-started.jade", - "mobile.html": "jade/mobile.jade", - "showcase.html": "jade/showcase.jade", - "parallax.html": "jade/parallax.jade", - "parallax-demo.html": "jade/parallax-demo.jade", - "typography.html": "jade/typography.jade", - "color.html": "jade/color.jade", - "shadow.html": "jade/shadow.jade", - "grid.html": "jade/grid.jade", - "media-css.html": "jade/media-css.jade", - "table.html": "jade/table.jade", - "helpers.html": "jade/helpers.jade", - "forms.html": "jade/forms.jade", - "buttons.html": "jade/buttons.jade", - "navbar.html": "jade/navbar.jade", - "cards.html": "jade/cards.jade", - "preloader.html": "jade/preloader.jade", - "collections.html": "jade/collections.jade", - "badges.html": "jade/badges.jade", - "footer.html": "jade/footer.jade", - "dialogs.html": "jade/dialogs.jade", - "modals.html": "jade/modals.jade", - "dropdown.html": "jade/dropdown.jade", - "tabs.html": "jade/tabs.jade", - "side-nav.html": "jade/sideNav.jade", - "pushpin.html": "jade/pushpin.jade", - "waves.html": "jade/waves.jade", - "media.html": "jade/media.jade", - "collapsible.html": "jade/collapsible.jade", - "chips.html": "jade/chips.jade", - "scrollfire.html": "jade/scrollFire.jade", - "scrollspy.html": "jade/scrollspy.jade", - "transitions.html": "jade/transitions.jade", - "fullscreen-slider-demo.html": "jade/fullscreen-slider-demo.jade", - "pagination.html": "jade/pagination.jade", - "breadcrumbs.html": "jade/breadcrumbs.jade", - "carousel.html": "jade/carousel.jade", - "pushpin-demo.html": "jade/pushpin-demo.jade", - "css-transitions.html": "jade/css-transitions.jade", - "404.html": "jade/404.jade", - - } - } - }, - - // Watch Files - watch: { - jade: { - files: ['jade/**/*'], - tasks: ['jade_compile'], - options: { - interrupt: false, - spawn: false, - }, - }, - - js: { - files: [ "js/**/*", "!js/init.js"], - tasks: ['js_compile'], - options: { - interrupt: false, - spawn: false, - }, - }, - - sass: { - files: ['sass/**/*'], - tasks: ['sass_compile'], - options: { - interrupt: false, - spawn: false, - }, - } - }, - - - // Concurrent - concurrent: { - options: { - logConcurrentOutput: true, - limit: 10, - }, - monitor: { - tasks: ["watch:jade", "watch:js", "watch:sass", "notify:watching", 'server'] - }, - }, - - - // Notifications - notify: { - watching: { - options: { - enabled: true, - message: 'Watching Files!', - title: "Materialize", // defaults to the name in package.json, or will use project directory's name - success: true, // whether successful grunt executions should be notified automatically - duration: 1 // the duration of notification in seconds, for `notify-send only - } - }, - - sass_compile: { - options: { - enabled: true, - message: 'Sass Compiled!', - title: "Materialize", - success: true, - duration: 1 - } - }, - - js_compile: { - options: { - enabled: true, - message: 'JS Compiled!', - title: "Materialize", - success: true, - duration: 1 - } - }, - - jade_compile: { - options: { - enabled: true, - message: 'Jade Compiled!', - title: "Materialize", - success: true, - duration: 1 - } - }, - - server: { - options: { - enabled: true, - message: 'Server Running!', - title: "Materialize", - success: true, - duration: 1 - } - } - }, - - // Text Replace - replace: { - version: { // Does not edit README.md - src: [ - 'bower.json', - 'package.json', - 'package.js', - 'jade/**/*.html' - ], - overwrite: true, - replacements: [{ - from: grunt.option( "oldver" ), - to: grunt.option( "newver" ) - }] - }, - readme: { // Changes README.md - src: [ - 'README.md' - ], - overwrite: true, - replacements: [{ - from: 'Current Version : v'+grunt.option( "oldver" ), - to: 'Current Version : v'+grunt.option( "newver" ) - }] - }, - }, - - // Create Version Header for files - usebanner: { - release: { - options: { - position: 'top', - banner: "/*!\n * Materialize v"+ grunt.option( "newver" ) +" (http://materializecss.com)\n * Copyright 2014-2015 Materialize\n * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)\n */", - linebreak: true - }, - files: { - src: [ 'dist/css/*.css', 'dist/js/*.js'] - } - } - }, - - // Rename files - rename: { - rename_src: { - src: 'bin/materialize-src'+'.zip', - dest: 'bin/materialize-src-v'+grunt.option( "newver" )+'.zip', - options: { - ignore: true - } - }, - rename_compiled: { - src: 'bin/materialize'+'.zip', - dest: 'bin/materialize-v'+grunt.option( "newver" )+'.zip', - options: { - ignore: true - } - }, - }, - - // Removes console logs - removelogging: { - source: { - src: ["js/**/*.js", "!js/velocity.min.js"], - options: { - // see below for options. this is optional. - } - } - }, - }); - - // load the tasks - // grunt.loadNpmTasks('grunt-gitinfo'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-sass'); - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-compress'); - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-jade'); - grunt.loadNpmTasks('grunt-concurrent'); - grunt.loadNpmTasks('grunt-notify'); - grunt.loadNpmTasks('grunt-text-replace'); - grunt.loadNpmTasks('grunt-banner'); - grunt.loadNpmTasks('grunt-rename'); - grunt.loadNpmTasks('grunt-remove-logging'); - grunt.loadNpmTasks('grunt-browser-sync'); - grunt.loadNpmTasks('grunt-contrib-jasmine'); - grunt.loadNpmTasks('grunt-postcss'); - // define the tasks - grunt.registerTask( - 'release',[ - 'lint', - 'copy', - 'sass:expanded', - 'sass:min', - 'postcss:expended', - 'postcss:min', - 'concat:dist', - 'uglify:dist', - 'uglify:extras', - 'usebanner:release', - 'compress:main', - 'compress:src', - 'compress:starter_template', - 'compress:parallax_template', - 'replace:version', - 'replace:readme', - 'rename:rename_src', - 'rename:rename_compiled' - ] - ); - - grunt.registerTask('jade_compile', ['jade', 'notify:jade_compile']); - grunt.registerTask('js_compile', ['concat:temp', 'uglify:bin', 'notify:js_compile', 'clean:temp']); - grunt.registerTask('sass_compile', ['sass:gh', 'sass:bin', 'postcss:gh', 'postcss:bin', 'notify:sass_compile']); - grunt.registerTask('server', ['browserSync', 'notify:server']); - grunt.registerTask('lint', ['removelogging:source']); - grunt.registerTask('monitor', ["concurrent:monitor"]); - grunt.registerTask('travis', ['jasmine']); -}; diff --git a/node_modules/materialize-css/ISSUE_TEMPLATE.md b/node_modules/materialize-css/ISSUE_TEMPLATE.md deleted file mode 100644 index b107e95..0000000 --- a/node_modules/materialize-css/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -### Description -Add a detailed description of your issue. - -### Repro Steps -Layout the steps to reproduce your issue. - -### Screenshots / Codepen -Add supplemental screenshots or code examples. Look for a codepen template in our Contributing Guidelines. diff --git a/node_modules/materialize-css/LICENSE b/node_modules/materialize-css/LICENSE deleted file mode 100644 index 44bd03e..0000000 --- a/node_modules/materialize-css/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2017 Materialize - -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/node_modules/materialize-css/README.md b/node_modules/materialize-css/README.md deleted file mode 100755 index e535628..0000000 --- a/node_modules/materialize-css/README.md +++ /dev/null @@ -1,61 +0,0 @@ -![alt tag](https://raw.github.com/dogfalo/materialize/master/images/materialize.gif) -=========== - -[![Travis CI](https://travis-ci.org/Dogfalo/materialize.svg?branch=master)](https://travis-ci.org/Dogfalo/materialize)[![devDependency Status](https://david-dm.org/Dogfalo/materialize/dev-status.svg)](https://david-dm.org/Dogfalo/materialize#info=devDependencies)[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Dogfalo/materialize?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -[Materialize](http://materializecss.com/), a CSS Framework based on material design - -### Current Version : v0.98.0 - -## Sass Requirements: -- Ruby Sass 3.3+, LibSass 0.6+ - -## Supported Browsers: -Chrome 35+, Firefox 31+, Safari 7+, IE 10+ - -## Changelog -Bolded styling surrounded by emojis indicates a breaking change. - -- v0.98.0 (January 25th) - - :no_good: **Standardized plugin option naming to camelcase (please check your plugin calls to make sure all the options are camelcase)** :no_good: - - Added FABs in image cards - - Added swipeable tabs - - Fixed carousel misalignment when switching quickly - - Fixed carousel resize bug where slide widths wouldn't change when changing window size - - Improved tabs compatibility with cards - - Fixed bug where using backspace to delete chips would navigate back in certain browsers - - Added autocomplete integration with chips - - Upgraded noUiSlider to version 9 with support for vertical sliders - -- v0.97.8 (October 30th, 2016) - - **Refactored Modal plugin** - - Tabs now supported in navbar - - Chips data can now be reinitiailized - - Minor side nav fixes - - FAB to toolbar component added - - Fixed dropdown options bug -- v0.97.7 (July 23rd, 2016) - - Basic horizontal cards - - Carousel bug fixes and new features - - Updated sidenav styles and new component - - Meteor package now supports Sass - - Autocomplete form component - - Chips jQuery plugin -- v0.97.6 (April 1st, 2016) - - **Removed deprecated material icons from project** - - **Changed /font directory to /fonts** - - Datepicker and ScrollSpy now compatible with jQuery 2.2.x - - Responsive tables now work with empty cells - - Added focus states to checkboxes, switches, and radio buttons - - Sidenav and Modals no longer cause flicker with scrollbar - - Materialbox overflow and z-index issues fixed - - Added new option for Card actions within a Card reveal - - - - -## Contributing -[Please read CONTRIBUTING.md for more information](CONTRIBUTING.md) - -## Testing -We use Jasmine as our testing framework and we're trying to write a robust test suite for our components. If you want to help, [here's a starting guide on how to write tests in Jasmine](https://docs.google.com/document/d/1dVM6qGt_b_y9RRhr9X7oZfFydaJIEqB9CT7yekv-4XE/edit?usp=sharing) diff --git a/node_modules/materialize-css/_SpecRunner.html b/node_modules/materialize-css/_SpecRunner.html deleted file mode 100644 index bd0b4a0..0000000 --- a/node_modules/materialize-css/_SpecRunner.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Jasmine Spec Runner - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/about.html b/node_modules/materialize-css/about.html deleted file mode 100644 index 3e5681e..0000000 --- a/node_modules/materialize-css/about.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - About - Materialize - - - - - - - - - - - - - - - - -
- - -
-
-
-
-
-

About

-

Learn about the Material Design and our Project Team.

-
-
-
- - -
-
-
-
-
- -
- -
- -
- -
-

Material Design

-

Created and designed by Google, Material Design is a design language that combines the classic principles of successful design - along with innovation and technology. Google's goal is to develop a system of design that allows for a unified user experience - across all their products on any platform.

-
- -
-
-

Principles

-
- -

Material is the metaphor

-

The metaphor of material defines the relationship between space and motion. The idea is that the technology is inspired by paper and ink and is utilized to facilitate creativity and innovation. Surfaces and edges provide familiar visual cues that allow users to quickly understand the technology beyond the physical world.

-
-
- -
- -

Bold, graphic, intentional

-

Elements and components such as grids, typography, color, and imagery are not only visually pleasing, but also create a sense of hierarchy, meaning, and focus. Emphasis on different actions and components create a visual guide for users.

-
-
- -
- -

Motion provides meaning

-

Motion allows the user to draw a parallel between what they see on the screen and in real life. By providing both feedback and familiarity, this allows the user to fully immerse him or herself into unfamiliar technology. Motion contains consistency and continuity in addition to giving users additional subconscious information about objects and transformations.

-
-
-
- - -
-
-

Meet the Team

-

We are a team of students from Carnegie Mellon University.

-
-
- -
-
-
-
- -
-
-
- -
-
-
-

Alvin Wang

-

Alvin is an Information Systems and Human Computer Interaction Major. He worked as a Software Engineer at Fidelity Investments this past summer.

-
-
- -
-
-
- -
-
-
-

Alan Chang

-

Alan is an Information Systems major with a minor in computer science. He worked at as a Front End Developer at Shift Collaborative this past summer.

-
-
- -
-
-
- -
-
-
-

Alex Mark

-

Alex is an Information Systems major with a minor in Human Computer Interaction. He worked as a software developer for Intuit this past summer.

-
-
- -
-
-
- -
-
-
-

Kevin Louie

-

Kevin is an Information Systems major with a minor in Human Computer Interaction. This past summer, he worked as a technology analyst at PPG Industries.

-
-
-
- -
- -
- -
- -
-
-
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - - - -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/badges.html b/node_modules/materialize-css/badges.html deleted file mode 100644 index c51acbf..0000000 --- a/node_modules/materialize-css/badges.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - - Badges - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- - -
- -
-
-

Badges can notify you that there are new or unread messages or notifications. Add the new class to the badge to give it the background.

- -

Collections

- -
- 1Alan - 4Alan - Alan - 14Alan -
-

-  <div class="collection">
-    <a href="#!" class="collection-item"><span class="badge">1</span>Alan</a>
-    <a href="#!" class="collection-item"><span class="new badge">4</span>Alan</a>
-    <a href="#!" class="collection-item">Alan</a>
-    <a href="#!" class="collection-item"><span class="badge">14</span>Alan</a>
-  </div>
-            
-
-
-
- - - - - -
-
-
- -

Badges in Collapsibles

- -
    -
  • -
    4filter_dramaFirst
    -

    Lorem ipsum dolor sit amet.

    -
  • -
  • -
    1placeSecond
    -

    Lorem ipsum dolor sit amet.

    -
  • -
-
- -

-<ul class="collapsible" data-collapsible="accordion">
-  <li>
-    <div class="collapsible-header"><span class="new badge">4</span><i class="material-icons">filter_drama</i>First</div>
-    <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
-  </li>
-  <li>
-    <div class="collapsible-header"><span class="badge">1</span><i class="material-icons">place</i>Second</div>
-    <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
-  </li>
-</ul>
- -
-
-
- -
- -
-
-

Options

-

You can customize captions in many ways.

-
-
- -
-
Custom Caption
- -
-

You can explicitly set the caption in a badge using the data-badge-caption attribute.

-

-  <span class="new badge" data-badge-caption="custom caption">4</span>
-  <span class="badge" data-badge-caption="custom caption">4</span>
-            
-
-
- -
-
Colors
-
-
- Red4 - Blue4 -
-
-
-

You can use our color classes to set the background-color of the badge.

-

-  <span class="new badge red">4</span>
-  <span class="new badge blue">4</span>
-            
-
-
- -
- - - -
- -
-
-
- - -
- -
-
- -
-
- - -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - - - -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/bin/jquery-2.1.1.min.js b/node_modules/materialize-css/bin/jquery-2.1.1.min.js deleted file mode 100644 index c4643af..0000000 --- a/node_modules/materialize-css/bin/jquery-2.1.1.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) -},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n(" -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/buttons.html b/node_modules/materialize-css/buttons.html deleted file mode 100644 index d91362f..0000000 --- a/node_modules/materialize-css/buttons.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - - Buttons - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
-
-

- There are 3 main button types described in material design. The raised button is a standard button that signify actions and seek to give depth to a mostly flat page. The floating circular action button is meant for very important functions. Flat buttons are usually used within elements that already have depth like cards or modals. -

-

Raised

- button - cloudbutton - cloudbutton -

-<a class="waves-effect waves-light btn">button</a>
-<a class="waves-effect waves-light btn"><i class="material-icons left">cloud</i>button</a>
-<a class="waves-effect waves-light btn"><i class="material-icons right">cloud</i>button</a>
-        
-
-
-

Floating

- add

-

-  <a class="btn-floating btn-large waves-effect waves-light red"><i class="material-icons">add</i></a>
-        
-
- -

Fixed Action Button

-

If you want a fixed floating action button, you can add multiple actions that will appear on hover. Our demo is in the bottom righthand corner of the page.

-

-  <div class="fixed-action-btn">
-    <a class="btn-floating btn-large red">
-      <i class="large material-icons">mode_edit</i>
-    </a>
-    <ul>
-      <li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
-      <li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
-      <li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
-      <li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
-    </ul>
-  </div>
-        
- -

You can also open and close the Fixed Action Button Menu programatically.

-

-  $('.fixed-action-btn').openFAB();
-  $('.fixed-action-btn').closeFAB();
-  $('.fixed-action-btn.toolbar').openToolbar();
-  $('.fixed-action-btn.toolbar').closeToolbar();
-        
-
-

Horizontal FAB

-

Creating a horizontal FAB is easy! Just add the class horizontal to the FAB.

- -

-  <div class="fixed-action-btn horizontal">
-    <a class="btn-floating btn-large red">
-      <i class="large material-icons">mode_edit</i>
-    </a>
-    <ul>
-      <li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
-      <li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
-      <li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
-      <li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
-    </ul>
-  </div>
-        
- - -
- -

Click-only FAB

-

If you want to disable the hover behaviour, and instead toggle the FAB menu when the user clicks on the large button (works great on mobile!), just add the click-to-toggle class to the FAB.

- -

-  <div class="fixed-action-btn horizontal click-to-toggle">
-    <a class="btn-floating btn-large red">
-      <i class="material-icons">menu</i>
-    </a>
-    <ul>
-      <li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
-      <li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
-      <li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
-      <li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
-    </ul>
-  </div>
-        
- -

FAB to Toolbar

-

Instead of displaying individual button options, you can transition your FAB into a toolbar on click. Just add the toolbar class to the FAB.

- -

-  <div class="fixed-action-btn toolbar">
-    <a class="btn-floating btn-large red">
-      <i class="large material-icons">mode_edit</i>
-    </a>
-    <ul>
-      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">insert_chart</i></a></li>
-      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">format_quote</i></a></li>
-      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">publish</i></a></li>
-      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">attach_file</i></a></li>
-    </ul>
-  </div>
-        
- -
-
-

Flat

-

Flat buttons are used to reduce excessive layering. For example, flat buttons are usually used for actions within a card or modal so there aren't too many overlapping shadows.

- Button -

-  <a class="waves-effect waves-teal btn-flat">Button</a>
-        
-
-
-

Submit Button

-

When you use a button to submit a form, instead of using a input tag, use a button tag with a type submit

- -

-  <button class="btn waves-effect waves-light" type="submit" name="action">Submit
-    <i class="material-icons right">send</i>
-  </button>
-        
-
-
-

Large

-

This button has a larger height for buttons that need more attention.

- Button - cloudbutton - cloudbutton -

-<a class="waves-effect waves-light btn-large">Button</a>
-<a class="waves-effect waves-light btn-large"><i class="material-icons left">cloud</i>button</a>
-<a class="waves-effect waves-light btn-large"><i class="material-icons right">cloud</i>button</a>
-        
-
-
-

Disabled

-

This style can be applied to all button types

- Button - Button - Button - add -

-<a class="btn-large disabled">Button</a>
-<a class="btn disabled">Button</a>
-<a class="btn-flat disabled">Button</a>
-<a class="btn-floating disabled"><i class="material-icons">add</i></a>
-        
-
- -
- -
-
-
- - -
-
- -
-
-
- -
-
- -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/cards.html b/node_modules/materialize-css/cards.html deleted file mode 100644 index cddc24b..0000000 --- a/node_modules/materialize-css/cards.html +++ /dev/null @@ -1,747 +0,0 @@ - - - - - - - - - Cards - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- - -
-

Cards are a convenient means of displaying content composed of different types of objects. They’re also well-suited for presenting similar objects whose size or supported actions can vary considerably, like photos with captions of variable length.

-

Basic Card

-
-
- -
-
- Card Title -

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
- -
-
- -
-
-

-      <div class="row">
-        <div class="col s12 m6">
-          <div class="card blue-grey darken-1">
-            <div class="card-content white-text">
-              <span class="card-title">Card Title</span>
-              <p>I am a very simple card. I am good at containing small bits of information.
-              I am convenient because I require little markup to use effectively.</p>
-            </div>
-            <div class="card-action">
-              <a href="#">This is a link</a>
-              <a href="#">This is a link</a>
-            </div>
-          </div>
-        </div>
-      </div>
-            
-
-
-
-
- -
-
- -
-

Image Card

-
-
- - Card Title -
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
- -
-
-
-



-

- Here is the standard card with an image thumbnail. -

-
-
-
-

-      <div class="row">
-        <div class="col s12 m7">
-          <div class="card">
-            <div class="card-image">
-              <img src="images/sample-1.jpg">
-              <span class="card-title">Card Title</span>
-            </div>
-            <div class="card-content">
-              <p>I am a very simple card. I am good at containing small bits of information.
-              I am convenient because I require little markup to use effectively.</p>
-            </div>
-            <div class="card-action">
-              <a href="#">This is a link</a>
-            </div>
-          </div>
-        </div>
-      </div>
-            
-
-
-
-
- -
-
- -
-

FABs in Cards

-
-
- - Card Title - add -
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
-
-
-
-



-

- Here is an image card with a Floating Action Button. -

-
-
-
-
-
-
- - add -
-
- Card Title -

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
-
-
-
-

- Here is an image card with a large Floating Action Button. -

-
-
-
-

-  <div class="row">
-    <div class="col s12 m6">
-      <div class="card">
-        <div class="card-image">
-          <img src="images/sample-1.jpg">
-          <span class="card-title">Card Title</span>
-          <a class="btn-floating halfway-fab waves-effect waves-light red"><i class="material-icons">add</i></a>
-        </div>
-        <div class="card-content">
-          <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</p>
-        </div>
-      </div>
-    </div>
-  </div>
-            
-
-
-
-
- -
-
- -
-

Horizontal Card

-
-
- -
-
-
-

I am a very simple card. I am good at containing small bits of information.

-
- -
-
-
-
-



-

- Here is the standard card with a horizontal image. -

-
-
-
-

-  <div class="col s12 m7">
-    <h2 class="header">Horizontal Card</h2>
-    <div class="card horizontal">
-      <div class="card-image">
-        <img src="http://lorempixel.com/100/190/nature/6">
-      </div>
-      <div class="card-stacked">
-        <div class="card-content">
-          <p>I am a very simple card. I am good at containing small bits of information.</p>
-        </div>
-        <div class="card-action">
-          <a href="#">This is a link</a>
-        </div>
-      </div>
-    </div>
-  </div>
-            
-
-
-
-
- -
-
- -
-

Card Reveal

-
-
- -
-
- Card Titlemore_vert - -

This is a link

-
-
- Card Titleclose -

Here is some more information about this product that is only revealed once clicked on.

-
-
-
-
-



-

- Here you can add a card that reveals more information once clicked. Just add the card-reveal div with a span.card-title inside to make this work. Add the class activator to an element inside the card to allow it to open the card reveal. -

-
-
-
-

-  <div class="card">
-    <div class="card-image waves-effect waves-block waves-light">
-      <img class="activator" src="images/office.jpg">
-    </div>
-    <div class="card-content">
-      <span class="card-title activator grey-text text-darken-4">Card Title<i class="material-icons right">more_vert</i></span>
-      <p><a href="#">This is a link</a></p>
-    </div>
-    <div class="card-reveal">
-      <span class="card-title grey-text text-darken-4">Card Title<i class="material-icons right">close</i></span>
-      <p>Here is some more information about this product that is only revealed once clicked on.</p>
-    </div>
-  </div>
-            
-
-
-
-
-

Card Action Options

-
-
- -
-
- Card Titlemore_vert - -

This is a link

-
-
- Card Titleclose -

Here is some more information about this product that is only revealed once clicked on.

-
- - -
-
-
-

-

- The default state is having the card-reveal go over the card-action. -

-
-
-
-
-
-
- -
-
- Card Titlemore_vert - -

This is a link

-
- - - -
- Card Titleclose -

Here is some more information about this product that is only revealed once clicked on.

-
-
-
-
-

- You can make your card-action always visible by adding the class sticky-action to the overall card. -

-
-
-
-

-  <div class="card sticky-action">
-    ...
-
-    <div class="card-action">...</div>
-
-    <div class="card-reveal">...</div>
-  </div>
-            
-
-
-
- - -
-
- -
-

Tabs in Cards

-

- You can add tabs to your cards by adding a dividing cards-tabs div inbetween your header content and your tab content. -

-

-  <div class="card">
-    <div class="card-content">
-      <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</p>
-    </div>
-    <div class="card-tabs">
-      <ul class="tabs tabs-fixed-width">
-        <li class="tab"><a href="#test4">Test 1</a></li>
-        <li class="tab"><a class="active" href="#test5">Test 2</a></li>
-        <li class="tab"><a href="#test6">Test 3</a></li>
-      </ul>
-    </div>
-    <div class="card-content grey lighten-4">
-      <div id="test4">Test 1</div>
-      <div id="test5">Test 2</div>
-      <div id="test6">Test 3</div>
-    </div>
-  </div>
-
-
-
-
-

White

-
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
-
- -
-
-
Test 1
-
Test 2
-
Test 3
-
-
-
-
-

-

- Basic white background card with tabs. -

-
-
-
-
-

Colored

-
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
-
- -
-
-
Test 1
-
Test 2
-
Test 3
-
-
-
-
-

-

- Colored or dark background card with tabs. -

-
-
-
- - -
-
- -
-

Card Sizes

-

If you want to have uniformly sized cards, you can use our premade size classes. Just add the size class in addition to the card class.

-

-  <div class="card small">
-    <!-- Card Content -->
-  </div>
-            
-
-
-
-
-

Small

-
-
- - Card Title -
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
- -
-
-
-

-

- The Small Card limits the height of the card to 300px. -

-
-
- -
-
-

Medium

-
-
- - Card Title -
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
- -
-
-
-

-

- The Medium Card limits the height of the card to 400px. -

-
-
- -
-
-

Large

-
-
- - Card Title -
-
-

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

-
- -
-
-
-

-

- The Large Card limits the height of the card to 500px. -

-
-
-
- - -
-
- -
-

Card Panel

-
I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks. -
-
-
-



-

- For a simpler card with less markup, try using a card panel which just has padding and a shadow effect -

-
-
-
-

-    <div class="row">
-      <div class="col s12 m5">
-        <div class="card-panel teal">
-          <span class="white-text">I am a very simple card. I am good at containing small bits of information.
-          I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks.
-          </span>
-        </div>
-      </div>
-    </div>
-            
-
-
-
- - -
- - - -
-
- - -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/carousel.html b/node_modules/materialize-css/carousel.html deleted file mode 100644 index 69dd87d..0000000 --- a/node_modules/materialize-css/carousel.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - - - Carousel - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
-
- - -
-

Introduction

-

Our Carousel is a robust and versatile component that can be an image slider, to an item carousel, to an onboarding experience. It is touch enabled making it especially smooth to use on mobile.

-

Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.


- -
- -

-  <div class="carousel">
-    <a class="carousel-item" href="#one!"><img src="http://lorempixel.com/250/250/nature/1"></a>
-    <a class="carousel-item" href="#two!"><img src="http://lorempixel.com/250/250/nature/2"></a>
-    <a class="carousel-item" href="#three!"><img src="http://lorempixel.com/250/250/nature/3"></a>
-    <a class="carousel-item" href="#four!"><img src="http://lorempixel.com/250/250/nature/4"></a>
-    <a class="carousel-item" href="#five!"><img src="http://lorempixel.com/250/250/nature/5"></a>
-  </div>
-      
-
- - -
-

jQuery Initialization

-

-    $(document).ready(function(){
-      $('.carousel').carousel();
-    });
-        
-
- -

jQuery Plugin Options

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Option NameDescription
durationTransition duration in milliseconds. (Default: 200)
distPerspective zoom. If 0, all items are the same size. (Default: -100)
shiftSet the spacing of the center item. (Default: 0)
paddingSet the padding between non center items. (Default: 0)
fullWidthMake the carousel a full width slider like the second example. (Default: false)
indicatorsSet to true to show indicators. (Default: false)
noWrapDon't wrap around and cycle through items. (Default: false)
-
- -

jQuery Plugin Methods

-

We have methods to pause, start, move to next and move to previous slide.

-

-// Next slide
-$('.carousel').carousel('next');
-$('.carousel').carousel('next', 3); // Move next n times.
-// Previous slide
-$('.carousel').carousel('prev');
-$('.carousel').carousel('prev', 4); // Move prev n times.
-// Set to nth slide
-$('.carousel').carousel('set', 4);
-      
-
- - -
-

Full Width Slider

-

Our carousel has a full width option that makes it into a simple and elegant image carousel. You can also have indicators that show up on the bottom of the slider.

-

Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.


- -
- -

-  <div class="carousel carousel-slider">
-    <a class="carousel-item" href="#one!"><img src="http://lorempixel.com/800/400/food/1"></a>
-    <a class="carousel-item" href="#two!"><img src="http://lorempixel.com/800/400/food/2"></a>
-    <a class="carousel-item" href="#three!"><img src="http://lorempixel.com/800/400/food/3"></a>
-    <a class="carousel-item" href="#four!"><img src="http://lorempixel.com/800/400/food/4"></a>
-  </div>
-        
- -

-  $('.carousel.carousel-slider').carousel({fullWidth: true});
-        
-
- - -
-

Special Options

-

The carousel doesn't only support images but also allows you to make content carousels. You can add fixed items to your carousel by adding a div with the class carousel-fixed-item and adding your fixed content in there.

-

Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.

-
- -
-

-  <div class="carousel carousel-slider center" data-indicators="true">
-    <div class="carousel-fixed-item center">
-      <a class="btn waves-effect white grey-text darken-text-2">button</a>
-    </div>
-    <div class="carousel-item red white-text" href="#one!">
-      <h2>First Panel</h2>
-      <p class="white-text">This is your first panel</p>
-    </div>
-    <div class="carousel-item amber white-text" href="#two!">
-      <h2>Second Panel</h2>
-      <p class="white-text">This is your second panel</p>
-    </div>
-    <div class="carousel-item green white-text" href="#three!">
-      <h2>Third Panel</h2>
-      <p class="white-text">This is your third panel</p>
-    </div>
-    <div class="carousel-item blue white-text" href="#four!">
-      <h2>Fourth Panel</h2>
-      <p class="white-text">This is your fourth panel</p>
-    </div>
-  </div>
-        
-

-  $('.carousel.carousel-slider').carousel({fullWidth: true});
-        
-
- -
- - - - - -
- -
- -
-
- -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/chips.html b/node_modules/materialize-css/chips.html deleted file mode 100644 index 6e3a451..0000000 --- a/node_modules/materialize-css/chips.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - - - - Chips - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- -
-

Introduction

-

- Chips can be used to represent small blocks of information. They are most commonly used either for contacts or for tags. -

-
- Contact Person - Jane Doe -
-
- Tag - close -
-
- -
-

Contacts

-

- To create a contact chip just add an img inside. -

-

-  <div class="chip">
-    <img src="images/yuna.jpg" alt="Contact Person">
-    Jane Doe
-  </div>
-        
-
- -
-

Tags

-

- To create a tag chip just add an close icon inside with the class close. -

-

-  <div class="chip">
-    Tag
-    <i class="close material-icons">close</i>
-  </div>
-        
-
- -
-

Javascript Plugin Usage

-

To add tags, just enter your tag text and press enter. You can delete them by clicking on the close icon or by using your delete button.

-
-
-

Set initial tags.

-
-
-

Use placeholders and override hint texts.

-
-
-

Use autocomplete with chips.

-
-
- -
-

Markup

-

-  <div class="chips"></div>
-  <div class="chips chips-initial"></div>
-  <div class="chips chips-placeholder"></div>
-  <div class="chips chips-autocomplete"></div>
-        
-

jQuery Initialization

-

-  $('.chips').material_chip();
-  $('.chips-initial').material_chip({
-    data: [{
-      tag: 'Apple',
-    }, {
-      tag: 'Microsoft',
-    }, {
-      tag: 'Google',
-    }],
-  });
-  $('.chips-placeholder').material_chip({
-    placeholder: 'Enter a tag',
-    secondaryPlaceholder: '+Tag',
-  });
-  $('.chips-autocomplete').material_chip({
-    autocompleteData: {
-      'Apple': null,
-      'Microsoft': null,
-      'Google': null
-    }
-  });
-        
-

Chip data object

-

-  var chip = {
-    tag: 'chip content',
-    image: '', //optional
-    id: 1, //optional
-  };
-        
- -
-

jQuery Plugin Options

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Option NameTypeDescription
dataarraySet the chip data (look at the Chip data object)
placeholderstringSet first placeholder when there are no tags.
secondaryPlaceholderstringSet second placeholder when adding additional tags.
autocompleteDataObjectSet autocomplete data.
autocompleteLimitIntegerSet autocomplete limit.
-
- -
-

Events

-

Material chips exposes a few events for hooking - into chips functionality. -

- - - - - - - - - - - - - - - - - - - - - -
EventDescription
chips.addthis method is triggered when a chip is added.
chips.deletethis method is triggered when a chip is deleted.
chips.selectthis method is triggered when a chip is selected.
- -

- -

-  $('.chips').on('chip.add', function(e, chip){
-    // you have the added chip here
-  });
-
-  $('.chips').on('chip.delete', function(e, chip){
-    // you have the deleted chip here
-  });
-
-  $('.chips').on('chip.select', function(e, chip){
-    // you have the selected chip here
-  });
-        
- -
-
-

Methods

-

- Use these methods to access the chip data. -

- - - - - - - - - - - - - -
ParameterDescription
dataIt returns the stored data.
- -

- -

-  $('.chips-initial').material_chip('data');
-        
- -
-
- - -
-
-
- - -
- -
-
- -
-
-
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/collapsible.html b/node_modules/materialize-css/collapsible.html deleted file mode 100644 index bb3be70..0000000 --- a/node_modules/materialize-css/collapsible.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - - - Collapsible - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- -
-

Introduction

-

- Collapsibles are accordion elements that expand when clicked on. They allow you to hide content that is not immediately relevant to the user. - -

    -
  • -
    filter_dramaFirst
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    placeSecond
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    whatshotThird
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
-
- -
-

Popout

-

- To create a popout collapsible, just add the class popout. - -

    -
  • -
    subtitlesFirst
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    gamesSecond
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    library_booksThird
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
-

-  <ul class="collapsible popout" data-collapsible="accordion">
-        
-
- - - -
-

Collapsible HTML Structure

-

-  <ul class="collapsible" data-collapsible="accordion">
-    <li>
-      <div class="collapsible-header"><i class="material-icons">filter_drama</i>First</div>
-      <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
-    </li>
-    <li>
-      <div class="collapsible-header"><i class="material-icons">place</i>Second</div>
-      <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
-    </li>
-    <li>
-      <div class="collapsible-header"><i class="material-icons">whatshot</i>Third</div>
-      <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
-    </li>
-  </ul>
-        
-
- -
-

Initialization

- Collapsible elements only need initialization if they are added dynamically. You can also pass in options inside the initialization, however this can be done in the HTML markup as well. -

-  $(document).ready(function(){
-    $('.collapsible').collapsible();
-  });
-        
- -

-
Preselected Section
- If you want a collapsible with a preopened section just add the active class to the collapsible-header. -
    -
  • -
    filter_dramaFirst
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    placeSecond
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    whatshotThird
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
-

-  <div class="collapsible-header active"><i class="mdi-maps-place"></i>Second</div>
-        
-
- -
-

Options

- You can customize the behavior of each collapsible using these options. For example, you can call a custom function to run when a collapsbile is opened or closed. The function passes the li element that was opened or closed as an argument. -

-  $('.collapsible').collapsible({
-    accordion: false, // A setting that changes the collapsible behavior to expandable instead of the default accordion style
-    onOpen: function(el) { alert('Open'); }, // Callback for Collapsible open
-    onClose: function(el) { alert('Closed'); } // Callback for Collapsible close
-  });
-        
-

- -

Collapsible Types

- There are two ways a collapsible can behave. It can either allow multiple sections to stay open, or it can only allow one section to stay open at a time, which is called an accordion. See below for a demo of each type -
-
-
-
Accordion
-
-
    -
  • -
    filter_dramaFirst
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    placeSecond
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    whatshotThird
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
-
-
- This is default behavior, but you can explicitly set it by setting the data-collapsible attribute in HTML. -

-    <ul class="collapsible" data-collapsible="accordion">
-            
-
-
-
-
-
-
Expandable
-
-
    -
  • -
    filter_dramaFirst
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    placeSecond
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
  • -
    whatshotThird
    -
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
    -
  • -
-
-
-

-  <ul class="collapsible" data-collapsible="expandable">
-            
-
-
-
- -
- - - - - -
-
- -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/collections.html b/node_modules/materialize-css/collections.html deleted file mode 100644 index 90337dc..0000000 --- a/node_modules/materialize-css/collections.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - - - Collections - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- - -
- -
-
-

Collections allow you to group list objects together.

-

Basic

-
    -
  • Alvin
  • -
  • Alvin
  • -
  • Alvin
  • -
  • Alvin
  • -
-

-    <ul class="collection">
-      <li class="collection-item">Alvin</li>
-      <li class="collection-item">Alvin</li>
-      <li class="collection-item">Alvin</li>
-      <li class="collection-item">Alvin</li>
-    </ul>
-            
-
-
-
-
- - - -
-
-
-

Headers

-
    -
  • First Names

  • -
  • Alvin
  • -
  • Alvin
  • -
  • Alvin
  • -
  • Alvin
  • -
-

-      <ul class="collection with-header">
-        <li class="collection-header"><h4>First Names</h4></li>
-        <li class="collection-item">Alvin</li>
-        <li class="collection-item">Alvin</li>
-        <li class="collection-item">Alvin</li>
-        <li class="collection-item">Alvin</li>
-      </ul>
-            
-
-
-
- - -
-
-
-

Secondary content

- -

-      <ul class="collection with-header">
-        <li class="collection-header"><h4>First Names</h4></li>
-        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-      </ul>
-            
-
- -
-
- -
-
-
-

Avatar Content

-
    -
  • - - Title -

    First Line
    - Second Line -

    - grade -
  • -
  • - folder - Title -

    First Line
    - Second Line -

    - grade -
  • -
  • - insert_chart - Title -

    First Line
    - Second Line -

    - grade -
  • -
  • - play_arrow - Title -

    First Line
    - Second Line -

    - grade -
  • -
-

-  <ul class="collection">
-    <li class="collection-item avatar">
-      <img src="images/yuna.jpg" alt="" class="circle">
-      <span class="title">Title</span>
-      <p>First Line <br>
-         Second Line
-      </p>
-      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
-    </li>
-    <li class="collection-item avatar">
-      <i class="material-icons circle">folder</i>
-      <span class="title">Title</span>
-      <p>First Line <br>
-         Second Line
-      </p>
-      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
-    </li>
-    <li class="collection-item avatar">
-      <i class="material-icons circle green">insert_chart</i>
-      <span class="title">Title</span>
-      <p>First Line <br>
-         Second Line
-      </p>
-      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
-    </li>
-    <li class="collection-item avatar">
-      <i class="material-icons circle red">play_arrow</i>
-      <span class="title">Title</span>
-      <p>First Line <br>
-         Second Line
-      </p>
-      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
-    </li>
-  </ul>
-            
-
- -
-
- -
-
-
-

Dismissable Content

-

You can just add the class dismissable to enable each collection item to be swiped away. This is only for touch enabled devices.

- -

-      <ul class="collection">
-        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
-      </ul>
-            
-
- -
-
- - - -
- - - -
-
- - -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/color.html b/node_modules/materialize-css/color.html deleted file mode 100644 index 6b19b69..0000000 --- a/node_modules/materialize-css/color.html +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - Color - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- -
-

Usage

-

- Here is a color palette based on the material design base colors. Each of these colors is defined with a base color class and an optional lighten or darken class. -

-
-
Background Color
-
-

To apply a background color, just add the color name and light/darkness as a class to the element.

-
This is a card panel with a teal lighten-2 class
-

-    <div class="card-panel teal lighten-2">This is a card panel with a teal lighten-2 class</div>
-            
-
- -
- -
Text Color
-
-

To apply a text color, just append -text to the color class like this:

-
This is a card panel with dark blue text
-

-    <div class="card-panel">
-      <span class="blue-text text-darken-2">This is a card panel with dark blue text</span>
-    </div>
-            
-
-
-
- -
-

Sass

-

- For background colors, you can apply the color simply by extending the classes like the example below. -

-

-  .ilike-blue-container {
-    @extend .blue, .lighten-4;
-  }
-        
- -

- For changing text color, you can apply the color simply by extending the classes like the example below. -

-

-  .ilike-blue-container {
-    @extend .blue-text, .text-lighten-4;
-  }
-        
-
-
- -

Color Palette

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- - -
-
- -
-
-
- -
-
- -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/css-transitions.html b/node_modules/materialize-css/css-transitions.html deleted file mode 100644 index 726704e..0000000 --- a/node_modules/materialize-css/css-transitions.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - CSS Transitions - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
- -
- -
-

We've made some custom animation classes that will transition your content with only CSS. Each CSS transition consists of a base class that applies the necessary styles and additional classes that control the state of the transition.

- -

Scale

-

Use this scale in and out elements. Make sure to add the base transition class scale-transition. Then add the class scale-out to scale the element down until it is hidden. To start something as hidden, add the class scale-out first, and then add the class scale-in to scale the element up until it is shown.

- - add - - Toggle Scale - -

-  <!-- Scaled in -->
-  <a id="scale-demo" href="#!" class="btn-floating btn-large scale-transition">
-    <i class="material-icons">add</i>
-  </a>
-
-  <!-- Scaled out -->
-  <a id="scale-demo" href="#!" class="btn-floating btn-large scale-transition scale-out">
-    <i class="material-icons">add</i>
-  </a>
-  
-
- -
- -
-
-
- - -
-
- -
-
-
- -
-
- - -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/css/ghpages-materialize.css b/node_modules/materialize-css/css/ghpages-materialize.css deleted file mode 100644 index e411bea..0000000 --- a/node_modules/materialize-css/css/ghpages-materialize.css +++ /dev/null @@ -1,11 +0,0 @@ -.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default) li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.valign-wrapper .valign{display:block}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12),0 3px 1px -2px rgba(0,0,0,0.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2)}.z-depth-2{box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3)}.z-depth-3{box-shadow:0 6px 10px 0 rgba(0,0,0,0.14),0 1px 18px 0 rgba(0,0,0,0.12),0 3px 5px -1px rgba(0,0,0,0.3)}.z-depth-4,.modal{box-shadow:0 8px 10px 1px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.3)}.z-depth-5{box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -5px rgba(0,0,0,0.3)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.tabs-wrapper,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}footer.page-footer{padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-top:calc(1.5rem - 11px)}.side-nav span.badge{margin-top:calc(24px - 11px)}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.container .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .button-collapse i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../fonts/roboto/Roboto-Thin.eot");src:url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"),url("../fonts/roboto/Roboto-Thin.woff") format("woff"),url("../fonts/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../fonts/roboto/Roboto-Light.eot");src:url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Light.woff2") format("woff2"),url("../fonts/roboto/Roboto-Light.woff") format("woff"),url("../fonts/roboto/Roboto-Light.ttf") format("truetype");font-weight:300}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../fonts/roboto/Roboto-Regular.eot");src:url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"),url("../fonts/roboto/Roboto-Regular.woff") format("woff"),url("../fonts/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Medium.eot");src:url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"),url("../fonts/roboto/Roboto-Medium.woff") format("woff"),url("../fonts/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Bold.eot");src:url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"),url("../fonts/roboto/Roboto-Bold.woff") format("woff"),url("../fonts/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem 0}h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem 0}h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}}.scale-transition{transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s, -webkit-transform .2s !important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{transition:box-shadow .25s;padding:24px;margin:.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);padding:16px 24px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width: 601px) and (max-width: 992px){.toast{float:left}}@media only screen and (min-width: 993px){.toast{float:right}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,0.7)}.tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,0.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease}.tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,0.7);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}@media only screen and (max-width: 992px){.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden}.backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-flat:disabled,.btn[disabled],[disabled].btn-large,.btn-floating[disabled],.btn-large[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,[disabled].btn-large:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-flat[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important}.btn,.btn-large,.btn-floating,.btn-large,.btn-flat{outline:0}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn:focus,.btn-large:focus,.btn-floating:focus{background-color:#1d7d74}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px}.btn-floating.btn-large i{line-height:56px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0}.fixed-action-btn.toolbar ul li{-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;transition:background-color .2s}.btn-flat:focus,.btn-flat:active{background-color:transparent}.btn-flat:focus,.btn-flat:hover{background-color:rgba(0,0,0,0.1);box-shadow:none}.btn-flat:active{background-color:rgba(0,0,0,0.2)}.btn-flat.disabled{background-color:transparent !important;color:#b3b3b3 !important;cursor:default}.btn-large{height:54px;line-height:54px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit}.input-field.col .dropdown-content [type="checkbox"]+label{top:1px;left:0;height:18px}/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);transition:all 0.7s ease-out;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, #fff 100%, #000 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;box-shadow:none;margin:0 0 20px 0;min-height:45px;outline:none;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;box-shadow:none !important}.prefix ~ .chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty ~ label{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;box-shadow:none;box-sizing:content-box;transition:all 0.3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime]:disabled,input[type=datetime][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime]:disabled+label,input[type=datetime][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input:not([type]):focus:not([readonly]),input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]).valid,input:not([type]):focus.valid,input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime].valid,input[type=datetime]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime].valid+label:after,input[type=datetime]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input:not([type]).invalid,input:not([type]):focus.invalid,input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime].invalid,input[type=datetime]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime].invalid+label:after,input[type=datetime]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input:not([type]).validate+label,input[type=text].validate+label,input[type=password].validate+label,input[type=email].validate+label,input[type=url].validate+label,input[type=time].validate+label,input[type=date].validate+label,input[type=datetime].validate+label,input[type=datetime-local].validate+label,input[type=tel].validate+label,input[type=number].validate+label,input[type=search].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:60px;opacity:0;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0;font-size:1rem;cursor:text;transition:.2s ease-out}.input-field label:not(.label-icon).active{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.autocomplete-content{margin-top:-15px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;opacity:0}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;transition:.28s ease}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after,[type="radio"]:checked+label:before,[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border-radius:50%}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border:2px solid transparent}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border:2px solid #26a69a}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:after{background-color:#26a69a}[type="radio"]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;opacity:0}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before,[type="checkbox"]:not(.filled-in)+label:after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type="checkbox"]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,0.05)}.side-nav a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav a:hover{background-color:rgba(0,0,0,0.05)}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-flat,.side-nav a.btn-floating{margin:10px 15px}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-floating{color:#fff}.side-nav a.btn-flat{color:#343434}.side-nav a.btn:hover,.side-nav a.btn-large:hover,.side-nav a.btn-large:hover{background-color:#2bbbad}.side-nav a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>i,.side-nav li>a>[class^="mdi-"],.side-nav li>a>[class*="mdi-"],.side-nav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.side-nav .divider{margin:8px 0 0 0}.side-nav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView>a{height:auto;padding:0}.side-nav .userView>a:hover{background-color:transparent}.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .name,.side-nav .userView .email{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .name,.side-nav .userView .email{font-size:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background 0.15s ease-out, top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.75);transform:scale(0.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.9);transform:scale(0.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}}body{background-color:#fcfcfc}p.box{padding:20px}p{color:rgba(0,0,0,0.71);padding:0;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{-webkit-font-smoothing:antialiased}h5>span{font-size:14px;margin-left:15px;color:#777}nav a{-webkit-font-smoothing:antialiased}nav ul li a:hover,nav ul li.active{background-color:#ea454b}.header{color:#ee6e73;font-weight:300}.caption{font-size:1.25rem;font-weight:300;margin-bottom:30px}.preview{background-color:#FFF;border:1px solid #eee;padding:20px 20px}header,main,footer{padding-left:300px}.parallax-demo header,.parallax-demo main,.parallax-demo footer{padding-left:0}footer.example{padding-left:0}@media only screen and (max-width: 992px){header,main,footer{padding-left:0}h5>span{display:block;margin:0 0 15px 0}}ul.side-nav.fixed li.logo{text-align:center;margin-top:32px;margin-bottom:80px}ul.side-nav.fixed li.logo:hover,ul.side-nav.fixed li.logo #logo-container:hover{background-color:transparent}ul.side-nav.fixed{overflow:hidden}ul.side-nav.fixed li{line-height:44px}ul.side-nav.fixed li.active{background-color:rgba(0,0,0,0.05)}ul.side-nav.fixed li a{font-size:13px;line-height:44px;height:44px;padding:0 30px}ul.side-nav.fixed ul.collapsible-accordion{background-color:#FFF}ul.side-nav.fixed ul.collapsible-accordion a.collapsible-header{padding:0 30px}ul.side-nav.fixed ul.collapsible-accordion .collapsible-body li a{font-weight:400;padding:0 37.5px 0 45px}ul.side-nav.fixed:hover{overflow-y:auto}.bold>a{font-weight:bold}#logo-container{height:57px;margin-bottom:32px}nav.top-nav{height:122px;box-shadow:none}nav.top-nav a.page-title{line-height:122px;font-size:48px}a.button-collapse.top-nav{position:absolute;text-align:center;height:48px;width:48px;left:7.5%;top:0;float:none;margin-left:1.5rem;color:#fff;font-size:36px;z-index:2}a.button-collapse.top-nav.full{line-height:122px}a.button-collapse.top-nav i{font-size:32px}@media only screen and (max-width: 600px){a.button-collapse.top-nav{left:5%}}@media only screen and (max-width: 992px){nav .nav-wrapper{text-align:center}nav .nav-wrapper a.page-title{font-size:36px}}@media only screen and (min-width: 993px){.container{width:85%}}#front-page-logo{display:inline-block;height:100%;pointer-events:none}@media only screen and (max-width: 992px){#front-page-nav ul.side-nav li{float:none;padding:0 15px}#front-page-nav ul.side-nav li:hover{background-color:#ddd}#front-page-nav ul.side-nav li .active{background-color:transparent}#front-page-nav ul.side-nav a{color:#444}}#responsive-img{width:80%;display:block;margin:0 auto}#index-banner{background-color:#ee6e73}#index-banner .container{position:relative}#index-banner .header{color:#FFF}#index-banner h4{margin-bottom:40px}#index-banner h1{margin-top:16px}@media only screen and (max-width: 992px){#index-banner h1{margin-top:60px}#index-banner h4{margin-bottom:15px}}@media only screen and (max-width: 600px){#index-banner h4{margin-bottom:0}}.github-commit{padding:14px 0;height:64px;line-height:36px;background-color:#5c5757;color:#e6e6e6;font-size:.9rem}@media only screen and (max-width: 992px){.github-commit{text-align:center}}#github-button{background-color:#6f6d6d;transition:.25s ease}#github-button:hover{background-color:#797777}.sha{color:#f0f0f0;margin:0 6px 0 6px}#download-button{background-color:#f3989b;width:260px;height:70px;line-height:70px;font-size:18px;font-weight:400}#download-button:hover{background-color:#f5a5a8}.promo{width:100%}.promo i{margin:40px 0;color:#ee6e73;font-size:7rem;display:block}.promo-caption{font-size:1.7rem;font-weight:500;margin-top:5px;margin-bottom:0}#front-page-nav{background-color:#FFF;position:relative}#front-page-nav a{color:#ee6e73}#front-page-nav li:hover{background-color:#fdeaeb}#front-page-nav li.active{background-color:#fdeaeb}#front-page-nav .container{height:inherit}.col.grid-example{border:1px solid #eee;margin:7px 0;text-align:center;line-height:50px;font-size:28px;background-color:tomato;color:white;padding:0}.col.grid-example span{font-weight:200;line-height:50px}.promo-example{overflow:hidden}#site-layout-example-left{background-color:#90a4ae;height:300px}#site-layout-example-right{background-color:#26a69a;height:300px}#site-layout-example-top{background-color:#E57373;height:42px}.flat-text-header{height:35px;width:80%;background-color:rgba(255,255,255,0.15);display:block;margin:27px auto}.flat-text{height:25px;width:80%;background-color:rgba(0,0,0,0.15);display:block;margin:27px auto}.flat-text.small{width:25%;height:25px;background-color:rgba(0,0,0,0.15)}.flat-text.full-width{width:100%}.browser-window{text-align:left;width:100%;height:auto;display:inline-block;border-radius:5px 5px 2px 2px;background-color:#fff;margin:20px 0px;overflow:hidden}.browser-window .top-bar{height:30px;border-radius:5px 5px 0 0;border-top:thin solid #eaeae9;border-bottom:thin solid #dfdfde;background:linear-gradient(#e7e7e6, #E2E2E1)}.browser-window .circle{height:10px;width:10px;display:inline-block;border-radius:50%;background-color:#fff;margin-right:1px}#close-circle{background-color:#FF5C5A}#minimize-circle{background-color:#FFBB50}#maximize-circle{background-color:#1BC656}.browser-window .circles{margin:5px 12px}.browser-window .content{margin:0;width:100%;display:inline-block;border-radius:0 0 5px 5px;background-color:#fafafa}.browser-window .row{margin:0}.clear{clear:both}.dynamic-color .red,.dynamic-color .pink,.dynamic-color .purple,.dynamic-color .deep-purple,.dynamic-color .indigo,.dynamic-color .blue,.dynamic-color .light-blue,.dynamic-color .cyan,.dynamic-color .teal,.dynamic-color .green,.dynamic-color .light-green,.dynamic-color .lime,.dynamic-color .yellow,.dynamic-color .amber,.dynamic-color .orange,.dynamic-color .deep-orange,.dynamic-color .brown,.dynamic-color .grey,.dynamic-color .blue-grey,.dynamic-color .black,.dynamic-color .white,.dynamic-color .transparent{height:55px;width:100%;padding:0 15px;line-height:55px;font-weight:500;font-size:12px;display:block;box-sizing:border-box}.dynamic-color .col{margin-bottom:55px}.center{text-align:center;vertical-align:middle}.material-icons.icon-demo{line-height:50px}.icon-container i{font-size:3em;margin-bottom:10px}.icon-container .icon-preview{height:120px;text-align:center}.icon-container span{display:block}.icon-holder{display:block;text-align:center;width:150px;height:115px;float:left;margin:0 0px 15px 0px}.icon-holder p{margin:0 0}.tabs-wrapper{position:relative;height:48px}.tabs-wrapper .row.pinned{position:fixed;width:100%;top:0;z-index:10}.shadow-demo{background-color:#26a69a;width:100px;height:100px;margin:20px auto}@media only screen and (max-width: 600px){.shadow-demo{width:150px;height:150px}}.parallax-container .text-center{position:absolute;top:50%;left:0;right:0;margin-top:-27px}ul.table-of-contents{margin-top:0;padding-top:48px}code,pre{position:relative;font-size:1.1rem}.directory-markup{font-size:1rem;line-height:1.1rem !important}pre[class*="language-"]{padding:25px 12px 7px 12px;border:solid 1px rgba(51,51,51,0.12)}pre[class*="language-"]:before{position:absolute;padding:1px 5px;background:#e8e6e3;top:0;left:0;font-family:"Roboto", sans-serif;-webkit-font-smoothing:antialiased;color:#555;content:attr(class);font-size:.9rem;border:solid 1px rgba(51,51,51,0.12);border-top:none;border-left:none}.toc-wrapper{position:relative;margin-top:42px}.toc-wrapper.pin-bottom{margin-top:84px}#carbonads{max-width:150px;display:inline-block;position:relative;text-align:left;-webkit-font-smoothing:antialiased}#carbonads>span,#carbonads span.carbon-wrap{height:100px;display:block}#carbonads a.carbon-img{height:100px;display:inline-block;margin-right:10px}#carbonads a.carbon-text,#carbonads input[type="submit"]{position:relative;top:0;width:150px;vertical-align:top;display:inline-block;font-size:13px;color:#E57373}#carbonads a.carbon-poweredby{position:relative;left:28px;font-size:11px;color:#EF9A9A}.buysellads #carbonads>span,.buysellads #carbonads span.carbon-wrap{height:auto}.buysellads #carbonads a.carbon-text{top:5px;left:0;width:130px;display:block;font-size:13px;-webkit-font-smoothing:antialiased;color:#E57373}.buysellads #carbonads a.carbon-poweredby{top:5px}.buysellads-header #carbonads>span,.buysellads-header #carbonads span.carbon-wrap{height:auto}.buysellads-header #carbonads a.carbon-text{color:#fff}.buysellads-header #carbonads a.carbon-poweredby{color:rgba(255,255,255,0.8)}.buysellads-homepage #carbonads{display:block;overflow:hidden;margin:4em auto 0;padding:1em;max-width:360px;border-radius:2px;background-color:rgba(255,255,255,0.13)}.buysellads-homepage #carbonads span{position:relative;display:block;overflow:hidden}.buysellads-homepage #carbonads .carbon-img{float:left;margin-right:1em}.buysellads-homepage #carbonads .carbon-text{max-width:calc(100% - 135px - 1em);width:auto}.buysellads-homepage #carbonads .carbon-poweredby{position:absolute;left:auto;right:0;bottom:-4px}.buysellads{-webkit-font-smoothing:antialiased;position:relative}.buysellads.buysellads-demo{bottom:20px;right:20px;position:fixed;padding:10px;background-color:rgba(255,255,255,0.9);z-index:1000}.buysellads.buysellads-demo #carbonads a.carbon-img{margin-right:0}.buysellads.buysellads-demo #carbonads a.carbon-text{top:0}.buysellads.buysellads-demo a.close{text-align:center;background-color:#fff;border-radius:50%;box-shadow:0 2px 4px 0 rgba(0,0,0,0.1);height:24px;width:24px;position:absolute;top:-6px;right:-6px;z-index:1;transition:background-color .2s}.buysellads.buysellads-demo a.close:hover{background-color:#ddd}.buysellads.buysellads-demo a.close .material-icons{font-size:18px;line-height:24px}.buysellads .bsa_it.one{width:130px;position:absolute;left:0;top:50px}.buysellads .bsa_it.one .bsa_it_p{left:0;bottom:-15px}.buysellads .bsa_it.one .bsa_it_ad .bsa_it_t{color:#E57373}.buysellads .bsa_it.one .bsa_it_ad .bsa_it_d{color:#EF9A9A}.buysellads .bsa_it_ad a{display:block;width:130px}.buysellads-header{margin-top:30px}.buysellads-header .bsa_it.one .bsa_it_p{bottom:-20px}.bsa_it.one{min-width:230px;max-width:270px;display:inline-block;text-align:left}.bsa_it.one .bsa_it_ad{border:0;padding:0;background-color:transparent}.bsa_it.one .bsa_it_ad .bsa_it_t{color:#fff}.bsa_it.one .bsa_it_ad .bsa_it_d{color:#FFCDD2}.bsa_it.one .bsa_it_p{right:auto;left:40px;bottom:-5px}.bsa_it.one .bsa_it_p a{color:#FFCDD2}footer{font-size:.9rem}body.parallax-demo footer{margin-top:0}.image-container{width:100%}.image-container img{max-width:100%}@media only screen and (max-width: 600px){.mobile-image{max-width:100%}}.waves-color-demo .collection-item{height:37px;line-height:37px;box-sizing:content-box}.waves-color-demo .collection-item code{line-height:37px}.waves-color-demo .btn:not(.waves-light),.waves-color-demo .btn-large:not(.waves-light){background-color:#fff;color:#212121}.card-panel span,.card-content p{-webkit-font-smoothing:antialiased}#images .card-panel .row{margin-bottom:0}.pushpin-demo{position:relative;height:100px}#pushpin-demo-1{display:block;height:inherit;background-color:#ddd}.valign-demo{height:400px;background-color:#ddd}.talign-demo{height:100px;background-color:#ddd}#staggered-test li,#image-test{opacity:0}#tx-live-lang-container{background-color:#fcfcfc;z-index:999}#tx-live-lang-container #tx-live-lang-picker{background-color:#fcfcfc}#tx-live-lang-container #tx-live-lang-picker li{color:rgba(0,0,0,0.87)}#tx-live-lang-container #tx-live-lang-picker li:hover{color:inherit;background-color:#fdeaeb}#tx-live-lang-container .txlive-langselector-toggle{border-bottom:2px solid #ee6e73}#tx-live-lang-container .txlive-langselector-current{color:rgba(0,0,0,0.87)}#tx-live-lang-container .txlive-langselector-marker{border-bottom:4px solid rgba(0,0,0,0.61)}#download-thanks{display:none}#twitter-widget-0{width:300px !important}#nav-mobile li.search{position:absolute;left:0;right:0;top:120px;margin-top:1px;padding:1px 0 0 0;z-index:2}#nav-mobile li.search:hover{background-color:#fff}#nav-mobile li.search .search-wrapper{margin:0 12px;transition:margin .25s ease}#nav-mobile li.search .search-wrapper.focused{margin:0}#nav-mobile li.search .search-wrapper input#search{display:block;font-size:16px;font-weight:300;width:100%;height:45px;margin:0;padding:0 45px 0 15px;border:0}#nav-mobile li.search .search-wrapper input#search:focus{outline:none}#nav-mobile li.search .search-wrapper i.material-icons{position:absolute;top:10px;right:10px;cursor:pointer}#nav-mobile li.search .search-results{margin:0;border-top:1px solid #e9e9e9;background-color:#fff}#nav-mobile li.search .search-results a{font-size:12px;white-space:nowrap}#nav-mobile li.search .search-results a:hover,#nav-mobile li.search .search-results a.focused{background-color:#eee;outline:none} diff --git a/node_modules/materialize-css/css/prism.css b/node_modules/materialize-css/css/prism.css deleted file mode 100644 index 584cc8e..0000000 --- a/node_modules/materialize-css/css/prism.css +++ /dev/null @@ -1,133 +0,0 @@ -/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+scss+bash */ -/** - * prism.js default theme for JavaScript, CSS and HTML - * Based on dabblet (http://dabblet.com) - * @author Lea Verou - */ - -code[class*="language-"], -pre[class*="language-"] { - color: black; -/* text-shadow: 0 1px white;*/ - font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace; - direction: ltr; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - line-height: 1.4; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*="language-"]::selection, pre[class*="language-"] ::selection, -code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #f5f2f0; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #999; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: hsla(0, 0%, 100%, .5); -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; -} - -.token.function { - color: #DD4A68; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important { - font-weight: bold; -} - -.token.entity { - cursor: help; -} - diff --git a/node_modules/materialize-css/dialogs.html b/node_modules/materialize-css/dialogs.html deleted file mode 100644 index 0b99596..0000000 --- a/node_modules/materialize-css/dialogs.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - Dialogs - Materialize - - - - - - - - - - - - - - - - -
- - - -
-
-
-
- -
-

Dialogs are content that are not originally visible on a page but show up with extra information if needed. The transitions should make the appearance of the dialog make sense and not jarring to the user.

-

Toasts

-

Materialize provides an easy way for you to send unobtrusive alerts to your users through toasts. These toasts are also placed and sized responsively, try it out by clicking the button below on different device sizes.

- Toast! -

To do this, call the Materialize.toast() function programatically in JavaScript.

-

-  // Materialize.toast(message, displayLength, className, completeCallback);
-  Materialize.toast('I am a toast!', 4000) // 4000 is the duration of the toast
-        
-

One way to add this into your application is to add this as an onclick event to a button

-

-  <a class="btn" onclick="Materialize.toast('I am a toast', 4000)">Toast!</a>
-        
- -

Custom HTML

-

You can pass in an HTML String as the first argument as well. Take a look at the example below, where we pass in text as well as a flat button. If you call an external function instead of in-line JavaScript, you will not need to escape quotation marks.

- Toast with Action -

-  var $toastContent = $('<span>I am toast content</span>');
-  Materialize.toast($toastContent, 5000);
-        
- -

Callback

-

You can have the toast callback a function when it has been dismissed

- Toast! -

-  <a class="btn" onclick="Materialize.toast('I am a toast', 4000,'',function(){alert('Your toast was dismissed')})">Toast!</a>
-        
- -

Styling Toasts

-

We've added the ability to customize your toasts easily. You can pass in classes as an optional parameter into the toast function. We've added a rounded class for you, but you can create your own CSS classes and apply them to toasts. Checkout out our full example below.

- - Round Toast! - -

-  Materialize.toast('I am a toast!', 3000, 'rounded') // 'rounded' is the class I'm applying to the toast
-        
-
- - - - -
-

Tooltips

- -

Tooltips are small, interactive, textual hints for mainly graphical elements. When using icons for actions you can use a tooltip to give people clarification on its function.

- - - -

Add the Tooltipped class to your element and add either top, bottom, left, right on data-tooltip to control the position.

-

-  <!-- data-position can be : bottom, top, left, or right -->
-  <!-- data-delay controls delay before tooltip shows (in milliseconds)-->
-  <a class="btn tooltipped" data-position="bottom" data-delay="50" data-tooltip="I am tooltip">Hover me!</a>
-        
-
-

Initialization

-

Tooltips are initialized automatically, but if you have dynamically added tooltips, you will need to initialize them.

-

-  $(document).ready(function(){
-    $('.tooltipped').tooltip({delay: 50});
-  });
-        

- -

jQuery Plugin Options

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Option NameDescription
delayDelay time before tooltip appears. (Default: 350)
tooltipTooltip text. Can use custom HTML if you set the html option.
positionSet the direction of the tooltip. 'top', 'right', 'bottom', 'left'. (Default: 'bottom')
htmlAllow custom html inside the tooltip. (Default: false)
- -
-

Removal

-

To remove the tooltip from the button, pass in 'remove' as the option to the tooltip function

-

-  // This will remove the tooltip functionality for the buttons on this page
-  $('.tooltipped').tooltip('remove');
-        
-
- -
- - - -
-
-
- - -
-
- -
-
-
- -
-
- -
-
-
-
-
Help Materialize Grow
-

We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

-
- - - -
- -
-
-
Join the Discussion
-

We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

- Chat -
-
-
Connect
- -
- -
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/dist/css/materialize.css b/node_modules/materialize-css/dist/css/materialize.css deleted file mode 100644 index 27de210..0000000 --- a/node_modules/materialize-css/dist/css/materialize.css +++ /dev/null @@ -1,8582 +0,0 @@ -/*! - * Materialize v0.98.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -.materialize-red { - background-color: #e51c23 !important; -} - -.materialize-red-text { - color: #e51c23 !important; -} - -.materialize-red.lighten-5 { - background-color: #fdeaeb !important; -} - -.materialize-red-text.text-lighten-5 { - color: #fdeaeb !important; -} - -.materialize-red.lighten-4 { - background-color: #f8c1c3 !important; -} - -.materialize-red-text.text-lighten-4 { - color: #f8c1c3 !important; -} - -.materialize-red.lighten-3 { - background-color: #f3989b !important; -} - -.materialize-red-text.text-lighten-3 { - color: #f3989b !important; -} - -.materialize-red.lighten-2 { - background-color: #ee6e73 !important; -} - -.materialize-red-text.text-lighten-2 { - color: #ee6e73 !important; -} - -.materialize-red.lighten-1 { - background-color: #ea454b !important; -} - -.materialize-red-text.text-lighten-1 { - color: #ea454b !important; -} - -.materialize-red.darken-1 { - background-color: #d0181e !important; -} - -.materialize-red-text.text-darken-1 { - color: #d0181e !important; -} - -.materialize-red.darken-2 { - background-color: #b9151b !important; -} - -.materialize-red-text.text-darken-2 { - color: #b9151b !important; -} - -.materialize-red.darken-3 { - background-color: #a21318 !important; -} - -.materialize-red-text.text-darken-3 { - color: #a21318 !important; -} - -.materialize-red.darken-4 { - background-color: #8b1014 !important; -} - -.materialize-red-text.text-darken-4 { - color: #8b1014 !important; -} - -.red { - background-color: #F44336 !important; -} - -.red-text { - color: #F44336 !important; -} - -.red.lighten-5 { - background-color: #FFEBEE !important; -} - -.red-text.text-lighten-5 { - color: #FFEBEE !important; -} - -.red.lighten-4 { - background-color: #FFCDD2 !important; -} - -.red-text.text-lighten-4 { - color: #FFCDD2 !important; -} - -.red.lighten-3 { - background-color: #EF9A9A !important; -} - -.red-text.text-lighten-3 { - color: #EF9A9A !important; -} - -.red.lighten-2 { - background-color: #E57373 !important; -} - -.red-text.text-lighten-2 { - color: #E57373 !important; -} - -.red.lighten-1 { - background-color: #EF5350 !important; -} - -.red-text.text-lighten-1 { - color: #EF5350 !important; -} - -.red.darken-1 { - background-color: #E53935 !important; -} - -.red-text.text-darken-1 { - color: #E53935 !important; -} - -.red.darken-2 { - background-color: #D32F2F !important; -} - -.red-text.text-darken-2 { - color: #D32F2F !important; -} - -.red.darken-3 { - background-color: #C62828 !important; -} - -.red-text.text-darken-3 { - color: #C62828 !important; -} - -.red.darken-4 { - background-color: #B71C1C !important; -} - -.red-text.text-darken-4 { - color: #B71C1C !important; -} - -.red.accent-1 { - background-color: #FF8A80 !important; -} - -.red-text.text-accent-1 { - color: #FF8A80 !important; -} - -.red.accent-2 { - background-color: #FF5252 !important; -} - -.red-text.text-accent-2 { - color: #FF5252 !important; -} - -.red.accent-3 { - background-color: #FF1744 !important; -} - -.red-text.text-accent-3 { - color: #FF1744 !important; -} - -.red.accent-4 { - background-color: #D50000 !important; -} - -.red-text.text-accent-4 { - color: #D50000 !important; -} - -.pink { - background-color: #e91e63 !important; -} - -.pink-text { - color: #e91e63 !important; -} - -.pink.lighten-5 { - background-color: #fce4ec !important; -} - -.pink-text.text-lighten-5 { - color: #fce4ec !important; -} - -.pink.lighten-4 { - background-color: #f8bbd0 !important; -} - -.pink-text.text-lighten-4 { - color: #f8bbd0 !important; -} - -.pink.lighten-3 { - background-color: #f48fb1 !important; -} - -.pink-text.text-lighten-3 { - color: #f48fb1 !important; -} - -.pink.lighten-2 { - background-color: #f06292 !important; -} - -.pink-text.text-lighten-2 { - color: #f06292 !important; -} - -.pink.lighten-1 { - background-color: #ec407a !important; -} - -.pink-text.text-lighten-1 { - color: #ec407a !important; -} - -.pink.darken-1 { - background-color: #d81b60 !important; -} - -.pink-text.text-darken-1 { - color: #d81b60 !important; -} - -.pink.darken-2 { - background-color: #c2185b !important; -} - -.pink-text.text-darken-2 { - color: #c2185b !important; -} - -.pink.darken-3 { - background-color: #ad1457 !important; -} - -.pink-text.text-darken-3 { - color: #ad1457 !important; -} - -.pink.darken-4 { - background-color: #880e4f !important; -} - -.pink-text.text-darken-4 { - color: #880e4f !important; -} - -.pink.accent-1 { - background-color: #ff80ab !important; -} - -.pink-text.text-accent-1 { - color: #ff80ab !important; -} - -.pink.accent-2 { - background-color: #ff4081 !important; -} - -.pink-text.text-accent-2 { - color: #ff4081 !important; -} - -.pink.accent-3 { - background-color: #f50057 !important; -} - -.pink-text.text-accent-3 { - color: #f50057 !important; -} - -.pink.accent-4 { - background-color: #c51162 !important; -} - -.pink-text.text-accent-4 { - color: #c51162 !important; -} - -.purple { - background-color: #9c27b0 !important; -} - -.purple-text { - color: #9c27b0 !important; -} - -.purple.lighten-5 { - background-color: #f3e5f5 !important; -} - -.purple-text.text-lighten-5 { - color: #f3e5f5 !important; -} - -.purple.lighten-4 { - background-color: #e1bee7 !important; -} - -.purple-text.text-lighten-4 { - color: #e1bee7 !important; -} - -.purple.lighten-3 { - background-color: #ce93d8 !important; -} - -.purple-text.text-lighten-3 { - color: #ce93d8 !important; -} - -.purple.lighten-2 { - background-color: #ba68c8 !important; -} - -.purple-text.text-lighten-2 { - color: #ba68c8 !important; -} - -.purple.lighten-1 { - background-color: #ab47bc !important; -} - -.purple-text.text-lighten-1 { - color: #ab47bc !important; -} - -.purple.darken-1 { - background-color: #8e24aa !important; -} - -.purple-text.text-darken-1 { - color: #8e24aa !important; -} - -.purple.darken-2 { - background-color: #7b1fa2 !important; -} - -.purple-text.text-darken-2 { - color: #7b1fa2 !important; -} - -.purple.darken-3 { - background-color: #6a1b9a !important; -} - -.purple-text.text-darken-3 { - color: #6a1b9a !important; -} - -.purple.darken-4 { - background-color: #4a148c !important; -} - -.purple-text.text-darken-4 { - color: #4a148c !important; -} - -.purple.accent-1 { - background-color: #ea80fc !important; -} - -.purple-text.text-accent-1 { - color: #ea80fc !important; -} - -.purple.accent-2 { - background-color: #e040fb !important; -} - -.purple-text.text-accent-2 { - color: #e040fb !important; -} - -.purple.accent-3 { - background-color: #d500f9 !important; -} - -.purple-text.text-accent-3 { - color: #d500f9 !important; -} - -.purple.accent-4 { - background-color: #aa00ff !important; -} - -.purple-text.text-accent-4 { - color: #aa00ff !important; -} - -.deep-purple { - background-color: #673ab7 !important; -} - -.deep-purple-text { - color: #673ab7 !important; -} - -.deep-purple.lighten-5 { - background-color: #ede7f6 !important; -} - -.deep-purple-text.text-lighten-5 { - color: #ede7f6 !important; -} - -.deep-purple.lighten-4 { - background-color: #d1c4e9 !important; -} - -.deep-purple-text.text-lighten-4 { - color: #d1c4e9 !important; -} - -.deep-purple.lighten-3 { - background-color: #b39ddb !important; -} - -.deep-purple-text.text-lighten-3 { - color: #b39ddb !important; -} - -.deep-purple.lighten-2 { - background-color: #9575cd !important; -} - -.deep-purple-text.text-lighten-2 { - color: #9575cd !important; -} - -.deep-purple.lighten-1 { - background-color: #7e57c2 !important; -} - -.deep-purple-text.text-lighten-1 { - color: #7e57c2 !important; -} - -.deep-purple.darken-1 { - background-color: #5e35b1 !important; -} - -.deep-purple-text.text-darken-1 { - color: #5e35b1 !important; -} - -.deep-purple.darken-2 { - background-color: #512da8 !important; -} - -.deep-purple-text.text-darken-2 { - color: #512da8 !important; -} - -.deep-purple.darken-3 { - background-color: #4527a0 !important; -} - -.deep-purple-text.text-darken-3 { - color: #4527a0 !important; -} - -.deep-purple.darken-4 { - background-color: #311b92 !important; -} - -.deep-purple-text.text-darken-4 { - color: #311b92 !important; -} - -.deep-purple.accent-1 { - background-color: #b388ff !important; -} - -.deep-purple-text.text-accent-1 { - color: #b388ff !important; -} - -.deep-purple.accent-2 { - background-color: #7c4dff !important; -} - -.deep-purple-text.text-accent-2 { - color: #7c4dff !important; -} - -.deep-purple.accent-3 { - background-color: #651fff !important; -} - -.deep-purple-text.text-accent-3 { - color: #651fff !important; -} - -.deep-purple.accent-4 { - background-color: #6200ea !important; -} - -.deep-purple-text.text-accent-4 { - color: #6200ea !important; -} - -.indigo { - background-color: #3f51b5 !important; -} - -.indigo-text { - color: #3f51b5 !important; -} - -.indigo.lighten-5 { - background-color: #e8eaf6 !important; -} - -.indigo-text.text-lighten-5 { - color: #e8eaf6 !important; -} - -.indigo.lighten-4 { - background-color: #c5cae9 !important; -} - -.indigo-text.text-lighten-4 { - color: #c5cae9 !important; -} - -.indigo.lighten-3 { - background-color: #9fa8da !important; -} - -.indigo-text.text-lighten-3 { - color: #9fa8da !important; -} - -.indigo.lighten-2 { - background-color: #7986cb !important; -} - -.indigo-text.text-lighten-2 { - color: #7986cb !important; -} - -.indigo.lighten-1 { - background-color: #5c6bc0 !important; -} - -.indigo-text.text-lighten-1 { - color: #5c6bc0 !important; -} - -.indigo.darken-1 { - background-color: #3949ab !important; -} - -.indigo-text.text-darken-1 { - color: #3949ab !important; -} - -.indigo.darken-2 { - background-color: #303f9f !important; -} - -.indigo-text.text-darken-2 { - color: #303f9f !important; -} - -.indigo.darken-3 { - background-color: #283593 !important; -} - -.indigo-text.text-darken-3 { - color: #283593 !important; -} - -.indigo.darken-4 { - background-color: #1a237e !important; -} - -.indigo-text.text-darken-4 { - color: #1a237e !important; -} - -.indigo.accent-1 { - background-color: #8c9eff !important; -} - -.indigo-text.text-accent-1 { - color: #8c9eff !important; -} - -.indigo.accent-2 { - background-color: #536dfe !important; -} - -.indigo-text.text-accent-2 { - color: #536dfe !important; -} - -.indigo.accent-3 { - background-color: #3d5afe !important; -} - -.indigo-text.text-accent-3 { - color: #3d5afe !important; -} - -.indigo.accent-4 { - background-color: #304ffe !important; -} - -.indigo-text.text-accent-4 { - color: #304ffe !important; -} - -.blue { - background-color: #2196F3 !important; -} - -.blue-text { - color: #2196F3 !important; -} - -.blue.lighten-5 { - background-color: #E3F2FD !important; -} - -.blue-text.text-lighten-5 { - color: #E3F2FD !important; -} - -.blue.lighten-4 { - background-color: #BBDEFB !important; -} - -.blue-text.text-lighten-4 { - color: #BBDEFB !important; -} - -.blue.lighten-3 { - background-color: #90CAF9 !important; -} - -.blue-text.text-lighten-3 { - color: #90CAF9 !important; -} - -.blue.lighten-2 { - background-color: #64B5F6 !important; -} - -.blue-text.text-lighten-2 { - color: #64B5F6 !important; -} - -.blue.lighten-1 { - background-color: #42A5F5 !important; -} - -.blue-text.text-lighten-1 { - color: #42A5F5 !important; -} - -.blue.darken-1 { - background-color: #1E88E5 !important; -} - -.blue-text.text-darken-1 { - color: #1E88E5 !important; -} - -.blue.darken-2 { - background-color: #1976D2 !important; -} - -.blue-text.text-darken-2 { - color: #1976D2 !important; -} - -.blue.darken-3 { - background-color: #1565C0 !important; -} - -.blue-text.text-darken-3 { - color: #1565C0 !important; -} - -.blue.darken-4 { - background-color: #0D47A1 !important; -} - -.blue-text.text-darken-4 { - color: #0D47A1 !important; -} - -.blue.accent-1 { - background-color: #82B1FF !important; -} - -.blue-text.text-accent-1 { - color: #82B1FF !important; -} - -.blue.accent-2 { - background-color: #448AFF !important; -} - -.blue-text.text-accent-2 { - color: #448AFF !important; -} - -.blue.accent-3 { - background-color: #2979FF !important; -} - -.blue-text.text-accent-3 { - color: #2979FF !important; -} - -.blue.accent-4 { - background-color: #2962FF !important; -} - -.blue-text.text-accent-4 { - color: #2962FF !important; -} - -.light-blue { - background-color: #03a9f4 !important; -} - -.light-blue-text { - color: #03a9f4 !important; -} - -.light-blue.lighten-5 { - background-color: #e1f5fe !important; -} - -.light-blue-text.text-lighten-5 { - color: #e1f5fe !important; -} - -.light-blue.lighten-4 { - background-color: #b3e5fc !important; -} - -.light-blue-text.text-lighten-4 { - color: #b3e5fc !important; -} - -.light-blue.lighten-3 { - background-color: #81d4fa !important; -} - -.light-blue-text.text-lighten-3 { - color: #81d4fa !important; -} - -.light-blue.lighten-2 { - background-color: #4fc3f7 !important; -} - -.light-blue-text.text-lighten-2 { - color: #4fc3f7 !important; -} - -.light-blue.lighten-1 { - background-color: #29b6f6 !important; -} - -.light-blue-text.text-lighten-1 { - color: #29b6f6 !important; -} - -.light-blue.darken-1 { - background-color: #039be5 !important; -} - -.light-blue-text.text-darken-1 { - color: #039be5 !important; -} - -.light-blue.darken-2 { - background-color: #0288d1 !important; -} - -.light-blue-text.text-darken-2 { - color: #0288d1 !important; -} - -.light-blue.darken-3 { - background-color: #0277bd !important; -} - -.light-blue-text.text-darken-3 { - color: #0277bd !important; -} - -.light-blue.darken-4 { - background-color: #01579b !important; -} - -.light-blue-text.text-darken-4 { - color: #01579b !important; -} - -.light-blue.accent-1 { - background-color: #80d8ff !important; -} - -.light-blue-text.text-accent-1 { - color: #80d8ff !important; -} - -.light-blue.accent-2 { - background-color: #40c4ff !important; -} - -.light-blue-text.text-accent-2 { - color: #40c4ff !important; -} - -.light-blue.accent-3 { - background-color: #00b0ff !important; -} - -.light-blue-text.text-accent-3 { - color: #00b0ff !important; -} - -.light-blue.accent-4 { - background-color: #0091ea !important; -} - -.light-blue-text.text-accent-4 { - color: #0091ea !important; -} - -.cyan { - background-color: #00bcd4 !important; -} - -.cyan-text { - color: #00bcd4 !important; -} - -.cyan.lighten-5 { - background-color: #e0f7fa !important; -} - -.cyan-text.text-lighten-5 { - color: #e0f7fa !important; -} - -.cyan.lighten-4 { - background-color: #b2ebf2 !important; -} - -.cyan-text.text-lighten-4 { - color: #b2ebf2 !important; -} - -.cyan.lighten-3 { - background-color: #80deea !important; -} - -.cyan-text.text-lighten-3 { - color: #80deea !important; -} - -.cyan.lighten-2 { - background-color: #4dd0e1 !important; -} - -.cyan-text.text-lighten-2 { - color: #4dd0e1 !important; -} - -.cyan.lighten-1 { - background-color: #26c6da !important; -} - -.cyan-text.text-lighten-1 { - color: #26c6da !important; -} - -.cyan.darken-1 { - background-color: #00acc1 !important; -} - -.cyan-text.text-darken-1 { - color: #00acc1 !important; -} - -.cyan.darken-2 { - background-color: #0097a7 !important; -} - -.cyan-text.text-darken-2 { - color: #0097a7 !important; -} - -.cyan.darken-3 { - background-color: #00838f !important; -} - -.cyan-text.text-darken-3 { - color: #00838f !important; -} - -.cyan.darken-4 { - background-color: #006064 !important; -} - -.cyan-text.text-darken-4 { - color: #006064 !important; -} - -.cyan.accent-1 { - background-color: #84ffff !important; -} - -.cyan-text.text-accent-1 { - color: #84ffff !important; -} - -.cyan.accent-2 { - background-color: #18ffff !important; -} - -.cyan-text.text-accent-2 { - color: #18ffff !important; -} - -.cyan.accent-3 { - background-color: #00e5ff !important; -} - -.cyan-text.text-accent-3 { - color: #00e5ff !important; -} - -.cyan.accent-4 { - background-color: #00b8d4 !important; -} - -.cyan-text.text-accent-4 { - color: #00b8d4 !important; -} - -.teal { - background-color: #009688 !important; -} - -.teal-text { - color: #009688 !important; -} - -.teal.lighten-5 { - background-color: #e0f2f1 !important; -} - -.teal-text.text-lighten-5 { - color: #e0f2f1 !important; -} - -.teal.lighten-4 { - background-color: #b2dfdb !important; -} - -.teal-text.text-lighten-4 { - color: #b2dfdb !important; -} - -.teal.lighten-3 { - background-color: #80cbc4 !important; -} - -.teal-text.text-lighten-3 { - color: #80cbc4 !important; -} - -.teal.lighten-2 { - background-color: #4db6ac !important; -} - -.teal-text.text-lighten-2 { - color: #4db6ac !important; -} - -.teal.lighten-1 { - background-color: #26a69a !important; -} - -.teal-text.text-lighten-1 { - color: #26a69a !important; -} - -.teal.darken-1 { - background-color: #00897b !important; -} - -.teal-text.text-darken-1 { - color: #00897b !important; -} - -.teal.darken-2 { - background-color: #00796b !important; -} - -.teal-text.text-darken-2 { - color: #00796b !important; -} - -.teal.darken-3 { - background-color: #00695c !important; -} - -.teal-text.text-darken-3 { - color: #00695c !important; -} - -.teal.darken-4 { - background-color: #004d40 !important; -} - -.teal-text.text-darken-4 { - color: #004d40 !important; -} - -.teal.accent-1 { - background-color: #a7ffeb !important; -} - -.teal-text.text-accent-1 { - color: #a7ffeb !important; -} - -.teal.accent-2 { - background-color: #64ffda !important; -} - -.teal-text.text-accent-2 { - color: #64ffda !important; -} - -.teal.accent-3 { - background-color: #1de9b6 !important; -} - -.teal-text.text-accent-3 { - color: #1de9b6 !important; -} - -.teal.accent-4 { - background-color: #00bfa5 !important; -} - -.teal-text.text-accent-4 { - color: #00bfa5 !important; -} - -.green { - background-color: #4CAF50 !important; -} - -.green-text { - color: #4CAF50 !important; -} - -.green.lighten-5 { - background-color: #E8F5E9 !important; -} - -.green-text.text-lighten-5 { - color: #E8F5E9 !important; -} - -.green.lighten-4 { - background-color: #C8E6C9 !important; -} - -.green-text.text-lighten-4 { - color: #C8E6C9 !important; -} - -.green.lighten-3 { - background-color: #A5D6A7 !important; -} - -.green-text.text-lighten-3 { - color: #A5D6A7 !important; -} - -.green.lighten-2 { - background-color: #81C784 !important; -} - -.green-text.text-lighten-2 { - color: #81C784 !important; -} - -.green.lighten-1 { - background-color: #66BB6A !important; -} - -.green-text.text-lighten-1 { - color: #66BB6A !important; -} - -.green.darken-1 { - background-color: #43A047 !important; -} - -.green-text.text-darken-1 { - color: #43A047 !important; -} - -.green.darken-2 { - background-color: #388E3C !important; -} - -.green-text.text-darken-2 { - color: #388E3C !important; -} - -.green.darken-3 { - background-color: #2E7D32 !important; -} - -.green-text.text-darken-3 { - color: #2E7D32 !important; -} - -.green.darken-4 { - background-color: #1B5E20 !important; -} - -.green-text.text-darken-4 { - color: #1B5E20 !important; -} - -.green.accent-1 { - background-color: #B9F6CA !important; -} - -.green-text.text-accent-1 { - color: #B9F6CA !important; -} - -.green.accent-2 { - background-color: #69F0AE !important; -} - -.green-text.text-accent-2 { - color: #69F0AE !important; -} - -.green.accent-3 { - background-color: #00E676 !important; -} - -.green-text.text-accent-3 { - color: #00E676 !important; -} - -.green.accent-4 { - background-color: #00C853 !important; -} - -.green-text.text-accent-4 { - color: #00C853 !important; -} - -.light-green { - background-color: #8bc34a !important; -} - -.light-green-text { - color: #8bc34a !important; -} - -.light-green.lighten-5 { - background-color: #f1f8e9 !important; -} - -.light-green-text.text-lighten-5 { - color: #f1f8e9 !important; -} - -.light-green.lighten-4 { - background-color: #dcedc8 !important; -} - -.light-green-text.text-lighten-4 { - color: #dcedc8 !important; -} - -.light-green.lighten-3 { - background-color: #c5e1a5 !important; -} - -.light-green-text.text-lighten-3 { - color: #c5e1a5 !important; -} - -.light-green.lighten-2 { - background-color: #aed581 !important; -} - -.light-green-text.text-lighten-2 { - color: #aed581 !important; -} - -.light-green.lighten-1 { - background-color: #9ccc65 !important; -} - -.light-green-text.text-lighten-1 { - color: #9ccc65 !important; -} - -.light-green.darken-1 { - background-color: #7cb342 !important; -} - -.light-green-text.text-darken-1 { - color: #7cb342 !important; -} - -.light-green.darken-2 { - background-color: #689f38 !important; -} - -.light-green-text.text-darken-2 { - color: #689f38 !important; -} - -.light-green.darken-3 { - background-color: #558b2f !important; -} - -.light-green-text.text-darken-3 { - color: #558b2f !important; -} - -.light-green.darken-4 { - background-color: #33691e !important; -} - -.light-green-text.text-darken-4 { - color: #33691e !important; -} - -.light-green.accent-1 { - background-color: #ccff90 !important; -} - -.light-green-text.text-accent-1 { - color: #ccff90 !important; -} - -.light-green.accent-2 { - background-color: #b2ff59 !important; -} - -.light-green-text.text-accent-2 { - color: #b2ff59 !important; -} - -.light-green.accent-3 { - background-color: #76ff03 !important; -} - -.light-green-text.text-accent-3 { - color: #76ff03 !important; -} - -.light-green.accent-4 { - background-color: #64dd17 !important; -} - -.light-green-text.text-accent-4 { - color: #64dd17 !important; -} - -.lime { - background-color: #cddc39 !important; -} - -.lime-text { - color: #cddc39 !important; -} - -.lime.lighten-5 { - background-color: #f9fbe7 !important; -} - -.lime-text.text-lighten-5 { - color: #f9fbe7 !important; -} - -.lime.lighten-4 { - background-color: #f0f4c3 !important; -} - -.lime-text.text-lighten-4 { - color: #f0f4c3 !important; -} - -.lime.lighten-3 { - background-color: #e6ee9c !important; -} - -.lime-text.text-lighten-3 { - color: #e6ee9c !important; -} - -.lime.lighten-2 { - background-color: #dce775 !important; -} - -.lime-text.text-lighten-2 { - color: #dce775 !important; -} - -.lime.lighten-1 { - background-color: #d4e157 !important; -} - -.lime-text.text-lighten-1 { - color: #d4e157 !important; -} - -.lime.darken-1 { - background-color: #c0ca33 !important; -} - -.lime-text.text-darken-1 { - color: #c0ca33 !important; -} - -.lime.darken-2 { - background-color: #afb42b !important; -} - -.lime-text.text-darken-2 { - color: #afb42b !important; -} - -.lime.darken-3 { - background-color: #9e9d24 !important; -} - -.lime-text.text-darken-3 { - color: #9e9d24 !important; -} - -.lime.darken-4 { - background-color: #827717 !important; -} - -.lime-text.text-darken-4 { - color: #827717 !important; -} - -.lime.accent-1 { - background-color: #f4ff81 !important; -} - -.lime-text.text-accent-1 { - color: #f4ff81 !important; -} - -.lime.accent-2 { - background-color: #eeff41 !important; -} - -.lime-text.text-accent-2 { - color: #eeff41 !important; -} - -.lime.accent-3 { - background-color: #c6ff00 !important; -} - -.lime-text.text-accent-3 { - color: #c6ff00 !important; -} - -.lime.accent-4 { - background-color: #aeea00 !important; -} - -.lime-text.text-accent-4 { - color: #aeea00 !important; -} - -.yellow { - background-color: #ffeb3b !important; -} - -.yellow-text { - color: #ffeb3b !important; -} - -.yellow.lighten-5 { - background-color: #fffde7 !important; -} - -.yellow-text.text-lighten-5 { - color: #fffde7 !important; -} - -.yellow.lighten-4 { - background-color: #fff9c4 !important; -} - -.yellow-text.text-lighten-4 { - color: #fff9c4 !important; -} - -.yellow.lighten-3 { - background-color: #fff59d !important; -} - -.yellow-text.text-lighten-3 { - color: #fff59d !important; -} - -.yellow.lighten-2 { - background-color: #fff176 !important; -} - -.yellow-text.text-lighten-2 { - color: #fff176 !important; -} - -.yellow.lighten-1 { - background-color: #ffee58 !important; -} - -.yellow-text.text-lighten-1 { - color: #ffee58 !important; -} - -.yellow.darken-1 { - background-color: #fdd835 !important; -} - -.yellow-text.text-darken-1 { - color: #fdd835 !important; -} - -.yellow.darken-2 { - background-color: #fbc02d !important; -} - -.yellow-text.text-darken-2 { - color: #fbc02d !important; -} - -.yellow.darken-3 { - background-color: #f9a825 !important; -} - -.yellow-text.text-darken-3 { - color: #f9a825 !important; -} - -.yellow.darken-4 { - background-color: #f57f17 !important; -} - -.yellow-text.text-darken-4 { - color: #f57f17 !important; -} - -.yellow.accent-1 { - background-color: #ffff8d !important; -} - -.yellow-text.text-accent-1 { - color: #ffff8d !important; -} - -.yellow.accent-2 { - background-color: #ffff00 !important; -} - -.yellow-text.text-accent-2 { - color: #ffff00 !important; -} - -.yellow.accent-3 { - background-color: #ffea00 !important; -} - -.yellow-text.text-accent-3 { - color: #ffea00 !important; -} - -.yellow.accent-4 { - background-color: #ffd600 !important; -} - -.yellow-text.text-accent-4 { - color: #ffd600 !important; -} - -.amber { - background-color: #ffc107 !important; -} - -.amber-text { - color: #ffc107 !important; -} - -.amber.lighten-5 { - background-color: #fff8e1 !important; -} - -.amber-text.text-lighten-5 { - color: #fff8e1 !important; -} - -.amber.lighten-4 { - background-color: #ffecb3 !important; -} - -.amber-text.text-lighten-4 { - color: #ffecb3 !important; -} - -.amber.lighten-3 { - background-color: #ffe082 !important; -} - -.amber-text.text-lighten-3 { - color: #ffe082 !important; -} - -.amber.lighten-2 { - background-color: #ffd54f !important; -} - -.amber-text.text-lighten-2 { - color: #ffd54f !important; -} - -.amber.lighten-1 { - background-color: #ffca28 !important; -} - -.amber-text.text-lighten-1 { - color: #ffca28 !important; -} - -.amber.darken-1 { - background-color: #ffb300 !important; -} - -.amber-text.text-darken-1 { - color: #ffb300 !important; -} - -.amber.darken-2 { - background-color: #ffa000 !important; -} - -.amber-text.text-darken-2 { - color: #ffa000 !important; -} - -.amber.darken-3 { - background-color: #ff8f00 !important; -} - -.amber-text.text-darken-3 { - color: #ff8f00 !important; -} - -.amber.darken-4 { - background-color: #ff6f00 !important; -} - -.amber-text.text-darken-4 { - color: #ff6f00 !important; -} - -.amber.accent-1 { - background-color: #ffe57f !important; -} - -.amber-text.text-accent-1 { - color: #ffe57f !important; -} - -.amber.accent-2 { - background-color: #ffd740 !important; -} - -.amber-text.text-accent-2 { - color: #ffd740 !important; -} - -.amber.accent-3 { - background-color: #ffc400 !important; -} - -.amber-text.text-accent-3 { - color: #ffc400 !important; -} - -.amber.accent-4 { - background-color: #ffab00 !important; -} - -.amber-text.text-accent-4 { - color: #ffab00 !important; -} - -.orange { - background-color: #ff9800 !important; -} - -.orange-text { - color: #ff9800 !important; -} - -.orange.lighten-5 { - background-color: #fff3e0 !important; -} - -.orange-text.text-lighten-5 { - color: #fff3e0 !important; -} - -.orange.lighten-4 { - background-color: #ffe0b2 !important; -} - -.orange-text.text-lighten-4 { - color: #ffe0b2 !important; -} - -.orange.lighten-3 { - background-color: #ffcc80 !important; -} - -.orange-text.text-lighten-3 { - color: #ffcc80 !important; -} - -.orange.lighten-2 { - background-color: #ffb74d !important; -} - -.orange-text.text-lighten-2 { - color: #ffb74d !important; -} - -.orange.lighten-1 { - background-color: #ffa726 !important; -} - -.orange-text.text-lighten-1 { - color: #ffa726 !important; -} - -.orange.darken-1 { - background-color: #fb8c00 !important; -} - -.orange-text.text-darken-1 { - color: #fb8c00 !important; -} - -.orange.darken-2 { - background-color: #f57c00 !important; -} - -.orange-text.text-darken-2 { - color: #f57c00 !important; -} - -.orange.darken-3 { - background-color: #ef6c00 !important; -} - -.orange-text.text-darken-3 { - color: #ef6c00 !important; -} - -.orange.darken-4 { - background-color: #e65100 !important; -} - -.orange-text.text-darken-4 { - color: #e65100 !important; -} - -.orange.accent-1 { - background-color: #ffd180 !important; -} - -.orange-text.text-accent-1 { - color: #ffd180 !important; -} - -.orange.accent-2 { - background-color: #ffab40 !important; -} - -.orange-text.text-accent-2 { - color: #ffab40 !important; -} - -.orange.accent-3 { - background-color: #ff9100 !important; -} - -.orange-text.text-accent-3 { - color: #ff9100 !important; -} - -.orange.accent-4 { - background-color: #ff6d00 !important; -} - -.orange-text.text-accent-4 { - color: #ff6d00 !important; -} - -.deep-orange { - background-color: #ff5722 !important; -} - -.deep-orange-text { - color: #ff5722 !important; -} - -.deep-orange.lighten-5 { - background-color: #fbe9e7 !important; -} - -.deep-orange-text.text-lighten-5 { - color: #fbe9e7 !important; -} - -.deep-orange.lighten-4 { - background-color: #ffccbc !important; -} - -.deep-orange-text.text-lighten-4 { - color: #ffccbc !important; -} - -.deep-orange.lighten-3 { - background-color: #ffab91 !important; -} - -.deep-orange-text.text-lighten-3 { - color: #ffab91 !important; -} - -.deep-orange.lighten-2 { - background-color: #ff8a65 !important; -} - -.deep-orange-text.text-lighten-2 { - color: #ff8a65 !important; -} - -.deep-orange.lighten-1 { - background-color: #ff7043 !important; -} - -.deep-orange-text.text-lighten-1 { - color: #ff7043 !important; -} - -.deep-orange.darken-1 { - background-color: #f4511e !important; -} - -.deep-orange-text.text-darken-1 { - color: #f4511e !important; -} - -.deep-orange.darken-2 { - background-color: #e64a19 !important; -} - -.deep-orange-text.text-darken-2 { - color: #e64a19 !important; -} - -.deep-orange.darken-3 { - background-color: #d84315 !important; -} - -.deep-orange-text.text-darken-3 { - color: #d84315 !important; -} - -.deep-orange.darken-4 { - background-color: #bf360c !important; -} - -.deep-orange-text.text-darken-4 { - color: #bf360c !important; -} - -.deep-orange.accent-1 { - background-color: #ff9e80 !important; -} - -.deep-orange-text.text-accent-1 { - color: #ff9e80 !important; -} - -.deep-orange.accent-2 { - background-color: #ff6e40 !important; -} - -.deep-orange-text.text-accent-2 { - color: #ff6e40 !important; -} - -.deep-orange.accent-3 { - background-color: #ff3d00 !important; -} - -.deep-orange-text.text-accent-3 { - color: #ff3d00 !important; -} - -.deep-orange.accent-4 { - background-color: #dd2c00 !important; -} - -.deep-orange-text.text-accent-4 { - color: #dd2c00 !important; -} - -.brown { - background-color: #795548 !important; -} - -.brown-text { - color: #795548 !important; -} - -.brown.lighten-5 { - background-color: #efebe9 !important; -} - -.brown-text.text-lighten-5 { - color: #efebe9 !important; -} - -.brown.lighten-4 { - background-color: #d7ccc8 !important; -} - -.brown-text.text-lighten-4 { - color: #d7ccc8 !important; -} - -.brown.lighten-3 { - background-color: #bcaaa4 !important; -} - -.brown-text.text-lighten-3 { - color: #bcaaa4 !important; -} - -.brown.lighten-2 { - background-color: #a1887f !important; -} - -.brown-text.text-lighten-2 { - color: #a1887f !important; -} - -.brown.lighten-1 { - background-color: #8d6e63 !important; -} - -.brown-text.text-lighten-1 { - color: #8d6e63 !important; -} - -.brown.darken-1 { - background-color: #6d4c41 !important; -} - -.brown-text.text-darken-1 { - color: #6d4c41 !important; -} - -.brown.darken-2 { - background-color: #5d4037 !important; -} - -.brown-text.text-darken-2 { - color: #5d4037 !important; -} - -.brown.darken-3 { - background-color: #4e342e !important; -} - -.brown-text.text-darken-3 { - color: #4e342e !important; -} - -.brown.darken-4 { - background-color: #3e2723 !important; -} - -.brown-text.text-darken-4 { - color: #3e2723 !important; -} - -.blue-grey { - background-color: #607d8b !important; -} - -.blue-grey-text { - color: #607d8b !important; -} - -.blue-grey.lighten-5 { - background-color: #eceff1 !important; -} - -.blue-grey-text.text-lighten-5 { - color: #eceff1 !important; -} - -.blue-grey.lighten-4 { - background-color: #cfd8dc !important; -} - -.blue-grey-text.text-lighten-4 { - color: #cfd8dc !important; -} - -.blue-grey.lighten-3 { - background-color: #b0bec5 !important; -} - -.blue-grey-text.text-lighten-3 { - color: #b0bec5 !important; -} - -.blue-grey.lighten-2 { - background-color: #90a4ae !important; -} - -.blue-grey-text.text-lighten-2 { - color: #90a4ae !important; -} - -.blue-grey.lighten-1 { - background-color: #78909c !important; -} - -.blue-grey-text.text-lighten-1 { - color: #78909c !important; -} - -.blue-grey.darken-1 { - background-color: #546e7a !important; -} - -.blue-grey-text.text-darken-1 { - color: #546e7a !important; -} - -.blue-grey.darken-2 { - background-color: #455a64 !important; -} - -.blue-grey-text.text-darken-2 { - color: #455a64 !important; -} - -.blue-grey.darken-3 { - background-color: #37474f !important; -} - -.blue-grey-text.text-darken-3 { - color: #37474f !important; -} - -.blue-grey.darken-4 { - background-color: #263238 !important; -} - -.blue-grey-text.text-darken-4 { - color: #263238 !important; -} - -.grey { - background-color: #9e9e9e !important; -} - -.grey-text { - color: #9e9e9e !important; -} - -.grey.lighten-5 { - background-color: #fafafa !important; -} - -.grey-text.text-lighten-5 { - color: #fafafa !important; -} - -.grey.lighten-4 { - background-color: #f5f5f5 !important; -} - -.grey-text.text-lighten-4 { - color: #f5f5f5 !important; -} - -.grey.lighten-3 { - background-color: #eeeeee !important; -} - -.grey-text.text-lighten-3 { - color: #eeeeee !important; -} - -.grey.lighten-2 { - background-color: #e0e0e0 !important; -} - -.grey-text.text-lighten-2 { - color: #e0e0e0 !important; -} - -.grey.lighten-1 { - background-color: #bdbdbd !important; -} - -.grey-text.text-lighten-1 { - color: #bdbdbd !important; -} - -.grey.darken-1 { - background-color: #757575 !important; -} - -.grey-text.text-darken-1 { - color: #757575 !important; -} - -.grey.darken-2 { - background-color: #616161 !important; -} - -.grey-text.text-darken-2 { - color: #616161 !important; -} - -.grey.darken-3 { - background-color: #424242 !important; -} - -.grey-text.text-darken-3 { - color: #424242 !important; -} - -.grey.darken-4 { - background-color: #212121 !important; -} - -.grey-text.text-darken-4 { - color: #212121 !important; -} - -.black { - background-color: #000000 !important; -} - -.black-text { - color: #000000 !important; -} - -.white { - background-color: #FFFFFF !important; -} - -.white-text { - color: #FFFFFF !important; -} - -.transparent { - background-color: transparent !important; -} - -.transparent-text { - color: transparent !important; -} - -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS and IE text size adjust after device orientation change, - * without disabling user zoom. - */ -html { - font-family: sans-serif; - /* 1 */ - -ms-text-size-adjust: 100%; - /* 2 */ - -webkit-text-size-adjust: 100%; - /* 2 */ -} - -/** - * Remove default margin. - */ -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ -audio, -canvas, -progress, -video { - display: inline-block; - /* 1 */ - vertical-align: baseline; - /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. - */ -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ -/** - * Remove the gray background color from active links in IE 10. - */ -a { - background-color: transparent; -} - -/** - * Improve readability of focused elements when they are also in an - * active/hover state. - */ -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ -/** - * Remove border when inside `a` element in IE 8/9/10. - */ -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ -/** - * Address margin not present in IE 8/9 and Safari. - */ -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ -hr { - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ -button, -input, -optgroup, -select, -textarea { - color: inherit; - /* 1 */ - font: inherit; - /* 2 */ - margin: 0; - /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. - */ -input[type="search"] { - -webkit-appearance: textfield; - /* 1 */ - box-sizing: content-box; - /* 2 */ -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ -legend { - border: 0; - /* 1 */ - padding: 0; - /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ -/** - * Remove most spacing between table cells. - */ -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} - -html { - box-sizing: border-box; -} - -*, *:before, *:after { - box-sizing: inherit; -} - -ul:not(.browser-default) { - padding-left: 0; - list-style-type: none; -} - -ul:not(.browser-default) li { - list-style-type: none; -} - -a { - color: #039be5; - text-decoration: none; - -webkit-tap-highlight-color: transparent; -} - -.valign-wrapper { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} - -.valign-wrapper .valign { - display: block; -} - -.clearfix { - clear: both; -} - -.z-depth-0 { - box-shadow: none !important; -} - -.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); -} - -.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { - box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); -} - -.z-depth-2 { - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); -} - -.z-depth-3 { - box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3); -} - -.z-depth-4, .modal { - box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3); -} - -.z-depth-5 { - box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); -} - -.hoverable { - transition: box-shadow .25s; - box-shadow: 0; -} - -.hoverable:hover { - transition: box-shadow .25s; - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); -} - -.divider { - height: 1px; - overflow: hidden; - background-color: #e0e0e0; -} - -blockquote { - margin: 20px 0; - padding-left: 1.5rem; - border-left: 5px solid #ee6e73; -} - -i { - line-height: inherit; -} - -i.left { - float: left; - margin-right: 15px; -} - -i.right { - float: right; - margin-left: 15px; -} - -i.tiny { - font-size: 1rem; -} - -i.small { - font-size: 2rem; -} - -i.medium { - font-size: 4rem; -} - -i.large { - font-size: 6rem; -} - -img.responsive-img, -video.responsive-video { - max-width: 100%; - height: auto; -} - -.pagination li { - display: inline-block; - border-radius: 2px; - text-align: center; - vertical-align: top; - height: 30px; -} - -.pagination li a { - color: #444; - display: inline-block; - font-size: 1.2rem; - padding: 0 10px; - line-height: 30px; -} - -.pagination li.active a { - color: #fff; -} - -.pagination li.active { - background-color: #ee6e73; -} - -.pagination li.disabled a { - cursor: default; - color: #999; -} - -.pagination li i { - font-size: 2rem; -} - -.pagination li.pages ul li { - display: inline-block; - float: none; -} - -@media only screen and (max-width: 992px) { - .pagination { - width: 100%; - } - .pagination li.prev, - .pagination li.next { - width: 10%; - } - .pagination li.pages { - width: 80%; - overflow: hidden; - white-space: nowrap; - } -} - -.breadcrumb { - font-size: 18px; - color: rgba(255, 255, 255, 0.7); -} - -.breadcrumb i, -.breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"], -.breadcrumb i.material-icons { - display: inline-block; - float: left; - font-size: 24px; -} - -.breadcrumb:before { - content: '\E5CC'; - color: rgba(255, 255, 255, 0.7); - vertical-align: top; - display: inline-block; - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 25px; - margin: 0 10px 0 8px; - -webkit-font-smoothing: antialiased; -} - -.breadcrumb:first-child:before { - display: none; -} - -.breadcrumb:last-child { - color: #fff; -} - -.parallax-container { - position: relative; - overflow: hidden; - height: 500px; -} - -.parallax { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1; -} - -.parallax img { - display: none; - position: absolute; - left: 50%; - bottom: 0; - min-width: 100%; - min-height: 100%; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - -webkit-transform: translateX(-50%); - transform: translateX(-50%); -} - -.pin-top, .pin-bottom { - position: relative; -} - -.pinned { - position: fixed !important; -} - -/********************* - Transition Classes -**********************/ -ul.staggered-list li { - opacity: 0; -} - -.fade-in { - opacity: 0; - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; -} - -/********************* - Media Query Classes -**********************/ -@media only screen and (max-width: 600px) { - .hide-on-small-only, .hide-on-small-and-down { - display: none !important; - } -} - -@media only screen and (max-width: 992px) { - .hide-on-med-and-down { - display: none !important; - } -} - -@media only screen and (min-width: 601px) { - .hide-on-med-and-up { - display: none !important; - } -} - -@media only screen and (min-width: 600px) and (max-width: 992px) { - .hide-on-med-only { - display: none !important; - } -} - -@media only screen and (min-width: 993px) { - .hide-on-large-only { - display: none !important; - } -} - -@media only screen and (min-width: 993px) { - .show-on-large { - display: block !important; - } -} - -@media only screen and (min-width: 600px) and (max-width: 992px) { - .show-on-medium { - display: block !important; - } -} - -@media only screen and (max-width: 600px) { - .show-on-small { - display: block !important; - } -} - -@media only screen and (min-width: 601px) { - .show-on-medium-and-up { - display: block !important; - } -} - -@media only screen and (max-width: 992px) { - .show-on-medium-and-down { - display: block !important; - } -} - -@media only screen and (max-width: 600px) { - .center-on-small-only { - text-align: center; - } -} - -footer.page-footer { - padding-top: 20px; - background-color: #ee6e73; -} - -footer.page-footer .footer-copyright { - overflow: hidden; - min-height: 50px; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 10px 0px; - color: rgba(255, 255, 255, 0.8); - background-color: rgba(51, 51, 51, 0.08); -} - -table, th, td { - border: none; -} - -table { - width: 100%; - display: table; -} - -table.bordered > thead > tr, -table.bordered > tbody > tr { - border-bottom: 1px solid #d0d0d0; -} - -table.striped > tbody > tr:nth-child(odd) { - background-color: #f2f2f2; -} - -table.striped > tbody > tr > td { - border-radius: 0; -} - -table.highlight > tbody > tr { - transition: background-color .25s ease; -} - -table.highlight > tbody > tr:hover { - background-color: #f2f2f2; -} - -table.centered thead tr th, table.centered tbody tr td { - text-align: center; -} - -thead { - border-bottom: 1px solid #d0d0d0; -} - -td, th { - padding: 15px 5px; - display: table-cell; - text-align: left; - vertical-align: middle; - border-radius: 2px; -} - -@media only screen and (max-width: 992px) { - table.responsive-table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; - display: block; - position: relative; - /* sort out borders */ - } - table.responsive-table td:empty:before { - content: '\00a0'; - } - table.responsive-table th, - table.responsive-table td { - margin: 0; - vertical-align: top; - } - table.responsive-table th { - text-align: left; - } - table.responsive-table thead { - display: block; - float: left; - } - table.responsive-table thead tr { - display: block; - padding: 0 10px 0 0; - } - table.responsive-table thead tr th::before { - content: "\00a0"; - } - table.responsive-table tbody { - display: block; - width: auto; - position: relative; - overflow-x: auto; - white-space: nowrap; - } - table.responsive-table tbody tr { - display: inline-block; - vertical-align: top; - } - table.responsive-table th { - display: block; - text-align: right; - } - table.responsive-table td { - display: block; - min-height: 1.25em; - text-align: left; - } - table.responsive-table tr { - padding: 0 10px; - } - table.responsive-table thead { - border: 0; - border-right: 1px solid #d0d0d0; - } - table.responsive-table.bordered th { - border-bottom: 0; - border-left: 0; - } - table.responsive-table.bordered td { - border-left: 0; - border-right: 0; - border-bottom: 0; - } - table.responsive-table.bordered tr { - border: 0; - } - table.responsive-table.bordered tbody tr { - border-right: 1px solid #d0d0d0; - } -} - -.collection { - margin: 0.5rem 0 1rem 0; - border: 1px solid #e0e0e0; - border-radius: 2px; - overflow: hidden; - position: relative; -} - -.collection .collection-item { - background-color: #fff; - line-height: 1.5rem; - padding: 10px 20px; - margin: 0; - border-bottom: 1px solid #e0e0e0; -} - -.collection .collection-item.avatar { - min-height: 84px; - padding-left: 72px; - position: relative; -} - -.collection .collection-item.avatar .circle { - position: absolute; - width: 42px; - height: 42px; - overflow: hidden; - left: 15px; - display: inline-block; - vertical-align: middle; -} - -.collection .collection-item.avatar i.circle { - font-size: 18px; - line-height: 42px; - color: #fff; - background-color: #999; - text-align: center; -} - -.collection .collection-item.avatar .title { - font-size: 16px; -} - -.collection .collection-item.avatar p { - margin: 0; -} - -.collection .collection-item.avatar .secondary-content { - position: absolute; - top: 16px; - right: 16px; -} - -.collection .collection-item:last-child { - border-bottom: none; -} - -.collection .collection-item.active { - background-color: #26a69a; - color: #eafaf9; -} - -.collection .collection-item.active .secondary-content { - color: #fff; -} - -.collection a.collection-item { - display: block; - transition: .25s; - color: #26a69a; -} - -.collection a.collection-item:not(.active):hover { - background-color: #ddd; -} - -.collection.with-header .collection-header { - background-color: #fff; - border-bottom: 1px solid #e0e0e0; - padding: 10px 20px; -} - -.collection.with-header .collection-item { - padding-left: 30px; -} - -.collection.with-header .collection-item.avatar { - padding-left: 72px; -} - -.secondary-content { - float: right; - color: #26a69a; -} - -.collapsible .collection { - margin: 0; - border: none; -} - -.video-container { - position: relative; - padding-bottom: 56.25%; - height: 0; - overflow: hidden; -} - -.video-container iframe, .video-container object, .video-container embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.progress { - position: relative; - height: 4px; - display: block; - width: 100%; - background-color: #acece6; - border-radius: 2px; - margin: 0.5rem 0 1rem 0; - overflow: hidden; -} - -.progress .determinate { - position: absolute; - top: 0; - left: 0; - bottom: 0; - background-color: #26a69a; - transition: width .3s linear; -} - -.progress .indeterminate { - background-color: #26a69a; -} - -.progress .indeterminate:before { - content: ''; - position: absolute; - background-color: inherit; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; -} - -.progress .indeterminate:after { - content: ''; - position: absolute; - background-color: inherit; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - -webkit-animation-delay: 1.15s; - animation-delay: 1.15s; -} - -@-webkit-keyframes indeterminate { - 0% { - left: -35%; - right: 100%; - } - 60% { - left: 100%; - right: -90%; - } - 100% { - left: 100%; - right: -90%; - } -} - -@keyframes indeterminate { - 0% { - left: -35%; - right: 100%; - } - 60% { - left: 100%; - right: -90%; - } - 100% { - left: 100%; - right: -90%; - } -} - -@-webkit-keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; - } - 60% { - left: 107%; - right: -8%; - } - 100% { - left: 107%; - right: -8%; - } -} - -@keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; - } - 60% { - left: 107%; - right: -8%; - } - 100% { - left: 107%; - right: -8%; - } -} - -/******************* - Utility Classes -*******************/ -.hide { - display: none !important; -} - -.left-align { - text-align: left; -} - -.right-align { - text-align: right; -} - -.center, .center-align { - text-align: center; -} - -.left { - float: left !important; -} - -.right { - float: right !important; -} - -.no-select, input[type=range], -input[type=range] + .thumb { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.circle { - border-radius: 50%; -} - -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} - -.truncate { - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.no-padding { - padding: 0 !important; -} - -span.badge { - min-width: 3rem; - padding: 0 6px; - margin-left: 14px; - text-align: center; - font-size: 1rem; - line-height: 22px; - height: 22px; - color: #757575; - float: right; - box-sizing: border-box; -} - -span.badge.new { - font-weight: 300; - font-size: 0.8rem; - color: #fff; - background-color: #26a69a; - border-radius: 2px; -} - -span.badge.new:after { - content: " new"; -} - -span.badge[data-badge-caption]::after { - content: " " attr(data-badge-caption); -} - -nav ul a span.badge { - display: inline-block; - float: none; - margin-left: 4px; - line-height: 22px; - height: 22px; -} - -.collection-item span.badge { - margin-top: calc(0.75rem - 11px); -} - -.collapsible span.badge { - margin-top: calc(1.5rem - 11px); -} - -.side-nav span.badge { - margin-top: calc(24px - 11px); -} - -/* This is needed for some mobile phones to display the Google Icon font properly */ -.material-icons { - text-rendering: optimizeLegibility; - -webkit-font-feature-settings: 'liga'; - -moz-font-feature-settings: 'liga'; - font-feature-settings: 'liga'; -} - -.container { - margin: 0 auto; - max-width: 1280px; - width: 90%; -} - -@media only screen and (min-width: 601px) { - .container { - width: 85%; - } -} - -@media only screen and (min-width: 993px) { - .container { - width: 70%; - } -} - -.container .row { - margin-left: -0.75rem; - margin-right: -0.75rem; -} - -.section { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.section.no-pad { - padding: 0; -} - -.section.no-pad-bot { - padding-bottom: 0; -} - -.section.no-pad-top { - padding-top: 0; -} - -.row { - margin-left: auto; - margin-right: auto; - margin-bottom: 20px; -} - -.row:after { - content: ""; - display: table; - clear: both; -} - -.row .col { - float: left; - box-sizing: border-box; - padding: 0 0.75rem; - min-height: 1px; -} - -.row .col[class*="push-"], .row .col[class*="pull-"] { - position: relative; -} - -.row .col.s1 { - width: 8.3333333333%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s2 { - width: 16.6666666667%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s3 { - width: 25%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s4 { - width: 33.3333333333%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s5 { - width: 41.6666666667%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s6 { - width: 50%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s7 { - width: 58.3333333333%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s8 { - width: 66.6666666667%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s9 { - width: 75%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s10 { - width: 83.3333333333%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s11 { - width: 91.6666666667%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.s12 { - width: 100%; - margin-left: auto; - left: auto; - right: auto; -} - -.row .col.offset-s1 { - margin-left: 8.3333333333%; -} - -.row .col.pull-s1 { - right: 8.3333333333%; -} - -.row .col.push-s1 { - left: 8.3333333333%; -} - -.row .col.offset-s2 { - margin-left: 16.6666666667%; -} - -.row .col.pull-s2 { - right: 16.6666666667%; -} - -.row .col.push-s2 { - left: 16.6666666667%; -} - -.row .col.offset-s3 { - margin-left: 25%; -} - -.row .col.pull-s3 { - right: 25%; -} - -.row .col.push-s3 { - left: 25%; -} - -.row .col.offset-s4 { - margin-left: 33.3333333333%; -} - -.row .col.pull-s4 { - right: 33.3333333333%; -} - -.row .col.push-s4 { - left: 33.3333333333%; -} - -.row .col.offset-s5 { - margin-left: 41.6666666667%; -} - -.row .col.pull-s5 { - right: 41.6666666667%; -} - -.row .col.push-s5 { - left: 41.6666666667%; -} - -.row .col.offset-s6 { - margin-left: 50%; -} - -.row .col.pull-s6 { - right: 50%; -} - -.row .col.push-s6 { - left: 50%; -} - -.row .col.offset-s7 { - margin-left: 58.3333333333%; -} - -.row .col.pull-s7 { - right: 58.3333333333%; -} - -.row .col.push-s7 { - left: 58.3333333333%; -} - -.row .col.offset-s8 { - margin-left: 66.6666666667%; -} - -.row .col.pull-s8 { - right: 66.6666666667%; -} - -.row .col.push-s8 { - left: 66.6666666667%; -} - -.row .col.offset-s9 { - margin-left: 75%; -} - -.row .col.pull-s9 { - right: 75%; -} - -.row .col.push-s9 { - left: 75%; -} - -.row .col.offset-s10 { - margin-left: 83.3333333333%; -} - -.row .col.pull-s10 { - right: 83.3333333333%; -} - -.row .col.push-s10 { - left: 83.3333333333%; -} - -.row .col.offset-s11 { - margin-left: 91.6666666667%; -} - -.row .col.pull-s11 { - right: 91.6666666667%; -} - -.row .col.push-s11 { - left: 91.6666666667%; -} - -.row .col.offset-s12 { - margin-left: 100%; -} - -.row .col.pull-s12 { - right: 100%; -} - -.row .col.push-s12 { - left: 100%; -} - -@media only screen and (min-width: 601px) { - .row .col.m1 { - width: 8.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m2 { - width: 16.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m3 { - width: 25%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m4 { - width: 33.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m5 { - width: 41.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m6 { - width: 50%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m7 { - width: 58.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m8 { - width: 66.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m9 { - width: 75%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m10 { - width: 83.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m11 { - width: 91.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.m12 { - width: 100%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.offset-m1 { - margin-left: 8.3333333333%; - } - .row .col.pull-m1 { - right: 8.3333333333%; - } - .row .col.push-m1 { - left: 8.3333333333%; - } - .row .col.offset-m2 { - margin-left: 16.6666666667%; - } - .row .col.pull-m2 { - right: 16.6666666667%; - } - .row .col.push-m2 { - left: 16.6666666667%; - } - .row .col.offset-m3 { - margin-left: 25%; - } - .row .col.pull-m3 { - right: 25%; - } - .row .col.push-m3 { - left: 25%; - } - .row .col.offset-m4 { - margin-left: 33.3333333333%; - } - .row .col.pull-m4 { - right: 33.3333333333%; - } - .row .col.push-m4 { - left: 33.3333333333%; - } - .row .col.offset-m5 { - margin-left: 41.6666666667%; - } - .row .col.pull-m5 { - right: 41.6666666667%; - } - .row .col.push-m5 { - left: 41.6666666667%; - } - .row .col.offset-m6 { - margin-left: 50%; - } - .row .col.pull-m6 { - right: 50%; - } - .row .col.push-m6 { - left: 50%; - } - .row .col.offset-m7 { - margin-left: 58.3333333333%; - } - .row .col.pull-m7 { - right: 58.3333333333%; - } - .row .col.push-m7 { - left: 58.3333333333%; - } - .row .col.offset-m8 { - margin-left: 66.6666666667%; - } - .row .col.pull-m8 { - right: 66.6666666667%; - } - .row .col.push-m8 { - left: 66.6666666667%; - } - .row .col.offset-m9 { - margin-left: 75%; - } - .row .col.pull-m9 { - right: 75%; - } - .row .col.push-m9 { - left: 75%; - } - .row .col.offset-m10 { - margin-left: 83.3333333333%; - } - .row .col.pull-m10 { - right: 83.3333333333%; - } - .row .col.push-m10 { - left: 83.3333333333%; - } - .row .col.offset-m11 { - margin-left: 91.6666666667%; - } - .row .col.pull-m11 { - right: 91.6666666667%; - } - .row .col.push-m11 { - left: 91.6666666667%; - } - .row .col.offset-m12 { - margin-left: 100%; - } - .row .col.pull-m12 { - right: 100%; - } - .row .col.push-m12 { - left: 100%; - } -} - -@media only screen and (min-width: 993px) { - .row .col.l1 { - width: 8.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l2 { - width: 16.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l3 { - width: 25%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l4 { - width: 33.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l5 { - width: 41.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l6 { - width: 50%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l7 { - width: 58.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l8 { - width: 66.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l9 { - width: 75%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l10 { - width: 83.3333333333%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l11 { - width: 91.6666666667%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.l12 { - width: 100%; - margin-left: auto; - left: auto; - right: auto; - } - .row .col.offset-l1 { - margin-left: 8.3333333333%; - } - .row .col.pull-l1 { - right: 8.3333333333%; - } - .row .col.push-l1 { - left: 8.3333333333%; - } - .row .col.offset-l2 { - margin-left: 16.6666666667%; - } - .row .col.pull-l2 { - right: 16.6666666667%; - } - .row .col.push-l2 { - left: 16.6666666667%; - } - .row .col.offset-l3 { - margin-left: 25%; - } - .row .col.pull-l3 { - right: 25%; - } - .row .col.push-l3 { - left: 25%; - } - .row .col.offset-l4 { - margin-left: 33.3333333333%; - } - .row .col.pull-l4 { - right: 33.3333333333%; - } - .row .col.push-l4 { - left: 33.3333333333%; - } - .row .col.offset-l5 { - margin-left: 41.6666666667%; - } - .row .col.pull-l5 { - right: 41.6666666667%; - } - .row .col.push-l5 { - left: 41.6666666667%; - } - .row .col.offset-l6 { - margin-left: 50%; - } - .row .col.pull-l6 { - right: 50%; - } - .row .col.push-l6 { - left: 50%; - } - .row .col.offset-l7 { - margin-left: 58.3333333333%; - } - .row .col.pull-l7 { - right: 58.3333333333%; - } - .row .col.push-l7 { - left: 58.3333333333%; - } - .row .col.offset-l8 { - margin-left: 66.6666666667%; - } - .row .col.pull-l8 { - right: 66.6666666667%; - } - .row .col.push-l8 { - left: 66.6666666667%; - } - .row .col.offset-l9 { - margin-left: 75%; - } - .row .col.pull-l9 { - right: 75%; - } - .row .col.push-l9 { - left: 75%; - } - .row .col.offset-l10 { - margin-left: 83.3333333333%; - } - .row .col.pull-l10 { - right: 83.3333333333%; - } - .row .col.push-l10 { - left: 83.3333333333%; - } - .row .col.offset-l11 { - margin-left: 91.6666666667%; - } - .row .col.pull-l11 { - right: 91.6666666667%; - } - .row .col.push-l11 { - left: 91.6666666667%; - } - .row .col.offset-l12 { - margin-left: 100%; - } - .row .col.pull-l12 { - right: 100%; - } - .row .col.push-l12 { - left: 100%; - } -} - -nav { - color: #fff; - background-color: #ee6e73; - width: 100%; - height: 56px; - line-height: 56px; -} - -nav.nav-extended { - height: auto; -} - -nav.nav-extended .nav-wrapper { - min-height: 56px; - height: auto; -} - -nav.nav-extended .nav-content { - position: relative; - line-height: normal; -} - -nav a { - color: #fff; -} - -nav i, -nav [class^="mdi-"], nav [class*="mdi-"], -nav i.material-icons { - display: block; - font-size: 24px; - height: 56px; - line-height: 56px; -} - -nav .nav-wrapper { - position: relative; - height: 100%; -} - -@media only screen and (min-width: 993px) { - nav a.button-collapse { - display: none; - } -} - -nav .button-collapse { - float: left; - position: relative; - z-index: 1; - height: 56px; - margin: 0 18px; -} - -nav .button-collapse i { - height: 56px; - line-height: 56px; -} - -nav .brand-logo { - position: absolute; - color: #fff; - display: inline-block; - font-size: 2.1rem; - padding: 0; - white-space: nowrap; -} - -nav .brand-logo.center { - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); -} - -@media only screen and (max-width: 992px) { - nav .brand-logo { - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); - } - nav .brand-logo.left, nav .brand-logo.right { - padding: 0; - -webkit-transform: none; - transform: none; - } - nav .brand-logo.left { - left: 0.5rem; - } - nav .brand-logo.right { - right: 0.5rem; - left: auto; - } -} - -nav .brand-logo.right { - right: 0.5rem; - padding: 0; -} - -nav .brand-logo i, -nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"], -nav .brand-logo i.material-icons { - float: left; - margin-right: 15px; -} - -nav .nav-title { - display: inline-block; - font-size: 32px; - padding: 28px 0; -} - -nav ul { - margin: 0; -} - -nav ul li { - transition: background-color .3s; - float: left; - padding: 0; -} - -nav ul li.active { - background-color: rgba(0, 0, 0, 0.1); -} - -nav ul a { - transition: background-color .3s; - font-size: 1rem; - color: #fff; - display: block; - padding: 0 15px; - cursor: pointer; -} - -nav ul a.btn, nav ul a.btn-large, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating { - margin-top: -2px; - margin-left: 15px; - margin-right: 15px; -} - -nav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons { - height: inherit; - line-height: inherit; -} - -nav ul a:hover { - background-color: rgba(0, 0, 0, 0.1); -} - -nav ul.left { - float: left; -} - -nav form { - height: 100%; -} - -nav .input-field { - margin: 0; - height: 100%; -} - -nav .input-field input { - height: 100%; - font-size: 1.2rem; - border: none; - padding-left: 2rem; -} - -nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { - border: none; - box-shadow: none; -} - -nav .input-field label { - top: 0; - left: 0; -} - -nav .input-field label i { - color: rgba(255, 255, 255, 0.7); - transition: color .3s; -} - -nav .input-field label.active i { - color: #fff; -} - -.navbar-fixed { - position: relative; - height: 56px; - z-index: 997; -} - -.navbar-fixed nav { - position: fixed; -} - -@media only screen and (min-width: 601px) { - nav.nav-extended .nav-wrapper { - min-height: 64px; - } - nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { - height: 64px; - line-height: 64px; - } - .navbar-fixed { - height: 64px; - } -} - -@font-face { - font-family: "Roboto"; - src: local(Roboto Thin), url("../fonts/roboto/Roboto-Thin.eot"); - src: url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"), url("../fonts/roboto/Roboto-Thin.woff") format("woff"), url("../fonts/roboto/Roboto-Thin.ttf") format("truetype"); - font-weight: 200; -} - -@font-face { - font-family: "Roboto"; - src: local(Roboto Light), url("../fonts/roboto/Roboto-Light.eot"); - src: url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Light.woff2") format("woff2"), url("../fonts/roboto/Roboto-Light.woff") format("woff"), url("../fonts/roboto/Roboto-Light.ttf") format("truetype"); - font-weight: 300; -} - -@font-face { - font-family: "Roboto"; - src: local(Roboto Regular), url("../fonts/roboto/Roboto-Regular.eot"); - src: url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"), url("../fonts/roboto/Roboto-Regular.woff") format("woff"), url("../fonts/roboto/Roboto-Regular.ttf") format("truetype"); - font-weight: 400; -} - -@font-face { - font-family: "Roboto"; - src: url("../fonts/roboto/Roboto-Medium.eot"); - src: url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"), url("../fonts/roboto/Roboto-Medium.woff") format("woff"), url("../fonts/roboto/Roboto-Medium.ttf") format("truetype"); - font-weight: 500; -} - -@font-face { - font-family: "Roboto"; - src: url("../fonts/roboto/Roboto-Bold.eot"); - src: url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"), url("../fonts/roboto/Roboto-Bold.woff") format("woff"), url("../fonts/roboto/Roboto-Bold.ttf") format("truetype"); - font-weight: 700; -} - -a { - text-decoration: none; -} - -html { - line-height: 1.5; - font-family: "Roboto", sans-serif; - font-weight: normal; - color: rgba(0, 0, 0, 0.87); -} - -@media only screen and (min-width: 0) { - html { - font-size: 14px; - } -} - -@media only screen and (min-width: 992px) { - html { - font-size: 14.5px; - } -} - -@media only screen and (min-width: 1200px) { - html { - font-size: 15px; - } -} - -h1, h2, h3, h4, h5, h6 { - font-weight: 400; - line-height: 1.1; -} - -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { - font-weight: inherit; -} - -h1 { - font-size: 4.2rem; - line-height: 110%; - margin: 2.1rem 0 1.68rem 0; -} - -h2 { - font-size: 3.56rem; - line-height: 110%; - margin: 1.78rem 0 1.424rem 0; -} - -h3 { - font-size: 2.92rem; - line-height: 110%; - margin: 1.46rem 0 1.168rem 0; -} - -h4 { - font-size: 2.28rem; - line-height: 110%; - margin: 1.14rem 0 0.912rem 0; -} - -h5 { - font-size: 1.64rem; - line-height: 110%; - margin: 0.82rem 0 0.656rem 0; -} - -h6 { - font-size: 1rem; - line-height: 110%; - margin: 0.5rem 0 0.4rem 0; -} - -em { - font-style: italic; -} - -strong { - font-weight: 500; -} - -small { - font-size: 75%; -} - -.light, footer.page-footer .footer-copyright { - font-weight: 300; -} - -.thin { - font-weight: 200; -} - -.flow-text { - font-weight: 300; -} - -@media only screen and (min-width: 360px) { - .flow-text { - font-size: 1.2rem; - } -} - -@media only screen and (min-width: 390px) { - .flow-text { - font-size: 1.224rem; - } -} - -@media only screen and (min-width: 420px) { - .flow-text { - font-size: 1.248rem; - } -} - -@media only screen and (min-width: 450px) { - .flow-text { - font-size: 1.272rem; - } -} - -@media only screen and (min-width: 480px) { - .flow-text { - font-size: 1.296rem; - } -} - -@media only screen and (min-width: 510px) { - .flow-text { - font-size: 1.32rem; - } -} - -@media only screen and (min-width: 540px) { - .flow-text { - font-size: 1.344rem; - } -} - -@media only screen and (min-width: 570px) { - .flow-text { - font-size: 1.368rem; - } -} - -@media only screen and (min-width: 600px) { - .flow-text { - font-size: 1.392rem; - } -} - -@media only screen and (min-width: 630px) { - .flow-text { - font-size: 1.416rem; - } -} - -@media only screen and (min-width: 660px) { - .flow-text { - font-size: 1.44rem; - } -} - -@media only screen and (min-width: 690px) { - .flow-text { - font-size: 1.464rem; - } -} - -@media only screen and (min-width: 720px) { - .flow-text { - font-size: 1.488rem; - } -} - -@media only screen and (min-width: 750px) { - .flow-text { - font-size: 1.512rem; - } -} - -@media only screen and (min-width: 780px) { - .flow-text { - font-size: 1.536rem; - } -} - -@media only screen and (min-width: 810px) { - .flow-text { - font-size: 1.56rem; - } -} - -@media only screen and (min-width: 840px) { - .flow-text { - font-size: 1.584rem; - } -} - -@media only screen and (min-width: 870px) { - .flow-text { - font-size: 1.608rem; - } -} - -@media only screen and (min-width: 900px) { - .flow-text { - font-size: 1.632rem; - } -} - -@media only screen and (min-width: 930px) { - .flow-text { - font-size: 1.656rem; - } -} - -@media only screen and (min-width: 960px) { - .flow-text { - font-size: 1.68rem; - } -} - -@media only screen and (max-width: 360px) { - .flow-text { - font-size: 1.2rem; - } -} - -.scale-transition { - transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; - transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; - transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; -} - -.scale-transition.scale-out { - -webkit-transform: scale(0); - transform: scale(0); - transition: -webkit-transform .2s !important; - transition: transform .2s !important; - transition: transform .2s, -webkit-transform .2s !important; -} - -.scale-transition.scale-in { - -webkit-transform: scale(1); - transform: scale(1); -} - -.card-panel { - transition: box-shadow .25s; - padding: 24px; - margin: 0.5rem 0 1rem 0; - border-radius: 2px; - background-color: #fff; -} - -.card { - position: relative; - margin: 0.5rem 0 1rem 0; - background-color: #fff; - transition: box-shadow .25s; - border-radius: 2px; -} - -.card .card-title { - font-size: 24px; - font-weight: 300; -} - -.card .card-title.activator { - cursor: pointer; -} - -.card.small, .card.medium, .card.large { - position: relative; -} - -.card.small .card-image, .card.medium .card-image, .card.large .card-image { - max-height: 60%; - overflow: hidden; -} - -.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content { - max-height: 40%; -} - -.card.small .card-content, .card.medium .card-content, .card.large .card-content { - max-height: 100%; - overflow: hidden; -} - -.card.small .card-action, .card.medium .card-action, .card.large .card-action { - position: absolute; - bottom: 0; - left: 0; - right: 0; -} - -.card.small { - height: 300px; -} - -.card.medium { - height: 400px; -} - -.card.large { - height: 500px; -} - -.card.horizontal { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; -} - -.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image { - height: 100%; - max-height: none; - overflow: visible; -} - -.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img { - height: 100%; -} - -.card.horizontal .card-image { - max-width: 50%; -} - -.card.horizontal .card-image img { - border-radius: 2px 0 0 2px; - max-width: 100%; - width: auto; -} - -.card.horizontal .card-stacked { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - position: relative; -} - -.card.horizontal .card-stacked .card-content { - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.card.sticky-action .card-action { - z-index: 2; -} - -.card.sticky-action .card-reveal { - z-index: 1; - padding-bottom: 64px; -} - -.card .card-image { - position: relative; -} - -.card .card-image img { - display: block; - border-radius: 2px 2px 0 0; - position: relative; - left: 0; - right: 0; - top: 0; - bottom: 0; - width: 100%; -} - -.card .card-image .card-title { - color: #fff; - position: absolute; - bottom: 0; - left: 0; - max-width: 100%; - padding: 24px; -} - -.card .card-content { - padding: 24px; - border-radius: 0 0 2px 2px; -} - -.card .card-content p { - margin: 0; - color: inherit; -} - -.card .card-content .card-title { - display: block; - line-height: 32px; - margin-bottom: 8px; -} - -.card .card-content .card-title i { - line-height: 32px; -} - -.card .card-action { - position: relative; - background-color: inherit; - border-top: 1px solid rgba(160, 160, 160, 0.2); - padding: 16px 24px; -} - -.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating) { - color: #ffab40; - margin-right: 24px; - transition: color .3s ease; - text-transform: uppercase; -} - -.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover { - color: #ffd8a6; -} - -.card .card-reveal { - padding: 24px; - position: absolute; - background-color: #fff; - width: 100%; - overflow-y: auto; - left: 0; - top: 100%; - height: 100%; - z-index: 3; - display: none; -} - -.card .card-reveal .card-title { - cursor: pointer; - display: block; -} - -#toast-container { - display: block; - position: fixed; - z-index: 10000; -} - -@media only screen and (max-width: 600px) { - #toast-container { - min-width: 100%; - bottom: 0%; - } -} - -@media only screen and (min-width: 601px) and (max-width: 992px) { - #toast-container { - left: 5%; - bottom: 7%; - max-width: 90%; - } -} - -@media only screen and (min-width: 993px) { - #toast-container { - top: 10%; - right: 7%; - max-width: 86%; - } -} - -.toast { - border-radius: 2px; - top: 35px; - width: auto; - clear: both; - margin-top: 10px; - position: relative; - max-width: 100%; - height: auto; - min-height: 48px; - line-height: 1.5em; - word-break: break-all; - background-color: #323232; - padding: 10px 25px; - font-size: 1.1rem; - font-weight: 300; - color: #fff; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.toast .btn, .toast .btn-large, .toast .btn-flat { - margin: 0; - margin-left: 3rem; -} - -.toast.rounded { - border-radius: 24px; -} - -@media only screen and (max-width: 600px) { - .toast { - width: 100%; - border-radius: 0; - } -} - -@media only screen and (min-width: 601px) and (max-width: 992px) { - .toast { - float: left; - } -} - -@media only screen and (min-width: 993px) { - .toast { - float: right; - } -} - -.tabs { - position: relative; - overflow-x: auto; - overflow-y: hidden; - height: 48px; - width: 100%; - background-color: #fff; - margin: 0 auto; - white-space: nowrap; -} - -.tabs.tabs-transparent { - background-color: transparent; -} - -.tabs.tabs-transparent .tab a, -.tabs.tabs-transparent .tab.disabled a, -.tabs.tabs-transparent .tab.disabled a:hover { - color: rgba(255, 255, 255, 0.7); -} - -.tabs.tabs-transparent .tab a:hover, -.tabs.tabs-transparent .tab a.active { - color: #fff; -} - -.tabs.tabs-transparent .indicator { - background-color: #fff; -} - -.tabs.tabs-fixed-width { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; -} - -.tabs.tabs-fixed-width .tab { - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.tabs .tab { - display: inline-block; - text-align: center; - line-height: 48px; - height: 48px; - padding: 0; - margin: 0; - text-transform: uppercase; -} - -.tabs .tab a { - color: rgba(238, 110, 115, 0.7); - display: block; - width: 100%; - height: 100%; - padding: 0 24px; - font-size: 14px; - text-overflow: ellipsis; - overflow: hidden; - transition: color .28s ease; -} - -.tabs .tab a:hover, .tabs .tab a.active { - background-color: transparent; - color: #ee6e73; -} - -.tabs .tab.disabled a, -.tabs .tab.disabled a:hover { - color: rgba(238, 110, 115, 0.7); - cursor: default; -} - -.tabs .indicator { - position: absolute; - bottom: 0; - height: 2px; - background-color: #f6b2b5; - will-change: left, right; -} - -@media only screen and (max-width: 992px) { - .tabs { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - } - .tabs .tab { - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - } - .tabs .tab a { - padding: 0 12px; - } -} - -.material-tooltip { - padding: 10px 8px; - font-size: 1rem; - z-index: 2000; - background-color: transparent; - border-radius: 2px; - color: #fff; - min-height: 36px; - line-height: 120%; - opacity: 0; - position: absolute; - text-align: center; - max-width: calc(100% - 4px); - overflow: hidden; - left: 0; - top: 0; - pointer-events: none; - visibility: hidden; -} - -.backdrop { - position: absolute; - opacity: 0; - height: 7px; - width: 14px; - border-radius: 0 0 50% 50%; - background-color: #323232; - z-index: -1; - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - visibility: hidden; -} - -.btn, .btn-large, -.btn-flat { - border: none; - border-radius: 2px; - display: inline-block; - height: 36px; - line-height: 36px; - padding: 0 2rem; - text-transform: uppercase; - vertical-align: middle; - -webkit-tap-highlight-color: transparent; -} - -.btn.disabled, .disabled.btn-large, -.btn-floating.disabled, -.btn-large.disabled, -.btn-flat.disabled, -.btn:disabled, -.btn-large:disabled, -.btn-floating:disabled, -.btn-large:disabled, -.btn-flat:disabled, -.btn[disabled], -[disabled].btn-large, -.btn-floating[disabled], -.btn-large[disabled], -.btn-flat[disabled] { - pointer-events: none; - background-color: #DFDFDF !important; - box-shadow: none; - color: #9F9F9F !important; - cursor: default; -} - -.btn.disabled:hover, .disabled.btn-large:hover, -.btn-floating.disabled:hover, -.btn-large.disabled:hover, -.btn-flat.disabled:hover, -.btn:disabled:hover, -.btn-large:disabled:hover, -.btn-floating:disabled:hover, -.btn-large:disabled:hover, -.btn-flat:disabled:hover, -.btn[disabled]:hover, -[disabled].btn-large:hover, -.btn-floating[disabled]:hover, -.btn-large[disabled]:hover, -.btn-flat[disabled]:hover { - background-color: #DFDFDF !important; - color: #9F9F9F !important; -} - -.btn, .btn-large, -.btn-floating, -.btn-large, -.btn-flat { - outline: 0; -} - -.btn i, .btn-large i, -.btn-floating i, -.btn-large i, -.btn-flat i { - font-size: 1.3rem; - line-height: inherit; -} - -.btn:focus, .btn-large:focus, -.btn-floating:focus { - background-color: #1d7d74; -} - -.btn, .btn-large { - text-decoration: none; - color: #fff; - background-color: #26a69a; - text-align: center; - letter-spacing: .5px; - transition: .2s ease-out; - cursor: pointer; -} - -.btn:hover, .btn-large:hover { - background-color: #2bbbad; -} - -.btn-floating { - display: inline-block; - color: #fff; - position: relative; - overflow: hidden; - z-index: 1; - width: 40px; - height: 40px; - line-height: 40px; - padding: 0; - background-color: #26a69a; - border-radius: 50%; - transition: .3s; - cursor: pointer; - vertical-align: middle; -} - -.btn-floating:hover { - background-color: #26a69a; -} - -.btn-floating:before { - border-radius: 0; -} - -.btn-floating.btn-large { - width: 56px; - height: 56px; -} - -.btn-floating.btn-large i { - line-height: 56px; -} - -.btn-floating.halfway-fab { - position: absolute; - right: 24px; - bottom: 0; - -webkit-transform: translateY(50%); - transform: translateY(50%); -} - -.btn-floating.halfway-fab.left { - right: auto; - left: 24px; -} - -.btn-floating i { - width: inherit; - display: inline-block; - text-align: center; - color: #fff; - font-size: 1.6rem; - line-height: 40px; -} - -button.btn-floating { - border: none; -} - -.fixed-action-btn { - position: fixed; - right: 23px; - bottom: 23px; - padding-top: 15px; - margin-bottom: 0; - z-index: 998; -} - -.fixed-action-btn.active ul { - visibility: visible; -} - -.fixed-action-btn.horizontal { - padding: 0 0 0 15px; -} - -.fixed-action-btn.horizontal ul { - text-align: right; - right: 64px; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - height: 100%; - left: auto; - width: 500px; - /*width 100% only goes to width of button container */ -} - -.fixed-action-btn.horizontal ul li { - display: inline-block; - margin: 15px 15px 0 0; -} - -.fixed-action-btn.toolbar { - padding: 0; - height: 56px; -} - -.fixed-action-btn.toolbar.active > a i { - opacity: 0; -} - -.fixed-action-btn.toolbar ul { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - top: 0; - bottom: 0; -} - -.fixed-action-btn.toolbar ul li { - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - display: inline-block; - margin: 0; - height: 100%; - transition: none; -} - -.fixed-action-btn.toolbar ul li a { - display: block; - overflow: hidden; - position: relative; - width: 100%; - height: 100%; - background-color: transparent; - box-shadow: none; - color: #fff; - line-height: 56px; - z-index: 1; -} - -.fixed-action-btn.toolbar ul li a i { - line-height: inherit; -} - -.fixed-action-btn ul { - left: 0; - right: 0; - text-align: center; - position: absolute; - bottom: 64px; - margin: 0; - visibility: hidden; -} - -.fixed-action-btn ul li { - margin-bottom: 15px; -} - -.fixed-action-btn ul a.btn-floating { - opacity: 0; -} - -.fixed-action-btn .fab-backdrop { - position: absolute; - top: 0; - left: 0; - z-index: -1; - width: 40px; - height: 40px; - background-color: #26a69a; - border-radius: 50%; - -webkit-transform: scale(0); - transform: scale(0); -} - -.btn-flat { - box-shadow: none; - background-color: transparent; - color: #343434; - cursor: pointer; - transition: background-color .2s; -} - -.btn-flat:focus, .btn-flat:active { - background-color: transparent; -} - -.btn-flat:focus, .btn-flat:hover { - background-color: rgba(0, 0, 0, 0.1); - box-shadow: none; -} - -.btn-flat:active { - background-color: rgba(0, 0, 0, 0.2); -} - -.btn-flat.disabled { - background-color: transparent !important; - color: #b3b3b3 !important; - cursor: default; -} - -.btn-large { - height: 54px; - line-height: 54px; -} - -.btn-large i { - font-size: 1.6rem; -} - -.btn-block { - display: block; -} - -.dropdown-content { - background-color: #fff; - margin: 0; - display: none; - min-width: 100px; - max-height: 650px; - overflow-y: auto; - opacity: 0; - position: absolute; - z-index: 999; - will-change: width, height; -} - -.dropdown-content li { - clear: both; - color: rgba(0, 0, 0, 0.87); - cursor: pointer; - min-height: 50px; - line-height: 1.5rem; - width: 100%; - text-align: left; - text-transform: none; -} - -.dropdown-content li:hover, .dropdown-content li.active, .dropdown-content li.selected { - background-color: #eee; -} - -.dropdown-content li.active.selected { - background-color: #e1e1e1; -} - -.dropdown-content li.divider { - min-height: 0; - height: 1px; -} - -.dropdown-content li > a, .dropdown-content li > span { - font-size: 16px; - color: #26a69a; - display: block; - line-height: 22px; - padding: 14px 16px; -} - -.dropdown-content li > span > label { - top: 1px; - left: 0; - height: 18px; -} - -.dropdown-content li > a > i { - height: inherit; - line-height: inherit; -} - -.input-field.col .dropdown-content [type="checkbox"] + label { - top: 1px; - left: 0; - height: 18px; -} - -/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */ -.waves-effect { - position: relative; - cursor: pointer; - display: inline-block; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; - vertical-align: middle; - z-index: 1; - transition: .3s ease-out; -} - -.waves-effect .waves-ripple { - position: absolute; - border-radius: 50%; - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - opacity: 0; - background: rgba(0, 0, 0, 0.2); - transition: all 0.7s ease-out; - transition-property: opacity, -webkit-transform; - transition-property: transform, opacity; - transition-property: transform, opacity, -webkit-transform; - -webkit-transform: scale(0); - transform: scale(0); - pointer-events: none; -} - -.waves-effect.waves-light .waves-ripple { - background-color: rgba(255, 255, 255, 0.45); -} - -.waves-effect.waves-red .waves-ripple { - background-color: rgba(244, 67, 54, 0.7); -} - -.waves-effect.waves-yellow .waves-ripple { - background-color: rgba(255, 235, 59, 0.7); -} - -.waves-effect.waves-orange .waves-ripple { - background-color: rgba(255, 152, 0, 0.7); -} - -.waves-effect.waves-purple .waves-ripple { - background-color: rgba(156, 39, 176, 0.7); -} - -.waves-effect.waves-green .waves-ripple { - background-color: rgba(76, 175, 80, 0.7); -} - -.waves-effect.waves-teal .waves-ripple { - background-color: rgba(0, 150, 136, 0.7); -} - -.waves-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] { - border: 0; - font-style: normal; - font-size: inherit; - text-transform: inherit; - background: none; -} - -.waves-effect img { - position: relative; - z-index: -1; -} - -.waves-notransition { - transition: none !important; -} - -.waves-circle { - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); -} - -.waves-input-wrapper { - border-radius: 0.2em; - vertical-align: bottom; -} - -.waves-input-wrapper .waves-button-input { - position: relative; - top: 0; - left: 0; - z-index: 1; -} - -.waves-circle { - text-align: center; - width: 2.5em; - height: 2.5em; - line-height: 2.5em; - border-radius: 50%; - -webkit-mask-image: none; -} - -.waves-block { - display: block; -} - -/* Firefox Bug: link not triggered */ -.waves-effect .waves-ripple { - z-index: -1; -} - -.modal { - display: none; - position: fixed; - left: 0; - right: 0; - background-color: #fafafa; - padding: 0; - max-height: 70%; - width: 55%; - margin: auto; - overflow-y: auto; - border-radius: 2px; - will-change: top, opacity; -} - -@media only screen and (max-width: 992px) { - .modal { - width: 80%; - } -} - -.modal h1, .modal h2, .modal h3, .modal h4 { - margin-top: 0; -} - -.modal .modal-content { - padding: 24px; -} - -.modal .modal-close { - cursor: pointer; -} - -.modal .modal-footer { - border-radius: 0 0 2px 2px; - background-color: #fafafa; - padding: 4px 6px; - height: 56px; - width: 100%; -} - -.modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { - float: right; - margin: 6px 0; -} - -.modal-overlay { - position: fixed; - z-index: 999; - top: -100px; - left: 0; - bottom: 0; - right: 0; - height: 125%; - width: 100%; - background: #000; - display: none; - will-change: opacity; -} - -.modal.modal-fixed-footer { - padding: 0; - height: 70%; -} - -.modal.modal-fixed-footer .modal-content { - position: absolute; - height: calc(100% - 56px); - max-height: 100%; - width: 100%; - overflow-y: auto; -} - -.modal.modal-fixed-footer .modal-footer { - border-top: 1px solid rgba(0, 0, 0, 0.1); - position: absolute; - bottom: 0; -} - -.modal.bottom-sheet { - top: auto; - bottom: -100%; - margin: 0; - width: 100%; - max-height: 45%; - border-radius: 0; - will-change: bottom, opacity; -} - -.collapsible { - border-top: 1px solid #ddd; - border-right: 1px solid #ddd; - border-left: 1px solid #ddd; - margin: 0.5rem 0 1rem 0; -} - -.collapsible-header { - display: block; - cursor: pointer; - min-height: 3rem; - line-height: 3rem; - padding: 0 1rem; - background-color: #fff; - border-bottom: 1px solid #ddd; -} - -.collapsible-header i { - width: 2rem; - font-size: 1.6rem; - line-height: 3rem; - display: block; - float: left; - text-align: center; - margin-right: 1rem; -} - -.collapsible-body { - display: none; - border-bottom: 1px solid #ddd; - box-sizing: border-box; - padding: 2rem; -} - -.side-nav .collapsible, -.side-nav.fixed .collapsible { - border: none; - box-shadow: none; -} - -.side-nav .collapsible li, -.side-nav.fixed .collapsible li { - padding: 0; -} - -.side-nav .collapsible-header, -.side-nav.fixed .collapsible-header { - background-color: transparent; - border: none; - line-height: inherit; - height: inherit; - padding: 0 16px; -} - -.side-nav .collapsible-header:hover, -.side-nav.fixed .collapsible-header:hover { - background-color: rgba(0, 0, 0, 0.05); -} - -.side-nav .collapsible-header i, -.side-nav.fixed .collapsible-header i { - line-height: inherit; -} - -.side-nav .collapsible-body, -.side-nav.fixed .collapsible-body { - border: 0; - background-color: #fff; -} - -.side-nav .collapsible-body li a, -.side-nav.fixed .collapsible-body li a { - padding: 0 23.5px 0 31px; -} - -.collapsible.popout { - border: none; - box-shadow: none; -} - -.collapsible.popout > li { - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - margin: 0 24px; - transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); -} - -.collapsible.popout > li.active { - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); - margin: 16px 0; -} - -.chip { - display: inline-block; - height: 32px; - font-size: 13px; - font-weight: 500; - color: rgba(0, 0, 0, 0.6); - line-height: 32px; - padding: 0 12px; - border-radius: 16px; - background-color: #e4e4e4; - margin-bottom: 5px; - margin-right: 5px; -} - -.chip img { - float: left; - margin: 0 8px 0 -12px; - height: 32px; - width: 32px; - border-radius: 50%; -} - -.chip .close { - cursor: pointer; - float: right; - font-size: 16px; - line-height: 32px; - padding-left: 8px; -} - -.chips { - border: none; - border-bottom: 1px solid #9e9e9e; - box-shadow: none; - margin: 0 0 20px 0; - min-height: 45px; - outline: none; - transition: all .3s; -} - -.chips.focus { - border-bottom: 1px solid #26a69a; - box-shadow: 0 1px 0 0 #26a69a; -} - -.chips:hover { - cursor: text; -} - -.chips .chip.selected { - background-color: #26a69a; - color: #fff; -} - -.chips .input { - background: none; - border: 0; - color: rgba(0, 0, 0, 0.6); - display: inline-block; - font-size: 1rem; - height: 3rem; - line-height: 32px; - outline: 0; - margin: 0; - padding: 0 !important; - width: 120px !important; -} - -.chips .input:focus { - border: 0 !important; - box-shadow: none !important; -} - -.prefix ~ .chips { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); -} - -.chips:empty ~ label { - font-size: 0.8rem; - -webkit-transform: translateY(-140%); - transform: translateY(-140%); -} - -.materialboxed { - display: block; - cursor: -webkit-zoom-in; - cursor: zoom-in; - position: relative; - transition: opacity .4s; - -webkit-backface-visibility: hidden; -} - -.materialboxed:hover:not(.active) { - opacity: .8; -} - -.materialboxed.active { - cursor: -webkit-zoom-out; - cursor: zoom-out; -} - -#materialbox-overlay { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #292929; - z-index: 1000; - will-change: opacity; -} - -.materialbox-caption { - position: fixed; - display: none; - color: #fff; - line-height: 50px; - bottom: 0; - left: 0; - width: 100%; - text-align: center; - padding: 0% 15%; - height: 50px; - z-index: 1000; - -webkit-font-smoothing: antialiased; -} - -select:focus { - outline: 1px solid #c9f3ef; -} - -button:focus { - outline: none; - background-color: #2ab7a9; -} - -label { - font-size: 0.8rem; - color: #9e9e9e; -} - -/* Text Inputs + Textarea - ========================================================================== */ -/* Style Placeholders */ -::-webkit-input-placeholder { - color: #d1d1d1; -} - -:-moz-placeholder { - /* Firefox 18- */ - color: #d1d1d1; -} - -::-moz-placeholder { - /* Firefox 19+ */ - color: #d1d1d1; -} - -:-ms-input-placeholder { - color: #d1d1d1; -} - -/* Text inputs */ -input:not([type]), -input[type=text], -input[type=password], -input[type=email], -input[type=url], -input[type=time], -input[type=date], -input[type=datetime], -input[type=datetime-local], -input[type=tel], -input[type=number], -input[type=search], -textarea.materialize-textarea { - background-color: transparent; - border: none; - border-bottom: 1px solid #9e9e9e; - border-radius: 0; - outline: none; - height: 3rem; - width: 100%; - font-size: 1rem; - margin: 0 0 20px 0; - padding: 0; - box-shadow: none; - box-sizing: content-box; - transition: all 0.3s; -} - -input:not([type]):disabled, input:not([type])[readonly="readonly"], -input[type=text]:disabled, -input[type=text][readonly="readonly"], -input[type=password]:disabled, -input[type=password][readonly="readonly"], -input[type=email]:disabled, -input[type=email][readonly="readonly"], -input[type=url]:disabled, -input[type=url][readonly="readonly"], -input[type=time]:disabled, -input[type=time][readonly="readonly"], -input[type=date]:disabled, -input[type=date][readonly="readonly"], -input[type=datetime]:disabled, -input[type=datetime][readonly="readonly"], -input[type=datetime-local]:disabled, -input[type=datetime-local][readonly="readonly"], -input[type=tel]:disabled, -input[type=tel][readonly="readonly"], -input[type=number]:disabled, -input[type=number][readonly="readonly"], -input[type=search]:disabled, -input[type=search][readonly="readonly"], -textarea.materialize-textarea:disabled, -textarea.materialize-textarea[readonly="readonly"] { - color: rgba(0, 0, 0, 0.26); - border-bottom: 1px dotted rgba(0, 0, 0, 0.26); -} - -input:not([type]):disabled + label, -input:not([type])[readonly="readonly"] + label, -input[type=text]:disabled + label, -input[type=text][readonly="readonly"] + label, -input[type=password]:disabled + label, -input[type=password][readonly="readonly"] + label, -input[type=email]:disabled + label, -input[type=email][readonly="readonly"] + label, -input[type=url]:disabled + label, -input[type=url][readonly="readonly"] + label, -input[type=time]:disabled + label, -input[type=time][readonly="readonly"] + label, -input[type=date]:disabled + label, -input[type=date][readonly="readonly"] + label, -input[type=datetime]:disabled + label, -input[type=datetime][readonly="readonly"] + label, -input[type=datetime-local]:disabled + label, -input[type=datetime-local][readonly="readonly"] + label, -input[type=tel]:disabled + label, -input[type=tel][readonly="readonly"] + label, -input[type=number]:disabled + label, -input[type=number][readonly="readonly"] + label, -input[type=search]:disabled + label, -input[type=search][readonly="readonly"] + label, -textarea.materialize-textarea:disabled + label, -textarea.materialize-textarea[readonly="readonly"] + label { - color: rgba(0, 0, 0, 0.26); -} - -input:not([type]):focus:not([readonly]), -input[type=text]:focus:not([readonly]), -input[type=password]:focus:not([readonly]), -input[type=email]:focus:not([readonly]), -input[type=url]:focus:not([readonly]), -input[type=time]:focus:not([readonly]), -input[type=date]:focus:not([readonly]), -input[type=datetime]:focus:not([readonly]), -input[type=datetime-local]:focus:not([readonly]), -input[type=tel]:focus:not([readonly]), -input[type=number]:focus:not([readonly]), -input[type=search]:focus:not([readonly]), -textarea.materialize-textarea:focus:not([readonly]) { - border-bottom: 1px solid #26a69a; - box-shadow: 0 1px 0 0 #26a69a; -} - -input:not([type]):focus:not([readonly]) + label, -input[type=text]:focus:not([readonly]) + label, -input[type=password]:focus:not([readonly]) + label, -input[type=email]:focus:not([readonly]) + label, -input[type=url]:focus:not([readonly]) + label, -input[type=time]:focus:not([readonly]) + label, -input[type=date]:focus:not([readonly]) + label, -input[type=datetime]:focus:not([readonly]) + label, -input[type=datetime-local]:focus:not([readonly]) + label, -input[type=tel]:focus:not([readonly]) + label, -input[type=number]:focus:not([readonly]) + label, -input[type=search]:focus:not([readonly]) + label, -textarea.materialize-textarea:focus:not([readonly]) + label { - color: #26a69a; -} - -input:not([type]).valid, input:not([type]):focus.valid, -input[type=text].valid, -input[type=text]:focus.valid, -input[type=password].valid, -input[type=password]:focus.valid, -input[type=email].valid, -input[type=email]:focus.valid, -input[type=url].valid, -input[type=url]:focus.valid, -input[type=time].valid, -input[type=time]:focus.valid, -input[type=date].valid, -input[type=date]:focus.valid, -input[type=datetime].valid, -input[type=datetime]:focus.valid, -input[type=datetime-local].valid, -input[type=datetime-local]:focus.valid, -input[type=tel].valid, -input[type=tel]:focus.valid, -input[type=number].valid, -input[type=number]:focus.valid, -input[type=search].valid, -input[type=search]:focus.valid, -textarea.materialize-textarea.valid, -textarea.materialize-textarea:focus.valid { - border-bottom: 1px solid #4CAF50; - box-shadow: 0 1px 0 0 #4CAF50; -} - -input:not([type]).valid + label:after, -input:not([type]):focus.valid + label:after, -input[type=text].valid + label:after, -input[type=text]:focus.valid + label:after, -input[type=password].valid + label:after, -input[type=password]:focus.valid + label:after, -input[type=email].valid + label:after, -input[type=email]:focus.valid + label:after, -input[type=url].valid + label:after, -input[type=url]:focus.valid + label:after, -input[type=time].valid + label:after, -input[type=time]:focus.valid + label:after, -input[type=date].valid + label:after, -input[type=date]:focus.valid + label:after, -input[type=datetime].valid + label:after, -input[type=datetime]:focus.valid + label:after, -input[type=datetime-local].valid + label:after, -input[type=datetime-local]:focus.valid + label:after, -input[type=tel].valid + label:after, -input[type=tel]:focus.valid + label:after, -input[type=number].valid + label:after, -input[type=number]:focus.valid + label:after, -input[type=search].valid + label:after, -input[type=search]:focus.valid + label:after, -textarea.materialize-textarea.valid + label:after, -textarea.materialize-textarea:focus.valid + label:after { - content: attr(data-success); - color: #4CAF50; - opacity: 1; -} - -input:not([type]).invalid, input:not([type]):focus.invalid, -input[type=text].invalid, -input[type=text]:focus.invalid, -input[type=password].invalid, -input[type=password]:focus.invalid, -input[type=email].invalid, -input[type=email]:focus.invalid, -input[type=url].invalid, -input[type=url]:focus.invalid, -input[type=time].invalid, -input[type=time]:focus.invalid, -input[type=date].invalid, -input[type=date]:focus.invalid, -input[type=datetime].invalid, -input[type=datetime]:focus.invalid, -input[type=datetime-local].invalid, -input[type=datetime-local]:focus.invalid, -input[type=tel].invalid, -input[type=tel]:focus.invalid, -input[type=number].invalid, -input[type=number]:focus.invalid, -input[type=search].invalid, -input[type=search]:focus.invalid, -textarea.materialize-textarea.invalid, -textarea.materialize-textarea:focus.invalid { - border-bottom: 1px solid #F44336; - box-shadow: 0 1px 0 0 #F44336; -} - -input:not([type]).invalid + label:after, -input:not([type]):focus.invalid + label:after, -input[type=text].invalid + label:after, -input[type=text]:focus.invalid + label:after, -input[type=password].invalid + label:after, -input[type=password]:focus.invalid + label:after, -input[type=email].invalid + label:after, -input[type=email]:focus.invalid + label:after, -input[type=url].invalid + label:after, -input[type=url]:focus.invalid + label:after, -input[type=time].invalid + label:after, -input[type=time]:focus.invalid + label:after, -input[type=date].invalid + label:after, -input[type=date]:focus.invalid + label:after, -input[type=datetime].invalid + label:after, -input[type=datetime]:focus.invalid + label:after, -input[type=datetime-local].invalid + label:after, -input[type=datetime-local]:focus.invalid + label:after, -input[type=tel].invalid + label:after, -input[type=tel]:focus.invalid + label:after, -input[type=number].invalid + label:after, -input[type=number]:focus.invalid + label:after, -input[type=search].invalid + label:after, -input[type=search]:focus.invalid + label:after, -textarea.materialize-textarea.invalid + label:after, -textarea.materialize-textarea:focus.invalid + label:after { - content: attr(data-error); - color: #F44336; - opacity: 1; -} - -input:not([type]).validate + label, -input[type=text].validate + label, -input[type=password].validate + label, -input[type=email].validate + label, -input[type=url].validate + label, -input[type=time].validate + label, -input[type=date].validate + label, -input[type=datetime].validate + label, -input[type=datetime-local].validate + label, -input[type=tel].validate + label, -input[type=number].validate + label, -input[type=search].validate + label, -textarea.materialize-textarea.validate + label { - width: 100%; - pointer-events: none; -} - -input:not([type]) + label:after, -input[type=text] + label:after, -input[type=password] + label:after, -input[type=email] + label:after, -input[type=url] + label:after, -input[type=time] + label:after, -input[type=date] + label:after, -input[type=datetime] + label:after, -input[type=datetime-local] + label:after, -input[type=tel] + label:after, -input[type=number] + label:after, -input[type=search] + label:after, -textarea.materialize-textarea + label:after { - display: block; - content: ""; - position: absolute; - top: 60px; - opacity: 0; - transition: .2s opacity ease-out, .2s color ease-out; -} - -.input-field { - position: relative; - margin-top: 1rem; -} - -.input-field.inline { - display: inline-block; - vertical-align: middle; - margin-left: 5px; -} - -.input-field.inline input, -.input-field.inline .select-dropdown { - margin-bottom: 1rem; -} - -.input-field.col label { - left: 0.75rem; -} - -.input-field.col .prefix ~ label, -.input-field.col .prefix ~ .validate ~ label { - width: calc(100% - 3rem - 1.5rem); -} - -.input-field label { - color: #9e9e9e; - position: absolute; - top: 0.8rem; - left: 0; - font-size: 1rem; - cursor: text; - transition: .2s ease-out; -} - -.input-field label:not(.label-icon).active { - font-size: 0.8rem; - -webkit-transform: translateY(-140%); - transform: translateY(-140%); -} - -.input-field .prefix { - position: absolute; - width: 3rem; - font-size: 2rem; - transition: color .2s; -} - -.input-field .prefix.active { - color: #26a69a; -} - -.input-field .prefix ~ input, -.input-field .prefix ~ textarea, -.input-field .prefix ~ label, -.input-field .prefix ~ .validate ~ label, -.input-field .prefix ~ .autocomplete-content { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); -} - -.input-field .prefix ~ label { - margin-left: 3rem; -} - -@media only screen and (max-width: 992px) { - .input-field .prefix ~ input { - width: 86%; - width: calc(100% - 3rem); - } -} - -@media only screen and (max-width: 600px) { - .input-field .prefix ~ input { - width: 80%; - width: calc(100% - 3rem); - } -} - -/* Search Field */ -.input-field input[type=search] { - display: block; - line-height: inherit; - padding-left: 4rem; - width: calc(100% - 4rem); -} - -.input-field input[type=search]:focus { - background-color: #fff; - border: 0; - box-shadow: none; - color: #444; -} - -.input-field input[type=search]:focus + label i, -.input-field input[type=search]:focus ~ .mdi-navigation-close, -.input-field input[type=search]:focus ~ .material-icons { - color: #444; -} - -.input-field input[type=search] + label { - left: 1rem; -} - -.input-field input[type=search] ~ .mdi-navigation-close, -.input-field input[type=search] ~ .material-icons { - position: absolute; - top: 0; - right: 1rem; - color: transparent; - cursor: pointer; - font-size: 2rem; - transition: .3s color; -} - -/* Textarea */ -textarea { - width: 100%; - height: 3rem; - background-color: transparent; -} - -textarea.materialize-textarea { - overflow-y: hidden; - /* prevents scroll bar flash */ - padding: .8rem 0 1.6rem 0; - /* prevents text jump on Enter keypress */ - resize: none; - min-height: 3rem; -} - -.hiddendiv { - display: none; - white-space: pre-wrap; - word-wrap: break-word; - overflow-wrap: break-word; - /* future version of deprecated 'word-wrap' */ - padding-top: 1.2rem; - /* prevents text jump on Enter keypress */ -} - -/* Autocomplete */ -.autocomplete-content { - margin-top: -15px; - display: block; - opacity: 1; - position: static; -} - -.autocomplete-content li .highlight { - color: #444; -} - -.autocomplete-content li img { - height: 40px; - width: 40px; - margin: 5px 15px; -} - -/* Radio Buttons - ========================================================================== */ -[type="radio"]:not(:checked), -[type="radio"]:checked { - position: absolute; - left: -9999px; - opacity: 0; -} - -[type="radio"]:not(:checked) + label, -[type="radio"]:checked + label { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - transition: .28s ease; - /* webkit (konqueror) browsers */ - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -[type="radio"] + label:before, -[type="radio"] + label:after { - content: ''; - position: absolute; - left: 0; - top: 0; - margin: 4px; - width: 16px; - height: 16px; - z-index: 0; - transition: .28s ease; -} - -/* Unchecked styles */ -[type="radio"]:not(:checked) + label:before, -[type="radio"]:not(:checked) + label:after, -[type="radio"]:checked + label:before, -[type="radio"]:checked + label:after, -[type="radio"].with-gap:checked + label:before, -[type="radio"].with-gap:checked + label:after { - border-radius: 50%; -} - -[type="radio"]:not(:checked) + label:before, -[type="radio"]:not(:checked) + label:after { - border: 2px solid #5a5a5a; -} - -[type="radio"]:not(:checked) + label:after { - -webkit-transform: scale(0); - transform: scale(0); -} - -/* Checked styles */ -[type="radio"]:checked + label:before { - border: 2px solid transparent; -} - -[type="radio"]:checked + label:after, -[type="radio"].with-gap:checked + label:before, -[type="radio"].with-gap:checked + label:after { - border: 2px solid #26a69a; -} - -[type="radio"]:checked + label:after, -[type="radio"].with-gap:checked + label:after { - background-color: #26a69a; -} - -[type="radio"]:checked + label:after { - -webkit-transform: scale(1.02); - transform: scale(1.02); -} - -/* Radio With gap */ -[type="radio"].with-gap:checked + label:after { - -webkit-transform: scale(0.5); - transform: scale(0.5); -} - -/* Focused styles */ -[type="radio"].tabbed:focus + label:before { - box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); -} - -/* Disabled Radio With gap */ -[type="radio"].with-gap:disabled:checked + label:before { - border: 2px solid rgba(0, 0, 0, 0.26); -} - -[type="radio"].with-gap:disabled:checked + label:after { - border: none; - background-color: rgba(0, 0, 0, 0.26); -} - -/* Disabled style */ -[type="radio"]:disabled:not(:checked) + label:before, -[type="radio"]:disabled:checked + label:before { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.26); -} - -[type="radio"]:disabled + label { - color: rgba(0, 0, 0, 0.26); -} - -[type="radio"]:disabled:not(:checked) + label:before { - border-color: rgba(0, 0, 0, 0.26); -} - -[type="radio"]:disabled:checked + label:after { - background-color: rgba(0, 0, 0, 0.26); - border-color: #BDBDBD; -} - -/* Checkboxes - ========================================================================== */ -/* CUSTOM CSS CHECKBOXES */ -form p { - margin-bottom: 10px; - text-align: left; -} - -form p:last-child { - margin-bottom: 0; -} - -/* Remove default checkbox */ -[type="checkbox"]:not(:checked), -[type="checkbox"]:checked { - position: absolute; - left: -9999px; - opacity: 0; -} - -[type="checkbox"] { - /* checkbox aspect */ -} - -[type="checkbox"] + label { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - -webkit-user-select: none; - /* webkit (safari, chrome) browsers */ - -moz-user-select: none; - /* mozilla browsers */ - -khtml-user-select: none; - /* webkit (konqueror) browsers */ - -ms-user-select: none; - /* IE10+ */ -} - -[type="checkbox"] + label:before, -[type="checkbox"]:not(.filled-in) + label:after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 18px; - z-index: 0; - border: 2px solid #5a5a5a; - border-radius: 1px; - margin-top: 2px; - transition: .2s; -} - -[type="checkbox"]:not(.filled-in) + label:after { - border: 0; - -webkit-transform: scale(0); - transform: scale(0); -} - -[type="checkbox"]:not(:checked):disabled + label:before { - border: none; - background-color: rgba(0, 0, 0, 0.26); -} - -[type="checkbox"].tabbed:focus + label:after { - -webkit-transform: scale(1); - transform: scale(1); - border: 0; - border-radius: 50%; - box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); - background-color: rgba(0, 0, 0, 0.1); -} - -[type="checkbox"]:checked + label:before { - top: -4px; - left: -5px; - width: 12px; - height: 22px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid #26a69a; - border-bottom: 2px solid #26a69a; - -webkit-transform: rotate(40deg); - transform: rotate(40deg); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} - -[type="checkbox"]:checked:disabled + label:before { - border-right: 2px solid rgba(0, 0, 0, 0.26); - border-bottom: 2px solid rgba(0, 0, 0, 0.26); -} - -/* Indeterminate checkbox */ -[type="checkbox"]:indeterminate + label:before { - top: -11px; - left: -12px; - width: 10px; - height: 22px; - border-top: none; - border-left: none; - border-right: 2px solid #26a69a; - border-bottom: none; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} - -[type="checkbox"]:indeterminate:disabled + label:before { - border-right: 2px solid rgba(0, 0, 0, 0.26); - background-color: transparent; -} - -[type="checkbox"].filled-in + label:after { - border-radius: 2px; -} - -[type="checkbox"].filled-in + label:before, -[type="checkbox"].filled-in + label:after { - content: ''; - left: 0; - position: absolute; - /* .1s delay is for check animation */ - transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; - z-index: 1; -} - -[type="checkbox"].filled-in:not(:checked) + label:before { - width: 0; - height: 0; - border: 3px solid transparent; - left: 6px; - top: 10px; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 20% 40%; - transform-origin: 100% 100%; -} - -[type="checkbox"].filled-in:not(:checked) + label:after { - height: 20px; - width: 20px; - background-color: transparent; - border: 2px solid #5a5a5a; - top: 0px; - z-index: 0; -} - -[type="checkbox"].filled-in:checked + label:before { - top: 0; - left: 1px; - width: 8px; - height: 13px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid #fff; - border-bottom: 2px solid #fff; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} - -[type="checkbox"].filled-in:checked + label:after { - top: 0; - width: 20px; - height: 20px; - border: 2px solid #26a69a; - background-color: #26a69a; - z-index: 0; -} - -[type="checkbox"].filled-in.tabbed:focus + label:after { - border-radius: 2px; - border-color: #5a5a5a; - background-color: rgba(0, 0, 0, 0.1); -} - -[type="checkbox"].filled-in.tabbed:checked:focus + label:after { - border-radius: 2px; - background-color: #26a69a; - border-color: #26a69a; -} - -[type="checkbox"].filled-in:disabled:not(:checked) + label:before { - background-color: transparent; - border: 2px solid transparent; -} - -[type="checkbox"].filled-in:disabled:not(:checked) + label:after { - border-color: transparent; - background-color: #BDBDBD; -} - -[type="checkbox"].filled-in:disabled:checked + label:before { - background-color: transparent; -} - -[type="checkbox"].filled-in:disabled:checked + label:after { - background-color: #BDBDBD; - border-color: #BDBDBD; -} - -/* Switch - ========================================================================== */ -.switch, -.switch * { - -webkit-user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -ms-user-select: none; -} - -.switch label { - cursor: pointer; -} - -.switch label input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; -} - -.switch label input[type=checkbox]:checked + .lever { - background-color: #84c7c1; -} - -.switch label input[type=checkbox]:checked + .lever:after { - background-color: #26a69a; - left: 24px; -} - -.switch label .lever { - content: ""; - display: inline-block; - position: relative; - width: 40px; - height: 15px; - background-color: #818181; - border-radius: 15px; - margin-right: 10px; - transition: background 0.3s ease; - vertical-align: middle; - margin: 0 16px; -} - -.switch label .lever:after { - content: ""; - position: absolute; - display: inline-block; - width: 21px; - height: 21px; - background-color: #F1F1F1; - border-radius: 21px; - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); - left: -5px; - top: -3px; - transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; -} - -input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after, -input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after { - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); -} - -input[type=checkbox]:not(:disabled) ~ .lever:active:after, -input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after { - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); -} - -.switch input[type=checkbox][disabled] + .lever { - cursor: default; -} - -.switch label input[type=checkbox][disabled] + .lever:after, -.switch label input[type=checkbox][disabled]:checked + .lever:after { - background-color: #BDBDBD; -} - -/* Select Field - ========================================================================== */ -select { - display: none; -} - -select.browser-default { - display: block; -} - -select { - background-color: rgba(255, 255, 255, 0.9); - width: 100%; - padding: 5px; - border: 1px solid #f2f2f2; - border-radius: 2px; - height: 3rem; -} - -.select-label { - position: absolute; -} - -.select-wrapper { - position: relative; -} - -.select-wrapper input.select-dropdown { - position: relative; - cursor: pointer; - background-color: transparent; - border: none; - border-bottom: 1px solid #9e9e9e; - outline: none; - height: 3rem; - line-height: 3rem; - width: 100%; - font-size: 1rem; - margin: 0 0 20px 0; - padding: 0; - display: block; -} - -.select-wrapper span.caret { - color: initial; - position: absolute; - right: 0; - top: 0; - bottom: 0; - height: 10px; - margin: auto 0; - font-size: 10px; - line-height: 10px; -} - -.select-wrapper span.caret.disabled { - color: rgba(0, 0, 0, 0.26); -} - -.select-wrapper + label { - position: absolute; - top: -14px; - font-size: 0.8rem; -} - -select:disabled { - color: rgba(0, 0, 0, 0.3); -} - -.select-wrapper input.select-dropdown:disabled { - color: rgba(0, 0, 0, 0.3); - cursor: default; - -webkit-user-select: none; - /* webkit (safari, chrome) browsers */ - -moz-user-select: none; - /* mozilla browsers */ - -ms-user-select: none; - /* IE10+ */ - border-bottom: 1px solid rgba(0, 0, 0, 0.3); -} - -.select-wrapper i { - color: rgba(0, 0, 0, 0.3); -} - -.select-dropdown li.disabled, -.select-dropdown li.disabled > span, -.select-dropdown li.optgroup { - color: rgba(0, 0, 0, 0.3); - background-color: transparent; -} - -.prefix ~ .select-wrapper { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); -} - -.prefix ~ label { - margin-left: 3rem; -} - -.select-dropdown li img { - height: 40px; - width: 40px; - margin: 5px 15px; - float: right; -} - -.select-dropdown li.optgroup { - border-top: 1px solid #eee; -} - -.select-dropdown li.optgroup.selected > span { - color: rgba(0, 0, 0, 0.7); -} - -.select-dropdown li.optgroup > span { - color: rgba(0, 0, 0, 0.4); -} - -.select-dropdown li.optgroup ~ li.optgroup-option { - padding-left: 1rem; -} - -/* File Input - ========================================================================== */ -.file-field { - position: relative; -} - -.file-field .file-path-wrapper { - overflow: hidden; - padding-left: 10px; -} - -.file-field input.file-path { - width: 100%; -} - -.file-field .btn, .file-field .btn-large { - float: left; - height: 3rem; - line-height: 3rem; -} - -.file-field span { - cursor: pointer; -} - -.file-field input[type=file] { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - width: 100%; - margin: 0; - padding: 0; - font-size: 20px; - cursor: pointer; - opacity: 0; - filter: alpha(opacity=0); -} - -/* Range - ========================================================================== */ -.range-field { - position: relative; -} - -input[type=range], -input[type=range] + .thumb { - cursor: pointer; -} - -input[type=range] { - position: relative; - background-color: transparent; - border: none; - outline: none; - width: 100%; - margin: 15px 0; - padding: 0; -} - -input[type=range]:focus { - outline: none; -} - -input[type=range] + .thumb { - position: absolute; - border: none; - height: 0; - width: 0; - border-radius: 50%; - background-color: #26a69a; - top: 10px; - margin-left: -6px; - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -input[type=range] + .thumb .value { - display: block; - width: 30px; - text-align: center; - color: #26a69a; - font-size: 0; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); -} - -input[type=range] + .thumb.active { - border-radius: 50% 50% 50% 0; -} - -input[type=range] + .thumb.active .value { - color: #fff; - margin-left: -1px; - margin-top: 8px; - font-size: 10px; -} - -input[type=range] { - -webkit-appearance: none; -} - -input[type=range]::-webkit-slider-runnable-track { - height: 3px; - background: #c2c0c2; - border: none; -} - -input[type=range]::-webkit-slider-thumb { - -webkit-appearance: none; - border: none; - height: 14px; - width: 14px; - border-radius: 50%; - background-color: #26a69a; - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - margin: -5px 0 0 0; - transition: .3s; -} - -input[type=range]:focus::-webkit-slider-runnable-track { - background: #ccc; -} - -input[type=range] { - /* fix for FF unable to apply focus style bug */ - border: 1px solid white; - /*required for proper track sizing in FF*/ -} - -input[type=range]::-moz-range-track { - height: 3px; - background: #ddd; - border: none; -} - -input[type=range]::-moz-range-thumb { - border: none; - height: 14px; - width: 14px; - border-radius: 50%; - background: #26a69a; - margin-top: -5px; -} - -input[type=range]:-moz-focusring { - outline: 1px solid #fff; - outline-offset: -1px; -} - -input[type=range]:focus::-moz-range-track { - background: #ccc; -} - -input[type=range]::-ms-track { - height: 3px; - background: transparent; - border-color: transparent; - border-width: 6px 0; - /*remove default tick marks*/ - color: transparent; -} - -input[type=range]::-ms-fill-lower { - background: #777; -} - -input[type=range]::-ms-fill-upper { - background: #ddd; -} - -input[type=range]::-ms-thumb { - border: none; - height: 14px; - width: 14px; - border-radius: 50%; - background: #26a69a; -} - -input[type=range]:focus::-ms-fill-lower { - background: #888; -} - -input[type=range]:focus::-ms-fill-upper { - background: #ccc; -} - -/*************** - Nav List -***************/ -.table-of-contents.fixed { - position: fixed; -} - -.table-of-contents li { - padding: 2px 0; -} - -.table-of-contents a { - display: inline-block; - font-weight: 300; - color: #757575; - padding-left: 20px; - height: 1.5rem; - line-height: 1.5rem; - letter-spacing: .4; - display: inline-block; -} - -.table-of-contents a:hover { - color: #a8a8a8; - padding-left: 19px; - border-left: 1px solid #ee6e73; -} - -.table-of-contents a.active { - font-weight: 500; - padding-left: 18px; - border-left: 2px solid #ee6e73; -} - -.side-nav { - position: fixed; - width: 300px; - left: 0; - top: 0; - margin: 0; - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - height: 100%; - height: calc(100% + 60px); - height: -moz-calc(100%); - padding-bottom: 60px; - background-color: #fff; - z-index: 999; - overflow-y: auto; - will-change: transform; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: translateX(-105%); - transform: translateX(-105%); -} - -.side-nav.right-aligned { - right: 0; - -webkit-transform: translateX(105%); - transform: translateX(105%); - left: auto; - -webkit-transform: translateX(100%); - transform: translateX(100%); -} - -.side-nav .collapsible { - margin: 0; -} - -.side-nav li { - float: none; - line-height: 48px; -} - -.side-nav li.active { - background-color: rgba(0, 0, 0, 0.05); -} - -.side-nav a { - color: rgba(0, 0, 0, 0.87); - display: block; - font-size: 14px; - font-weight: 500; - height: 48px; - line-height: 48px; - padding: 0 32px; -} - -.side-nav a:hover { - background-color: rgba(0, 0, 0, 0.05); -} - -.side-nav a.btn, .side-nav a.btn-large, .side-nav a.btn-large, .side-nav a.btn-flat, .side-nav a.btn-floating { - margin: 10px 15px; -} - -.side-nav a.btn, .side-nav a.btn-large, .side-nav a.btn-large, .side-nav a.btn-floating { - color: #fff; -} - -.side-nav a.btn-flat { - color: #343434; -} - -.side-nav a.btn:hover, .side-nav a.btn-large:hover, .side-nav a.btn-large:hover { - background-color: #2bbbad; -} - -.side-nav a.btn-floating:hover { - background-color: #26a69a; -} - -.side-nav li > a > i, -.side-nav li > a > [class^="mdi-"], .side-nav li > a > [class*="mdi-"], -.side-nav li > a > i.material-icons { - float: left; - height: 48px; - line-height: 48px; - margin: 0 32px 0 0; - width: 24px; - color: rgba(0, 0, 0, 0.54); -} - -.side-nav .divider { - margin: 8px 0 0 0; -} - -.side-nav .subheader { - cursor: initial; - pointer-events: none; - color: rgba(0, 0, 0, 0.54); - font-size: 14px; - font-weight: 500; - line-height: 48px; -} - -.side-nav .subheader:hover { - background-color: transparent; -} - -.side-nav .userView { - position: relative; - padding: 32px 32px 0; - margin-bottom: 8px; -} - -.side-nav .userView > a { - height: auto; - padding: 0; -} - -.side-nav .userView > a:hover { - background-color: transparent; -} - -.side-nav .userView .background { - overflow: hidden; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: -1; -} - -.side-nav .userView .circle, .side-nav .userView .name, .side-nav .userView .email { - display: block; -} - -.side-nav .userView .circle { - height: 64px; - width: 64px; -} - -.side-nav .userView .name, -.side-nav .userView .email { - font-size: 14px; - line-height: 24px; -} - -.side-nav .userView .name { - margin-top: 16px; - font-weight: 500; -} - -.side-nav .userView .email { - padding-bottom: 16px; - font-weight: 400; -} - -.drag-target { - height: 100%; - width: 10px; - position: fixed; - top: 0; - z-index: 998; -} - -.side-nav.fixed { - left: 0; - -webkit-transform: translateX(0); - transform: translateX(0); - position: fixed; -} - -.side-nav.fixed.right-aligned { - right: 0; - left: auto; -} - -@media only screen and (max-width: 992px) { - .side-nav.fixed { - -webkit-transform: translateX(-105%); - transform: translateX(-105%); - } - .side-nav.fixed.right-aligned { - -webkit-transform: translateX(105%); - transform: translateX(105%); - } - .side-nav a { - padding: 0 16px; - } - .side-nav .userView { - padding: 16px 16px 0; - } -} - -.side-nav .collapsible-body > ul:not(.collapsible) > li.active, -.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active { - background-color: #ee6e73; -} - -.side-nav .collapsible-body > ul:not(.collapsible) > li.active a, -.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active a { - color: #fff; -} - -#sidenav-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - height: 120vh; - background-color: rgba(0, 0, 0, 0.5); - z-index: 997; - will-change: opacity; -} - -/* - @license - Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - Code distributed by Google as part of the polymer project is also - subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -/**************************/ -/* STYLES FOR THE SPINNER */ -/**************************/ -/* - * Constants: - * STROKEWIDTH = 3px - * ARCSIZE = 270 degrees (amount of circle the arc takes up) - * ARCTIME = 1333ms (time it takes to expand and contract arc) - * ARCSTARTROT = 216 degrees (how much the start location of the arc - * should rotate each time, 216 gives us a - * 5 pointed star shape (it's 360/5 * 3). - * For a 7 pointed star, we might do - * 360/7 * 3 = 154.286) - * CONTAINERWIDTH = 28px - * SHRINK_TIME = 400ms - */ -.preloader-wrapper { - display: inline-block; - position: relative; - width: 48px; - height: 48px; -} - -.preloader-wrapper.small { - width: 36px; - height: 36px; -} - -.preloader-wrapper.big { - width: 64px; - height: 64px; -} - -.preloader-wrapper.active { - /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ - -webkit-animation: container-rotate 1568ms linear infinite; - animation: container-rotate 1568ms linear infinite; -} - -@-webkit-keyframes container-rotate { - to { - -webkit-transform: rotate(360deg); - } -} - -@keyframes container-rotate { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -.spinner-layer { - position: absolute; - width: 100%; - height: 100%; - opacity: 0; - border-color: #26a69a; -} - -.spinner-blue, -.spinner-blue-only { - border-color: #4285f4; -} - -.spinner-red, -.spinner-red-only { - border-color: #db4437; -} - -.spinner-yellow, -.spinner-yellow-only { - border-color: #f4b400; -} - -.spinner-green, -.spinner-green-only { - border-color: #0f9d58; -} - -/** - * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): - * - * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't - * guarantee that the animation will start _exactly_ after that value. So we avoid using - * animation-delay and instead set custom keyframes for each color (as redundant as it - * seems). - * - * We write out each animation in full (instead of separating animation-name, - * animation-duration, etc.) because under the polyfill, Safari does not recognize those - * specific properties properly, treats them as -webkit-animation, and overrides the - * other animation rules. See https://github.com/Polymer/platform/issues/53. - */ -.active .spinner-layer.spinner-blue { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -.active .spinner-layer.spinner-red { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -.active .spinner-layer.spinner-yellow { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -.active .spinner-layer.spinner-green { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -.active .spinner-layer, -.active .spinner-layer.spinner-blue-only, -.active .spinner-layer.spinner-red-only, -.active .spinner-layer.spinner-yellow-only, -.active .spinner-layer.spinner-green-only { - /* durations: 4 * ARCTIME */ - opacity: 1; - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -@-webkit-keyframes fill-unfill-rotate { - 12.5% { - -webkit-transform: rotate(135deg); - } - /* 0.5 * ARCSIZE */ - 25% { - -webkit-transform: rotate(270deg); - } - /* 1 * ARCSIZE */ - 37.5% { - -webkit-transform: rotate(405deg); - } - /* 1.5 * ARCSIZE */ - 50% { - -webkit-transform: rotate(540deg); - } - /* 2 * ARCSIZE */ - 62.5% { - -webkit-transform: rotate(675deg); - } - /* 2.5 * ARCSIZE */ - 75% { - -webkit-transform: rotate(810deg); - } - /* 3 * ARCSIZE */ - 87.5% { - -webkit-transform: rotate(945deg); - } - /* 3.5 * ARCSIZE */ - to { - -webkit-transform: rotate(1080deg); - } - /* 4 * ARCSIZE */ -} - -@keyframes fill-unfill-rotate { - 12.5% { - -webkit-transform: rotate(135deg); - transform: rotate(135deg); - } - /* 0.5 * ARCSIZE */ - 25% { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); - } - /* 1 * ARCSIZE */ - 37.5% { - -webkit-transform: rotate(405deg); - transform: rotate(405deg); - } - /* 1.5 * ARCSIZE */ - 50% { - -webkit-transform: rotate(540deg); - transform: rotate(540deg); - } - /* 2 * ARCSIZE */ - 62.5% { - -webkit-transform: rotate(675deg); - transform: rotate(675deg); - } - /* 2.5 * ARCSIZE */ - 75% { - -webkit-transform: rotate(810deg); - transform: rotate(810deg); - } - /* 3 * ARCSIZE */ - 87.5% { - -webkit-transform: rotate(945deg); - transform: rotate(945deg); - } - /* 3.5 * ARCSIZE */ - to { - -webkit-transform: rotate(1080deg); - transform: rotate(1080deg); - } - /* 4 * ARCSIZE */ -} - -@-webkit-keyframes blue-fade-in-out { - from { - opacity: 1; - } - 25% { - opacity: 1; - } - 26% { - opacity: 0; - } - 89% { - opacity: 0; - } - 90% { - opacity: 1; - } - 100% { - opacity: 1; - } -} - -@keyframes blue-fade-in-out { - from { - opacity: 1; - } - 25% { - opacity: 1; - } - 26% { - opacity: 0; - } - 89% { - opacity: 0; - } - 90% { - opacity: 1; - } - 100% { - opacity: 1; - } -} - -@-webkit-keyframes red-fade-in-out { - from { - opacity: 0; - } - 15% { - opacity: 0; - } - 25% { - opacity: 1; - } - 50% { - opacity: 1; - } - 51% { - opacity: 0; - } -} - -@keyframes red-fade-in-out { - from { - opacity: 0; - } - 15% { - opacity: 0; - } - 25% { - opacity: 1; - } - 50% { - opacity: 1; - } - 51% { - opacity: 0; - } -} - -@-webkit-keyframes yellow-fade-in-out { - from { - opacity: 0; - } - 40% { - opacity: 0; - } - 50% { - opacity: 1; - } - 75% { - opacity: 1; - } - 76% { - opacity: 0; - } -} - -@keyframes yellow-fade-in-out { - from { - opacity: 0; - } - 40% { - opacity: 0; - } - 50% { - opacity: 1; - } - 75% { - opacity: 1; - } - 76% { - opacity: 0; - } -} - -@-webkit-keyframes green-fade-in-out { - from { - opacity: 0; - } - 65% { - opacity: 0; - } - 75% { - opacity: 1; - } - 90% { - opacity: 1; - } - 100% { - opacity: 0; - } -} - -@keyframes green-fade-in-out { - from { - opacity: 0; - } - 65% { - opacity: 0; - } - 75% { - opacity: 1; - } - 90% { - opacity: 1; - } - 100% { - opacity: 0; - } -} - -/** - * Patch the gap that appear between the two adjacent div.circle-clipper while the - * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). - */ -.gap-patch { - position: absolute; - top: 0; - left: 45%; - width: 10%; - height: 100%; - overflow: hidden; - border-color: inherit; -} - -.gap-patch .circle { - width: 1000%; - left: -450%; -} - -.circle-clipper { - display: inline-block; - position: relative; - width: 50%; - height: 100%; - overflow: hidden; - border-color: inherit; -} - -.circle-clipper .circle { - width: 200%; - height: 100%; - border-width: 3px; - /* STROKEWIDTH */ - border-style: solid; - border-color: inherit; - border-bottom-color: transparent !important; - border-radius: 50%; - -webkit-animation: none; - animation: none; - position: absolute; - top: 0; - right: 0; - bottom: 0; -} - -.circle-clipper.left .circle { - left: 0; - border-right-color: transparent !important; - -webkit-transform: rotate(129deg); - transform: rotate(129deg); -} - -.circle-clipper.right .circle { - left: -100%; - border-left-color: transparent !important; - -webkit-transform: rotate(-129deg); - transform: rotate(-129deg); -} - -.active .circle-clipper.left .circle { - /* duration: ARCTIME */ - -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -.active .circle-clipper.right .circle { - /* duration: ARCTIME */ - -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; -} - -@-webkit-keyframes left-spin { - from { - -webkit-transform: rotate(130deg); - } - 50% { - -webkit-transform: rotate(-5deg); - } - to { - -webkit-transform: rotate(130deg); - } -} - -@keyframes left-spin { - from { - -webkit-transform: rotate(130deg); - transform: rotate(130deg); - } - 50% { - -webkit-transform: rotate(-5deg); - transform: rotate(-5deg); - } - to { - -webkit-transform: rotate(130deg); - transform: rotate(130deg); - } -} - -@-webkit-keyframes right-spin { - from { - -webkit-transform: rotate(-130deg); - } - 50% { - -webkit-transform: rotate(5deg); - } - to { - -webkit-transform: rotate(-130deg); - } -} - -@keyframes right-spin { - from { - -webkit-transform: rotate(-130deg); - transform: rotate(-130deg); - } - 50% { - -webkit-transform: rotate(5deg); - transform: rotate(5deg); - } - to { - -webkit-transform: rotate(-130deg); - transform: rotate(-130deg); - } -} - -#spinnerContainer.cooldown { - /* duration: SHRINK_TIME */ - -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); - animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); -} - -@-webkit-keyframes fade-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -@keyframes fade-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -.slider { - position: relative; - height: 400px; - width: 100%; -} - -.slider.fullscreen { - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.slider.fullscreen ul.slides { - height: 100%; -} - -.slider.fullscreen ul.indicators { - z-index: 2; - bottom: 30px; -} - -.slider .slides { - background-color: #9e9e9e; - margin: 0; - height: 400px; -} - -.slider .slides li { - opacity: 0; - position: absolute; - top: 0; - left: 0; - z-index: 1; - width: 100%; - height: inherit; - overflow: hidden; -} - -.slider .slides li img { - height: 100%; - width: 100%; - background-size: cover; - background-position: center; -} - -.slider .slides li .caption { - color: #fff; - position: absolute; - top: 15%; - left: 15%; - width: 70%; - opacity: 0; -} - -.slider .slides li .caption p { - color: #e0e0e0; -} - -.slider .slides li.active { - z-index: 2; -} - -.slider .indicators { - position: absolute; - text-align: center; - left: 0; - right: 0; - bottom: 0; - margin: 0; -} - -.slider .indicators .indicator-item { - display: inline-block; - position: relative; - cursor: pointer; - height: 16px; - width: 16px; - margin: 0 12px; - background-color: #e0e0e0; - transition: background-color .3s; - border-radius: 50%; -} - -.slider .indicators .indicator-item.active { - background-color: #4CAF50; -} - -.carousel { - overflow: hidden; - position: relative; - width: 100%; - height: 400px; - -webkit-perspective: 500px; - perspective: 500px; - -webkit-transform-style: preserve-3d; - transform-style: preserve-3d; - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; -} - -.carousel.carousel-slider { - top: 0; - left: 0; - height: 0; -} - -.carousel.carousel-slider .carousel-fixed-item { - position: absolute; - left: 0; - right: 0; - bottom: 20px; - z-index: 1; -} - -.carousel.carousel-slider .carousel-fixed-item.with-indicators { - bottom: 68px; -} - -.carousel.carousel-slider .carousel-item { - width: 100%; - height: 100%; - min-height: 400px; - position: absolute; - top: 0; - left: 0; -} - -.carousel.carousel-slider .carousel-item h2 { - font-size: 24px; - font-weight: 500; - line-height: 32px; -} - -.carousel.carousel-slider .carousel-item p { - font-size: 15px; -} - -.carousel .carousel-item { - display: none; - width: 200px; - height: 200px; - position: absolute; - top: 0; - left: 0; -} - -.carousel .carousel-item img { - width: 100%; -} - -.carousel .indicators { - position: absolute; - text-align: center; - left: 0; - right: 0; - bottom: 0; - margin: 0; -} - -.carousel .indicators .indicator-item { - display: inline-block; - position: relative; - cursor: pointer; - height: 8px; - width: 8px; - margin: 24px 4px; - background-color: rgba(255, 255, 255, 0.5); - transition: background-color .3s; - border-radius: 50%; -} - -.carousel .indicators .indicator-item.active { - background-color: #fff; -} - -/* ========================================================================== - $BASE-PICKER - ========================================================================== */ -/** - * Note: the root picker element should *NOT* be styled more than what's here. - */ -.picker { - font-size: 16px; - text-align: left; - line-height: 1.2; - color: #000000; - position: absolute; - z-index: 10000; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -/** - * The picker input element. - */ -.picker__input { - cursor: default; -} - -/** - * When the picker is opened, the input element is "activated". - */ -.picker__input.picker__input--active { - border-color: #0089ec; -} - -/** - * The holder is the only "scrollable" top-level container element. - */ -.picker__holder { - width: 100%; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */ -/** - * Note: the root picker element should *NOT* be styled more than what's here. - */ -/** - * Make the holder and frame fullscreen. - */ -.picker__holder, -.picker__frame { - bottom: 0; - left: 0; - right: 0; - top: 100%; -} - -/** - * The holder should overlay the entire screen. - */ -.picker__holder { - position: fixed; - transition: background 0.15s ease-out, top 0s 0.15s; - -webkit-backface-visibility: hidden; -} - -/** - * The frame that bounds the box contents of the picker. - */ -.picker__frame { - position: absolute; - margin: 0 auto; - min-width: 256px; - width: 300px; - max-height: 350px; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; - transition: all 0.15s ease-out; -} - -@media (min-height: 28.875em) { - .picker__frame { - overflow: visible; - top: auto; - bottom: -100%; - max-height: 80%; - } -} - -@media (min-height: 40.125em) { - .picker__frame { - margin-bottom: 7.5%; - } -} - -/** - * The wrapper sets the stage to vertically align the box contents. - */ -.picker__wrap { - display: table; - width: 100%; - height: 100%; -} - -@media (min-height: 28.875em) { - .picker__wrap { - display: block; - } -} - -/** - * The box contains all the picker contents. - */ -.picker__box { - background: #ffffff; - display: table-cell; - vertical-align: middle; -} - -@media (min-height: 28.875em) { - .picker__box { - display: block; - border: 1px solid #777777; - border-top-color: #898989; - border-bottom-width: 0; - border-radius: 5px 5px 0 0; - box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); - } -} - -/** - * When the picker opens... - */ -.picker--opened .picker__holder { - top: 0; - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; - zoom: 1; - background: rgba(0, 0, 0, 0.32); - transition: background 0.15s ease-out; -} - -.picker--opened .picker__frame { - top: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); - -moz-opacity: 1; - opacity: 1; -} - -@media (min-height: 35.875em) { - .picker--opened .picker__frame { - top: 10%; - bottom: auto; - } -} - -/** - * For `large` screens, transform into an inline picker. - */ -/* ========================================================================== - CUSTOM MATERIALIZE STYLES - ========================================================================== */ -.picker__input.picker__input--active { - border-color: #E3F2FD; -} - -.picker__frame { - margin: 0 auto; - max-width: 325px; -} - -@media (min-height: 38.875em) { - .picker--opened .picker__frame { - top: 10%; - bottom: auto; - } -} - -/* ========================================================================== - $BASE-DATE-PICKER - ========================================================================== */ -/** - * The picker box. - */ -.picker__box { - padding: 0 1em; -} - -/** - * The header containing the month and year stuff. - */ -.picker__header { - text-align: center; - position: relative; - margin-top: .75em; -} - -/** - * The month and year labels. - */ -.picker__month, -.picker__year { - display: inline-block; - margin-left: .25em; - margin-right: .25em; -} - -/** - * The month and year selectors. - */ -.picker__select--month, -.picker__select--year { - height: 2em; - padding: 0; - margin-left: .25em; - margin-right: .25em; -} - -.picker__select--month.browser-default { - display: inline; - background-color: #FFFFFF; - width: 40%; -} - -.picker__select--year.browser-default { - display: inline; - background-color: #FFFFFF; - width: 26%; -} - -.picker__select--month:focus, -.picker__select--year:focus { - border-color: rgba(0, 0, 0, 0.05); -} - -/** - * The month navigation buttons. - */ -.picker__nav--prev, -.picker__nav--next { - position: absolute; - padding: .5em 1.25em; - width: 1em; - height: 1em; - box-sizing: content-box; - top: -0.25em; -} - -.picker__nav--prev { - left: -1em; - padding-right: 1.25em; -} - -.picker__nav--next { - right: -1em; - padding-left: 1.25em; -} - -.picker__nav--disabled, -.picker__nav--disabled:hover, -.picker__nav--disabled:before, -.picker__nav--disabled:before:hover { - cursor: default; - background: none; - border-right-color: #f5f5f5; - border-left-color: #f5f5f5; -} - -/** - * The calendar table of dates - */ -.picker__table { - text-align: center; - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; - font-size: 1rem; - width: 100%; - margin-top: .75em; - margin-bottom: .5em; -} - -.picker__table th, .picker__table td { - text-align: center; -} - -.picker__table td { - margin: 0; - padding: 0; -} - -/** - * The weekday labels - */ -.picker__weekday { - width: 14.285714286%; - font-size: .75em; - padding-bottom: .25em; - color: #999999; - font-weight: 500; - /* Increase the spacing a tad */ -} - -@media (min-height: 33.875em) { - .picker__weekday { - padding-bottom: .5em; - } -} - -/** - * The days on the calendar - */ -.picker__day--today { - position: relative; - color: #595959; - letter-spacing: -.3; - padding: .75rem 0; - font-weight: 400; - border: 1px solid transparent; -} - -.picker__day--disabled:before { - border-top-color: #aaaaaa; -} - -.picker__day--infocus:hover { - cursor: pointer; - color: #000; - font-weight: 500; -} - -.picker__day--outfocus { - display: none; - padding: .75rem 0; - color: #fff; -} - -.picker__day--outfocus:hover { - cursor: pointer; - color: #dddddd; - font-weight: 500; -} - -.picker__day--highlighted:hover, -.picker--focused .picker__day--highlighted { - cursor: pointer; -} - -.picker__day--selected, -.picker__day--selected:hover, -.picker--focused .picker__day--selected { - border-radius: 50%; - -webkit-transform: scale(0.75); - transform: scale(0.75); - background: #0089ec; - color: #ffffff; -} - -.picker__day--disabled, -.picker__day--disabled:hover, -.picker--focused .picker__day--disabled { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; -} - -.picker__day--highlighted.picker__day--disabled, -.picker__day--highlighted.picker__day--disabled:hover { - background: #bbbbbb; -} - -/** - * The footer containing the "today", "clear", and "close" buttons. - */ -.picker__footer { - text-align: center; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.picker__button--today, -.picker__button--clear, -.picker__button--close { - border: 1px solid #ffffff; - background: #ffffff; - font-size: .8em; - padding: .66em 0; - font-weight: bold; - width: 33%; - display: inline-block; - vertical-align: bottom; -} - -.picker__button--today:hover, -.picker__button--clear:hover, -.picker__button--close:hover { - cursor: pointer; - color: #000000; - background: #b1dcfb; - border-bottom-color: #b1dcfb; -} - -.picker__button--today:focus, -.picker__button--clear:focus, -.picker__button--close:focus { - background: #b1dcfb; - border-color: rgba(0, 0, 0, 0.05); - outline: none; -} - -.picker__button--today:before, -.picker__button--clear:before, -.picker__button--close:before { - position: relative; - display: inline-block; - height: 0; -} - -.picker__button--today:before, -.picker__button--clear:before { - content: " "; - margin-right: .45em; -} - -.picker__button--today:before { - top: -0.05em; - width: 0; - border-top: 0.66em solid #0059bc; - border-left: .66em solid transparent; -} - -.picker__button--clear:before { - top: -0.25em; - width: .66em; - border-top: 3px solid #ee2200; -} - -.picker__button--close:before { - content: "\D7"; - top: -0.1em; - vertical-align: top; - font-size: 1.1em; - margin-right: .35em; - color: #777777; -} - -.picker__button--today[disabled], -.picker__button--today[disabled]:hover { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; -} - -.picker__button--today[disabled]:before { - border-top-color: #aaaaaa; -} - -/* ========================================================================== - CUSTOM MATERIALIZE STYLES - ========================================================================== */ -.picker__box { - border-radius: 2px; - overflow: hidden; -} - -.picker__date-display { - text-align: center; - background-color: #26a69a; - color: #fff; - padding-bottom: 15px; - font-weight: 300; -} - -.picker__nav--prev:hover, -.picker__nav--next:hover { - cursor: pointer; - color: #000000; - background: #a1ded8; -} - -.picker__weekday-display { - background-color: #1f897f; - padding: 10px; - font-weight: 200; - letter-spacing: .5; - font-size: 1rem; - margin-bottom: 15px; -} - -.picker__month-display { - text-transform: uppercase; - font-size: 2rem; -} - -.picker__day-display { - font-size: 4.5rem; - font-weight: 400; -} - -.picker__year-display { - font-size: 1.8rem; - color: rgba(255, 255, 255, 0.4); -} - -.picker__box { - padding: 0; -} - -.picker__calendar-container { - padding: 0 1rem; -} - -.picker__calendar-container thead { - border: none; -} - -.picker__table { - margin-top: 0; - margin-bottom: .5em; -} - -.picker__day--infocus { - color: #595959; - letter-spacing: -.3; - padding: .75rem 0; - font-weight: 400; - border: 1px solid transparent; -} - -.picker__day.picker__day--today { - color: #26a69a; -} - -.picker__day.picker__day--today.picker__day--selected { - color: #fff; -} - -.picker__weekday { - font-size: .9rem; -} - -.picker__day--selected, -.picker__day--selected:hover, -.picker--focused .picker__day--selected { - border-radius: 50%; - -webkit-transform: scale(0.9); - transform: scale(0.9); - background-color: #26a69a; - color: #ffffff; -} - -.picker__day--selected.picker__day--outfocus, -.picker__day--selected:hover.picker__day--outfocus, -.picker--focused .picker__day--selected.picker__day--outfocus { - background-color: #a1ded8; -} - -.picker__footer { - text-align: right; - padding: 5px 10px; -} - -.picker__close, .picker__today { - font-size: 1.1rem; - padding: 0 1rem; - color: #26a69a; -} - -.picker__nav--prev:before, -.picker__nav--next:before { - content: " "; - border-top: .5em solid transparent; - border-bottom: .5em solid transparent; - border-right: 0.75em solid #676767; - width: 0; - height: 0; - display: block; - margin: 0 auto; -} - -.picker__nav--next:before { - border-right: 0; - border-left: 0.75em solid #676767; -} - -button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { - background-color: #a1ded8; -} - -/* ========================================================================== - $BASE-TIME-PICKER - ========================================================================== */ -/** - * The list of times. - */ -.picker__list { - list-style: none; - padding: 0.75em 0 4.2em; - margin: 0; -} - -/** - * The times on the clock. - */ -.picker__list-item { - border-bottom: 1px solid #dddddd; - border-top: 1px solid #dddddd; - margin-bottom: -1px; - position: relative; - background: #ffffff; - padding: .75em 1.25em; -} - -@media (min-height: 46.75em) { - .picker__list-item { - padding: .5em 1em; - } -} - -/* Hovered time */ -.picker__list-item:hover { - cursor: pointer; - color: #000000; - background: #b1dcfb; - border-color: #0089ec; - z-index: 10; -} - -/* Highlighted and hovered/focused time */ -.picker__list-item--highlighted { - border-color: #0089ec; - z-index: 10; -} - -.picker__list-item--highlighted:hover, -.picker--focused .picker__list-item--highlighted { - cursor: pointer; - color: #000000; - background: #b1dcfb; -} - -/* Selected and hovered/focused time */ -.picker__list-item--selected, -.picker__list-item--selected:hover, -.picker--focused .picker__list-item--selected { - background: #0089ec; - color: #ffffff; - z-index: 10; -} - -/* Disabled time */ -.picker__list-item--disabled, -.picker__list-item--disabled:hover, -.picker--focused .picker__list-item--disabled { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; - border-color: #dddddd; - z-index: auto; -} - -/** - * The clear button - */ -.picker--time .picker__button--clear { - display: block; - width: 80%; - margin: 1em auto 0; - padding: 1em 1.25em; - background: none; - border: 0; - font-weight: 500; - font-size: .67em; - text-align: center; - text-transform: uppercase; - color: #666; -} - -.picker--time .picker__button--clear:hover, -.picker--time .picker__button--clear:focus { - color: #000000; - background: #b1dcfb; - background: #ee2200; - border-color: #ee2200; - cursor: pointer; - color: #ffffff; - outline: none; -} - -.picker--time .picker__button--clear:before { - top: -0.25em; - color: #666; - font-size: 1.25em; - font-weight: bold; -} - -.picker--time .picker__button--clear:hover:before, -.picker--time .picker__button--clear:focus:before { - color: #ffffff; -} - -/* ========================================================================== - $DEFAULT-TIME-PICKER - ========================================================================== */ -/** - * The frame the bounds the time picker. - */ -.picker--time .picker__frame { - min-width: 256px; - max-width: 320px; -} - -/** - * The picker box. - */ -.picker--time .picker__box { - font-size: 1em; - background: #f2f2f2; - padding: 0; -} - -@media (min-height: 40.125em) { - .picker--time .picker__box { - margin-bottom: 5em; - } -} diff --git a/node_modules/materialize-css/dist/css/materialize.min.css b/node_modules/materialize-css/dist/css/materialize.min.css deleted file mode 100644 index 9104745..0000000 --- a/node_modules/materialize-css/dist/css/materialize.min.css +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * Materialize v0.98.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default) li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.valign-wrapper .valign{display:block}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12),0 3px 1px -2px rgba(0,0,0,0.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2)}.z-depth-2{box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3)}.z-depth-3{box-shadow:0 6px 10px 0 rgba(0,0,0,0.14),0 1px 18px 0 rgba(0,0,0,0.12),0 3px 5px -1px rgba(0,0,0,0.3)}.z-depth-4,.modal{box-shadow:0 8px 10px 1px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.3)}.z-depth-5{box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -5px rgba(0,0,0,0.3)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}footer.page-footer{padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-top:calc(1.5rem - 11px)}.side-nav span.badge{margin-top:calc(24px - 11px)}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.container .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .button-collapse i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../fonts/roboto/Roboto-Thin.eot");src:url("../fonts/roboto/Roboto-Thin.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"),url("../fonts/roboto/Roboto-Thin.woff") format("woff"),url("../fonts/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../fonts/roboto/Roboto-Light.eot");src:url("../fonts/roboto/Roboto-Light.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Light.woff2") format("woff2"),url("../fonts/roboto/Roboto-Light.woff") format("woff"),url("../fonts/roboto/Roboto-Light.ttf") format("truetype");font-weight:300}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../fonts/roboto/Roboto-Regular.eot");src:url("../fonts/roboto/Roboto-Regular.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"),url("../fonts/roboto/Roboto-Regular.woff") format("woff"),url("../fonts/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Medium.eot");src:url("../fonts/roboto/Roboto-Medium.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"),url("../fonts/roboto/Roboto-Medium.woff") format("woff"),url("../fonts/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500}@font-face{font-family:"Roboto";src:url("../fonts/roboto/Roboto-Bold.eot");src:url("../fonts/roboto/Roboto-Bold.eot?#iefix") format("embedded-opentype"),url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"),url("../fonts/roboto/Roboto-Bold.woff") format("woff"),url("../fonts/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem 0}h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem 0}h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}}.scale-transition{transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s, -webkit-transform .2s !important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{transition:box-shadow .25s;padding:24px;margin:.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);padding:16px 24px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width: 601px) and (max-width: 992px){.toast{float:left}}@media only screen and (min-width: 993px){.toast{float:right}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,0.7)}.tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,0.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease}.tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,0.7);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}@media only screen and (max-width: 992px){.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden}.backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-flat:disabled,.btn[disabled],[disabled].btn-large,.btn-floating[disabled],.btn-large[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,[disabled].btn-large:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-flat[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important}.btn,.btn-large,.btn-floating,.btn-large,.btn-flat{outline:0}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn:focus,.btn-large:focus,.btn-floating:focus{background-color:#1d7d74}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px}.btn-floating.btn-large i{line-height:56px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0}.fixed-action-btn.toolbar ul li{-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;transition:background-color .2s}.btn-flat:focus,.btn-flat:active{background-color:transparent}.btn-flat:focus,.btn-flat:hover{background-color:rgba(0,0,0,0.1);box-shadow:none}.btn-flat:active{background-color:rgba(0,0,0,0.2)}.btn-flat.disabled{background-color:transparent !important;color:#b3b3b3 !important;cursor:default}.btn-large{height:54px;line-height:54px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit}.input-field.col .dropdown-content [type="checkbox"]+label{top:1px;left:0;height:18px}/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);transition:all 0.7s ease-out;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, #fff 100%, #000 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;box-shadow:none;margin:0 0 20px 0;min-height:45px;outline:none;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;box-shadow:none !important}.prefix ~ .chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty ~ label{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;box-shadow:none;box-sizing:content-box;transition:all 0.3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime]:disabled,input[type=datetime][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime]:disabled+label,input[type=datetime][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input:not([type]):focus:not([readonly]),input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]).valid,input:not([type]):focus.valid,input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime].valid,input[type=datetime]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime].valid+label:after,input[type=datetime]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input:not([type]).invalid,input:not([type]):focus.invalid,input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime].invalid,input[type=datetime]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime].invalid+label:after,input[type=datetime]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input:not([type]).validate+label,input[type=text].validate+label,input[type=password].validate+label,input[type=email].validate+label,input[type=url].validate+label,input[type=time].validate+label,input[type=date].validate+label,input[type=datetime].validate+label,input[type=datetime-local].validate+label,input[type=tel].validate+label,input[type=number].validate+label,input[type=search].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:60px;opacity:0;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0;font-size:1rem;cursor:text;transition:.2s ease-out}.input-field label:not(.label-icon).active{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.autocomplete-content{margin-top:-15px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;opacity:0}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;transition:.28s ease}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after,[type="radio"]:checked+label:before,[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border-radius:50%}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border:2px solid transparent}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border:2px solid #26a69a}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:after{background-color:#26a69a}[type="radio"]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;opacity:0}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before,[type="checkbox"]:not(.filled-in)+label:after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type="checkbox"]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,0.05)}.side-nav a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav a:hover{background-color:rgba(0,0,0,0.05)}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-flat,.side-nav a.btn-floating{margin:10px 15px}.side-nav a.btn,.side-nav a.btn-large,.side-nav a.btn-large,.side-nav a.btn-floating{color:#fff}.side-nav a.btn-flat{color:#343434}.side-nav a.btn:hover,.side-nav a.btn-large:hover,.side-nav a.btn-large:hover{background-color:#2bbbad}.side-nav a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>i,.side-nav li>a>[class^="mdi-"],.side-nav li>a>[class*="mdi-"],.side-nav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.side-nav .divider{margin:8px 0 0 0}.side-nav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView>a{height:auto;padding:0}.side-nav .userView>a:hover{background-color:transparent}.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .name,.side-nav .userView .email{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .name,.side-nav .userView .email{font-size:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background 0.15s ease-out, top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.75);transform:scale(0.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.9);transform:scale(0.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}} diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.eot b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.eot deleted file mode 100644 index b73776e..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.eot and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.ttf b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.ttf deleted file mode 100644 index 68822ca..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.ttf and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.woff b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.woff deleted file mode 100644 index 1f75afd..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.woff and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.woff2 b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.woff2 deleted file mode 100644 index 350d1c3..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Bold.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.eot b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.eot deleted file mode 100644 index 072cdc4..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.eot and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.ttf b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.ttf deleted file mode 100644 index aa45340..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.ttf and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.woff b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.woff deleted file mode 100644 index 3480c6c..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.woff and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.woff2 b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.woff2 deleted file mode 100644 index 9a4d98c..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Light.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.eot b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.eot deleted file mode 100644 index f9ad995..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.eot and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.ttf b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.ttf deleted file mode 100644 index a3c1a1f..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.ttf and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.woff b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.woff deleted file mode 100644 index 1186773..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.woff and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.woff2 b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.woff2 deleted file mode 100644 index d10a592..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Medium.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.eot b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.eot deleted file mode 100644 index 9b5e8e4..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.eot and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.ttf b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.ttf deleted file mode 100644 index 0e58508..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.ttf and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.woff b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.woff deleted file mode 100644 index f823258..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.woff and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.woff2 b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.woff2 deleted file mode 100644 index b7082ef..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Regular.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.eot b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.eot deleted file mode 100644 index 2284a3b..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.eot and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.ttf b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.ttf deleted file mode 100644 index 8779333..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.ttf and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.woff b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.woff deleted file mode 100644 index 2a98c1e..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.woff and /dev/null differ diff --git a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.woff2 b/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.woff2 deleted file mode 100644 index a38025a..0000000 Binary files a/node_modules/materialize-css/dist/fonts/roboto/Roboto-Thin.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/dist/js/materialize.js b/node_modules/materialize-css/dist/js/materialize.js deleted file mode 100644 index 8c994c4..0000000 --- a/node_modules/materialize-css/dist/js/materialize.js +++ /dev/null @@ -1,8031 +0,0 @@ -/*! - * Materialize v0.98.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -// Check for jQuery. -if (typeof(jQuery) === 'undefined') { - var jQuery; - // Check if require is a defined function. - if (typeof(require) === 'function') { - jQuery = $ = require('jquery'); - // Else use the dollar sign alias. - } else { - jQuery = $; - } -} -;/* - * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ - * - * Uses the built in easing capabilities added In jQuery 1.1 - * to offer multiple easing options - * - * TERMS OF USE - jQuery Easing - * - * Open source under the BSD License. - * - * Copyright © 2008 George McGinley Smith - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * -*/ - -// t: current time, b: begInnIng value, c: change In value, d: duration -jQuery.easing['jswing'] = jQuery.easing['swing']; - -jQuery.extend( jQuery.easing, -{ - def: 'easeOutQuad', - swing: function (x, t, b, c, d) { - //alert(jQuery.easing.default); - return jQuery.easing[jQuery.easing.def](x, t, b, c, d); - }, - easeInQuad: function (x, t, b, c, d) { - return c*(t/=d)*t + b; - }, - easeOutQuad: function (x, t, b, c, d) { - return -c *(t/=d)*(t-2) + b; - }, - easeInOutQuad: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t + b; - return -c/2 * ((--t)*(t-2) - 1) + b; - }, - easeInCubic: function (x, t, b, c, d) { - return c*(t/=d)*t*t + b; - }, - easeOutCubic: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t + 1) + b; - }, - easeInOutCubic: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t + b; - return c/2*((t-=2)*t*t + 2) + b; - }, - easeInQuart: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t + b; - }, - easeOutQuart: function (x, t, b, c, d) { - return -c * ((t=t/d-1)*t*t*t - 1) + b; - }, - easeInOutQuart: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t + b; - return -c/2 * ((t-=2)*t*t*t - 2) + b; - }, - easeInQuint: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t*t + b; - }, - easeOutQuint: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t*t*t + 1) + b; - }, - easeInOutQuint: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; - return c/2*((t-=2)*t*t*t*t + 2) + b; - }, - easeInSine: function (x, t, b, c, d) { - return -c * Math.cos(t/d * (Math.PI/2)) + c + b; - }, - easeOutSine: function (x, t, b, c, d) { - return c * Math.sin(t/d * (Math.PI/2)) + b; - }, - easeInOutSine: function (x, t, b, c, d) { - return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; - }, - easeInExpo: function (x, t, b, c, d) { - return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; - }, - easeOutExpo: function (x, t, b, c, d) { - return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; - }, - easeInOutExpo: function (x, t, b, c, d) { - if (t==0) return b; - if (t==d) return b+c; - if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; - return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; - }, - easeInCirc: function (x, t, b, c, d) { - return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; - }, - easeOutCirc: function (x, t, b, c, d) { - return c * Math.sqrt(1 - (t=t/d-1)*t) + b; - }, - easeInOutCirc: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; - return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; - }, - easeInElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - }, - easeOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; - }, - easeInOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; - }, - easeInBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*(t/=d)*t*((s+1)*t - s) + b; - }, - easeOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; - }, - easeInOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; - return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; - }, - easeInBounce: function (x, t, b, c, d) { - return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; - }, - easeOutBounce: function (x, t, b, c, d) { - if ((t/=d) < (1/2.75)) { - return c*(7.5625*t*t) + b; - } else if (t < (2/2.75)) { - return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; - } else if (t < (2.5/2.75)) { - return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; - } else { - return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; - } - }, - easeInOutBounce: function (x, t, b, c, d) { - if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; - return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; - } -}); - -/* - * - * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * - * Copyright © 2001 Robert Penner - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - */;// Custom Easing -jQuery.extend( jQuery.easing, -{ - easeInOutMaterial: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t + b; - return c/4*((t-=2)*t*t + 2) + b; - } -});;/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ -/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ -/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */ -jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(e){function t(e){var t=e.length,a=r.type(e);return"function"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===a||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e},r.isArray=Array.isArray||function(e){return"array"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||"object"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,"constructor")&&!o.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[l]||{},l++),"object"!=typeof s&&"function"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||"fx")+"queue";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||"fx";var n=r.queue(a,t),o=n.shift();"inprogress"===o&&(o=n.shift()),o&&("fx"===t&&n.unshift("inprogress"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando="velocity"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s="Boolean Number String Function Array Date RegExp Object Error".split(" "),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var T=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];f.each(T,function(e,t){S.setPropertyValue(V,"display",t)})}S.setPropertyValue(V,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&S.setPropertyValue(V,"visibility",u.visibility);for(var k in P)if("element"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,"tween"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?"":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H]("extract",null,L[1]):L[1]),"transform"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d="(0px, 0px, 0px)",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&"none"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&S.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&S.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="",t.getElementsByTagName("span").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v="swing",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,"velocity",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft="pageXOffset",b.State.scrollPropertyTop="pageYOffset"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft="scrollLeft",b.State.scrollPropertyTop="scrollTop");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=d?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=d?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,"display","none")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,"display")&&(u=!0,S.setPropertyValue(e,"display",S.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(S.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(S.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===d&&"filter"===r?g.getPropertyValue(r):g[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,"position");("fixed"===m||"absolute"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+"px")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c]("extract",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r]("name",e),"transform"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r]("extract",e,g)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&"transform"===S.Normalizations.registered[r]("name",e))S.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r]("inject",e,a),r=S.Normalizations.registered[r]("name",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r="";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===d&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}S.setPropertyValue(e,"transform",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,"position"),fontSize:S.getPropertyValue(o,"fontSize")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");b.init(u),e.myParent.appendChild(u),f.each(["overflow","overflowX","overflowY"],function(e,t){b.CSS.setPropertyValue(u,t,"hidden")}),b.CSS.setPropertyValue(u,"position",e.position),b.CSS.setPropertyValue(u,"fontSize",e.fontSize),b.CSS.setPropertyValue(u,"boxSizing","content-box"),f.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){b.CSS.setPropertyValue(u,t,s+"%")}),b.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,"fontSize"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if("scroll"===A){var P,C,T,F=/^x$/i.test(s.axis)?"Left":"Top",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container["scroll"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State["scrollProperty"+F]],C=b.State.scrollAnchor[b.State["scrollProperty"+("Left"===F?"Top":"Left")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:"",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log("tweensContainer (scroll): ",l.scroll,o)}else if("reverse"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);"none"===i(o).opts.display&&(i(o).opts.display="auto"),"hidden"===i(o).opts.visibility&&(i(o).opts.visibility="visible"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if("element"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log("reverse tweensContainer ("+H+"): "+JSON.stringify(E[H]),o)}l=E}else if("start"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp("^"+S.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,"reverse",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each(["Down","Up"],function(e,t){b.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},d={};l.display===a&&(l.display="Down"===t?"inline"===b.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each(["In","Out"],function(e,t){b.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)})); -;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;af?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance= 0 && !requestAnimationFrame) { - requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame']; - cancelAnimationFrame = window[vendors[i] + 'CancelRequestAnimationFrame']; - } - - // polyfill with setTimeout fallback - // heavily inspired from @darius gist mod: https://gist.github.com/paulirish/1579671#comment-837945 - if (!requestAnimationFrame || !cancelAnimationFrame) { - requestAnimationFrame = function(callback) { - var now = +Date.now(), - nextTime = Math.max(lastTime + 16, now); - return setTimeout(function() { - callback(lastTime = nextTime); - }, nextTime - now); - }; - - cancelAnimationFrame = clearTimeout; - } - - // export to window - window.requestAnimationFrame = requestAnimationFrame; - window.cancelAnimationFrame = cancelAnimationFrame; -}(window)); - - -// Unique ID -Materialize.guid = (function() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - return function() { - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + - s4() + '-' + s4() + s4() + s4(); - }; -})(); - -/** - * Escapes hash from special characters - * @param {string} hash String returned from this.hash - * @returns {string} - */ -Materialize.escapeHash = function(hash) { - return hash.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" ); -}; - -Materialize.elementOrParentIsFixed = function(element) { - var $element = $(element); - var $checkElements = $element.add($element.parents()); - var isFixed = false; - $checkElements.each(function(){ - if ($(this).css("position") === "fixed") { - isFixed = true; - return false; - } - }); - return isFixed; -}; - - -/** - * Get time in ms - * @license https://raw.github.com/jashkenas/underscore/master/LICENSE - * @type {function} - * @return {number} - */ -var getTime = (Date.now || function () { - return new Date().getTime(); -}); - - -/** - * Returns a function, that, when invoked, will only be triggered at most once - * during a given window of time. Normally, the throttled function will run - * as much as it can, without ever going more than once per `wait` duration; - * but if you'd like to disable the execution on the leading edge, pass - * `{leading: false}`. To disable execution on the trailing edge, ditto. - * @license https://raw.github.com/jashkenas/underscore/master/LICENSE - * @param {function} func - * @param {number} wait - * @param {Object=} options - * @returns {Function} - */ -Materialize.throttle = function(func, wait, options) { - var context, args, result; - var timeout = null; - var previous = 0; - options || (options = {}); - var later = function () { - previous = options.leading === false ? 0 : getTime(); - timeout = null; - result = func.apply(context, args); - context = args = null; - }; - return function () { - var now = getTime(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; -}; - - -// Velocity has conflicts when loaded with jQuery, this will check for it -// First, check if in noConflict mode -var Vel; -if (jQuery) { - Vel = jQuery.Velocity; -} else if ($) { - Vel = $.Velocity; -} else { - Vel = Velocity; -} -;(function ($) { - $.fn.collapsible = function(options) { - var defaults = { - accordion: undefined, - onOpen: undefined, - onClose: undefined - }; - - options = $.extend(defaults, options); - - - return this.each(function() { - - var $this = $(this); - - var $panel_headers = $(this).find('> li > .collapsible-header'); - - var collapsible_type = $this.data("collapsible"); - - // Turn off any existing event handlers - $this.off('click.collapse', '> li > .collapsible-header'); - $panel_headers.off('click.collapse'); - - - /**************** - Helper Functions - ****************/ - - // Accordion Open - function accordionOpen(object) { - $panel_headers = $this.find('> li > .collapsible-header'); - if (object.hasClass('active')) { - object.parent().addClass('active'); - } - else { - object.parent().removeClass('active'); - } - if (object.parent().hasClass('active')){ - object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - else{ - object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - - $panel_headers.not(object).removeClass('active').parent().removeClass('active'); - - // Close previously open accordion elements. - $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).each(function() { - if ($(this).is(':visible')) { - $(this).slideUp({ - duration: 350, - easing: "easeOutQuart", - queue: false, - complete: - function() { - $(this).css('height', ''); - execCallbacks($(this).siblings('.collapsible-header')); - } - }); - } - }); - } - - // Expandable Open - function expandableOpen(object) { - if (object.hasClass('active')) { - object.parent().addClass('active'); - } - else { - object.parent().removeClass('active'); - } - if (object.parent().hasClass('active')){ - object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - else { - object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - } - - // Open collapsible. object: .collapsible-header - function collapsibleOpen(object) { - if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion - accordionOpen(object); - } else { // Handle Expandables - expandableOpen(object); - } - - execCallbacks(object); - } - - // Handle callbacks - function execCallbacks(object) { - if (object.hasClass('active')) { - if (typeof(options.onOpen) === "function") { - options.onOpen.call(this, object.parent()); - } - } else { - if (typeof(options.onClose) === "function") { - options.onClose.call(this, object.parent()); - } - } - } - - /** - * Check if object is children of panel header - * @param {Object} object Jquery object - * @return {Boolean} true if it is children - */ - function isChildrenOfPanelHeader(object) { - - var panelHeader = getPanelHeader(object); - - return panelHeader.length > 0; - } - - /** - * Get panel header from a children element - * @param {Object} object Jquery object - * @return {Object} panel header object - */ - function getPanelHeader(object) { - - return object.closest('li > .collapsible-header'); - } - - /***** End Helper Functions *****/ - - - - // Add click handler to only direct collapsible header children - $this.on('click.collapse', '> li > .collapsible-header', function(e) { - var element = $(e.target); - - if (isChildrenOfPanelHeader(element)) { - element = getPanelHeader(element); - } - - element.toggleClass('active'); - - collapsibleOpen(element); - }); - - - // Open first active - if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion - collapsibleOpen($panel_headers.filter('.active').first()); - - } else { // Handle Expandables - $panel_headers.filter('.active').each(function() { - collapsibleOpen($(this)); - }); - } - - }); - }; - - $(document).ready(function(){ - $('.collapsible').collapsible(); - }); -}( jQuery ));;(function ($) { - - // Add posibility to scroll to selected option - // usefull for select for example - $.fn.scrollTo = function(elem) { - $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); - return this; - }; - - $.fn.dropdown = function (options) { - var defaults = { - inDuration: 300, - outDuration: 225, - constrainWidth: true, // Constrains width of dropdown to the activator - hover: false, - gutter: 0, // Spacing from edge - belowOrigin: false, - alignment: 'left', - stopPropagation: false - }; - - // Open dropdown. - if (options === "open") { - this.each(function() { - $(this).trigger('open'); - }); - return false; - } - - // Close dropdown. - if (options === "close") { - this.each(function() { - $(this).trigger('close'); - }); - return false; - } - - this.each(function(){ - var origin = $(this); - var curr_options = $.extend({}, defaults, options); - var isFocused = false; - - // Dropdown menu - var activates = $("#"+ origin.attr('data-activates')); - - function updateOptions() { - if (origin.data('induration') !== undefined) - curr_options.inDuration = origin.data('induration'); - if (origin.data('outduration') !== undefined) - curr_options.outDuration = origin.data('outduration'); - if (origin.data('constrainwidth') !== undefined) - curr_options.constrainWidth = origin.data('constrainwidth'); - if (origin.data('hover') !== undefined) - curr_options.hover = origin.data('hover'); - if (origin.data('gutter') !== undefined) - curr_options.gutter = origin.data('gutter'); - if (origin.data('beloworigin') !== undefined) - curr_options.belowOrigin = origin.data('beloworigin'); - if (origin.data('alignment') !== undefined) - curr_options.alignment = origin.data('alignment'); - if (origin.data('stoppropagation') !== undefined) - curr_options.stopPropagation = origin.data('stoppropagation'); - } - - updateOptions(); - - // Attach dropdown to its activator - origin.after(activates); - - /* - Helper function to position and resize dropdown. - Used in hover and click handler. - */ - function placeDropdown(eventType) { - // Check for simultaneous focus and click events. - if (eventType === 'focus') { - isFocused = true; - } - - // Check html data attributes - updateOptions(); - - // Set Dropdown state - activates.addClass('active'); - origin.addClass('active'); - - // Constrain width - if (curr_options.constrainWidth === true) { - activates.css('width', origin.outerWidth()); - - } else { - activates.css('white-space', 'nowrap'); - } - - // Offscreen detection - var windowHeight = window.innerHeight; - var originHeight = origin.innerHeight(); - var offsetLeft = origin.offset().left; - var offsetTop = origin.offset().top - $(window).scrollTop(); - var currAlignment = curr_options.alignment; - var gutterSpacing = 0; - var leftPosition = 0; - - // Below Origin - var verticalOffset = 0; - if (curr_options.belowOrigin === true) { - verticalOffset = originHeight; - } - - // Check for scrolling positioned container. - var scrollYOffset = 0; - var scrollXOffset = 0; - var wrapper = origin.parent(); - if (!wrapper.is('body')) { - if (wrapper[0].scrollHeight > wrapper[0].clientHeight) { - scrollYOffset = wrapper[0].scrollTop; - } - if (wrapper[0].scrollWidth > wrapper[0].clientWidth) { - scrollXOffset = wrapper[0].scrollLeft; - } - } - - - if (offsetLeft + activates.innerWidth() > $(window).width()) { - // Dropdown goes past screen on right, force right alignment - currAlignment = 'right'; - - } else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) { - // Dropdown goes past screen on left, force left alignment - currAlignment = 'left'; - } - // Vertical bottom offscreen detection - if (offsetTop + activates.innerHeight() > windowHeight) { - // If going upwards still goes offscreen, just crop height of dropdown. - if (offsetTop + originHeight - activates.innerHeight() < 0) { - var adjustedHeight = windowHeight - offsetTop - verticalOffset; - activates.css('max-height', adjustedHeight); - } else { - // Flow upwards. - if (!verticalOffset) { - verticalOffset += originHeight; - } - verticalOffset -= activates.innerHeight(); - } - } - - // Handle edge alignment - if (currAlignment === 'left') { - gutterSpacing = curr_options.gutter; - leftPosition = origin.position().left + gutterSpacing; - } - else if (currAlignment === 'right') { - var offsetRight = origin.position().left + origin.outerWidth() - activates.outerWidth(); - gutterSpacing = -curr_options.gutter; - leftPosition = offsetRight + gutterSpacing; - } - - // Position dropdown - activates.css({ - position: 'absolute', - top: origin.position().top + verticalOffset + scrollYOffset, - left: leftPosition + scrollXOffset - }); - - - // Show dropdown - activates.stop(true, true).css('opacity', 0) - .slideDown({ - queue: false, - duration: curr_options.inDuration, - easing: 'easeOutCubic', - complete: function() { - $(this).css('height', ''); - } - }) - .animate( {opacity: 1}, {queue: false, duration: curr_options.inDuration, easing: 'easeOutSine'}); - - // Add click close handler to document - $(document).bind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'), function (e) { - if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length) ) { - hideDropdown(); - $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); - } - }); - } - - function hideDropdown() { - // Check for simultaneous focus and click events. - isFocused = false; - activates.fadeOut(curr_options.outDuration); - activates.removeClass('active'); - origin.removeClass('active'); - $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); - setTimeout(function() { activates.css('max-height', ''); }, curr_options.outDuration); - } - - // Hover - if (curr_options.hover) { - var open = false; - origin.unbind('click.' + origin.attr('id')); - // Hover handler to show dropdown - origin.on('mouseenter', function(e){ // Mouse over - if (open === false) { - placeDropdown(); - open = true; - } - }); - origin.on('mouseleave', function(e){ - // If hover on origin then to something other than dropdown content, then close - var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element - if(!$(toEl).closest('.dropdown-content').is(activates)) { - activates.stop(true, true); - hideDropdown(); - open = false; - } - }); - - activates.on('mouseleave', function(e){ // Mouse out - var toEl = e.toElement || e.relatedTarget; - if(!$(toEl).closest('.dropdown-button').is(origin)) { - activates.stop(true, true); - hideDropdown(); - open = false; - } - }); - - // Click - } else { - // Click handler to show dropdown - origin.unbind('click.' + origin.attr('id')); - origin.bind('click.'+origin.attr('id'), function(e){ - if (!isFocused) { - if ( origin[0] == e.currentTarget && - !origin.hasClass('active') && - ($(e.target).closest('.dropdown-content').length === 0)) { - e.preventDefault(); // Prevents button click from moving window - if (curr_options.stopPropagation) { - e.stopPropagation(); - } - placeDropdown('click'); - } - // If origin is clicked and menu is open, close menu - else if (origin.hasClass('active')) { - hideDropdown(); - $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); - } - } - }); - - } // End else - - // Listen to open and close event - useful for select component - origin.on('open', function(e, eventType) { - placeDropdown(eventType); - }); - origin.on('close', hideDropdown); - - - }); - }; // End dropdown plugin - - $(document).ready(function(){ - $('.dropdown-button').dropdown(); - }); -}( jQuery )); -;(function($) { - var _stack = 0, - _lastID = 0, - _generateID = function() { - _lastID++; - return 'materialize-modal-overlay-' + _lastID; - }; - - var methods = { - init : function(options) { - var defaults = { - opacity: 0.5, - inDuration: 350, - outDuration: 250, - ready: undefined, - complete: undefined, - dismissible: true, - startingTop: '4%', - endingTop: '10%' - }; - - // Override defaults - options = $.extend(defaults, options); - - return this.each(function() { - var $modal = $(this); - var modal_id = $(this).attr("id") || '#' + $(this).data('target'); - - var closeModal = function() { - var overlayID = $modal.data('overlay-id'); - var $overlay = $('#' + overlayID); - $modal.removeClass('open'); - - // Enable scrolling - $('body').css({ - overflow: '', - width: '' - }); - - $modal.find('.modal-close').off('click.close'); - $(document).off('keyup.modal' + overlayID); - - $overlay.velocity( { opacity: 0}, {duration: options.outDuration, queue: false, ease: "easeOutQuart"}); - - - // Define Bottom Sheet animation - var exitVelocityOptions = { - duration: options.outDuration, - queue: false, - ease: "easeOutCubic", - // Handle modal ready callback - complete: function() { - $(this).css({display:"none"}); - - // Call complete callback - if (typeof(options.complete) === "function") { - options.complete.call(this, $modal); - } - $overlay.remove(); - _stack--; - } - }; - if ($modal.hasClass('bottom-sheet')) { - $modal.velocity({bottom: "-100%", opacity: 0}, exitVelocityOptions); - } - else { - $modal.velocity( - { top: options.startingTop, opacity: 0, scaleX: 0.7}, - exitVelocityOptions - ); - } - }; - - var openModal = function($trigger) { - var $body = $('body'); - var oldWidth = $body.innerWidth(); - $body.css('overflow', 'hidden'); - $body.width(oldWidth); - - if ($modal.hasClass('open')) { - return; - } - - var overlayID = _generateID(); - var $overlay = $(''); - lStack = (++_stack); - - // Store a reference of the overlay - $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2); - $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1); - $modal.addClass('open'); - - $("body").append($overlay); - - if (options.dismissible) { - $overlay.click(function() { - closeModal(); - }); - // Return on ESC - $(document).on('keyup.modal' + overlayID, function(e) { - if (e.keyCode === 27) { // ESC key - closeModal(); - } - }); - } - - $modal.find(".modal-close").on('click.close', function(e) { - closeModal(); - }); - - $overlay.css({ display : "block", opacity : 0 }); - - $modal.css({ - display : "block", - opacity: 0 - }); - - $overlay.velocity({opacity: options.opacity}, {duration: options.inDuration, queue: false, ease: "easeOutCubic"}); - $modal.data('associated-overlay', $overlay[0]); - - // Define Bottom Sheet animation - var enterVelocityOptions = { - duration: options.inDuration, - queue: false, - ease: "easeOutCubic", - // Handle modal ready callback - complete: function() { - if (typeof(options.ready) === "function") { - options.ready.call(this, $modal, $trigger); - } - } - }; - if ($modal.hasClass('bottom-sheet')) { - $modal.velocity({bottom: "0", opacity: 1}, enterVelocityOptions); - } - else { - $.Velocity.hook($modal, "scaleX", 0.7); - $modal.css({ top: options.startingTop }); - $modal.velocity({top: options.endingTop, opacity: 1, scaleX: '1'}, enterVelocityOptions); - } - - }; - - // Reset handlers - $(document).off('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]'); - $(this).off('openModal'); - $(this).off('closeModal'); - - // Close Handlers - $(document).on('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]', function(e) { - options.startingTop = ($(this).offset().top - $(window).scrollTop()) /1.15; - openModal($(this)); - e.preventDefault(); - }); // done set on click - - $(this).on('openModal', function() { - var modal_id = $(this).attr("href") || '#' + $(this).data('target'); - openModal(); - }); - - $(this).on('closeModal', function() { - closeModal(); - }); - }); // done return - }, - open : function() { - $(this).trigger('openModal'); - }, - close : function() { - $(this).trigger('closeModal'); - } - }; - - $.fn.modal = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.modal' ); - } - }; -})(jQuery); -;(function ($) { - - $.fn.materialbox = function () { - - return this.each(function() { - - if ($(this).hasClass('initialized')) { - return; - } - - $(this).addClass('initialized'); - - var overlayActive = false; - var doneAnimating = true; - var inDuration = 275; - var outDuration = 200; - var origin = $(this); - var placeholder = $('
').addClass('material-placeholder'); - var originalWidth = 0; - var originalHeight = 0; - var ancestorsChanged; - var ancestor; - origin.wrap(placeholder); - - - origin.on('click', function(){ - var placeholder = origin.parent('.material-placeholder'); - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var originalWidth = origin.width(); - var originalHeight = origin.height(); - - - // If already modal, return to original - if (doneAnimating === false) { - returnToOriginal(); - return false; - } - else if (overlayActive && doneAnimating===true) { - returnToOriginal(); - return false; - } - - - // Set states - doneAnimating = false; - origin.addClass('active'); - overlayActive = true; - - // Set positioning for placeholder - placeholder.css({ - width: placeholder[0].getBoundingClientRect().width, - height: placeholder[0].getBoundingClientRect().height, - position: 'relative', - top: 0, - left: 0 - }); - - // Find ancestor with overflow: hidden; and remove it - ancestorsChanged = undefined; - ancestor = placeholder[0].parentNode; - var count = 0; - while (ancestor !== null && !$(ancestor).is(document)) { - var curr = $(ancestor); - if (curr.css('overflow') !== 'visible') { - curr.css('overflow', 'visible'); - if (ancestorsChanged === undefined) { - ancestorsChanged = curr; - } - else { - ancestorsChanged = ancestorsChanged.add(curr); - } - } - ancestor = ancestor.parentNode; - } - - // Set css on origin - origin.css({ - position: 'absolute', - 'z-index': 1000, - 'will-change': 'left, top, width, height' - }) - .data('width', originalWidth) - .data('height', originalHeight); - - // Add overlay - var overlay = $('
') - .css({ - opacity: 0 - }) - .click(function(){ - if (doneAnimating === true) - returnToOriginal(); - }); - - // Put before in origin image to preserve z-index layering. - origin.before(overlay); - - // Set dimensions if needed - var overlayOffset = overlay[0].getBoundingClientRect(); - overlay.css({ - width: windowWidth, - height: windowHeight, - left: -1 * overlayOffset.left, - top: -1 * overlayOffset.top - }) - - // Animate Overlay - overlay.velocity({opacity: 1}, - {duration: inDuration, queue: false, easing: 'easeOutQuad'} ); - - // Add and animate caption if it exists - if (origin.data('caption') !== "") { - var $photo_caption = $('
'); - $photo_caption.text(origin.data('caption')); - $('body').append($photo_caption); - $photo_caption.css({ "display": "inline" }); - $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'}); - } - - // Resize Image - var ratio = 0; - var widthPercent = originalWidth / windowWidth; - var heightPercent = originalHeight / windowHeight; - var newWidth = 0; - var newHeight = 0; - - if (widthPercent > heightPercent) { - ratio = originalHeight / originalWidth; - newWidth = windowWidth * 0.9; - newHeight = windowWidth * 0.9 * ratio; - } - else { - ratio = originalWidth / originalHeight; - newWidth = (windowHeight * 0.9) * ratio; - newHeight = windowHeight * 0.9; - } - - // Animate image + set z-index - if(origin.hasClass('responsive-img')) { - origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false, - complete: function(){ - origin.css({left: 0, top: 0}) - .velocity( - { - height: newHeight, - width: newWidth, - left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, - top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 - }, - { - duration: inDuration, - queue: false, - easing: 'easeOutQuad', - complete: function(){doneAnimating = true;} - } - ); - } // End Complete - }); // End Velocity - } - else { - origin.css('left', 0) - .css('top', 0) - .velocity( - { - height: newHeight, - width: newWidth, - left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, - top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 - }, - { - duration: inDuration, - queue: false, - easing: 'easeOutQuad', - complete: function(){doneAnimating = true;} - } - ); // End Velocity - } - - }); // End origin on click - - - // Return on scroll - $(window).scroll(function() { - if (overlayActive) { - returnToOriginal(); - } - }); - - // Return on ESC - $(document).keyup(function(e) { - - if (e.keyCode === 27 && doneAnimating === true) { // ESC key - if (overlayActive) { - returnToOriginal(); - } - } - }); - - - // This function returns the modaled image to the original spot - function returnToOriginal() { - - doneAnimating = false; - - var placeholder = origin.parent('.material-placeholder'); - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var originalWidth = origin.data('width'); - var originalHeight = origin.data('height'); - - origin.velocity("stop", true); - $('#materialbox-overlay').velocity("stop", true); - $('.materialbox-caption').velocity("stop", true); - - - $('#materialbox-overlay').velocity({opacity: 0}, { - duration: outDuration, // Delay prevents animation overlapping - queue: false, easing: 'easeOutQuad', - complete: function(){ - // Remove Overlay - overlayActive = false; - $(this).remove(); - } - }); - - // Resize Image - origin.velocity( - { - width: originalWidth, - height: originalHeight, - left: 0, - top: 0 - }, - { - duration: outDuration, - queue: false, easing: 'easeOutQuad' - } - ); - - // Remove Caption + reset css settings on image - $('.materialbox-caption').velocity({opacity: 0}, { - duration: outDuration, // Delay prevents animation overlapping - queue: false, easing: 'easeOutQuad', - complete: function(){ - placeholder.css({ - height: '', - width: '', - position: '', - top: '', - left: '' - }); - - origin.css({ - height: '', - top: '', - left: '', - width: '', - 'max-width': '', - position: '', - 'z-index': '', - 'will-change': '' - }); - - // Remove class - origin.removeClass('active'); - doneAnimating = true; - $(this).remove(); - - // Remove overflow overrides on ancestors - if (ancestorsChanged) { - ancestorsChanged.css('overflow', ''); - } - } - }); - - } - }); - }; - - $(document).ready(function(){ - $('.materialboxed').materialbox(); - }); - -}( jQuery )); -;(function ($) { - - $.fn.parallax = function () { - var window_width = $(window).width(); - // Parallax Scripts - return this.each(function(i) { - var $this = $(this); - $this.addClass('parallax'); - - function updateParallax(initial) { - var container_height; - if (window_width < 601) { - container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); - } - else { - container_height = ($this.height() > 0) ? $this.height() : 500; - } - var $img = $this.children("img").first(); - var img_height = $img.height(); - var parallax_dist = img_height - container_height; - var bottom = $this.offset().top + container_height; - var top = $this.offset().top; - var scrollTop = $(window).scrollTop(); - var windowHeight = window.innerHeight; - var windowBottom = scrollTop + windowHeight; - var percentScrolled = (windowBottom - top) / (container_height + windowHeight); - var parallax = Math.round((parallax_dist * percentScrolled)); - - if (initial) { - $img.css('display', 'block'); - } - if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { - $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); - } - - } - - // Wait for image load - $this.children("img").one("load", function() { - updateParallax(true); - }).each(function() { - if (this.complete) $(this).trigger("load"); - }); - - $(window).scroll(function() { - window_width = $(window).width(); - updateParallax(false); - }); - - $(window).resize(function() { - window_width = $(window).width(); - updateParallax(false); - }); - - }); - - }; -}( jQuery )); -;(function ($) { - - var methods = { - init : function(options) { - var defaults = { - onShow: null, - swipeable: false, - responsiveThreshold: Infinity, // breakpoint for swipeable - }; - options = $.extend(defaults, options); - - return this.each(function() { - - // For each set of tabs, we want to keep track of - // which tab is active and its associated content - var $this = $(this), - window_width = $(window).width(); - - var $active, $content, $links = $this.find('li.tab a'), - $tabs_width = $this.width(), - $tabs_content = $(), - $tabs_wrapper, - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length, - $indicator, - index = prev_index = 0, - clicked = false, - clickedTimeout, - transition = 300; - - - // Finds right attribute for indicator based on active tab. - // el: jQuery Object - var calcRightPos = function(el) { - return $tabs_width - el.position().left - el.outerWidth() - $this.scrollLeft(); - }; - - // Finds left attribute for indicator based on active tab. - // el: jQuery Object - var calcLeftPos = function(el) { - return el.position().left + $this.scrollLeft(); - }; - - // Animates Indicator to active tab. - // prev_index: Number - var animateIndicator = function(prev_index) { - if ((index - prev_index) >= 0) { - $indicator.velocity({"right": calcRightPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'}); - $indicator.velocity({"left": calcLeftPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90}); - - } else { - $indicator.velocity({"left": calcLeftPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'}); - $indicator.velocity({"right": calcRightPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90}); - } - }; - - // Change swipeable according to responsive threshold - if (options.swipeable) { - if (window_width > options.responsiveThreshold) { - options.swipeable = false; - } - } - - - // If the location.hash matches one of the links, use that as the active tab. - $active = $($links.filter('[href="'+location.hash+'"]')); - - // If no match is found, use the first link or any with class 'active' as the initial active tab. - if ($active.length === 0) { - $active = $(this).find('li.tab a.active').first(); - } - if ($active.length === 0) { - $active = $(this).find('li.tab a').first(); - } - - $active.addClass('active'); - index = $links.index($active); - if (index < 0) { - index = 0; - } - - if ($active[0] !== undefined) { - $content = $($active[0].hash); - $content.addClass('active'); - } - - // append indicator then set indicator width to tab width - if (!$this.find('.indicator').length) { - $this.append('
'); - } - $indicator = $this.find('.indicator'); - - // we make sure that the indicator is at the end of the tabs - $this.append($indicator); - - if ($this.is(":visible")) { - // $indicator.css({"right": $tabs_width - ((index + 1) * $tab_width)}); - // $indicator.css({"left": index * $tab_width}); - setTimeout(function() { - $indicator.css({"right": calcRightPos($active) }); - $indicator.css({"left": calcLeftPos($active) }); - }, 0); - } - $(window).resize(function () { - $tabs_width = $this.width(); - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length; - if (index < 0) { - index = 0; - } - if ($tab_width !== 0 && $tabs_width !== 0) { - $indicator.css({"right": calcRightPos($active) }); - $indicator.css({"left": calcLeftPos($active) }); - } - }); - - // Initialize Tabs Content. - if (options.swipeable) { - // TODO: Duplicate calls with swipeable? handle multiple div wrapping. - $links.each(function () { - var $curr_content = $(Materialize.escapeHash(this.hash)); - $curr_content.addClass('carousel-item'); - $tabs_content = $tabs_content.add($curr_content); - }); - $tabs_wrapper = $tabs_content.wrapAll(''); - $tabs_content.css('display', ''); - $('.tabs-content.carousel').carousel({ - fullWidth: true, - noWrap: true, - onCycleTo: function(item) { - if (!clicked) { - var prev_index = index; - index = $tabs_wrapper.index(item); - $active = $links.eq(index); - animateIndicator(prev_index); - } - }, - }); - } else { - // Hide the remaining content - $links.not($active).each(function () { - $(Materialize.escapeHash(this.hash)).hide(); - }); - } - - - // Bind the click event handler - $this.on('click', 'a', function(e) { - if ($(this).parent().hasClass('disabled')) { - e.preventDefault(); - return; - } - - // Act as regular link if target attribute is specified. - if (!!$(this).attr("target")) { - return; - } - - clicked = true; - $tabs_width = $this.width(); - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length; - - // Make the old tab inactive. - $active.removeClass('active'); - var $oldContent = $content - - // Update the variables with the new link and content - $active = $(this); - $content = $(Materialize.escapeHash(this.hash)); - $links = $this.find('li.tab a'); - var activeRect = $active.position(); - - // Make the tab active. - $active.addClass('active'); - prev_index = index; - index = $links.index($(this)); - if (index < 0) { - index = 0; - } - // Change url to current tab - // window.location.hash = $active.attr('href'); - - // Swap content - if (options.swipeable) { - if ($tabs_content.length) { - $tabs_content.carousel('set', index); - } - } else { - if ($content !== undefined) { - $content.show(); - $content.addClass('active'); - if (typeof(options.onShow) === "function") { - options.onShow.call(this, $content); - } - } - - if ($oldContent !== undefined && - !$oldContent.is($content)) { - $oldContent.hide(); - $oldContent.removeClass('active'); - } - } - - // Reset clicked state - clickedTimeout = setTimeout(function(){ clicked = false; }, transition); - - // Update indicator - animateIndicator(prev_index); - - // Prevent the anchor's default click action - e.preventDefault(); - }); - }); - - }, - select_tab : function( id ) { - this.find('a[href="#' + id + '"]').trigger('click'); - } - }; - - $.fn.tabs = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tabs' ); - } - }; - - $(document).ready(function(){ - $('ul.tabs').tabs(); - }); -}( jQuery )); -;(function ($) { - $.fn.tooltip = function (options) { - var timeout = null, - margin = 5; - - // Defaults - var defaults = { - delay: 350, - tooltip: '', - position: 'bottom', - html: false - }; - - // Remove tooltip from the activator - if (options === "remove") { - this.each(function() { - $('#' + $(this).attr('data-tooltip-id')).remove(); - $(this).off('mouseenter.tooltip mouseleave.tooltip'); - }); - return false; - } - - options = $.extend(defaults, options); - - return this.each(function() { - var tooltipId = Materialize.guid(); - var origin = $(this); - - // Destroy old tooltip - if (origin.attr('data-tooltip-id')) { - $('#' + origin.attr('data-tooltip-id')).remove(); - } - - origin.attr('data-tooltip-id', tooltipId); - - // Get attributes. - var allowHtml, - tooltipDelay, - tooltipPosition, - tooltipText, - tooltipEl, - backdrop; - var setAttributes = function() { - allowHtml = origin.attr('data-html') ? origin.attr('data-html') === 'true' : options.html; - tooltipDelay = origin.attr('data-delay'); - tooltipDelay = (tooltipDelay === undefined || tooltipDelay === '') ? - options.delay : tooltipDelay; - tooltipPosition = origin.attr('data-position'); - tooltipPosition = (tooltipPosition === undefined || tooltipPosition === '') ? - options.position : tooltipPosition; - tooltipText = origin.attr('data-tooltip'); - tooltipText = (tooltipText === undefined || tooltipText === '') ? - options.tooltip : tooltipText; - }; - setAttributes(); - - var renderTooltipEl = function() { - var tooltip = $('
'); - - // Create Text span - if (allowHtml) { - tooltipText = $('').html(tooltipText); - } else{ - tooltipText = $('').text(tooltipText); - } - - // Create tooltip - tooltip.append(tooltipText) - .appendTo($('body')) - .attr('id', tooltipId); - - // Create backdrop - backdrop = $('
'); - backdrop.appendTo(tooltip); - return tooltip; - }; - tooltipEl = renderTooltipEl(); - - // Destroy previously binded events - origin.off('mouseenter.tooltip mouseleave.tooltip'); - // Mouse In - var started = false, timeoutRef; - origin.on({'mouseenter.tooltip': function(e) { - var showTooltip = function() { - setAttributes(); - started = true; - tooltipEl.velocity('stop'); - backdrop.velocity('stop'); - tooltipEl.css({ visibility: 'visible', left: '0px', top: '0px' }); - - // Tooltip positioning - var originWidth = origin.outerWidth(); - var originHeight = origin.outerHeight(); - var tooltipHeight = tooltipEl.outerHeight(); - var tooltipWidth = tooltipEl.outerWidth(); - var tooltipVerticalMovement = '0px'; - var tooltipHorizontalMovement = '0px'; - var backdropOffsetWidth = backdrop[0].offsetWidth; - var backdropOffsetHeight = backdrop[0].offsetHeight; - var scaleXFactor = 8; - var scaleYFactor = 8; - var scaleFactor = 0; - var targetTop, targetLeft, newCoordinates; - - if (tooltipPosition === "top") { - // Top Position - targetTop = origin.offset().top - tooltipHeight - margin; - targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipVerticalMovement = '-10px'; - backdrop.css({ - bottom: 0, - left: 0, - borderRadius: '14px 14px 0 0', - transformOrigin: '50% 100%', - marginTop: tooltipHeight, - marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2) - }); - } - // Left Position - else if (tooltipPosition === "left") { - targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2; - targetLeft = origin.offset().left - tooltipWidth - margin; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - - tooltipHorizontalMovement = '-10px'; - backdrop.css({ - top: '-7px', - right: 0, - width: '14px', - height: '14px', - borderRadius: '14px 0 0 14px', - transformOrigin: '95% 50%', - marginTop: tooltipHeight/2, - marginLeft: tooltipWidth - }); - } - // Right Position - else if (tooltipPosition === "right") { - targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2; - targetLeft = origin.offset().left + originWidth + margin; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - - tooltipHorizontalMovement = '+10px'; - backdrop.css({ - top: '-7px', - left: 0, - width: '14px', - height: '14px', - borderRadius: '0 14px 14px 0', - transformOrigin: '5% 50%', - marginTop: tooltipHeight/2, - marginLeft: '0px' - }); - } - else { - // Bottom Position - targetTop = origin.offset().top + origin.outerHeight() + margin; - targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipVerticalMovement = '+10px'; - backdrop.css({ - top: 0, - left: 0, - marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2) - }); - } - - // Set tooptip css placement - tooltipEl.css({ - top: newCoordinates.y, - left: newCoordinates.x - }); - - // Calculate Scale to fill - scaleXFactor = Math.SQRT2 * tooltipWidth / parseInt(backdropOffsetWidth); - scaleYFactor = Math.SQRT2 * tooltipHeight / parseInt(backdropOffsetHeight); - scaleFactor = Math.max(scaleXFactor, scaleYFactor); - - tooltipEl.velocity({ translateY: tooltipVerticalMovement, translateX: tooltipHorizontalMovement}, { duration: 350, queue: false }) - .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false}); - backdrop.css({ visibility: 'visible' }) - .velocity({opacity:1},{duration: 55, delay: 0, queue: false}) - .velocity({scaleX: scaleFactor, scaleY: scaleFactor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'}); - }; - - timeoutRef = setTimeout(showTooltip, tooltipDelay); // End Interval - - // Mouse Out - }, - 'mouseleave.tooltip': function(){ - // Reset State - started = false; - clearTimeout(timeoutRef); - - // Animate back - setTimeout(function() { - if (started !== true) { - tooltipEl.velocity({ - opacity: 0, translateY: 0, translateX: 0}, { duration: 225, queue: false}); - backdrop.velocity({opacity: 0, scaleX: 1, scaleY: 1}, { - duration:225, - queue: false, - complete: function(){ - backdrop.css({ visibility: 'hidden' }); - tooltipEl.css({ visibility: 'hidden' }); - started = false;} - }); - } - },225); - } - }); - }); - }; - - var repositionWithinScreen = function(x, y, width, height) { - var newX = x; - var newY = y; - - if (newX < 0) { - newX = 4; - } else if (newX + width > window.innerWidth) { - newX -= newX + width - window.innerWidth; - } - - if (newY < 0) { - newY = 4; - } else if (newY + height > window.innerHeight + $(window).scrollTop) { - newY -= newY + height - window.innerHeight; - } - - return {x: newX, y: newY}; - }; - - $(document).ready(function(){ - $('.tooltipped').tooltip(); - }); -}( jQuery )); -;/*! - * Waves v0.6.4 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */ - -;(function(window) { - 'use strict'; - - var Waves = Waves || {}; - var $$ = document.querySelectorAll.bind(document); - - // Find exact position of element - function isWindow(obj) { - return obj !== null && obj === obj.window; - } - - function getWindow(elem) { - return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; - } - - function offset(elem) { - var docElem, win, - box = {top: 0, left: 0}, - doc = elem && elem.ownerDocument; - - docElem = doc.documentElement; - - if (typeof elem.getBoundingClientRect !== typeof undefined) { - box = elem.getBoundingClientRect(); - } - win = getWindow(doc); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - } - - function convertStyle(obj) { - var style = ''; - - for (var a in obj) { - if (obj.hasOwnProperty(a)) { - style += (a + ':' + obj[a] + ';'); - } - } - - return style; - } - - var Effect = { - - // Effect delay - duration: 750, - - show: function(e, element) { - - // Disable right click - if (e.button === 2) { - return false; - } - - var el = element || this; - - // Create ripple - var ripple = document.createElement('div'); - ripple.className = 'waves-ripple'; - el.appendChild(ripple); - - // Get click coordinate and element witdh - var pos = offset(el); - var relativeY = (e.pageY - pos.top); - var relativeX = (e.pageX - pos.left); - var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; - - // Support for touch devices - if ('touches' in e) { - relativeY = (e.touches[0].pageY - pos.top); - relativeX = (e.touches[0].pageX - pos.left); - } - - // Attach data to element - ripple.setAttribute('data-hold', Date.now()); - ripple.setAttribute('data-scale', scale); - ripple.setAttribute('data-x', relativeX); - ripple.setAttribute('data-y', relativeY); - - // Set ripple position - var rippleStyle = { - 'top': relativeY+'px', - 'left': relativeX+'px' - }; - - ripple.className = ripple.className + ' waves-notransition'; - ripple.setAttribute('style', convertStyle(rippleStyle)); - ripple.className = ripple.className.replace('waves-notransition', ''); - - // Scale the ripple - rippleStyle['-webkit-transform'] = scale; - rippleStyle['-moz-transform'] = scale; - rippleStyle['-ms-transform'] = scale; - rippleStyle['-o-transform'] = scale; - rippleStyle.transform = scale; - rippleStyle.opacity = '1'; - - rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; - rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; - rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; - rippleStyle['transition-duration'] = Effect.duration + 'ms'; - - rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - - ripple.setAttribute('style', convertStyle(rippleStyle)); - }, - - hide: function(e) { - TouchHandler.touchup(e); - - var el = this; - var width = el.clientWidth * 1.4; - - // Get first ripple - var ripple = null; - var ripples = el.getElementsByClassName('waves-ripple'); - if (ripples.length > 0) { - ripple = ripples[ripples.length - 1]; - } else { - return false; - } - - var relativeX = ripple.getAttribute('data-x'); - var relativeY = ripple.getAttribute('data-y'); - var scale = ripple.getAttribute('data-scale'); - - // Get delay beetween mousedown and mouse leave - var diff = Date.now() - Number(ripple.getAttribute('data-hold')); - var delay = 350 - diff; - - if (delay < 0) { - delay = 0; - } - - // Fade out ripple after delay - setTimeout(function() { - var style = { - 'top': relativeY+'px', - 'left': relativeX+'px', - 'opacity': '0', - - // Duration - '-webkit-transition-duration': Effect.duration + 'ms', - '-moz-transition-duration': Effect.duration + 'ms', - '-o-transition-duration': Effect.duration + 'ms', - 'transition-duration': Effect.duration + 'ms', - '-webkit-transform': scale, - '-moz-transform': scale, - '-ms-transform': scale, - '-o-transform': scale, - 'transform': scale, - }; - - ripple.setAttribute('style', convertStyle(style)); - - setTimeout(function() { - try { - el.removeChild(ripple); - } catch(e) { - return false; - } - }, Effect.duration); - }, delay); - }, - - // Little hack to make can perform waves effect - wrapInput: function(elements) { - for (var a = 0; a < elements.length; a++) { - var el = elements[a]; - - if (el.tagName.toLowerCase() === 'input') { - var parent = el.parentNode; - - // If input already have parent just pass through - if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { - continue; - } - - // Put element class and style to the specified parent - var wrapper = document.createElement('i'); - wrapper.className = el.className + ' waves-input-wrapper'; - - var elementStyle = el.getAttribute('style'); - - if (!elementStyle) { - elementStyle = ''; - } - - wrapper.setAttribute('style', elementStyle); - - el.className = 'waves-button-input'; - el.removeAttribute('style'); - - // Put element as child - parent.replaceChild(wrapper, el); - wrapper.appendChild(el); - } - } - } - }; - - - /** - * Disable mousedown event for 500ms during and after touch - */ - var TouchHandler = { - /* uses an integer rather than bool so there's no issues with - * needing to clear timeouts if another touch event occurred - * within the 500ms. Cannot mouseup between touchstart and - * touchend, nor in the 500ms after touchend. */ - touches: 0, - allowEvent: function(e) { - var allow = true; - - if (e.type === 'touchstart') { - TouchHandler.touches += 1; //push - } else if (e.type === 'touchend' || e.type === 'touchcancel') { - setTimeout(function() { - if (TouchHandler.touches > 0) { - TouchHandler.touches -= 1; //pop after 500ms - } - }, 500); - } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { - allow = false; - } - - return allow; - }, - touchup: function(e) { - TouchHandler.allowEvent(e); - } - }; - - - /** - * Delegated click handler for .waves-effect element. - * returns null when .waves-effect element not in "click tree" - */ - function getWavesEffectElement(e) { - if (TouchHandler.allowEvent(e) === false) { - return null; - } - - var element = null; - var target = e.target || e.srcElement; - - while (target.parentElement !== null) { - if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { - element = target; - break; - } else if (target.classList.contains('waves-effect')) { - element = target; - break; - } - target = target.parentElement; - } - - return element; - } - - /** - * Bubble the click and show effect if .waves-effect elem was found - */ - function showEffect(e) { - var element = getWavesEffectElement(e); - - if (element !== null) { - Effect.show(e, element); - - if ('ontouchstart' in window) { - element.addEventListener('touchend', Effect.hide, false); - element.addEventListener('touchcancel', Effect.hide, false); - } - - element.addEventListener('mouseup', Effect.hide, false); - element.addEventListener('mouseleave', Effect.hide, false); - } - } - - Waves.displayEffect = function(options) { - options = options || {}; - - if ('duration' in options) { - Effect.duration = options.duration; - } - - //Wrap input inside tag - Effect.wrapInput($$('.waves-effect')); - - if ('ontouchstart' in window) { - document.body.addEventListener('touchstart', showEffect, false); - } - - document.body.addEventListener('mousedown', showEffect, false); - }; - - /** - * Attach Waves to an input element (or any element which doesn't - * bubble mouseup/mousedown events). - * Intended to be used with dynamically loaded forms/inputs, or - * where the user doesn't want a delegated click handler. - */ - Waves.attach = function(element) { - //FUTURE: automatically add waves classes and allow users - // to specify them with an options param? Eg. light/classic/button - if (element.tagName.toLowerCase() === 'input') { - Effect.wrapInput([element]); - element = element.parentElement; - } - - if ('ontouchstart' in window) { - element.addEventListener('touchstart', showEffect, false); - } - - element.addEventListener('mousedown', showEffect, false); - }; - - window.Waves = Waves; - - document.addEventListener('DOMContentLoaded', function() { - Waves.displayEffect(); - }, false); - -})(window); -;Materialize.toast = function (message, displayLength, className, completeCallback) { - className = className || ""; - - var container = document.getElementById('toast-container'); - - // Create toast container if it does not exist - if (container === null) { - // create notification container - container = document.createElement('div'); - container.id = 'toast-container'; - document.body.appendChild(container); - } - - // Select and append toast - var newToast = createToast(message); - - // only append toast if message is not undefined - if(message){ - container.appendChild(newToast); - } - - newToast.style.opacity = 0; - - // Animate toast in - Vel(newToast, {translateY: '-35px', opacity: 1 }, {duration: 300, - easing: 'easeOutCubic', - queue: false}); - - // Allows timer to be pause while being panned - var timeLeft = displayLength; - var counterInterval; - if (timeLeft != null) { - counterInterval = setInterval (function(){ - if (newToast.parentNode === null) - window.clearInterval(counterInterval); - - // If toast is not being dragged, decrease its time remaining - if (!newToast.classList.contains('panning')) { - timeLeft -= 20; - } - - if (timeLeft <= 0) { - // Animate toast out - Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375, - easing: 'easeOutExpo', - queue: false, - complete: function(){ - // Call the optional callback - if(typeof(completeCallback) === "function") - completeCallback(); - // Remove toast after it times out - this[0].parentNode.removeChild(this[0]); - } - }); - window.clearInterval(counterInterval); - } - }, 20); - } - - - - function createToast(html) { - - // Create toast - var toast = document.createElement('div'); - toast.classList.add('toast'); - if (className) { - var classes = className.split(' '); - - for (var i = 0, count = classes.length; i < count; i++) { - toast.classList.add(classes[i]); - } - } - // If type of parameter is HTML Element - if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string" -) { - toast.appendChild(html); - } - else if (html instanceof jQuery) { - // Check if it is jQuery object - toast.appendChild(html[0]); - } - else { - // Insert as text; - toast.innerHTML = html; - } - // Bind hammer - var hammerHandler = new Hammer(toast, {prevent_default: false}); - hammerHandler.on('pan', function(e) { - var deltaX = e.deltaX; - var activationDistance = 80; - - // Change toast state - if (!toast.classList.contains('panning')){ - toast.classList.add('panning'); - } - - var opacityPercent = 1-Math.abs(deltaX / activationDistance); - if (opacityPercent < 0) - opacityPercent = 0; - - Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - - }); - - hammerHandler.on('panend', function(e) { - var deltaX = e.deltaX; - var activationDistance = 80; - - // If toast dragged past activation point - if (Math.abs(deltaX) > activationDistance) { - Vel(toast, {marginTop: '-40px'}, { duration: 375, - easing: 'easeOutExpo', - queue: false, - complete: function(){ - if(typeof(completeCallback) === "function") { - completeCallback(); - } - toast.parentNode.removeChild(toast); - } - }); - - } else { - toast.classList.remove('panning'); - // Put toast back into original position - Vel(toast, { left: 0, opacity: 1 }, { duration: 300, - easing: 'easeOutExpo', - queue: false - }); - - } - }); - - return toast; - } -}; -;(function ($) { - - var methods = { - init : function(options) { - var defaults = { - menuWidth: 300, - edge: 'left', - closeOnClick: false, - draggable: true - }; - options = $.extend(defaults, options); - - $(this).each(function(){ - var $this = $(this); - var menuId = $this.attr('data-activates'); - var menu = $("#"+ menuId); - - // Set to width - if (options.menuWidth != 300) { - menu.css('width', options.menuWidth); - } - - // Add Touch Area - var $dragTarget = $('.drag-target[data-sidenav="' + menuId + '"]'); - if (options.draggable) { - // Regenerate dragTarget - if ($dragTarget.length) { - $dragTarget.remove(); - } - - $dragTarget = $('
').attr('data-sidenav', menuId); - $('body').append($dragTarget); - } else { - $dragTarget = $(); - } - - if (options.edge == 'left') { - menu.css('transform', 'translateX(-100%)'); - $dragTarget.css({'left': 0}); // Add Touch Area - } - else { - menu.addClass('right-aligned') // Change text-alignment to right - .css('transform', 'translateX(100%)'); - $dragTarget.css({'right': 0}); // Add Touch Area - } - - // If fixed sidenav, bring menu out - if (menu.hasClass('fixed')) { - if (window.innerWidth > 992) { - menu.css('transform', 'translateX(0)'); - } - } - - // Window resize to reset on large screens fixed - if (menu.hasClass('fixed')) { - $(window).resize( function() { - if (window.innerWidth > 992) { - // Close menu if window is resized bigger than 992 and user has fixed sidenav - if ($('#sidenav-overlay').length !== 0 && menuOut) { - removeMenu(true); - } - else { - // menu.removeAttr('style'); - menu.css('transform', 'translateX(0%)'); - // menu.css('width', options.menuWidth); - } - } - else if (menuOut === false){ - if (options.edge === 'left') { - menu.css('transform', 'translateX(-100%)'); - } else { - menu.css('transform', 'translateX(100%)'); - } - - } - - }); - } - - // if closeOnClick, then add close event for all a tags in side sideNav - if (options.closeOnClick === true) { - menu.on("click.itemclick", "a:not(.collapsible-header)", function(){ - removeMenu(); - }); - } - - var removeMenu = function(restoreNav) { - panning = false; - menuOut = false; - // Reenable scrolling - $('body').css({ - overflow: '', - width: '' - }); - - $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, - queue: false, easing: 'easeOutQuad', - complete: function() { - $(this).remove(); - } }); - if (options.edge === 'left') { - // Reset phantom div - $dragTarget.css({width: '', right: '', left: '0'}); - menu.velocity( - {'translateX': '-100%'}, - { duration: 200, - queue: false, - easing: 'easeOutCubic', - complete: function() { - if (restoreNav === true) { - // Restore Fixed sidenav - menu.removeAttr('style'); - menu.css('width', options.menuWidth); - } - } - - }); - } - else { - // Reset phantom div - $dragTarget.css({width: '', right: '0', left: ''}); - menu.velocity( - {'translateX': '100%'}, - { duration: 200, - queue: false, - easing: 'easeOutCubic', - complete: function() { - if (restoreNav === true) { - // Restore Fixed sidenav - menu.removeAttr('style'); - menu.css('width', options.menuWidth); - } - } - }); - } - }; - - - - // Touch Event - var panning = false; - var menuOut = false; - - if (options.draggable) { - $dragTarget.on('click', function(){ - if (menuOut) { - removeMenu(); - } - }); - - $dragTarget.hammer({ - prevent_default: false - }).bind('pan', function(e) { - - if (e.gesture.pointerType == "touch") { - - var direction = e.gesture.direction; - var x = e.gesture.center.x; - var y = e.gesture.center.y; - var velocityX = e.gesture.velocityX; - - // Disable Scrolling - var $body = $('body'); - var $overlay = $('#sidenav-overlay'); - var oldWidth = $body.innerWidth(); - $body.css('overflow', 'hidden'); - $body.width(oldWidth); - - // If overlay does not exist, create one and if it is clicked, close menu - if ($overlay.length === 0) { - $overlay = $('
'); - $overlay.css('opacity', 0).click( function(){ - removeMenu(); - }); - $('body').append($overlay); - } - - // Keep within boundaries - if (options.edge === 'left') { - if (x > options.menuWidth) { x = options.menuWidth; } - else if (x < 0) { x = 0; } - } - - if (options.edge === 'left') { - // Left Direction - if (x < (options.menuWidth / 2)) { menuOut = false; } - // Right Direction - else if (x >= (options.menuWidth / 2)) { menuOut = true; } - menu.css('transform', 'translateX(' + (x - options.menuWidth) + 'px)'); - } - else { - // Left Direction - if (x < (window.innerWidth - options.menuWidth / 2)) { - menuOut = true; - } - // Right Direction - else if (x >= (window.innerWidth - options.menuWidth / 2)) { - menuOut = false; - } - var rightPos = (x - options.menuWidth / 2); - if (rightPos < 0) { - rightPos = 0; - } - - menu.css('transform', 'translateX(' + rightPos + 'px)'); - } - - - // Percentage overlay - var overlayPerc; - if (options.edge === 'left') { - overlayPerc = x / options.menuWidth; - $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'}); - } - else { - overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth); - $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'}); - } - } - - }).bind('panend', function(e) { - - if (e.gesture.pointerType == "touch") { - var $overlay = $('
'); - var velocityX = e.gesture.velocityX; - var x = e.gesture.center.x; - var leftPos = x - options.menuWidth; - var rightPos = x - options.menuWidth / 2; - if (leftPos > 0 ) { - leftPos = 0; - } - if (rightPos < 0) { - rightPos = 0; - } - panning = false; - - if (options.edge === 'left') { - // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut - if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) { - // Return menu to open - if (leftPos !== 0) { - menu.velocity({'translateX': [0, leftPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - $dragTarget.css({width: '50%', right: 0, left: ''}); - menuOut = true; - } - else if (!menuOut || velocityX > 0.3) { - // Enable Scrolling - $('body').css({ - overflow: '', - width: '' - }); - // Slide menu closed - menu.velocity({'translateX': [-1 * options.menuWidth - 10, leftPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'}); - $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', - complete: function () { - $(this).remove(); - }}); - $dragTarget.css({width: '10px', right: '', left: 0}); - } - } - else { - if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) { - // Return menu to open - if (rightPos !== 0) { - menu.velocity({'translateX': [0, rightPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - $dragTarget.css({width: '50%', right: '', left: 0}); - menuOut = true; - } - else if (!menuOut || velocityX < -0.3) { - // Enable Scrolling - $('body').css({ - overflow: '', - width: '' - }); - - // Slide menu closed - menu.velocity({'translateX': [options.menuWidth + 10, rightPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'}); - $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', - complete: function () { - $(this).remove(); - }}); - $dragTarget.css({width: '10px', right: 0, left: ''}); - } - } - - } - }); - } - - $this.off('click.sidenav').on('click.sidenav', function() { - if (menuOut === true) { - menuOut = false; - panning = false; - removeMenu(); - } - else { - - // Disable Scrolling - var $body = $('body'); - var $overlay = $('
'); - var oldWidth = $body.innerWidth(); - $body.css('overflow', 'hidden'); - $body.width(oldWidth); - - // Push current drag target on top of DOM tree - $('body').append($dragTarget); - - if (options.edge === 'left') { - $dragTarget.css({width: '50%', right: 0, left: ''}); - menu.velocity({'translateX': [0, -1 * options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - else { - $dragTarget.css({width: '50%', right: '', left: 0}); - menu.velocity({'translateX': [0, options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - $overlay.css('opacity', 0) - .click(function(){ - menuOut = false; - panning = false; - removeMenu(); - $overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function() { - $(this).remove(); - } }); - - }); - $('body').append($overlay); - $overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function () { - menuOut = true; - panning = false; - } - }); - } - - return false; - }); - }); - - - }, - destroy: function () { - var $overlay = $('#sidenav-overlay'); - var $dragTarget = $('.drag-target[data-sidenav="' + $(this).attr('data-activates') + '"]'); - $overlay.trigger('click'); - $dragTarget.remove(); - $(this).off('click'); - $overlay.remove(); - }, - show : function() { - this.trigger('click'); - }, - hide : function() { - $('#sidenav-overlay').trigger('click'); - } - }; - - - $.fn.sideNav = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' ); - } - }; // Plugin end -}( jQuery )); -;/** - * Extend jquery with a scrollspy plugin. - * This watches the window scroll and fires events when elements are scrolled into viewport. - * - * throttle() and getTime() taken from Underscore.js - * https://github.com/jashkenas/underscore - * - * @author Copyright 2013 John Smart - * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE - * @see https://github.com/thesmart - * @version 0.1.2 - */ -(function($) { - - var jWindow = $(window); - var elements = []; - var elementsInView = []; - var isSpying = false; - var ticks = 0; - var unique_id = 1; - var offset = { - top : 0, - right : 0, - bottom : 0, - left : 0, - } - - /** - * Find elements that are within the boundary - * @param {number} top - * @param {number} right - * @param {number} bottom - * @param {number} left - * @return {jQuery} A collection of elements - */ - function findElements(top, right, bottom, left) { - var hits = $(); - $.each(elements, function(i, element) { - if (element.height() > 0) { - var elTop = element.offset().top, - elLeft = element.offset().left, - elRight = elLeft + element.width(), - elBottom = elTop + element.height(); - - var isIntersect = !(elLeft > right || - elRight < left || - elTop > bottom || - elBottom < top); - - if (isIntersect) { - hits.push(element); - } - } - }); - - return hits; - } - - - /** - * Called when the user scrolls the window - */ - function onScroll(scrollOffset) { - // unique tick id - ++ticks; - - // viewport rectangle - var top = jWindow.scrollTop(), - left = jWindow.scrollLeft(), - right = left + jWindow.width(), - bottom = top + jWindow.height(); - - // determine which elements are in view - var intersections = findElements(top+offset.top + scrollOffset || 200, right+offset.right, bottom+offset.bottom, left+offset.left); - $.each(intersections, function(i, element) { - - var lastTick = element.data('scrollSpy:ticks'); - if (typeof lastTick != 'number') { - // entered into view - element.triggerHandler('scrollSpy:enter'); - } - - // update tick id - element.data('scrollSpy:ticks', ticks); - }); - - // determine which elements are no longer in view - $.each(elementsInView, function(i, element) { - var lastTick = element.data('scrollSpy:ticks'); - if (typeof lastTick == 'number' && lastTick !== ticks) { - // exited from view - element.triggerHandler('scrollSpy:exit'); - element.data('scrollSpy:ticks', null); - } - }); - - // remember elements in view for next tick - elementsInView = intersections; - } - - /** - * Called when window is resized - */ - function onWinSize() { - jWindow.trigger('scrollSpy:winSize'); - } - - - /** - * Enables ScrollSpy using a selector - * @param {jQuery|string} selector The elements collection, or a selector - * @param {Object=} options Optional. - throttle : number -> scrollspy throttling. Default: 100 ms - offsetTop : number -> offset from top. Default: 0 - offsetRight : number -> offset from right. Default: 0 - offsetBottom : number -> offset from bottom. Default: 0 - offsetLeft : number -> offset from left. Default: 0 - * @returns {jQuery} - */ - $.scrollSpy = function(selector, options) { - var defaults = { - throttle: 100, - scrollOffset: 200 // offset - 200 allows elements near bottom of page to scroll - }; - options = $.extend(defaults, options); - - var visible = []; - selector = $(selector); - selector.each(function(i, element) { - elements.push($(element)); - $(element).data("scrollSpy:id", i); - // Smooth scroll to section - $('a[href="#' + $(element).attr('id') + '"]').click(function(e) { - e.preventDefault(); - var offset = $(Materialize.escapeHash(this.hash)).offset().top + 1; - $('html, body').animate({ scrollTop: offset - options.scrollOffset }, {duration: 400, queue: false, easing: 'easeOutCubic'}); - }); - }); - - offset.top = options.offsetTop || 0; - offset.right = options.offsetRight || 0; - offset.bottom = options.offsetBottom || 0; - offset.left = options.offsetLeft || 0; - - var throttledScroll = Materialize.throttle(function() { - onScroll(options.scrollOffset); - }, options.throttle || 100); - var readyScroll = function(){ - $(document).ready(throttledScroll); - }; - - if (!isSpying) { - jWindow.on('scroll', readyScroll); - jWindow.on('resize', readyScroll); - isSpying = true; - } - - // perform a scan once, after current execution context, and after dom is ready - setTimeout(readyScroll, 0); - - - selector.on('scrollSpy:enter', function() { - visible = $.grep(visible, function(value) { - return value.height() != 0; - }); - - var $this = $(this); - - if (visible[0]) { - $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active'); - if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) { - visible.unshift($(this)); - } - else { - visible.push($(this)); - } - } - else { - visible.push($(this)); - } - - - $('a[href="#' + visible[0].attr('id') + '"]').addClass('active'); - }); - selector.on('scrollSpy:exit', function() { - visible = $.grep(visible, function(value) { - return value.height() != 0; - }); - - if (visible[0]) { - $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active'); - var $this = $(this); - visible = $.grep(visible, function(value) { - return value.attr('id') != $this.attr('id'); - }); - if (visible[0]) { // Check if empty - $('a[href="#' + visible[0].attr('id') + '"]').addClass('active'); - } - } - }); - - return selector; - }; - - /** - * Listen for window resize events - * @param {Object=} options Optional. Set { throttle: number } to change throttling. Default: 100 ms - * @returns {jQuery} $(window) - */ - $.winSizeSpy = function(options) { - $.winSizeSpy = function() { return jWindow; }; // lock from multiple calls - options = options || { - throttle: 100 - }; - return jWindow.on('resize', Materialize.throttle(onWinSize, options.throttle || 100)); - }; - - /** - * Enables ScrollSpy on a collection of elements - * e.g. $('.scrollSpy').scrollSpy() - * @param {Object=} options Optional. - throttle : number -> scrollspy throttling. Default: 100 ms - offsetTop : number -> offset from top. Default: 0 - offsetRight : number -> offset from right. Default: 0 - offsetBottom : number -> offset from bottom. Default: 0 - offsetLeft : number -> offset from left. Default: 0 - * @returns {jQuery} - */ - $.fn.scrollSpy = function(options) { - return $.scrollSpy($(this), options); - }; - -})(jQuery); -;(function ($) { - $(document).ready(function() { - - // Function to update labels of text fields - Materialize.updateTextFields = function() { - var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; - $(input_selector).each(function(index, element) { - var $this = $(this); - if ($(element).val().length > 0 || element.autofocus || $this.attr('placeholder') !== undefined) { - $this.siblings('label').addClass('active'); - } else if ($(element)[0].validity) { - $this.siblings('label').toggleClass('active', $(element)[0].validity.badInput === true); - } else { - $this.siblings('label').removeClass('active'); - } - }); - }; - - // Text based inputs - var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; - - // Add active if form auto complete - $(document).on('change', input_selector, function () { - if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) { - $(this).siblings('label').addClass('active'); - } - validate_field($(this)); - }); - - // Add active if input element has been pre-populated on document ready - $(document).ready(function() { - Materialize.updateTextFields(); - }); - - // HTML DOM FORM RESET handling - $(document).on('reset', function(e) { - var formReset = $(e.target); - if (formReset.is('form')) { - formReset.find(input_selector).removeClass('valid').removeClass('invalid'); - formReset.find(input_selector).each(function () { - if ($(this).attr('value') === '') { - $(this).siblings('label').removeClass('active'); - } - }); - - // Reset select - formReset.find('select.initialized').each(function () { - var reset_text = formReset.find('option[selected]').text(); - formReset.siblings('input.select-dropdown').val(reset_text); - }); - } - }); - - // Add active when element has focus - $(document).on('focus', input_selector, function () { - $(this).siblings('label, .prefix').addClass('active'); - }); - - $(document).on('blur', input_selector, function () { - var $inputElement = $(this); - var selector = ".prefix"; - - if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) { - selector += ", label"; - } - - $inputElement.siblings(selector).removeClass('active'); - - validate_field($inputElement); - }); - - window.validate_field = function(object) { - var hasLength = object.attr('data-length') !== undefined; - var lenAttr = parseInt(object.attr('data-length')); - var len = object.val().length; - - if (object.val().length === 0 && object[0].validity.badInput === false) { - if (object.hasClass('validate')) { - object.removeClass('valid'); - object.removeClass('invalid'); - } - } - else { - if (object.hasClass('validate')) { - // Check for character counter attributes - if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) { - object.removeClass('invalid'); - object.addClass('valid'); - } - else { - object.removeClass('valid'); - object.addClass('invalid'); - } - } - } - }; - - // Radio and Checkbox focus class - var radio_checkbox = 'input[type=radio], input[type=checkbox]'; - $(document).on('keyup.radio', radio_checkbox, function(e) { - // TAB, check if tabbing to radio or checkbox. - if (e.which === 9) { - $(this).addClass('tabbed'); - var $this = $(this); - $this.one('blur', function(e) { - - $(this).removeClass('tabbed'); - }); - return; - } - }); - - // Textarea Auto Resize - var hiddenDiv = $('.hiddendiv').first(); - if (!hiddenDiv.length) { - hiddenDiv = $('
'); - $('body').append(hiddenDiv); - } - var text_area_selector = '.materialize-textarea'; - - function textareaAutoResize($textarea) { - // Set font properties of hiddenDiv - - var fontFamily = $textarea.css('font-family'); - var fontSize = $textarea.css('font-size'); - var lineHeight = $textarea.css('line-height'); - - if (fontSize) { hiddenDiv.css('font-size', fontSize); } - if (fontFamily) { hiddenDiv.css('font-family', fontFamily); } - if (lineHeight) { hiddenDiv.css('line-height', lineHeight); } - - if ($textarea.attr('wrap') === "off") { - hiddenDiv.css('overflow-wrap', "normal") - .css('white-space', "pre"); - } - - hiddenDiv.text($textarea.val() + '\n'); - var content = hiddenDiv.html().replace(/\n/g, '
'); - hiddenDiv.html(content); - - - // When textarea is hidden, width goes crazy. - // Approximate with half of window size - - if ($textarea.is(':visible')) { - hiddenDiv.css('width', $textarea.width()); - } - else { - hiddenDiv.css('width', $(window).width()/2); - } - - $textarea.css('height', hiddenDiv.height()); - } - - $(text_area_selector).each(function () { - var $textarea = $(this); - if ($textarea.val().length) { - textareaAutoResize($textarea); - } - }); - - $('body').on('keyup keydown autoresize', text_area_selector, function () { - textareaAutoResize($(this)); - }); - - // File Input Path - $(document).on('change', '.file-field input[type="file"]', function () { - var file_field = $(this).closest('.file-field'); - var path_input = file_field.find('input.file-path'); - var files = $(this)[0].files; - var file_names = []; - for (var i = 0; i < files.length; i++) { - file_names.push(files[i].name); - } - path_input.val(file_names.join(", ")); - path_input.trigger('change'); - }); - - /**************** - * Range Input * - ****************/ - - var range_type = 'input[type=range]'; - var range_mousedown = false; - var left; - - $(range_type).each(function () { - var thumb = $(''); - $(this).after(thumb); - }); - - var range_wrapper = '.range-field'; - $(document).on('change', range_type, function(e) { - var thumb = $(this).siblings('.thumb'); - thumb.find('.value').html($(this).val()); - }); - - $(document).on('input mousedown touchstart', range_type, function(e) { - var thumb = $(this).siblings('.thumb'); - var width = $(this).outerWidth(); - - // If thumb indicator does not exist yet, create it - if (thumb.length <= 0) { - thumb = $(''); - $(this).after(thumb); - } - - // Set indicator value - thumb.find('.value').html($(this).val()); - - range_mousedown = true; - $(this).addClass('active'); - - if (!thumb.hasClass('active')) { - thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); - } - - if (e.type !== 'input') { - if(e.pageX === undefined || e.pageX === null){//mobile - left = e.originalEvent.touches[0].pageX - $(this).offset().left; - } - else{ // desktop - left = e.pageX - $(this).offset().left; - } - if (left < 0) { - left = 0; - } - else if (left > width) { - left = width; - } - thumb.addClass('active').css('left', left); - } - - thumb.find('.value').html($(this).val()); - }); - - $(document).on('mouseup touchend', range_wrapper, function() { - range_mousedown = false; - $(this).removeClass('active'); - }); - - $(document).on('mousemove touchmove', range_wrapper, function(e) { - var thumb = $(this).children('.thumb'); - var left; - if (range_mousedown) { - if (!thumb.hasClass('active')) { - thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' }); - } - if (e.pageX === undefined || e.pageX === null) { //mobile - left = e.originalEvent.touches[0].pageX - $(this).offset().left; - } - else{ // desktop - left = e.pageX - $(this).offset().left; - } - var width = $(this).outerWidth(); - - if (left < 0) { - left = 0; - } - else if (left > width) { - left = width; - } - thumb.addClass('active').css('left', left); - thumb.find('.value').html(thumb.siblings(range_type).val()); - } - }); - - $(document).on('mouseout touchleave', range_wrapper, function() { - if (!range_mousedown) { - - var thumb = $(this).children('.thumb'); - - if (thumb.hasClass('active')) { - thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: '-6px'}, { duration: 100 }); - } - thumb.removeClass('active'); - } - }); - - /************************** - * Auto complete plugin * - *************************/ - $.fn.autocomplete = function (options) { - // Defaults - var defaults = { - data: {}, - limit: Infinity, - onAutocomplete: null - }; - - options = $.extend(defaults, options); - - return this.each(function() { - var $input = $(this); - var data = options.data, - count = 0, - activeIndex = 0, - oldVal, - $inputDiv = $input.closest('.input-field'); // Div to append on - - // Check if data isn't empty - if (!$.isEmptyObject(data)) { - var $autocomplete = $(''); - var $oldAutocomplete; - - // Append autocomplete element. - // Prevent double structure init. - if ($inputDiv.length) { - $oldAutocomplete = $inputDiv.children('.autocomplete-content.dropdown-content').first(); - if (!$oldAutocomplete.length) { - $inputDiv.append($autocomplete); // Set ul in body - } - } else { - $oldAutocomplete = $input.next('.autocomplete-content.dropdown-content'); - if (!$oldAutocomplete.length) { - $input.after($autocomplete); - } - } - if ($oldAutocomplete.length) { - $autocomplete = $oldAutocomplete; - } - - // Highlight partial match. - var highlight = function(string, $el) { - var img = $el.find('img'); - var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""), - matchEnd = matchStart + string.length - 1, - beforeMatch = $el.text().slice(0, matchStart), - matchText = $el.text().slice(matchStart, matchEnd + 1), - afterMatch = $el.text().slice(matchEnd + 1); - $el.html("" + beforeMatch + "" + matchText + "" + afterMatch + ""); - if (img.length) { - $el.prepend(img); - } - }; - - // Reset current element position - var resetCurrentElement = function() { - activeIndex = 0; - $autocomplete.find('.active').removeClass('active'); - } - - // Perform search - $input.off('keyup.autocomplete').on('keyup.autocomplete', function (e) { - // Reset count. - count = 0; - - // Don't capture enter or arrow key usage. - if (e.which === 13 || - e.which === 38 || - e.which === 40) { - return; - } - - var val = $input.val().toLowerCase(); - - // Check if the input isn't empty - if (oldVal !== val) { - $autocomplete.empty(); - resetCurrentElement(); - - if (val !== '') { - for(var key in data) { - if (data.hasOwnProperty(key) && - key.toLowerCase().indexOf(val) !== -1 && - key.toLowerCase() !== val) { - // Break if past limit - if (count >= options.limit) { - break; - } - - var autocompleteOption = $('
  • '); - if (!!data[key]) { - autocompleteOption.append(''+ key +''); - } else { - autocompleteOption.append(''+ key +''); - } - - $autocomplete.append(autocompleteOption); - highlight(val, autocompleteOption); - count++; - } - } - } - } - - // Update oldVal - oldVal = val; - }); - - $input.off('keydown.autocomplete').on('keydown.autocomplete', function (e) { - // Arrow keys and enter key usage - var keyCode = e.which, - liElement, - numItems = $autocomplete.children('li').length, - $active = $autocomplete.children('.active').first(); - - // select element on Enter - if (keyCode === 13) { - liElement = $autocomplete.children('li').eq(activeIndex); - if (liElement.length) { - liElement.click(); - e.preventDefault(); - } - return; - } - - // Capture up and down key - if ( keyCode === 38 || keyCode === 40 ) { - e.preventDefault(); - - if (keyCode === 38 && - activeIndex > 0) { - activeIndex--; - } - - if (keyCode === 40 && - activeIndex < (numItems - 1) && - $active.length) { - activeIndex++; - } - - $active.removeClass('active'); - $autocomplete.children('li').eq(activeIndex).addClass('active'); - } - }); - - // Set input value - $autocomplete.on('click', 'li', function () { - var text = $(this).text().trim(); - $input.val(text); - $input.trigger('change'); - $autocomplete.empty(); - resetCurrentElement(); - - // Handle onAutocomplete callback. - if (typeof(options.onAutocomplete) === "function") { - options.onAutocomplete.call(this, text); - } - }); - } - }); - }; - - }); // End of $(document).ready - - /******************* - * Select Plugin * - ******************/ - $.fn.material_select = function (callback) { - $(this).each(function(){ - var $select = $(this); - - if ($select.hasClass('browser-default')) { - return; // Continue to next (return false breaks out of entire loop) - } - - var multiple = $select.attr('multiple') ? true : false, - lastID = $select.data('select-id'); // Tear down structure if Select needs to be rebuilt - - if (lastID) { - $select.parent().find('span.caret').remove(); - $select.parent().find('input').remove(); - - $select.unwrap(); - $('ul#select-options-'+lastID).remove(); - } - - // If destroying the select, remove the selelct-id and reset it to it's uninitialized state. - if(callback === 'destroy') { - $select.data('select-id', null).removeClass('initialized'); - return; - } - - var uniqueID = Materialize.guid(); - $select.data('select-id', uniqueID); - var wrapper = $('
    '); - wrapper.addClass($select.attr('class')); - var options = $(''), - selectChildren = $select.children('option, optgroup'), - valuesSelected = [], - optionsHover = false; - - var label = $select.find('option:selected').html() || $select.find('option:first').html() || ""; - - // Function that renders and appends the option taking into - // account type and possible image icon. - var appendOptionWithIcon = function(select, option, type) { - // Add disabled attr if disabled - var disabledClass = (option.is(':disabled')) ? 'disabled ' : ''; - var optgroupClass = (type === 'optgroup-option') ? 'optgroup-option ' : ''; - - // add icons - var icon_url = option.data('icon'); - var classes = option.attr('class'); - if (!!icon_url) { - var classString = ''; - if (!!classes) classString = ' class="' + classes + '"'; - - // Check for multiple type. - if (type === 'multiple') { - options.append($('
  • ' + option.html() + '
  • ')); - } else { - options.append($('
  • ' + option.html() + '
  • ')); - } - return true; - } - - // Check for multiple type. - if (type === 'multiple') { - options.append($('
  • ' + option.html() + '
  • ')); - } else { - options.append($('
  • ' + option.html() + '
  • ')); - } - }; - - /* Create dropdown structure. */ - if (selectChildren.length) { - selectChildren.each(function() { - if ($(this).is('option')) { - // Direct descendant option. - if (multiple) { - appendOptionWithIcon($select, $(this), 'multiple'); - - } else { - appendOptionWithIcon($select, $(this)); - } - } else if ($(this).is('optgroup')) { - // Optgroup. - var selectOptions = $(this).children('option'); - options.append($('
  • ' + $(this).attr('label') + '
  • ')); - - selectOptions.each(function() { - appendOptionWithIcon($select, $(this), 'optgroup-option'); - }); - } - }); - } - - options.find('li:not(.optgroup)').each(function (i) { - $(this).click(function (e) { - // Check if option element is disabled - if (!$(this).hasClass('disabled') && !$(this).hasClass('optgroup')) { - var selected = true; - - if (multiple) { - $('input[type="checkbox"]', this).prop('checked', function(i, v) { return !v; }); - selected = toggleEntryFromArray(valuesSelected, $(this).index(), $select); - $newSelect.trigger('focus'); - } else { - options.find('li').removeClass('active'); - $(this).toggleClass('active'); - $newSelect.val($(this).text()); - } - - activateOption(options, $(this)); - $select.find('option').eq(i).prop('selected', selected); - // Trigger onchange() event - $select.trigger('change'); - if (typeof callback !== 'undefined') callback(); - } - - e.stopPropagation(); - }); - }); - - // Wrap Elements - $select.wrap(wrapper); - // Add Select Display Element - var dropdownIcon = $(''); - if ($select.is(':disabled')) - dropdownIcon.addClass('disabled'); - - // escape double quotes - var sanitizedLabelHtml = label.replace(/"/g, '"'); - - var $newSelect = $(''); - $select.before($newSelect); - $newSelect.before(dropdownIcon); - - $newSelect.after(options); - // Check if section element is disabled - if (!$select.is(':disabled')) { - $newSelect.dropdown({'hover': false, 'closeOnClick': false}); - } - - // Copy tabindex - if ($select.attr('tabindex')) { - $($newSelect[0]).attr('tabindex', $select.attr('tabindex')); - } - - $select.addClass('initialized'); - - $newSelect.on({ - 'focus': function (){ - if ($('ul.select-dropdown').not(options[0]).is(':visible')) { - $('input.select-dropdown').trigger('close'); - } - if (!options.is(':visible')) { - $(this).trigger('open', ['focus']); - var label = $(this).val(); - if (multiple && label.indexOf(',') >= 0) { - label = label.split(',')[0]; - } - - var selectedOption = options.find('li').filter(function() { - return $(this).text().toLowerCase() === label.toLowerCase(); - })[0]; - activateOption(options, selectedOption, true); - } - }, - 'click': function (e){ - e.stopPropagation(); - } - }); - - $newSelect.on('blur', function() { - if (!multiple) { - $(this).trigger('close'); - } - options.find('li.selected').removeClass('selected'); - }); - - options.hover(function() { - optionsHover = true; - }, function () { - optionsHover = false; - }); - - $(window).on({ - 'click': function () { - multiple && (optionsHover || $newSelect.trigger('close')); - } - }); - - // Add initial multiple selections. - if (multiple) { - $select.find("option:selected:not(:disabled)").each(function () { - var index = $(this).index(); - - toggleEntryFromArray(valuesSelected, index, $select); - options.find("li").eq(index).find(":checkbox").prop("checked", true); - }); - } - - /** - * Make option as selected and scroll to selected position - * @param {jQuery} collection Select options jQuery element - * @param {Element} newOption element of the new option - * @param {Boolean} firstActivation If on first activation of select - */ - var activateOption = function(collection, newOption, firstActivation) { - if (newOption) { - collection.find('li.selected').removeClass('selected'); - var option = $(newOption); - option.addClass('selected'); - if (!multiple || !!firstActivation) { - options.scrollTo(option); - } - } - }; - - // Allow user to search by typing - // this array is cleared after 1 second - var filterQuery = [], - onKeyDown = function(e){ - // TAB - switch to another input - if(e.which == 9){ - $newSelect.trigger('close'); - return; - } - - // ARROW DOWN WHEN SELECT IS CLOSED - open select options - if(e.which == 40 && !options.is(':visible')){ - $newSelect.trigger('open'); - return; - } - - // ENTER WHEN SELECT IS CLOSED - submit form - if(e.which == 13 && !options.is(':visible')){ - return; - } - - e.preventDefault(); - - // CASE WHEN USER TYPE LETTERS - var letter = String.fromCharCode(e.which).toLowerCase(), - nonLetters = [9,13,27,38,40]; - if (letter && (nonLetters.indexOf(e.which) === -1)) { - filterQuery.push(letter); - - var string = filterQuery.join(''), - newOption = options.find('li').filter(function() { - return $(this).text().toLowerCase().indexOf(string) === 0; - })[0]; - - if (newOption) { - activateOption(options, newOption); - } - } - - // ENTER - select option and close when select options are opened - if (e.which == 13) { - var activeOption = options.find('li.selected:not(.disabled)')[0]; - if(activeOption){ - $(activeOption).trigger('click'); - if (!multiple) { - $newSelect.trigger('close'); - } - } - } - - // ARROW DOWN - move to next not disabled option - if (e.which == 40) { - if (options.find('li.selected').length) { - newOption = options.find('li.selected').next('li:not(.disabled)')[0]; - } else { - newOption = options.find('li:not(.disabled)')[0]; - } - activateOption(options, newOption); - } - - // ESC - close options - if (e.which == 27) { - $newSelect.trigger('close'); - } - - // ARROW UP - move to previous not disabled option - if (e.which == 38) { - newOption = options.find('li.selected').prev('li:not(.disabled)')[0]; - if(newOption) - activateOption(options, newOption); - } - - // Automaticaly clean filter query so user can search again by starting letters - setTimeout(function(){ filterQuery = []; }, 1000); - }; - - $newSelect.on('keydown', onKeyDown); - }); - - function toggleEntryFromArray(entriesArray, entryIndex, select) { - var index = entriesArray.indexOf(entryIndex), - notAdded = index === -1; - - if (notAdded) { - entriesArray.push(entryIndex); - } else { - entriesArray.splice(index, 1); - } - - select.siblings('ul.dropdown-content').find('li').eq(entryIndex).toggleClass('active'); - - // use notAdded instead of true (to detect if the option is selected or not) - select.find('option').eq(entryIndex).prop('selected', notAdded); - setValueToInput(entriesArray, select); - - return notAdded; - } - - function setValueToInput(entriesArray, select) { - var value = ''; - - for (var i = 0, count = entriesArray.length; i < count; i++) { - var text = select.find('option').eq(entriesArray[i]).text(); - - i === 0 ? value += text : value += ', ' + text; - } - - if (value === '') { - value = select.find('option:disabled').eq(0).text(); - } - - select.siblings('input.select-dropdown').val(value); - } - }; - -}( jQuery )); -;(function ($) { - - var methods = { - - init : function(options) { - var defaults = { - indicators: true, - height: 400, - transition: 500, - interval: 6000 - }; - options = $.extend(defaults, options); - - return this.each(function() { - - // For each slider, we want to keep track of - // which slide is active and its associated content - var $this = $(this); - var $slider = $this.find('ul.slides').first(); - var $slides = $slider.find('> li'); - var $active_index = $slider.find('.active').index(); - var $active, $indicators, $interval; - if ($active_index != -1) { $active = $slides.eq($active_index); } - - // Transitions the caption depending on alignment - function captionTransition(caption, duration) { - if (caption.hasClass("center-align")) { - caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false}); - } - else if (caption.hasClass("right-align")) { - caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false}); - } - else if (caption.hasClass("left-align")) { - caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false}); - } - } - - // This function will transition the slide to any index of the next slide - function moveToSlide(index) { - // Wrap around indices. - if (index >= $slides.length) index = 0; - else if (index < 0) index = $slides.length -1; - - $active_index = $slider.find('.active').index(); - - // Only do if index changes - if ($active_index != index) { - $active = $slides.eq($active_index); - $caption = $active.find('.caption'); - - $active.removeClass('active'); - $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad', - complete: function() { - $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false}); - } }); - captionTransition($caption, options.transition); - - - // Update indicators - if (options.indicators) { - $indicators.eq($active_index).removeClass('active'); - } - - $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); - $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'}); - $slides.eq(index).addClass('active'); - - - // Update indicators - if (options.indicators) { - $indicators.eq(index).addClass('active'); - } - } - } - - // Set height of slider - // If fullscreen, do nothing - if (!$this.hasClass('fullscreen')) { - if (options.indicators) { - // Add height if indicators are present - $this.height(options.height + 40); - } - else { - $this.height(options.height); - } - $slider.height(options.height); - } - - - // Set initial positions of captions - $slides.find('.caption').each(function () { - captionTransition($(this), 0); - }); - - // Move img src into background-image - $slides.find('img').each(function () { - var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; - if ($(this).attr('src') !== placeholderBase64) { - $(this).css('background-image', 'url(' + $(this).attr('src') + ')' ); - $(this).attr('src', placeholderBase64); - } - }); - - // dynamically add indicators - if (options.indicators) { - $indicators = $('
      '); - $slides.each(function( index ) { - var $indicator = $('
    • '); - - // Handle clicks on indicators - $indicator.click(function () { - var $parent = $slider.parent(); - var curr_index = $parent.find($(this)).index(); - moveToSlide(curr_index); - - // reset interval - clearInterval($interval); - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - if ($slides.length == $active_index + 1) $active_index = 0; // loop to start - else $active_index += 1; - - moveToSlide($active_index); - - }, options.transition + options.interval - ); - }); - $indicators.append($indicator); - }); - $this.append($indicators); - $indicators = $this.find('ul.indicators').find('li.indicator-item'); - } - - if ($active) { - $active.show(); - } - else { - $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); - - $active_index = 0; - $active = $slides.eq($active_index); - - // Update indicators - if (options.indicators) { - $indicators.eq($active_index).addClass('active'); - } - } - - // Adjust height to current slide - $active.find('img').each(function() { - $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); - }); - - // auto scroll - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - moveToSlide($active_index + 1); - - }, options.transition + options.interval - ); - - - // HammerJS, Swipe navigation - - // Touch Event - var panning = false; - var swipeLeft = false; - var swipeRight = false; - - $this.hammer({ - prevent_default: false - }).bind('pan', function(e) { - if (e.gesture.pointerType === "touch") { - - // reset interval - clearInterval($interval); - - var direction = e.gesture.direction; - var x = e.gesture.deltaX; - var velocityX = e.gesture.velocityX; - var velocityY = e.gesture.velocityY; - - $curr_slide = $slider.find('.active'); - if (Math.abs(velocityX) > Math.abs(velocityY)) { - $curr_slide.velocity({ translateX: x - }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - } - - // Swipe Left - if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) { - swipeRight = true; - } - // Swipe Right - else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) { - swipeLeft = true; - } - - // Make Slide Behind active slide visible - var next_slide; - if (swipeLeft) { - next_slide = $curr_slide.next(); - if (next_slide.length === 0) { - next_slide = $slides.first(); - } - next_slide.velocity({ opacity: 1 - }, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - if (swipeRight) { - next_slide = $curr_slide.prev(); - if (next_slide.length === 0) { - next_slide = $slides.last(); - } - next_slide.velocity({ opacity: 1 - }, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - - } - - }).bind('panend', function(e) { - if (e.gesture.pointerType === "touch") { - - $curr_slide = $slider.find('.active'); - panning = false; - curr_index = $slider.find('.active').index(); - - if (!swipeRight && !swipeLeft || $slides.length <=1) { - // Return to original spot - $curr_slide.velocity({ translateX: 0 - }, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - else if (swipeLeft) { - moveToSlide(curr_index + 1); - $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function() { - $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); - } }); - } - else if (swipeRight) { - moveToSlide(curr_index - 1); - $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function() { - $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); - } }); - } - swipeLeft = false; - swipeRight = false; - - // Restart interval - clearInterval($interval); - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - if ($slides.length == $active_index + 1) $active_index = 0; // loop to start - else $active_index += 1; - - moveToSlide($active_index); - - }, options.transition + options.interval - ); - } - }); - - $this.on('sliderPause', function() { - clearInterval($interval); - }); - - $this.on('sliderStart', function() { - clearInterval($interval); - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - if ($slides.length == $active_index + 1) $active_index = 0; // loop to start - else $active_index += 1; - - moveToSlide($active_index); - - }, options.transition + options.interval - ); - }); - - $this.on('sliderNext', function() { - $active_index = $slider.find('.active').index(); - moveToSlide($active_index + 1); - }); - - $this.on('sliderPrev', function() { - $active_index = $slider.find('.active').index(); - moveToSlide($active_index - 1); - }); - - }); - - - - }, - pause : function() { - $(this).trigger('sliderPause'); - }, - start : function() { - $(this).trigger('sliderStart'); - }, - next : function() { - $(this).trigger('sliderNext'); - }, - prev : function() { - $(this).trigger('sliderPrev'); - } - }; - - - $.fn.slider = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); - } - }; // Plugin end -}( jQuery )); -;(function ($) { - $(document).ready(function() { - - $(document).on('click.card', '.card', function (e) { - if ($(this).find('> .card-reveal').length) { - if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { - // Make Reveal animate down and display none - $(this).find('.card-reveal').velocity( - {translateY: 0}, { - duration: 225, - queue: false, - easing: 'easeInOutQuad', - complete: function() { $(this).css({ display: 'none'}); } - } - ); - } - else if ($(e.target).is($('.card .activator')) || - $(e.target).is($('.card .activator i')) ) { - $(e.target).closest('.card').css('overflow', 'hidden'); - $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); - } - } - }); - - }); -}( jQuery ));;(function ($) { - var materialChipsDefaults = { - data: [], - placeholder: '', - secondaryPlaceholder: '', - autocompleteData: {}, - autocompleteLimit: Infinity, - }; - - $(document).ready(function() { - // Handle removal of static chips. - $(document).on('click', '.chip .close', function(e){ - var $chips = $(this).closest('.chips'); - if ($chips.attr('data-initialized')) { - return; - } - $(this).closest('.chip').remove(); - }); - }); - - $.fn.material_chip = function (options) { - var self = this; - this.$el = $(this); - this.$document = $(document); - this.SELS = { - CHIPS: '.chips', - CHIP: '.chip', - INPUT: 'input', - DELETE: '.material-icons', - SELECTED_CHIP: '.selected', - }; - - if ('data' === options) { - return this.$el.data('chips'); - } - - var curr_options = $.extend({}, materialChipsDefaults, options); - self.hasAutocomplete = !$.isEmptyObject(curr_options.autocompleteData); - - // Initialize - this.init = function() { - var i = 0; - var chips; - self.$el.each(function(){ - var $chips = $(this); - var chipId = Materialize.guid(); - self.chipId = chipId; - - if (!curr_options.data || !(curr_options.data instanceof Array)) { - curr_options.data = []; - } - $chips.data('chips', curr_options.data); - $chips.attr('data-index', i); - $chips.attr('data-initialized', true); - - if (!$chips.hasClass(self.SELS.CHIPS)) { - $chips.addClass('chips'); - } - - self.chips($chips, chipId); - i++; - }); - }; - - this.handleEvents = function() { - var SELS = self.SELS; - - self.$document.off('click.chips-focus', SELS.CHIPS).on('click.chips-focus', SELS.CHIPS, function(e){ - $(e.target).find(SELS.INPUT).focus(); - }); - - self.$document.off('click.chips-select', SELS.CHIP).on('click.chips-select', SELS.CHIP, function(e){ - var $chip = $(e.target); - if ($chip.length) { - var wasSelected = $chip.hasClass('selected'); - var $chips = $chip.closest(SELS.CHIPS); - $(SELS.CHIP).removeClass('selected'); - - if (!wasSelected) { - self.selectChip($chip.index(), $chips); - } - } - }); - - self.$document.off('keydown.chips').on('keydown.chips', function(e){ - if ($(e.target).is('input, textarea')) { - return; - } - - // delete - var $chip = self.$document.find(SELS.CHIP + SELS.SELECTED_CHIP); - var $chips = $chip.closest(SELS.CHIPS); - var length = $chip.siblings(SELS.CHIP).length; - var index; - - if (!$chip.length) { - return; - } - - if (e.which === 8 || e.which === 46) { - e.preventDefault(); - - index = $chip.index(); - self.deleteChip(index, $chips); - - var selectIndex = null; - if ((index + 1) < length) { - selectIndex = index; - } else if (index === length || (index + 1) === length) { - selectIndex = length - 1; - } - - if (selectIndex < 0) selectIndex = null; - - if (null !== selectIndex) { - self.selectChip(selectIndex, $chips); - } - if (!length) $chips.find('input').focus(); - - // left - } else if (e.which === 37) { - index = $chip.index() - 1; - if (index < 0) { - return; - } - $(SELS.CHIP).removeClass('selected'); - self.selectChip(index, $chips); - - // right - } else if (e.which === 39) { - index = $chip.index() + 1; - $(SELS.CHIP).removeClass('selected'); - if (index > length) { - $chips.find('input').focus(); - return; - } - self.selectChip(index, $chips); - } - }); - - self.$document.off('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ - var $currChips = $(e.target).closest(SELS.CHIPS); - $currChips.addClass('focus'); - $currChips.siblings('label, .prefix').addClass('active'); - $(SELS.CHIP).removeClass('selected'); - }); - - self.$document.off('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ - var $currChips = $(e.target).closest(SELS.CHIPS); - $currChips.removeClass('focus'); - - // Remove active if empty - if (!$currChips.data('chips').length) { - $currChips.siblings('label').removeClass('active'); - } - $currChips.siblings('.prefix').removeClass('active'); - }); - - self.$document.off('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT).on('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ - var $target = $(e.target); - var $chips = $target.closest(SELS.CHIPS); - var chipsLength = $chips.children(SELS.CHIP).length; - - // enter - if (13 === e.which) { - // Override enter if autocompleting. - if (self.hasAutocomplete && - $chips.find('.autocomplete-content.dropdown-content').length && - $chips.find('.autocomplete-content.dropdown-content').children().length) { - return; - } - - e.preventDefault(); - self.addChip({tag: $target.val()}, $chips); - $target.val(''); - return; - } - - // delete or left - if ((8 === e.keyCode || 37 === e.keyCode) && '' === $target.val() && chipsLength) { - e.preventDefault(); - self.selectChip(chipsLength - 1, $chips); - $target.blur(); - return; - } - }); - - // Click on delete icon in chip. - self.$document.off('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE).on('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE, function(e) { - var $target = $(e.target); - var $chips = $target.closest(SELS.CHIPS); - var $chip = $target.closest(SELS.CHIP); - e.stopPropagation(); - self.deleteChip($chip.index(), $chips); - $chips.find('input').focus(); - }); - }; - - this.chips = function($chips, chipId) { - var html = ''; - $chips.data('chips').forEach(function(elem){ - html += self.renderChip(elem); - }); - html += ''; - $chips.html(html); - self.setPlaceholder($chips); - - // Set for attribute for label - var label = $chips.next('label'); - if (label.length) { - label.attr('for', chipId); - - if ($chips.data('chips').length) { - label.addClass('active'); - } - } - - // Setup autocomplete if needed. - var input = $('#' + chipId); - if (self.hasAutocomplete) { - input.autocomplete({ - data: curr_options.autocompleteData, - limit: curr_options.autocompleteLimit, - onAutocomplete: function(val) { - self.addChip({tag: val}, $chips); - input.val(''); - input.focus(); - }, - }) - } - }; - - this.renderChip = function(elem) { - if (!elem.tag) return; - - var html = '
      ' + elem.tag; - if (elem.image) { - html += ' '; - } - html += 'close'; - html += '
      '; - return html; - }; - - this.setPlaceholder = function($chips) { - if ($chips.data('chips').length && curr_options.placeholder) { - $chips.find('input').prop('placeholder', curr_options.placeholder); - - } else if (!$chips.data('chips').length && curr_options.secondaryPlaceholder) { - $chips.find('input').prop('placeholder', curr_options.secondaryPlaceholder); - } - }; - - this.isValid = function($chips, elem) { - var chips = $chips.data('chips'); - var exists = false; - for (var i=0; i < chips.length; i++) { - if (chips[i].tag === elem.tag) { - exists = true; - return; - } - } - return '' !== elem.tag && !exists; - }; - - this.addChip = function(elem, $chips) { - if (!self.isValid($chips, elem)) { - return; - } - var chipHtml = self.renderChip(elem); - var newData = []; - var oldData = $chips.data('chips'); - for (var i = 0; i < oldData.length; i++) { - newData.push(oldData[i]); - } - newData.push(elem); - - $chips.data('chips', newData); - $(chipHtml).insertBefore($chips.find('input')); - $chips.trigger('chip.add', elem); - self.setPlaceholder($chips); - }; - - this.deleteChip = function(chipIndex, $chips) { - var chip = $chips.data('chips')[chipIndex]; - $chips.find('.chip').eq(chipIndex).remove(); - - var newData = []; - var oldData = $chips.data('chips'); - for (var i = 0; i < oldData.length; i++) { - if (i !== chipIndex) { - newData.push(oldData[i]); - } - } - - $chips.data('chips', newData); - $chips.trigger('chip.delete', chip); - self.setPlaceholder($chips); - }; - - this.selectChip = function(chipIndex, $chips) { - var $chip = $chips.find('.chip').eq(chipIndex); - if ($chip && false === $chip.hasClass('selected')) { - $chip.addClass('selected'); - $chips.trigger('chip.select', $chips.data('chips')[chipIndex]); - } - }; - - this.getChipsElement = function(index, $chips) { - return $chips.eq(index); - }; - - // init - this.init(); - - this.handleEvents(); - }; -}( jQuery )); -;(function ($) { - $.fn.pushpin = function (options) { - // Defaults - var defaults = { - top: 0, - bottom: Infinity, - offset: 0 - }; - - // Remove pushpin event and classes - if (options === "remove") { - this.each(function () { - if (id = $(this).data('pushpin-id')) { - $(window).off('scroll.' + id); - $(this).removeData('pushpin-id').removeClass('pin-top pinned pin-bottom').removeAttr('style'); - } - }); - return false; - } - - options = $.extend(defaults, options); - - - $index = 0; - return this.each(function() { - var $uniqueId = Materialize.guid(), - $this = $(this), - $original_offset = $(this).offset().top; - - function removePinClasses(object) { - object.removeClass('pin-top'); - object.removeClass('pinned'); - object.removeClass('pin-bottom'); - } - - function updateElements(objects, scrolled) { - objects.each(function () { - // Add position fixed (because its between top and bottom) - if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { - removePinClasses($(this)); - $(this).css('top', options.offset); - $(this).addClass('pinned'); - } - - // Add pin-top (when scrolled position is above top) - if (scrolled < options.top && !$(this).hasClass('pin-top')) { - removePinClasses($(this)); - $(this).css('top', 0); - $(this).addClass('pin-top'); - } - - // Add pin-bottom (when scrolled position is below bottom) - if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { - removePinClasses($(this)); - $(this).addClass('pin-bottom'); - $(this).css('top', options.bottom - $original_offset); - } - }); - } - - $(this).data('pushpin-id', $uniqueId); - updateElements($this, $(window).scrollTop()); - $(window).on('scroll.' + $uniqueId, function () { - var $scrolled = $(window).scrollTop() + options.offset; - updateElements($this, $scrolled); - }); - - }); - - }; -}( jQuery ));;(function ($) { - $(document).ready(function() { - - // jQuery reverse - $.fn.reverse = [].reverse; - - // Hover behaviour: make sure this doesn't work on .click-to-toggle FABs! - $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) { - var $this = $(this); - openFABMenu($this); - }); - $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) { - var $this = $(this); - closeFABMenu($this); - }); - - // Toggle-on-click behaviour. - $(document).on('click.fabClickToggle', '.fixed-action-btn.click-to-toggle > a', function(e) { - var $this = $(this); - var $menu = $this.parent(); - if ($menu.hasClass('active')) { - closeFABMenu($menu); - } else { - openFABMenu($menu); - } - }); - - // Toolbar transition behaviour. - $(document).on('click.fabToolbar', '.fixed-action-btn.toolbar > a', function(e) { - var $this = $(this); - var $menu = $this.parent(); - FABtoToolbar($menu); - }); - - }); - - $.fn.extend({ - openFAB: function() { - openFABMenu($(this)); - }, - closeFAB: function() { - closeFABMenu($(this)); - }, - openToolbar: function() { - FABtoToolbar($(this)); - }, - closeToolbar: function() { - toolbarToFAB($(this)); - } - }); - - - var openFABMenu = function (btn) { - var $this = btn; - if ($this.hasClass('active') === false) { - - // Get direction option - var horizontal = $this.hasClass('horizontal'); - var offsetY, offsetX; - - if (horizontal === true) { - offsetX = 40; - } else { - offsetY = 40; - } - - $this.addClass('active'); - $this.find('ul .btn-floating').velocity( - { scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, - { duration: 0 }); - - var time = 0; - $this.find('ul .btn-floating').reverse().each( function () { - $(this).velocity( - { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'}, - { duration: 80, delay: time }); - time += 40; - }); - } - }; - - var closeFABMenu = function (btn) { - var $this = btn; - // Get direction option - var horizontal = $this.hasClass('horizontal'); - var offsetY, offsetX; - - if (horizontal === true) { - offsetX = 40; - } else { - offsetY = 40; - } - - $this.removeClass('active'); - var time = 0; - $this.find('ul .btn-floating').velocity("stop", true); - $this.find('ul .btn-floating').velocity( - { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, - { duration: 80 } - ); - }; - - - /** - * Transform FAB into toolbar - * @param {Object} object jQuery object - */ - var FABtoToolbar = function(btn) { - if (btn.attr('data-open') === "true") { - return; - } - - var offsetX, offsetY, scaleFactor; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var btnRect = btn[0].getBoundingClientRect(); - var anchor = btn.find('> a').first(); - var menu = btn.find('> ul').first(); - var backdrop = $('
      '); - var fabColor = anchor.css('background-color'); - anchor.append(backdrop); - - offsetX = btnRect.left - (windowWidth / 2) + (btnRect.width / 2); - offsetY = windowHeight - btnRect.bottom; - scaleFactor = windowWidth / backdrop.width(); - btn.attr('data-origin-bottom', btnRect.bottom); - btn.attr('data-origin-left', btnRect.left); - btn.attr('data-origin-width', btnRect.width); - - // Set initial state - btn.addClass('active'); - btn.attr('data-open', true); - btn.css({ - 'text-align': 'center', - width: '100%', - bottom: 0, - left: 0, - transform: 'translateX(' + offsetX + 'px)', - transition: 'none' - }); - anchor.css({ - transform: 'translateY(' + -offsetY + 'px)', - transition: 'none' - }); - backdrop.css({ - 'background-color': fabColor - }); - - - setTimeout(function() { - btn.css({ - transform: '', - transition: 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s' - }); - anchor.css({ - overflow: 'visible', - transform: '', - transition: 'transform .2s' - }); - - setTimeout(function() { - btn.css({ - overflow: 'hidden', - 'background-color': fabColor - }); - backdrop.css({ - transform: 'scale(' + scaleFactor + ')', - transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)' - }); - menu.find('> li > a').css({ - opacity: 1 - }); - - // Scroll to close. - $(window).on('scroll.fabToolbarClose', function() { - toolbarToFAB(btn); - $(window).off('scroll.fabToolbarClose'); - $(document).off('click.fabToolbarClose'); - }); - - $(document).on('click.fabToolbarClose', function(e) { - if (!$(e.target).closest(menu).length) { - toolbarToFAB(btn); - $(window).off('scroll.fabToolbarClose'); - $(document).off('click.fabToolbarClose'); - } - }); - }, 100); - }, 0); - }; - - /** - * Transform toolbar back into FAB - * @param {Object} object jQuery object - */ - var toolbarToFAB = function(btn) { - if (btn.attr('data-open') !== "true") { - return; - } - - var offsetX, offsetY, scaleFactor; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var btnWidth = btn.attr('data-origin-width'); - var btnBottom = btn.attr('data-origin-bottom'); - var btnLeft = btn.attr('data-origin-left'); - var anchor = btn.find('> .btn-floating').first(); - var menu = btn.find('> ul').first(); - var backdrop = btn.find('.fab-backdrop'); - var fabColor = anchor.css('background-color'); - - offsetX = btnLeft - (windowWidth / 2) + (btnWidth / 2); - offsetY = windowHeight - btnBottom; - scaleFactor = windowWidth / backdrop.width(); - - - // Hide backdrop - btn.removeClass('active'); - btn.attr('data-open', false); - btn.css({ - 'background-color': 'transparent', - transition: 'none' - }); - anchor.css({ - transition: 'none' - }); - backdrop.css({ - transform: 'scale(0)', - 'background-color': fabColor - }); - menu.find('> li > a').css({ - opacity: '' - }); - - setTimeout(function() { - backdrop.remove(); - - // Set initial state. - btn.css({ - 'text-align': '', - width: '', - bottom: '', - left: '', - overflow: '', - 'background-color': '', - transform: 'translate3d(' + -offsetX + 'px,0,0)' - }); - anchor.css({ - overflow: '', - transform: 'translate3d(0,' + offsetY + 'px,0)' - }); - - setTimeout(function() { - btn.css({ - transform: 'translate3d(0,0,0)', - transition: 'transform .2s' - }); - anchor.css({ - transform: 'translate3d(0,0,0)', - transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)' - }); - }, 20); - }, 200); - }; - - -}( jQuery )); -;(function ($) { - // Image transition function - Materialize.fadeInImage = function(selectorOrEl) { - var element; - if (typeof(selectorOrEl) === 'string') { - element = $(selectorOrEl); - } else if (typeof(selectorOrEl) === 'object') { - element = selectorOrEl; - } else { - return; - } - element.css({opacity: 0}); - $(element).velocity({opacity: 1}, { - duration: 650, - queue: false, - easing: 'easeOutSine' - }); - $(element).velocity({opacity: 1}, { - duration: 1300, - queue: false, - easing: 'swing', - step: function(now, fx) { - fx.start = 100; - var grayscale_setting = now/100; - var brightness_setting = 150 - (100 - now)/1.75; - - if (brightness_setting < 100) { - brightness_setting = 100; - } - if (now >= 0) { - $(this).css({ - "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)", - "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)" - }); - } - } - }); - }; - - // Horizontal staggered list - Materialize.showStaggeredList = function(selectorOrEl) { - var element; - if (typeof(selectorOrEl) === 'string') { - element = $(selectorOrEl); - } else if (typeof(selectorOrEl) === 'object') { - element = selectorOrEl; - } else { - return; - } - var time = 0; - element.find('li').velocity( - { translateX: "-100px"}, - { duration: 0 }); - - element.find('li').each(function() { - $(this).velocity( - { opacity: "1", translateX: "0"}, - { duration: 800, delay: time, easing: [60, 10] }); - time += 120; - }); - }; - - - $(document).ready(function() { - // Hardcoded .staggered-list scrollFire - // var staggeredListOptions = []; - // $('ul.staggered-list').each(function (i) { - - // var label = 'scrollFire-' + i; - // $(this).addClass(label); - // staggeredListOptions.push( - // {selector: 'ul.staggered-list.' + label, - // offset: 200, - // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'}); - // }); - // scrollFire(staggeredListOptions); - - // HammerJS, Swipe navigation - - // Touch Event - var swipeLeft = false; - var swipeRight = false; - - - // Dismissible Collections - $('.dismissable').each(function() { - $(this).hammer({ - prevent_default: false - }).bind('pan', function(e) { - if (e.gesture.pointerType === "touch") { - var $this = $(this); - var direction = e.gesture.direction; - var x = e.gesture.deltaX; - var velocityX = e.gesture.velocityX; - - $this.velocity({ translateX: x - }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - - // Swipe Left - if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) { - swipeLeft = true; - } - - // Swipe Right - if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) { - swipeRight = true; - } - } - }).bind('panend', function(e) { - // Reset if collection is moved back into original position - if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) { - swipeRight = false; - swipeLeft = false; - } - - if (e.gesture.pointerType === "touch") { - var $this = $(this); - if (swipeLeft || swipeRight) { - var fullWidth; - if (swipeLeft) { fullWidth = $this.innerWidth(); } - else { fullWidth = -1 * $this.innerWidth(); } - - $this.velocity({ translateX: fullWidth, - }, {duration: 100, queue: false, easing: 'easeOutQuad', complete: - function() { - $this.css('border', 'none'); - $this.velocity({ height: 0, padding: 0, - }, {duration: 200, queue: false, easing: 'easeOutQuad', complete: - function() { $this.remove(); } - }); - } - }); - } - else { - $this.velocity({ translateX: 0, - }, {duration: 100, queue: false, easing: 'easeOutQuad'}); - } - swipeLeft = false; - swipeRight = false; - } - }); - - }); - - - // time = 0 - // // Vertical Staggered list - // $('ul.staggered-list.vertical li').velocity( - // { translateY: "100px"}, - // { duration: 0 }); - - // $('ul.staggered-list.vertical li').each(function() { - // $(this).velocity( - // { opacity: "1", translateY: "0"}, - // { duration: 800, delay: time, easing: [60, 25] }); - // time += 120; - // }); - - // // Fade in and Scale - // $('.fade-in.scale').velocity( - // { scaleX: .4, scaleY: .4, translateX: -600}, - // { duration: 0}); - // $('.fade-in').each(function() { - // $(this).velocity( - // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0}, - // { duration: 800, easing: [60, 10] }); - // }); - }); -}( jQuery )); -;(function($) { - - var scrollFireEventsHandled = false; - - // Input: Array of JSON objects {selector, offset, callback} - Materialize.scrollFire = function(options) { - var onScroll = function() { - var windowScroll = window.pageYOffset + window.innerHeight; - - for (var i = 0 ; i < options.length; i++) { - // Get options from each line - var value = options[i]; - var selector = value.selector, - offset = value.offset, - callback = value.callback; - - var currentElement = document.querySelector(selector); - if ( currentElement !== null) { - var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset; - - if (windowScroll > (elementOffset + offset)) { - if (value.done !== true) { - if (typeof(callback) === 'function') { - callback.call(this, currentElement); - } else if (typeof(callback) === 'string') { - var callbackFunc = new Function(callback); - callbackFunc(currentElement); - } - value.done = true; - } - } - } - } - }; - - - var throttledScroll = Materialize.throttle(function() { - onScroll(); - }, options.throttle || 100); - - if (!scrollFireEventsHandled) { - window.addEventListener("scroll", throttledScroll); - window.addEventListener("resize", throttledScroll); - scrollFireEventsHandled = true; - } - - // perform a scan once, after current execution context, and after dom is ready - setTimeout(throttledScroll, 0); - }; - -})(jQuery); -;/*! - * pickadate.js v3.5.0, 2014/04/13 - * By Amsul, http://amsul.ca - * Hosted on http://amsul.github.io/pickadate.js - * Licensed under MIT - */ - -(function ( factory ) { - - // AMD. - if ( typeof define == 'function' && define.amd ) - define( 'picker', ['jquery'], factory ) - - // Node.js/browserify. - else if ( typeof exports == 'object' ) - module.exports = factory( require('jquery') ) - - // Browser globals. - else this.Picker = factory( jQuery ) - -}(function( $ ) { - -var $window = $( window ) -var $document = $( document ) -var $html = $( document.documentElement ) - - -/** - * The picker constructor that creates a blank picker. - */ -function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) { - - // If there’s no element, return the picker constructor. - if ( !ELEMENT ) return PickerConstructor - - - var - IS_DEFAULT_THEME = false, - - - // The state of the picker. - STATE = { - id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ) - }, - - - // Merge the defaults and options passed. - SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {}, - - - // Merge the default classes with the settings classes. - CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ), - - - // The element node wrapper into a jQuery object. - $ELEMENT = $( ELEMENT ), - - - // Pseudo picker constructor. - PickerInstance = function() { - return this.start() - }, - - - // The picker prototype. - P = PickerInstance.prototype = { - - constructor: PickerInstance, - - $node: $ELEMENT, - - - /** - * Initialize everything - */ - start: function() { - - // If it’s already started, do nothing. - if ( STATE && STATE.start ) return P - - - // Update the picker states. - STATE.methods = {} - STATE.start = true - STATE.open = false - STATE.type = ELEMENT.type - - - // Confirm focus state, convert into text input to remove UA stylings, - // and set as readonly to prevent keyboard popup. - ELEMENT.autofocus = ELEMENT == getActiveElement() - ELEMENT.readOnly = !SETTINGS.editable - ELEMENT.id = ELEMENT.id || STATE.id - if ( ELEMENT.type != 'text' ) { - ELEMENT.type = 'text' - } - - - // Create a new picker component with the settings. - P.component = new COMPONENT(P, SETTINGS) - - - // Create the picker root with a holder and then prepare it. - P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') ) - prepareElementRoot() - - - // If there’s a format for the hidden input element, create the element. - if ( SETTINGS.formatSubmit ) { - prepareElementHidden() - } - - - // Prepare the input element. - prepareElement() - - - // Insert the root as specified in the settings. - if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root ) - else $ELEMENT.after( P.$root ) - - - // Bind the default component and settings events. - P.on({ - start: P.component.onStart, - render: P.component.onRender, - stop: P.component.onStop, - open: P.component.onOpen, - close: P.component.onClose, - set: P.component.onSet - }).on({ - start: SETTINGS.onStart, - render: SETTINGS.onRender, - stop: SETTINGS.onStop, - open: SETTINGS.onOpen, - close: SETTINGS.onClose, - set: SETTINGS.onSet - }) - - - // Once we’re all set, check the theme in use. - IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] ) - - - // If the element has autofocus, open the picker. - if ( ELEMENT.autofocus ) { - P.open() - } - - - // Trigger queued the “start” and “render” events. - return P.trigger( 'start' ).trigger( 'render' ) - }, //start - - - /** - * Render a new picker - */ - render: function( entireComponent ) { - - // Insert a new component holder in the root or box. - if ( entireComponent ) P.$root.html( createWrappedComponent() ) - else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) ) - - // Trigger the queued “render” events. - return P.trigger( 'render' ) - }, //render - - - /** - * Destroy everything - */ - stop: function() { - - // If it’s already stopped, do nothing. - if ( !STATE.start ) return P - - // Then close the picker. - P.close() - - // Remove the hidden field. - if ( P._hidden ) { - P._hidden.parentNode.removeChild( P._hidden ) - } - - // Remove the root. - P.$root.remove() - - // Remove the input class, remove the stored data, and unbind - // the events (after a tick for IE - see `P.close`). - $ELEMENT.removeClass( CLASSES.input ).removeData( NAME ) - setTimeout( function() { - $ELEMENT.off( '.' + STATE.id ) - }, 0) - - // Restore the element state - ELEMENT.type = STATE.type - ELEMENT.readOnly = false - - // Trigger the queued “stop” events. - P.trigger( 'stop' ) - - // Reset the picker states. - STATE.methods = {} - STATE.start = false - - return P - }, //stop - - - /** - * Open up the picker - */ - open: function( dontGiveFocus ) { - - // If it’s already open, do nothing. - if ( STATE.open ) return P - - // Add the “active” class. - $ELEMENT.addClass( CLASSES.active ) - aria( ELEMENT, 'expanded', true ) - - // * A Firefox bug, when `html` has `overflow:hidden`, results in - // killing transitions :(. So add the “opened” state on the next tick. - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 - setTimeout( function() { - - // Add the “opened” class to the picker root. - P.$root.addClass( CLASSES.opened ) - aria( P.$root[0], 'hidden', false ) - - }, 0 ) - - // If we have to give focus, bind the element and doc events. - if ( dontGiveFocus !== false ) { - - // Set it as open. - STATE.open = true - - // Prevent the page from scrolling. - if ( IS_DEFAULT_THEME ) { - $html. - css( 'overflow', 'hidden' ). - css( 'padding-right', '+=' + getScrollbarWidth() ) - } - - // Pass focus to the root element’s jQuery object. - // * Workaround for iOS8 to bring the picker’s root into view. - P.$root.eq(0).focus() - - // Bind the document events. - $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) { - - var target = event.target - - // If the target of the event is not the element, close the picker picker. - // * Don’t worry about clicks or focusins on the root because those don’t bubble up. - // Also, for Firefox, a click on an `option` element bubbles up directly - // to the doc. So make sure the target wasn't the doc. - // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, - // which causes the picker to unexpectedly close when right-clicking it. So make - // sure the event wasn’t a right-click. - if ( target != ELEMENT && target != document && event.which != 3 ) { - - // If the target was the holder that covers the screen, - // keep the element focused to maintain tabindex. - P.close( target === P.$root.children()[0] ) - } - - }).on( 'keydown.' + STATE.id, function( event ) { - - var - // Get the keycode. - keycode = event.keyCode, - - // Translate that to a selection change. - keycodeToMove = P.component.key[ keycode ], - - // Grab the target. - target = event.target - - - // On escape, close the picker and give focus. - if ( keycode == 27 ) { - P.close( true ) - } - - - // Check if there is a key movement or “enter” keypress on the element. - else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) { - - // Prevent the default action to stop page movement. - event.preventDefault() - - // Trigger the key movement action. - if ( keycodeToMove ) { - PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] ) - } - - // On “enter”, if the highlighted item isn’t disabled, set the value and close. - else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) { - P.set( 'select', P.component.item.highlight ).close() - } - } - - - // If the target is within the root and “enter” is pressed, - // prevent the default action and trigger a click on the target instead. - else if ( $.contains( P.$root[0], target ) && keycode == 13 ) { - event.preventDefault() - target.click() - } - }) - } - - // Trigger the queued “open” events. - return P.trigger( 'open' ) - }, //open - - - /** - * Close the picker - */ - close: function( giveFocus ) { - - // If we need to give focus, do it before changing states. - if ( giveFocus ) { - // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| - // The focus is triggered *after* the close has completed - causing it - // to open again. So unbind and rebind the event at the next tick. - P.$root.off( 'focus.toOpen' ).eq(0).focus() - setTimeout( function() { - P.$root.on( 'focus.toOpen', handleFocusToOpenEvent ) - }, 0 ) - } - - // Remove the “active” class. - $ELEMENT.removeClass( CLASSES.active ) - aria( ELEMENT, 'expanded', false ) - - // * A Firefox bug, when `html` has `overflow:hidden`, results in - // killing transitions :(. So remove the “opened” state on the next tick. - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 - setTimeout( function() { - - // Remove the “opened” and “focused” class from the picker root. - P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused ) - aria( P.$root[0], 'hidden', true ) - - }, 0 ) - - // If it’s already closed, do nothing more. - if ( !STATE.open ) return P - - // Set it as closed. - STATE.open = false - - // Allow the page to scroll. - if ( IS_DEFAULT_THEME ) { - $html. - css( 'overflow', '' ). - css( 'padding-right', '-=' + getScrollbarWidth() ) - } - - // Unbind the document events. - $document.off( '.' + STATE.id ) - - // Trigger the queued “close” events. - return P.trigger( 'close' ) - }, //close - - - /** - * Clear the values - */ - clear: function( options ) { - return P.set( 'clear', null, options ) - }, //clear - - - /** - * Set something - */ - set: function( thing, value, options ) { - - var thingItem, thingValue, - thingIsObject = $.isPlainObject( thing ), - thingObject = thingIsObject ? thing : {} - - // Make sure we have usable options. - options = thingIsObject && $.isPlainObject( value ) ? value : options || {} - - if ( thing ) { - - // If the thing isn’t an object, make it one. - if ( !thingIsObject ) { - thingObject[ thing ] = value - } - - // Go through the things of items to set. - for ( thingItem in thingObject ) { - - // Grab the value of the thing. - thingValue = thingObject[ thingItem ] - - // First, if the item exists and there’s a value, set it. - if ( thingItem in P.component.item ) { - if ( thingValue === undefined ) thingValue = null - P.component.set( thingItem, thingValue, options ) - } - - // Then, check to update the element value and broadcast a change. - if ( thingItem == 'select' || thingItem == 'clear' ) { - $ELEMENT. - val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ). - trigger( 'change' ) - } - } - - // Render a new picker. - P.render() - } - - // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. - return options.muted ? P : P.trigger( 'set', thingObject ) - }, //set - - - /** - * Get something - */ - get: function( thing, format ) { - - // Make sure there’s something to get. - thing = thing || 'value' - - // If a picker state exists, return that. - if ( STATE[ thing ] != null ) { - return STATE[ thing ] - } - - // Return the submission value, if that. - if ( thing == 'valueSubmit' ) { - if ( P._hidden ) { - return P._hidden.value - } - thing = 'value' - } - - // Return the value, if that. - if ( thing == 'value' ) { - return ELEMENT.value - } - - // Check if a component item exists, return that. - if ( thing in P.component.item ) { - if ( typeof format == 'string' ) { - var thingValue = P.component.get( thing ) - return thingValue ? - PickerConstructor._.trigger( - P.component.formats.toString, - P.component, - [ format, thingValue ] - ) : '' - } - return P.component.get( thing ) - } - }, //get - - - - /** - * Bind events on the things. - */ - on: function( thing, method, internal ) { - - var thingName, thingMethod, - thingIsObject = $.isPlainObject( thing ), - thingObject = thingIsObject ? thing : {} - - if ( thing ) { - - // If the thing isn’t an object, make it one. - if ( !thingIsObject ) { - thingObject[ thing ] = method - } - - // Go through the things to bind to. - for ( thingName in thingObject ) { - - // Grab the method of the thing. - thingMethod = thingObject[ thingName ] - - // If it was an internal binding, prefix it. - if ( internal ) { - thingName = '_' + thingName - } - - // Make sure the thing methods collection exists. - STATE.methods[ thingName ] = STATE.methods[ thingName ] || [] - - // Add the method to the relative method collection. - STATE.methods[ thingName ].push( thingMethod ) - } - } - - return P - }, //on - - - - /** - * Unbind events on the things. - */ - off: function() { - var i, thingName, - names = arguments; - for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) { - thingName = names[i] - if ( thingName in STATE.methods ) { - delete STATE.methods[thingName] - } - } - return P - }, - - - /** - * Fire off method events. - */ - trigger: function( name, data ) { - var _trigger = function( name ) { - var methodList = STATE.methods[ name ] - if ( methodList ) { - methodList.map( function( method ) { - PickerConstructor._.trigger( method, P, [ data ] ) - }) - } - } - _trigger( '_' + name ) - _trigger( name ) - return P - } //trigger - } //PickerInstance.prototype - - - /** - * Wrap the picker holder components together. - */ - function createWrappedComponent() { - - // Create a picker wrapper holder - return PickerConstructor._.node( 'div', - - // Create a picker wrapper node - PickerConstructor._.node( 'div', - - // Create a picker frame - PickerConstructor._.node( 'div', - - // Create a picker box node - PickerConstructor._.node( 'div', - - // Create the components nodes. - P.component.nodes( STATE.open ), - - // The picker box class - CLASSES.box - ), - - // Picker wrap class - CLASSES.wrap - ), - - // Picker frame class - CLASSES.frame - ), - - // Picker holder class - CLASSES.holder - ) //endreturn - } //createWrappedComponent - - - - /** - * Prepare the input element with all bindings. - */ - function prepareElement() { - - $ELEMENT. - - // Store the picker data by component name. - data(NAME, P). - - // Add the “input” class name. - addClass(CLASSES.input). - - // Remove the tabindex. - attr('tabindex', -1). - - // If there’s a `data-value`, update the value of the element. - val( $ELEMENT.data('value') ? - P.get('select', SETTINGS.format) : - ELEMENT.value - ) - - - // Only bind keydown events if the element isn’t editable. - if ( !SETTINGS.editable ) { - - $ELEMENT. - - // On focus/click, focus onto the root to open it up. - on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) { - event.preventDefault() - P.$root.eq(0).focus() - }). - - // Handle keyboard event based on the picker being opened or not. - on( 'keydown.' + STATE.id, handleKeydownEvent ) - } - - - // Update the aria attributes. - aria(ELEMENT, { - haspopup: true, - expanded: false, - readonly: false, - owns: ELEMENT.id + '_root' - }) - } - - - /** - * Prepare the root picker element with all bindings. - */ - function prepareElementRoot() { - - P.$root. - - on({ - - // For iOS8. - keydown: handleKeydownEvent, - - // When something within the root is focused, stop from bubbling - // to the doc and remove the “focused” state from the root. - focusin: function( event ) { - P.$root.removeClass( CLASSES.focused ) - event.stopPropagation() - }, - - // When something within the root holder is clicked, stop it - // from bubbling to the doc. - 'mousedown click': function( event ) { - - var target = event.target - - // Make sure the target isn’t the root holder so it can bubble up. - if ( target != P.$root.children()[ 0 ] ) { - - event.stopPropagation() - - // * For mousedown events, cancel the default action in order to - // prevent cases where focus is shifted onto external elements - // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120). - // Also, for Firefox, don’t prevent action on the `option` element. - if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) { - - event.preventDefault() - - // Re-focus onto the root so that users can click away - // from elements focused within the picker. - P.$root.eq(0).focus() - } - } - } - }). - - // Add/remove the “target” class on focus and blur. - on({ - focus: function() { - $ELEMENT.addClass( CLASSES.target ) - }, - blur: function() { - $ELEMENT.removeClass( CLASSES.target ) - } - }). - - // Open the picker and adjust the root “focused” state - on( 'focus.toOpen', handleFocusToOpenEvent ). - - // If there’s a click on an actionable element, carry out the actions. - on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() { - - var $target = $( this ), - targetData = $target.data(), - targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ), - - // * For IE, non-focusable elements can be active elements as well - // (http://stackoverflow.com/a/2684561). - activeElement = getActiveElement() - activeElement = activeElement && ( activeElement.type || activeElement.href ) - - // If it’s disabled or nothing inside is actively focused, re-focus the element. - if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) { - P.$root.eq(0).focus() - } - - // If something is superficially changed, update the `highlight` based on the `nav`. - if ( !targetDisabled && targetData.nav ) { - P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } ) - } - - // If something is picked, set `select` then close with focus. - else if ( !targetDisabled && 'pick' in targetData ) { - P.set( 'select', targetData.pick ) - } - - // If a “clear” button is pressed, empty the values and close with focus. - else if ( targetData.clear ) { - P.clear().close( true ) - } - - else if ( targetData.close ) { - P.close( true ) - } - - }) //P.$root - - aria( P.$root[0], 'hidden', true ) - } - - - /** - * Prepare the hidden input element along with all bindings. - */ - function prepareElementHidden() { - - var name - - if ( SETTINGS.hiddenName === true ) { - name = ELEMENT.name - ELEMENT.name = '' - } - else { - name = [ - typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '', - typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit' - ] - name = name[0] + ELEMENT.name + name[1] - } - - P._hidden = $( - '' - )[0] - - $ELEMENT. - - // If the value changes, update the hidden input with the correct format. - on('change.' + STATE.id, function() { - P._hidden.value = ELEMENT.value ? - P.get('select', SETTINGS.formatSubmit) : - '' - }) - - - // Insert the hidden input as specified in the settings. - if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden ) - else $ELEMENT.after( P._hidden ) - } - - - // For iOS8. - function handleKeydownEvent( event ) { - - var keycode = event.keyCode, - - // Check if one of the delete keys was pressed. - isKeycodeDelete = /^(8|46)$/.test(keycode) - - // For some reason IE clears the input value on “escape”. - if ( keycode == 27 ) { - P.close() - return false - } - - // Check if `space` or `delete` was pressed or the picker is closed with a key movement. - if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) { - - // Prevent it from moving the page and bubbling to doc. - event.preventDefault() - event.stopPropagation() - - // If `delete` was pressed, clear the values and close the picker. - // Otherwise open the picker. - if ( isKeycodeDelete ) { P.clear().close() } - else { P.open() } - } - } - - - // Separated for IE - function handleFocusToOpenEvent( event ) { - - // Stop the event from propagating to the doc. - event.stopPropagation() - - // If it’s a focus event, add the “focused” class to the root. - if ( event.type == 'focus' ) { - P.$root.addClass( CLASSES.focused ) - } - - // And then finally open the picker. - P.open() - } - - - // Return a new picker instance. - return new PickerInstance() -} //PickerConstructor - - - -/** - * The default classes and prefix to use for the HTML classes. - */ -PickerConstructor.klasses = function( prefix ) { - prefix = prefix || 'picker' - return { - - picker: prefix, - opened: prefix + '--opened', - focused: prefix + '--focused', - - input: prefix + '__input', - active: prefix + '__input--active', - target: prefix + '__input--target', - - holder: prefix + '__holder', - - frame: prefix + '__frame', - wrap: prefix + '__wrap', - - box: prefix + '__box' - } -} //PickerConstructor.klasses - - - -/** - * Check if the default theme is being used. - */ -function isUsingDefaultTheme( element ) { - - var theme, - prop = 'position' - - // For IE. - if ( element.currentStyle ) { - theme = element.currentStyle[prop] - } - - // For normal browsers. - else if ( window.getComputedStyle ) { - theme = getComputedStyle( element )[prop] - } - - return theme == 'fixed' -} - - - -/** - * Get the width of the browser’s scrollbar. - * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js - */ -function getScrollbarWidth() { - - if ( $html.height() <= $window.height() ) { - return 0 - } - - var $outer = $( '
      ' ). - appendTo( 'body' ) - - // Get the width without scrollbars. - var widthWithoutScroll = $outer[0].offsetWidth - - // Force adding scrollbars. - $outer.css( 'overflow', 'scroll' ) - - // Add the inner div. - var $inner = $( '
      ' ).appendTo( $outer ) - - // Get the width with scrollbars. - var widthWithScroll = $inner[0].offsetWidth - - // Remove the divs. - $outer.remove() - - // Return the difference between the widths. - return widthWithoutScroll - widthWithScroll -} - - - -/** - * PickerConstructor helper methods. - */ -PickerConstructor._ = { - - /** - * Create a group of nodes. Expects: - * ` - { - min: {Integer}, - max: {Integer}, - i: {Integer}, - node: {String}, - item: {Function} - } - * ` - */ - group: function( groupObject ) { - - var - // Scope for the looped object - loopObjectScope, - - // Create the nodes list - nodesList = '', - - // The counter starts from the `min` - counter = PickerConstructor._.trigger( groupObject.min, groupObject ) - - - // Loop from the `min` to `max`, incrementing by `i` - for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) { - - // Trigger the `item` function within scope of the object - loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] ) - - // Splice the subgroup and create nodes out of the sub nodes - nodesList += PickerConstructor._.node( - groupObject.node, - loopObjectScope[ 0 ], // the node - loopObjectScope[ 1 ], // the classes - loopObjectScope[ 2 ] // the attributes - ) - } - - // Return the list of nodes - return nodesList - }, //group - - - /** - * Create a dom node string - */ - node: function( wrapper, item, klass, attribute ) { - - // If the item is false-y, just return an empty string - if ( !item ) return '' - - // If the item is an array, do a join - item = $.isArray( item ) ? item.join( '' ) : item - - // Check for the class - klass = klass ? ' class="' + klass + '"' : '' - - // Check for any attributes - attribute = attribute ? ' ' + attribute : '' - - // Return the wrapped item - return '<' + wrapper + klass + attribute + '>' + item + '' - }, //node - - - /** - * Lead numbers below 10 with a zero. - */ - lead: function( number ) { - return ( number < 10 ? '0': '' ) + number - }, - - - /** - * Trigger a function otherwise return the value. - */ - trigger: function( callback, scope, args ) { - return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback - }, - - - /** - * If the second character is a digit, length is 2 otherwise 1. - */ - digits: function( string ) { - return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1 - }, - - - /** - * Tell if something is a date object. - */ - isDate: function( value ) { - return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() ) - }, - - - /** - * Tell if something is an integer. - */ - isInteger: function( value ) { - return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0 - }, - - - /** - * Create ARIA attribute strings. - */ - ariaAttr: ariaAttr -} //PickerConstructor._ - - - -/** - * Extend the picker with a component and defaults. - */ -PickerConstructor.extend = function( name, Component ) { - - // Extend jQuery. - $.fn[ name ] = function( options, action ) { - - // Grab the component data. - var componentData = this.data( name ) - - // If the picker is requested, return the data object. - if ( options == 'picker' ) { - return componentData - } - - // If the component data exists and `options` is a string, carry out the action. - if ( componentData && typeof options == 'string' ) { - return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] ) - } - - // Otherwise go through each matched element and if the component - // doesn’t exist, create a new picker using `this` element - // and merging the defaults and options with a deep copy. - return this.each( function() { - var $this = $( this ) - if ( !$this.data( name ) ) { - new PickerConstructor( this, name, Component, options ) - } - }) - } - - // Set the defaults. - $.fn[ name ].defaults = Component.defaults -} //PickerConstructor.extend - - - -function aria(element, attribute, value) { - if ( $.isPlainObject(attribute) ) { - for ( var key in attribute ) { - ariaSet(element, key, attribute[key]) - } - } - else { - ariaSet(element, attribute, value) - } -} -function ariaSet(element, attribute, value) { - element.setAttribute( - (attribute == 'role' ? '' : 'aria-') + attribute, - value - ) -} -function ariaAttr(attribute, data) { - if ( !$.isPlainObject(attribute) ) { - attribute = { attribute: data } - } - data = '' - for ( var key in attribute ) { - var attr = (key == 'role' ? '' : 'aria-') + key, - attrVal = attribute[key] - data += attrVal == null ? '' : attr + '="' + attribute[key] + '"' - } - return data -} - -// IE8 bug throws an error for activeElements within iframes. -function getActiveElement() { - try { - return document.activeElement - } catch ( err ) { } -} - - - -// Expose the picker constructor. -return PickerConstructor - - -})); - - -;/*! - * Date picker for pickadate.js v3.5.0 - * http://amsul.github.io/pickadate.js/date.htm - */ - -(function ( factory ) { - - // AMD. - if ( typeof define == 'function' && define.amd ) - define( ['picker', 'jquery'], factory ) - - // Node.js/browserify. - else if ( typeof exports == 'object' ) - module.exports = factory( require('./picker.js'), require('jquery') ) - - // Browser globals. - else factory( Picker, jQuery ) - -}(function( Picker, $ ) { - - -/** - * Globals and constants - */ -var DAYS_IN_WEEK = 7, - WEEKS_IN_CALENDAR = 6, - _ = Picker._ - - - -/** - * The date picker constructor - */ -function DatePicker( picker, settings ) { - - var calendar = this, - element = picker.$node[ 0 ], - elementValue = element.value, - elementDataValue = picker.$node.data( 'value' ), - valueString = elementDataValue || elementValue, - formatString = elementDataValue ? settings.formatSubmit : settings.format, - isRTL = function() { - - return element.currentStyle ? - - // For IE. - element.currentStyle.direction == 'rtl' : - - // For normal browsers. - getComputedStyle( picker.$root[0] ).direction == 'rtl' - } - - calendar.settings = settings - calendar.$node = picker.$node - - // The queue of methods that will be used to build item objects. - calendar.queue = { - min: 'measure create', - max: 'measure create', - now: 'now create', - select: 'parse create validate', - highlight: 'parse navigate create validate', - view: 'parse create validate viewset', - disable: 'deactivate', - enable: 'activate' - } - - // The component's item object. - calendar.item = {} - - calendar.item.clear = null - calendar.item.disable = ( settings.disable || [] ).slice( 0 ) - calendar.item.enable = -(function( collectionDisabled ) { - return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1 - })( calendar.item.disable ) - - calendar. - set( 'min', settings.min ). - set( 'max', settings.max ). - set( 'now' ) - - // When there’s a value, set the `select`, which in turn - // also sets the `highlight` and `view`. - if ( valueString ) { - calendar.set( 'select', valueString, { format: formatString }) - } - - // If there’s no value, default to highlighting “today”. - else { - calendar. - set( 'select', null ). - set( 'highlight', calendar.item.now ) - } - - - // The keycode to movement mapping. - calendar.key = { - 40: 7, // Down - 38: -7, // Up - 39: function() { return isRTL() ? -1 : 1 }, // Right - 37: function() { return isRTL() ? 1 : -1 }, // Left - go: function( timeChange ) { - var highlightedObject = calendar.item.highlight, - targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange ) - calendar.set( - 'highlight', - targetDate, - { interval: timeChange } - ) - this.render() - } - } - - - // Bind some picker events. - picker. - on( 'render', function() { - picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() { - var value = this.value - if ( value ) { - picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] ) - picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' ) - } - }) - picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() { - var value = this.value - if ( value ) { - picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] ) - picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' ) - } - }) - }, 1 ). - on( 'open', function() { - var includeToday = '' - if ( calendar.disabled( calendar.get('now') ) ) { - includeToday = ':not(.' + settings.klass.buttonToday + ')' - } - picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false ) - }, 1 ). - on( 'close', function() { - picker.$root.find( 'button, select' ).attr( 'disabled', true ) - }, 1 ) - -} //DatePicker - - -/** - * Set a datepicker item object. - */ -DatePicker.prototype.set = function( type, value, options ) { - - var calendar = this, - calendarItem = calendar.item - - // If the value is `null` just set it immediately. - if ( value === null ) { - if ( type == 'clear' ) type = 'select' - calendarItem[ type ] = value - return calendar - } - - // Otherwise go through the queue of methods, and invoke the functions. - // Update this as the time unit, and set the final value as this item. - // * In the case of `enable`, keep the queue but set `disable` instead. - // And in the case of `flip`, keep the queue but set `enable` instead. - calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) { - value = calendar[ method ]( type, value, options ) - return value - }).pop() - - // Check if we need to cascade through more updates. - if ( type == 'select' ) { - calendar.set( 'highlight', calendarItem.select, options ) - } - else if ( type == 'highlight' ) { - calendar.set( 'view', calendarItem.highlight, options ) - } - else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) { - if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) { - calendar.set( 'select', calendarItem.select, options ) - } - if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) { - calendar.set( 'highlight', calendarItem.highlight, options ) - } - } - - return calendar -} //DatePicker.prototype.set - - -/** - * Get a datepicker item object. - */ -DatePicker.prototype.get = function( type ) { - return this.item[ type ] -} //DatePicker.prototype.get - - -/** - * Create a picker date object. - */ -DatePicker.prototype.create = function( type, value, options ) { - - var isInfiniteValue, - calendar = this - - // If there’s no value, use the type as the value. - value = value === undefined ? type : value - - - // If it’s infinity, update the value. - if ( value == -Infinity || value == Infinity ) { - isInfiniteValue = value - } - - // If it’s an object, use the native date object. - else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) { - value = value.obj - } - - // If it’s an array, convert it into a date and make sure - // that it’s a valid date – otherwise default to today. - else if ( $.isArray( value ) ) { - value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] ) - value = _.isDate( value ) ? value : calendar.create().obj - } - - // If it’s a number or date object, make a normalized date. - else if ( _.isInteger( value ) || _.isDate( value ) ) { - value = calendar.normalize( new Date( value ), options ) - } - - // If it’s a literal true or any other case, set it to now. - else /*if ( value === true )*/ { - value = calendar.now( type, value, options ) - } - - // Return the compiled object. - return { - year: isInfiniteValue || value.getFullYear(), - month: isInfiniteValue || value.getMonth(), - date: isInfiniteValue || value.getDate(), - day: isInfiniteValue || value.getDay(), - obj: isInfiniteValue || value, - pick: isInfiniteValue || value.getTime() - } -} //DatePicker.prototype.create - - -/** - * Create a range limit object using an array, date object, - * literal “true”, or integer relative to another time. - */ -DatePicker.prototype.createRange = function( from, to ) { - - var calendar = this, - createDate = function( date ) { - if ( date === true || $.isArray( date ) || _.isDate( date ) ) { - return calendar.create( date ) - } - return date - } - - // Create objects if possible. - if ( !_.isInteger( from ) ) { - from = createDate( from ) - } - if ( !_.isInteger( to ) ) { - to = createDate( to ) - } - - // Create relative dates. - if ( _.isInteger( from ) && $.isPlainObject( to ) ) { - from = [ to.year, to.month, to.date + from ]; - } - else if ( _.isInteger( to ) && $.isPlainObject( from ) ) { - to = [ from.year, from.month, from.date + to ]; - } - - return { - from: createDate( from ), - to: createDate( to ) - } -} //DatePicker.prototype.createRange - - -/** - * Check if a date unit falls within a date range object. - */ -DatePicker.prototype.withinRange = function( range, dateUnit ) { - range = this.createRange(range.from, range.to) - return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick -} - - -/** - * Check if two date range objects overlap. - */ -DatePicker.prototype.overlapRanges = function( one, two ) { - - var calendar = this - - // Convert the ranges into comparable dates. - one = calendar.createRange( one.from, one.to ) - two = calendar.createRange( two.from, two.to ) - - return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) || - calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to ) -} - - -/** - * Get the date today. - */ -DatePicker.prototype.now = function( type, value, options ) { - value = new Date() - if ( options && options.rel ) { - value.setDate( value.getDate() + options.rel ) - } - return this.normalize( value, options ) -} - - -/** - * Navigate to next/prev month. - */ -DatePicker.prototype.navigate = function( type, value, options ) { - - var targetDateObject, - targetYear, - targetMonth, - targetDate, - isTargetArray = $.isArray( value ), - isTargetObject = $.isPlainObject( value ), - viewsetObject = this.item.view/*, - safety = 100*/ - - - if ( isTargetArray || isTargetObject ) { - - if ( isTargetObject ) { - targetYear = value.year - targetMonth = value.month - targetDate = value.date - } - else { - targetYear = +value[0] - targetMonth = +value[1] - targetDate = +value[2] - } - - // If we’re navigating months but the view is in a different - // month, navigate to the view’s year and month. - if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) { - targetYear = viewsetObject.year - targetMonth = viewsetObject.month - } - - // Figure out the expected target year and month. - targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 ) - targetYear = targetDateObject.getFullYear() - targetMonth = targetDateObject.getMonth() - - // If the month we’re going to doesn’t have enough days, - // keep decreasing the date until we reach the month’s last date. - while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) { - targetDate -= 1 - /*safety -= 1 - if ( !safety ) { - throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.' - }*/ - } - - value = [ targetYear, targetMonth, targetDate ] - } - - return value -} //DatePicker.prototype.navigate - - -/** - * Normalize a date by setting the hours to midnight. - */ -DatePicker.prototype.normalize = function( value/*, options*/ ) { - value.setHours( 0, 0, 0, 0 ) - return value -} - - -/** - * Measure the range of dates. - */ -DatePicker.prototype.measure = function( type, value/*, options*/ ) { - - var calendar = this - - // If it’s anything false-y, remove the limits. - if ( !value ) { - value = type == 'min' ? -Infinity : Infinity - } - - // If it’s a string, parse it. - else if ( typeof value == 'string' ) { - value = calendar.parse( type, value ) - } - - // If it's an integer, get a date relative to today. - else if ( _.isInteger( value ) ) { - value = calendar.now( type, value, { rel: value } ) - } - - return value -} ///DatePicker.prototype.measure - - -/** - * Create a viewset object based on navigation. - */ -DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) { - return this.create([ dateObject.year, dateObject.month, 1 ]) -} - - -/** - * Validate a date as enabled and shift if needed. - */ -DatePicker.prototype.validate = function( type, dateObject, options ) { - - var calendar = this, - - // Keep a reference to the original date. - originalDateObject = dateObject, - - // Make sure we have an interval. - interval = options && options.interval ? options.interval : 1, - - // Check if the calendar enabled dates are inverted. - isFlippedBase = calendar.item.enable === -1, - - // Check if we have any enabled dates after/before now. - hasEnabledBeforeTarget, hasEnabledAfterTarget, - - // The min & max limits. - minLimitObject = calendar.item.min, - maxLimitObject = calendar.item.max, - - // Check if we’ve reached the limit during shifting. - reachedMin, reachedMax, - - // Check if the calendar is inverted and at least one weekday is enabled. - hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) { - - // If there’s a date, check where it is relative to the target. - if ( $.isArray( value ) ) { - var dateTime = calendar.create( value ).pick - if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true - else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true - } - - // Return only integers for enabled weekdays. - return _.isInteger( value ) - }).length/*, - - safety = 100*/ - - - - // Cases to validate for: - // [1] Not inverted and date disabled. - // [2] Inverted and some dates enabled. - // [3] Not inverted and out of range. - // - // Cases to **not** validate for: - // • Navigating months. - // • Not inverted and date enabled. - // • Inverted and all dates disabled. - // • ..and anything else. - if ( !options || !options.nav ) if ( - /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) || - /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) || - /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) ) - ) { - - - // When inverted, flip the direction if there aren’t any enabled weekdays - // and there are no enabled dates in the direction of the interval. - if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) { - interval *= -1 - } - - - // Keep looping until we reach an enabled date. - while ( /*safety &&*/ calendar.disabled( dateObject ) ) { - - /*safety -= 1 - if ( !safety ) { - throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.' - }*/ - - - // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval. - if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) { - dateObject = originalDateObject - interval = interval > 0 ? 1 : -1 - } - - - // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit. - if ( dateObject.pick <= minLimitObject.pick ) { - reachedMin = true - interval = 1 - dateObject = calendar.create([ - minLimitObject.year, - minLimitObject.month, - minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1) - ]) - } - else if ( dateObject.pick >= maxLimitObject.pick ) { - reachedMax = true - interval = -1 - dateObject = calendar.create([ - maxLimitObject.year, - maxLimitObject.month, - maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1) - ]) - } - - - // If we’ve reached both limits, just break out of the loop. - if ( reachedMin && reachedMax ) { - break - } - - - // Finally, create the shifted date using the interval and keep looping. - dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ]) - } - - } //endif - - - // Return the date object settled on. - return dateObject -} //DatePicker.prototype.validate - - -/** - * Check if a date is disabled. - */ -DatePicker.prototype.disabled = function( dateToVerify ) { - - var - calendar = this, - - // Filter through the disabled dates to check if this is one. - isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) { - - // If the date is a number, match the weekday with 0index and `firstDay` check. - if ( _.isInteger( dateToDisable ) ) { - return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7 - } - - // If it’s an array or a native JS date, create and match the exact date. - if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) { - return dateToVerify.pick === calendar.create( dateToDisable ).pick - } - - // If it’s an object, match a date within the “from” and “to” range. - if ( $.isPlainObject( dateToDisable ) ) { - return calendar.withinRange( dateToDisable, dateToVerify ) - } - }) - - // If this date matches a disabled date, confirm it’s not inverted. - isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) { - return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' || - $.isPlainObject( dateToDisable ) && dateToDisable.inverted - }).length - - // Check the calendar “enabled” flag and respectively flip the - // disabled state. Then also check if it’s beyond the min/max limits. - return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch || - dateToVerify.pick < calendar.item.min.pick || - dateToVerify.pick > calendar.item.max.pick - -} //DatePicker.prototype.disabled - - -/** - * Parse a string into a usable type. - */ -DatePicker.prototype.parse = function( type, value, options ) { - - var calendar = this, - parsingObject = {} - - // If it’s already parsed, we’re good. - if ( !value || typeof value != 'string' ) { - return value - } - - // We need a `.format` to parse the value with. - if ( !( options && options.format ) ) { - options = options || {} - options.format = calendar.settings.format - } - - // Convert the format into an array and then map through it. - calendar.formats.toArray( options.format ).map( function( label ) { - - var - // Grab the formatting label. - formattingLabel = calendar.formats[ label ], - - // The format length is from the formatting label function or the - // label length without the escaping exclamation (!) mark. - formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length - - // If there's a format label, split the value up to the format length. - // Then add it to the parsing object with appropriate label. - if ( formattingLabel ) { - parsingObject[ label ] = value.substr( 0, formatLength ) - } - - // Update the value as the substring from format length to end. - value = value.substr( formatLength ) - }) - - // Compensate for month 0index. - return [ - parsingObject.yyyy || parsingObject.yy, - +( parsingObject.mm || parsingObject.m ) - 1, - parsingObject.dd || parsingObject.d - ] -} //DatePicker.prototype.parse - - -/** - * Various formats to display the object in. - */ -DatePicker.prototype.formats = (function() { - - // Return the length of the first word in a collection. - function getWordLengthFromCollection( string, collection, dateObject ) { - - // Grab the first word from the string. - var word = string.match( /\w+/ )[ 0 ] - - // If there's no month index, add it to the date object - if ( !dateObject.mm && !dateObject.m ) { - dateObject.m = collection.indexOf( word ) + 1 - } - - // Return the length of the word. - return word.length - } - - // Get the length of the first word in a string. - function getFirstWordLength( string ) { - return string.match( /\w+/ )[ 0 ].length - } - - return { - - d: function( string, dateObject ) { - - // If there's string, then get the digits length. - // Otherwise return the selected date. - return string ? _.digits( string ) : dateObject.date - }, - dd: function( string, dateObject ) { - - // If there's a string, then the length is always 2. - // Otherwise return the selected date with a leading zero. - return string ? 2 : _.lead( dateObject.date ) - }, - ddd: function( string, dateObject ) { - - // If there's a string, then get the length of the first word. - // Otherwise return the short selected weekday. - return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ] - }, - dddd: function( string, dateObject ) { - - // If there's a string, then get the length of the first word. - // Otherwise return the full selected weekday. - return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ] - }, - m: function( string, dateObject ) { - - // If there's a string, then get the length of the digits - // Otherwise return the selected month with 0index compensation. - return string ? _.digits( string ) : dateObject.month + 1 - }, - mm: function( string, dateObject ) { - - // If there's a string, then the length is always 2. - // Otherwise return the selected month with 0index and leading zero. - return string ? 2 : _.lead( dateObject.month + 1 ) - }, - mmm: function( string, dateObject ) { - - var collection = this.settings.monthsShort - - // If there's a string, get length of the relevant month from the short - // months collection. Otherwise return the selected month from that collection. - return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] - }, - mmmm: function( string, dateObject ) { - - var collection = this.settings.monthsFull - - // If there's a string, get length of the relevant month from the full - // months collection. Otherwise return the selected month from that collection. - return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] - }, - yy: function( string, dateObject ) { - - // If there's a string, then the length is always 2. - // Otherwise return the selected year by slicing out the first 2 digits. - return string ? 2 : ( '' + dateObject.year ).slice( 2 ) - }, - yyyy: function( string, dateObject ) { - - // If there's a string, then the length is always 4. - // Otherwise return the selected year. - return string ? 4 : dateObject.year - }, - - // Create an array by splitting the formatting string passed. - toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) }, - - // Format an object into a string using the formatting options. - toString: function ( formatString, itemObject ) { - var calendar = this - return calendar.formats.toArray( formatString ).map( function( label ) { - return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' ) - }).join( '' ) - } - } -})() //DatePicker.prototype.formats - - - - -/** - * Check if two date units are the exact. - */ -DatePicker.prototype.isDateExact = function( one, two ) { - - var calendar = this - - // When we’re working with weekdays, do a direct comparison. - if ( - ( _.isInteger( one ) && _.isInteger( two ) ) || - ( typeof one == 'boolean' && typeof two == 'boolean' ) - ) { - return one === two - } - - // When we’re working with date representations, compare the “pick” value. - if ( - ( _.isDate( one ) || $.isArray( one ) ) && - ( _.isDate( two ) || $.isArray( two ) ) - ) { - return calendar.create( one ).pick === calendar.create( two ).pick - } - - // When we’re working with range objects, compare the “from” and “to”. - if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { - return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to ) - } - - return false -} - - -/** - * Check if two date units overlap. - */ -DatePicker.prototype.isDateOverlap = function( one, two ) { - - var calendar = this, - firstDay = calendar.settings.firstDay ? 1 : 0 - - // When we’re working with a weekday index, compare the days. - if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) { - one = one % 7 + firstDay - return one === calendar.create( two ).day + 1 - } - if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) { - two = two % 7 + firstDay - return two === calendar.create( one ).day + 1 - } - - // When we’re working with range objects, check if the ranges overlap. - if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { - return calendar.overlapRanges( one, two ) - } - - return false -} - - -/** - * Flip the “enabled” state. - */ -DatePicker.prototype.flipEnable = function(val) { - var itemObject = this.item - itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1) -} - - -/** - * Mark a collection of dates as “disabled”. - */ -DatePicker.prototype.deactivate = function( type, datesToDisable ) { - - var calendar = this, - disabledItems = calendar.item.disable.slice(0) - - - // If we’re flipping, that’s all we need to do. - if ( datesToDisable == 'flip' ) { - calendar.flipEnable() - } - - else if ( datesToDisable === false ) { - calendar.flipEnable(1) - disabledItems = [] - } - - else if ( datesToDisable === true ) { - calendar.flipEnable(-1) - disabledItems = [] - } - - // Otherwise go through the dates to disable. - else { - - datesToDisable.map(function( unitToDisable ) { - - var matchFound - - // When we have disabled items, check for matches. - // If something is matched, immediately break out. - for ( var index = 0; index < disabledItems.length; index += 1 ) { - if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) { - matchFound = true - break - } - } - - // If nothing was found, add the validated unit to the collection. - if ( !matchFound ) { - if ( - _.isInteger( unitToDisable ) || - _.isDate( unitToDisable ) || - $.isArray( unitToDisable ) || - ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to ) - ) { - disabledItems.push( unitToDisable ) - } - } - }) - } - - // Return the updated collection. - return disabledItems -} //DatePicker.prototype.deactivate - - -/** - * Mark a collection of dates as “enabled”. - */ -DatePicker.prototype.activate = function( type, datesToEnable ) { - - var calendar = this, - disabledItems = calendar.item.disable, - disabledItemsCount = disabledItems.length - - // If we’re flipping, that’s all we need to do. - if ( datesToEnable == 'flip' ) { - calendar.flipEnable() - } - - else if ( datesToEnable === true ) { - calendar.flipEnable(1) - disabledItems = [] - } - - else if ( datesToEnable === false ) { - calendar.flipEnable(-1) - disabledItems = [] - } - - // Otherwise go through the disabled dates. - else { - - datesToEnable.map(function( unitToEnable ) { - - var matchFound, - disabledUnit, - index, - isExactRange - - // Go through the disabled items and try to find a match. - for ( index = 0; index < disabledItemsCount; index += 1 ) { - - disabledUnit = disabledItems[index] - - // When an exact match is found, remove it from the collection. - if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) { - matchFound = disabledItems[index] = null - isExactRange = true - break - } - - // When an overlapped match is found, add the “inverted” state to it. - else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) { - if ( $.isPlainObject( unitToEnable ) ) { - unitToEnable.inverted = true - matchFound = unitToEnable - } - else if ( $.isArray( unitToEnable ) ) { - matchFound = unitToEnable - if ( !matchFound[3] ) matchFound.push( 'inverted' ) - } - else if ( _.isDate( unitToEnable ) ) { - matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] - } - break - } - } - - // If a match was found, remove a previous duplicate entry. - if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) { - if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) { - disabledItems[index] = null - break - } - } - - // In the event that we’re dealing with an exact range of dates, - // make sure there are no “inverted” dates because of it. - if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) { - if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) { - disabledItems[index] = null - break - } - } - - // If something is still matched, add it into the collection. - if ( matchFound ) { - disabledItems.push( matchFound ) - } - }) - } - - // Return the updated collection. - return disabledItems.filter(function( val ) { return val != null }) -} //DatePicker.prototype.activate - - -/** - * Create a string for the nodes in the picker. - */ -DatePicker.prototype.nodes = function( isOpen ) { - - var - calendar = this, - settings = calendar.settings, - calendarItem = calendar.item, - nowObject = calendarItem.now, - selectedObject = calendarItem.select, - highlightedObject = calendarItem.highlight, - viewsetObject = calendarItem.view, - disabledCollection = calendarItem.disable, - minLimitObject = calendarItem.min, - maxLimitObject = calendarItem.max, - - - // Create the calendar table head using a copy of weekday labels collection. - // * We do a copy so we don't mutate the original array. - tableHead = (function( collection, fullCollection ) { - - // If the first day should be Monday, move Sunday to the end. - if ( settings.firstDay ) { - collection.push( collection.shift() ) - fullCollection.push( fullCollection.shift() ) - } - - // Create and return the table head group. - return _.node( - 'thead', - _.node( - 'tr', - _.group({ - min: 0, - max: DAYS_IN_WEEK - 1, - i: 1, - node: 'th', - item: function( counter ) { - return [ - collection[ counter ], - settings.klass.weekdays, - 'scope=col title="' + fullCollection[ counter ] + '"' - ] - } - }) - ) - ) //endreturn - - // Materialize modified - })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead - - - // Create the nav for next/prev month. - createMonthNav = function( next ) { - - // Otherwise, return the created month tag. - return _.node( - 'div', - ' ', - settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + ( - - // If the focused month is outside the range, disabled the button. - ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) || - ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ? - ' ' + settings.klass.navDisabled : '' - ), - 'data-nav=' + ( next || -1 ) + ' ' + - _.ariaAttr({ - role: 'button', - controls: calendar.$node[0].id + '_table' - }) + ' ' + - 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"' - ) //endreturn - }, //createMonthNav - - - // Create the month label. - //Materialize modified - createMonthLabel = function(override) { - - var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull - - // Materialize modified - if (override == "short_months") { - monthsCollection = settings.monthsShort; - } - - // If there are months to select, add a dropdown menu. - if ( settings.selectMonths && override == undefined) { - - return _.node( 'select', - _.group({ - min: 0, - max: 11, - i: 1, - node: 'option', - item: function( loopedMonth ) { - - return [ - - // The looped month and no classes. - monthsCollection[ loopedMonth ], 0, - - // Set the value and selected index. - 'value=' + loopedMonth + - ( viewsetObject.month == loopedMonth ? ' selected' : '' ) + - ( - ( - ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) || - ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ) - ) ? - ' disabled' : '' - ) - ] - } - }), - settings.klass.selectMonth + ' browser-default', - ( isOpen ? '' : 'disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + - 'title="' + settings.labelMonthSelect + '"' - ) - } - - // Materialize modified - if (override == "short_months") - if (selectedObject != null) - return _.node( 'div', monthsCollection[ selectedObject.month ] ); - else return _.node( 'div', monthsCollection[ viewsetObject.month ] ); - - // If there's a need for a month selector - return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month ) - }, //createMonthLabel - - - // Create the year label. - // Materialize modified - createYearLabel = function(override) { - - var focusedYear = viewsetObject.year, - - // If years selector is set to a literal "true", set it to 5. Otherwise - // divide in half to get half before and half after focused year. - numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 ) - - // If there are years to select, add a dropdown menu. - if ( numberYears ) { - - var - minYear = minLimitObject.year, - maxYear = maxLimitObject.year, - lowestYear = focusedYear - numberYears, - highestYear = focusedYear + numberYears - - // If the min year is greater than the lowest year, increase the highest year - // by the difference and set the lowest year to the min year. - if ( minYear > lowestYear ) { - highestYear += minYear - lowestYear - lowestYear = minYear - } - - // If the max year is less than the highest year, decrease the lowest year - // by the lower of the two: available and needed years. Then set the - // highest year to the max year. - if ( maxYear < highestYear ) { - - var availableYears = lowestYear - minYear, - neededYears = highestYear - maxYear - - lowestYear -= availableYears > neededYears ? neededYears : availableYears - highestYear = maxYear - } - - if ( settings.selectYears && override == undefined ) { - return _.node( 'select', - _.group({ - min: lowestYear, - max: highestYear, - i: 1, - node: 'option', - item: function( loopedYear ) { - return [ - - // The looped year and no classes. - loopedYear, 0, - - // Set the value and selected index. - 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' ) - ] - } - }), - settings.klass.selectYear + ' browser-default', - ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + - 'title="' + settings.labelYearSelect + '"' - ) - } - } - - // Materialize modified - if (override == "raw") - return _.node( 'div', focusedYear ) - - // Otherwise just return the year focused - return _.node( 'div', focusedYear, settings.klass.year ) - } //createYearLabel - - - // Materialize modified - createDayLabel = function() { - if (selectedObject != null) - return _.node( 'div', selectedObject.date) - else return _.node( 'div', nowObject.date) - } - createWeekdayLabel = function() { - var display_day; - - if (selectedObject != null) - display_day = selectedObject.day; - else - display_day = nowObject.day; - var weekday = settings.weekdaysFull[ display_day ] - return weekday - } - - - // Create and return the entire calendar. -return _.node( - // Date presentation View - 'div', - _.node( - 'div', - createWeekdayLabel(), - "picker__weekday-display" - )+ - _.node( - // Div for short Month - 'div', - createMonthLabel("short_months"), - settings.klass.month_display - )+ - _.node( - // Div for Day - 'div', - createDayLabel() , - settings.klass.day_display - )+ - _.node( - // Div for Year - 'div', - createYearLabel("raw") , - settings.klass.year_display - ), - settings.klass.date_display - )+ - // Calendar container - _.node('div', - _.node('div', - ( settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) + - createMonthNav() + createMonthNav( 1 ), - settings.klass.header - ) + _.node( - 'table', - tableHead + - _.node( - 'tbody', - _.group({ - min: 0, - max: WEEKS_IN_CALENDAR - 1, - i: 1, - node: 'tr', - item: function( rowCounter ) { - - // If Monday is the first day and the month starts on Sunday, shift the date back a week. - var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0 - - return [ - _.group({ - min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index - max: function() { - return this.min + DAYS_IN_WEEK - 1 - }, - i: 1, - node: 'td', - item: function( targetDate ) { - - // Convert the time date from a relative date to a target date. - targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ]) - - var isSelected = selectedObject && selectedObject.pick == targetDate.pick, - isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, - isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, - formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] ) - - return [ - _.node( - 'div', - targetDate.date, - (function( klasses ) { - - // Add the `infocus` or `outfocus` classes based on month in view. - klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus ) - - // Add the `today` class if needed. - if ( nowObject.pick == targetDate.pick ) { - klasses.push( settings.klass.now ) - } - - // Add the `selected` class if something's selected and the time matches. - if ( isSelected ) { - klasses.push( settings.klass.selected ) - } - - // Add the `highlighted` class if something's highlighted and the time matches. - if ( isHighlighted ) { - klasses.push( settings.klass.highlighted ) - } - - // Add the `disabled` class if something's disabled and the object matches. - if ( isDisabled ) { - klasses.push( settings.klass.disabled ) - } - - return klasses.join( ' ' ) - })([ settings.klass.day ]), - 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ - role: 'gridcell', - label: formattedDate, - selected: isSelected && calendar.$node.val() === formattedDate ? true : null, - activedescendant: isHighlighted ? true : null, - disabled: isDisabled ? true : null - }) - ), - '', - _.ariaAttr({ role: 'presentation' }) - ] //endreturn - } - }) - ] //endreturn - } - }) - ), - settings.klass.table, - 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ - role: 'grid', - controls: calendar.$node[0].id, - readonly: true - }) - ) - , settings.klass.calendar_container) // end calendar - - + - - // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. - _.node( - 'div', - _.node( 'button', settings.today, "btn-flat picker__today", - 'type=button data-pick=' + nowObject.pick + - ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id }) ) + - _.node( 'button', settings.clear, "btn-flat picker__clear", - 'type=button data-clear=1' + - ( isOpen ? '' : ' disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id }) ) + - _.node('button', settings.close, "btn-flat picker__close", - 'type=button data-close=true ' + - ( isOpen ? '' : ' disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id }) ), - settings.klass.footer - ) //endreturn -} //DatePicker.prototype.nodes - - - - -/** - * The date picker defaults. - */ -DatePicker.defaults = (function( prefix ) { - - return { - - // The title label to use for the month nav buttons - labelMonthNext: 'Next month', - labelMonthPrev: 'Previous month', - - // The title label to use for the dropdown selectors - labelMonthSelect: 'Select a month', - labelYearSelect: 'Select a year', - - // Months and weekdays - monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], - monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], - weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], - weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], - - // Materialize modified - weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ], - - // Today and clear - today: 'Today', - clear: 'Clear', - close: 'Close', - - // The format to show on the `input` element - format: 'd mmmm, yyyy', - - // Classes - klass: { - - table: prefix + 'table', - - header: prefix + 'header', - - - // Materialize Added klasses - date_display: prefix + 'date-display', - day_display: prefix + 'day-display', - month_display: prefix + 'month-display', - year_display: prefix + 'year-display', - calendar_container: prefix + 'calendar-container', - // end - - - - navPrev: prefix + 'nav--prev', - navNext: prefix + 'nav--next', - navDisabled: prefix + 'nav--disabled', - - month: prefix + 'month', - year: prefix + 'year', - - selectMonth: prefix + 'select--month', - selectYear: prefix + 'select--year', - - weekdays: prefix + 'weekday', - - day: prefix + 'day', - disabled: prefix + 'day--disabled', - selected: prefix + 'day--selected', - highlighted: prefix + 'day--highlighted', - now: prefix + 'day--today', - infocus: prefix + 'day--infocus', - outfocus: prefix + 'day--outfocus', - - footer: prefix + 'footer', - - buttonClear: prefix + 'button--clear', - buttonToday: prefix + 'button--today', - buttonClose: prefix + 'button--close' - } - } -})( Picker.klasses().picker + '__' ) - - - - - -/** - * Extend the picker to add the date picker. - */ -Picker.extend( 'pickadate', DatePicker ) - - -})); - - -;(function ($) { - - $.fn.characterCounter = function(){ - return this.each(function(){ - var $input = $(this); - var $counterElement = $input.parent().find('span[class="character-counter"]'); - - // character counter has already been added appended to the parent container - if ($counterElement.length) { - return; - } - - var itHasLengthAttribute = $input.attr('data-length') !== undefined; - - if(itHasLengthAttribute){ - $input.on('input', updateCounter); - $input.on('focus', updateCounter); - $input.on('blur', removeCounterElement); - - addCounterElement($input); - } - - }); - }; - - function updateCounter(){ - var maxLength = +$(this).attr('data-length'), - actualLength = +$(this).val().length, - isValidLength = actualLength <= maxLength; - - $(this).parent().find('span[class="character-counter"]') - .html( actualLength + '/' + maxLength); - - addInputStyle(isValidLength, $(this)); - } - - function addCounterElement($input) { - var $counterElement = $input.parent().find('span[class="character-counter"]'); - - if ($counterElement.length) { - return; - } - - $counterElement = $('') - .addClass('character-counter') - .css('float','right') - .css('font-size','12px') - .css('height', 1); - - $input.parent().append($counterElement); - } - - function removeCounterElement(){ - $(this).parent().find('span[class="character-counter"]').html(''); - } - - function addInputStyle(isValidLength, $input){ - var inputHasInvalidClass = $input.hasClass('invalid'); - if (isValidLength && inputHasInvalidClass) { - $input.removeClass('invalid'); - } - else if(!isValidLength && !inputHasInvalidClass){ - $input.removeClass('valid'); - $input.addClass('invalid'); - } - } - - $(document).ready(function(){ - $('input, textarea').characterCounter(); - }); - -}( jQuery )); -;(function ($) { - - var methods = { - - init : function(options) { - var defaults = { - duration: 200, // ms - dist: -100, // zoom scale TODO: make this more intuitive as an option - shift: 0, // spacing for center image - padding: 0, // Padding between non center items - fullWidth: false, // Change to full width styles - indicators: false, // Toggle indicators - noWrap: false, // Don't wrap around and cycle through items. - onCycleTo: null // Callback for when a new slide is cycled to. - }; - options = $.extend(defaults, options); - - return this.each(function() { - - var images, item_width, item_height, offset, center, pressed, dim, count, - reference, referenceY, amplitude, target, velocity, - xform, frame, timestamp, ticker, dragged, vertical_dragged; - var $indicators = $('
        '); - - - // Initialize - var view = $(this); - var showIndicators = view.attr('data-indicators') || options.indicators; - - // Don't double initialize. - if (view.hasClass('initialized')) { - // Redraw carousel. - $(this).trigger('carouselNext', [0.000001]); - return true; - } - - - // Options - if (options.fullWidth) { - options.dist = 0; - var firstImage = view.find('.carousel-item img').first(); - if (firstImage.length) { - imageHeight = firstImage.on('load', function(){ - view.css('height', $(this).height()); - }); - } else { - imageHeight = view.find('.carousel-item').first().height(); - view.css('height', imageHeight); - } - - // Offset fixed items when indicators. - if (showIndicators) { - view.find('.carousel-fixed-item').addClass('with-indicators'); - } - } - - - view.addClass('initialized'); - pressed = false; - offset = target = 0; - images = []; - item_width = view.find('.carousel-item').first().innerWidth(); - item_height = view.find('.carousel-item').first().innerHeight(); - dim = item_width * 2 + options.padding; - - view.find('.carousel-item').each(function (i) { - images.push($(this)[0]); - if (showIndicators) { - var $indicator = $('
      • '); - - // Add active to first by default. - if (i === 0) { - $indicator.addClass('active'); - } - - // Handle clicks on indicators. - $indicator.click(function (e) { - e.stopPropagation(); - - var index = $(this).index(); - cycleTo(index); - }); - $indicators.append($indicator); - } - }); - - if (showIndicators) { - view.append($indicators); - } - count = images.length; - - - function setupEvents() { - if (typeof window.ontouchstart !== 'undefined') { - view[0].addEventListener('touchstart', tap); - view[0].addEventListener('touchmove', drag); - view[0].addEventListener('touchend', release); - } - view[0].addEventListener('mousedown', tap); - view[0].addEventListener('mousemove', drag); - view[0].addEventListener('mouseup', release); - view[0].addEventListener('mouseleave', release); - view[0].addEventListener('click', click); - } - - function xpos(e) { - // touch event - if (e.targetTouches && (e.targetTouches.length >= 1)) { - return e.targetTouches[0].clientX; - } - - // mouse event - return e.clientX; - } - - function ypos(e) { - // touch event - if (e.targetTouches && (e.targetTouches.length >= 1)) { - return e.targetTouches[0].clientY; - } - - // mouse event - return e.clientY; - } - - function wrap(x) { - return (x >= count) ? (x % count) : (x < 0) ? wrap(count + (x % count)) : x; - } - - function scroll(x) { - var i, half, delta, dir, tween, el, alignment, xTranslation; - var lastCenter = center; - - offset = (typeof x === 'number') ? x : offset; - center = Math.floor((offset + dim / 2) / dim); - delta = offset - center * dim; - dir = (delta < 0) ? 1 : -1; - tween = -dir * delta * 2 / dim; - half = count >> 1; - - if (!options.fullWidth) { - alignment = 'translateX(' + (view[0].clientWidth - item_width) / 2 + 'px) '; - alignment += 'translateY(' + (view[0].clientHeight - item_height) / 2 + 'px)'; - } else { - alignment = 'translateX(0)'; - } - - // Set indicator active - if (showIndicators) { - var diff = (center % count); - var activeIndicator = $indicators.find('.indicator-item.active'); - if (activeIndicator.index() !== diff) { - activeIndicator.removeClass('active'); - $indicators.find('.indicator-item').eq(diff).addClass('active'); - } - } - - // center - // Don't show wrapped items. - if (!options.noWrap || (center >= 0 && center < count)) { - el = images[wrap(center)]; - - // Add active class to center item. - if (!$(el).hasClass('active')) { - view.find('.carousel-item').removeClass('active'); - $(el).addClass('active'); - } - el.style[xform] = alignment + - ' translateX(' + (-delta / 2) + 'px)' + - ' translateX(' + (dir * options.shift * tween * i) + 'px)' + - ' translateZ(' + (options.dist * tween) + 'px)'; - el.style.zIndex = 0; - if (options.fullWidth) { tweenedOpacity = 1; } - else { tweenedOpacity = 1 - 0.2 * tween; } - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - - for (i = 1; i <= half; ++i) { - // right side - if (options.fullWidth) { - zTranslation = options.dist; - tweenedOpacity = (i === half && delta < 0) ? 1 - tween : 1; - } else { - zTranslation = options.dist * (i * 2 + tween * dir); - tweenedOpacity = 1 - 0.2 * (i * 2 + tween * dir); - } - // Don't show wrapped items. - if (!options.noWrap || center + i < count) { - el = images[wrap(center + i)]; - el.style[xform] = alignment + - ' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' + - ' translateZ(' + zTranslation + 'px)'; - el.style.zIndex = -i; - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - - - // left side - if (options.fullWidth) { - zTranslation = options.dist; - tweenedOpacity = (i === half && delta > 0) ? 1 - tween : 1; - } else { - zTranslation = options.dist * (i * 2 - tween * dir); - tweenedOpacity = 1 - 0.2 * (i * 2 - tween * dir); - } - // Don't show wrapped items. - if (!options.noWrap || center - i >= 0) { - el = images[wrap(center - i)]; - el.style[xform] = alignment + - ' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' + - ' translateZ(' + zTranslation + 'px)'; - el.style.zIndex = -i; - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - } - - // center - // Don't show wrapped items. - if (!options.noWrap || (center >= 0 && center < count)) { - el = images[wrap(center)]; - el.style[xform] = alignment + - ' translateX(' + (-delta / 2) + 'px)' + - ' translateX(' + (dir * options.shift * tween) + 'px)' + - ' translateZ(' + (options.dist * tween) + 'px)'; - el.style.zIndex = 0; - if (options.fullWidth) { tweenedOpacity = 1; } - else { tweenedOpacity = 1 - 0.2 * tween; } - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - - // onCycleTo callback - if (lastCenter !== center && - typeof(options.onCycleTo) === "function") { - var $curr_item = view.find('.carousel-item').eq(wrap(center)); - options.onCycleTo.call(this, $curr_item, dragged); - } - } - - function track() { - var now, elapsed, delta, v; - - now = Date.now(); - elapsed = now - timestamp; - timestamp = now; - delta = offset - frame; - frame = offset; - - v = 1000 * delta / (1 + elapsed); - velocity = 0.8 * v + 0.2 * velocity; - } - - function autoScroll() { - var elapsed, delta; - - if (amplitude) { - elapsed = Date.now() - timestamp; - delta = amplitude * Math.exp(-elapsed / options.duration); - if (delta > 2 || delta < -2) { - scroll(target - delta); - requestAnimationFrame(autoScroll); - } else { - scroll(target); - } - } - } - - function click(e) { - // Disable clicks if carousel was dragged. - if (dragged) { - e.preventDefault(); - e.stopPropagation(); - return false; - - } else if (!options.fullWidth) { - var clickedIndex = $(e.target).closest('.carousel-item').index(); - var diff = (center % count) - clickedIndex; - - // Disable clicks if carousel was shifted by click - if (diff !== 0) { - e.preventDefault(); - e.stopPropagation(); - } - cycleTo(clickedIndex); - } - } - - function cycleTo(n) { - var diff = (center % count) - n; - - // Account for wraparound. - if (!options.noWrap) { - if (diff < 0) { - if (Math.abs(diff + count) < Math.abs(diff)) { diff += count; } - - } else if (diff > 0) { - if (Math.abs(diff - count) < diff) { diff -= count; } - } - } - - // Call prev or next accordingly. - if (diff < 0) { - view.trigger('carouselNext', [Math.abs(diff)]); - - } else if (diff > 0) { - view.trigger('carouselPrev', [diff]); - } - } - - function tap(e) { - pressed = true; - dragged = false; - vertical_dragged = false; - reference = xpos(e); - referenceY = ypos(e); - - velocity = amplitude = 0; - frame = offset; - timestamp = Date.now(); - clearInterval(ticker); - ticker = setInterval(track, 100); - - } - - function drag(e) { - var x, delta, deltaY; - if (pressed) { - x = xpos(e); - y = ypos(e); - delta = reference - x; - deltaY = Math.abs(referenceY - y); - if (deltaY < 30 && !vertical_dragged) { - // If vertical scrolling don't allow dragging. - if (delta > 2 || delta < -2) { - dragged = true; - reference = x; - scroll(offset + delta); - } - - } else if (dragged) { - // If dragging don't allow vertical scroll. - e.preventDefault(); - e.stopPropagation(); - return false; - - } else { - // Vertical scrolling. - vertical_dragged = true; - } - } - - if (dragged) { - // If dragging don't allow vertical scroll. - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - - function release(e) { - if (pressed) { - pressed = false; - } else { - return; - } - - clearInterval(ticker); - target = offset; - if (velocity > 10 || velocity < -10) { - amplitude = 0.9 * velocity; - target = offset + amplitude; - } - target = Math.round(target / dim) * dim; - - // No wrap of items. - if (options.noWrap) { - if (target >= dim * (count - 1)) { - target = dim * (count - 1); - } else if (target < 0) { - target = 0; - } - } - amplitude = target - offset; - timestamp = Date.now(); - requestAnimationFrame(autoScroll); - - if (dragged) { - e.preventDefault(); - e.stopPropagation(); - } - return false; - } - - xform = 'transform'; - ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) { - var e = prefix + 'Transform'; - if (typeof document.body.style[e] !== 'undefined') { - xform = e; - return false; - } - return true; - }); - - - $(window).on('resize.carousel', function() { - if (options.fullWidth) { - item_width = view.find('.carousel-item').first().innerWidth(); - item_height = view.find('.carousel-item').first().innerHeight(); - dim = item_width * 2 + options.padding; - offset = center * 2 * item_width; - target = offset; - } else { - scroll(); - } - }); - - setupEvents(); - scroll(offset); - - $(this).on('carouselNext', function(e, n) { - if (n === undefined) { - n = 1; - } - target = (dim * Math.round(offset / dim)) + (dim * n); - if (offset !== target) { - amplitude = target - offset; - timestamp = Date.now(); - requestAnimationFrame(autoScroll); - } - }); - - $(this).on('carouselPrev', function(e, n) { - if (n === undefined) { - n = 1; - } - target = (dim * Math.round(offset / dim)) - (dim * n); - if (offset !== target) { - amplitude = target - offset; - timestamp = Date.now(); - requestAnimationFrame(autoScroll); - } - }); - - $(this).on('carouselSet', function(e, n) { - if (n === undefined) { - n = 0; - } - cycleTo(n); - }); - - }); - - - - }, - next : function(n) { - $(this).trigger('carouselNext', [n]); - }, - prev : function(n) { - $(this).trigger('carouselPrev', [n]); - }, - set : function(n) { - $(this).trigger('carouselSet', [n]); - } - }; - - - $.fn.carousel = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.carousel' ); - } - }; // Plugin end -}( jQuery )); \ No newline at end of file diff --git a/node_modules/materialize-css/dist/js/materialize.min.js b/node_modules/materialize-css/dist/js/materialize.min.js deleted file mode 100644 index 00c0d5f..0000000 --- a/node_modules/materialize-css/dist/js/materialize.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * Materialize v0.98.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -if("undefined"==typeof jQuery){var jQuery;jQuery="function"==typeof require?$=require("jquery"):$}jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),h0&&b-1 in a))}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return null!=a&&a==a.window},c.type=function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return void 0===b||f.call(a,b)},c.each=function(a,c,d){var e,f=0,g=a.length,h=b(a);if(d){if(h)for(;g>f&&(e=c.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=c.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=c.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=c.call(a[f],f,a[f]),e===!1)break;return a},c.data=function(a,b,e){if(void 0===e){var f=a[c.expando],g=f&&d[f];if(void 0===b)return g;if(g&&b in g)return g[b]}else if(void 0!==b){var f=a[c.expando]||(a[c.expando]=++c.uuid);return d[f]=d[f]||{},d[f][b]=e,e}},c.removeData=function(a,b){var e=a[c.expando],f=e&&d[e];f&&c.each(b,function(a,b){delete f[b]})},c.extend=function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[i]||{},i++),"object"!=typeof h&&"function"!==c.type(h)&&(h={}),i===j&&(h=this,i--);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,g=a&&c.isArray(a)?a:[]):g=a&&c.isPlainObject(a)?a:{},h[e]=c.extend(k,g,d)):void 0!==d&&(h[e]=d));return h},c.queue=function(a,d,e){function f(a,c){var d=c||[];return null!=a&&(b(Object(a))?!function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;)a[e++]=b[d++];if(c!==c)for(;void 0!==b[d];)a[e++]=b[d++];return a.length=e,a}(d,"string"==typeof a?[a]:a):[].push.call(d,a)),d}if(a){d=(d||"fx")+"queue";var g=c.data(a,d);return e?(!g||c.isArray(e)?g=c.data(a,d,f(e)):g.push(e),g):g||[]}},c.dequeue=function(a,b){c.each(a.nodeType?[a]:a,function(a,d){b=b||"fx";var e=c.queue(d,b),f=e.shift();"inprogress"===f&&(f=e.shift()),f&&("fx"===b&&e.unshift("inprogress"),f.call(d,function(){c.dequeue(d,b)}))})},c.fn=c.prototype={init:function(a){if(a.nodeType)return this[0]=a,this;throw new Error("Not a DOM node.")},offset:function(){var b=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:b.left+(a.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function a(){for(var a=this.offsetParent||document;a&&"html"===!a.nodeType.toLowerCase&&"static"===a.style.position;)a=a.offsetParent;return a||document}var b=this[0],a=a.apply(b),d=this.offset(),e=/^(?:body|html)$/i.test(a.nodeName)?{top:0,left:0}:c(a).offset();return d.top-=parseFloat(b.style.marginTop)||0,d.left-=parseFloat(b.style.marginLeft)||0,a.style&&(e.top+=parseFloat(a.style.borderTopWidth)||0,e.left+=parseFloat(a.style.borderLeftWidth)||0),{top:d.top-e.top,left:d.left-e.left}}};var d={};c.expando="velocity"+(new Date).getTime(),c.uuid=0;for(var e={},f=e.hasOwnProperty,g=e.toString,h="Boolean Number String Function Array Date RegExp Object Error".split(" "),i=0;ie;++e){var f=j(c,a,d);if(0===f)return c;var g=i(c,a,d)-b;c-=g/f}return c}function l(){for(var b=0;t>b;++b)x[b]=i(b*u,a,d)}function m(b,c,e){var f,g,h=0;do g=c+(e-c)/2,f=i(g,a,d)-b,f>0?e=g:c=g;while(Math.abs(f)>r&&++h=q?k(b,h):0==i?h:m(b,c,c+u)}function o(){y=!0,(a!=c||d!=e)&&l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;4>w;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function j(a,b){var c=a;return p.isString(a)?t.Easings[a]||(c=!1):c=p.isArray(a)&&1===a.length?h.apply(null,a):p.isArray(a)&&2===a.length?u.apply(null,a.concat([b])):!(!p.isArray(a)||4!==a.length)&&i.apply(null,a),c===!1&&(c=t.Easings[t.defaults.easing]?t.defaults.easing:s),c}function k(a){if(a){var b=(new Date).getTime(),c=t.State.calls.length;c>1e4&&(t.State.calls=e(t.State.calls));for(var f=0;c>f;f++)if(t.State.calls[f]){var h=t.State.calls[f],i=h[0],j=h[2],n=h[3],o=!!n,q=null;n||(n=t.State.calls[f][3]=b-16);for(var r=Math.min((b-n)/j.duration,1),s=0,u=i.length;u>s;s++){var w=i[s],y=w.element;if(g(y)){var z=!1;if(j.display!==d&&null!==j.display&&"none"!==j.display){if("flex"===j.display){var A=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];m.each(A,function(a,b){v.setPropertyValue(y,"display",b)})}v.setPropertyValue(y,"display",j.display)}j.visibility!==d&&"hidden"!==j.visibility&&v.setPropertyValue(y,"visibility",j.visibility);for(var B in w)if("element"!==B){var C,D=w[B],E=p.isString(D.easing)?t.Easings[D.easing]:D.easing;if(1===r)C=D.endValue;else{var F=D.endValue-D.startValue;if(C=D.startValue+F*E(r,j,F),!o&&C===D.currentValue)continue}if(D.currentValue=C,"tween"===B)q=C;else{if(v.Hooks.registered[B]){var G=v.Hooks.getRoot(B),H=g(y).rootPropertyValueCache[G];H&&(D.rootPropertyValue=H)}var I=v.setPropertyValue(y,B,D.currentValue+(0===parseFloat(C)?"":D.unitType),D.rootPropertyValue,D.scrollData);v.Hooks.registered[B]&&(g(y).rootPropertyValueCache[G]=v.Normalizations.registered[G]?v.Normalizations.registered[G]("extract",null,I[1]):I[1]),"transform"===I[0]&&(z=!0)}}j.mobileHA&&g(y).transformCache.translate3d===d&&(g(y).transformCache.translate3d="(0px, 0px, 0px)",z=!0),z&&v.flushTransformCache(y)}}j.display!==d&&"none"!==j.display&&(t.State.calls[f][2].display=!1),j.visibility!==d&&"hidden"!==j.visibility&&(t.State.calls[f][2].visibility=!1),j.progress&&j.progress.call(h[1],h[1],r,Math.max(0,n+j.duration-b),n,q),1===r&&l(f)}}t.State.isTicking&&x(k)}function l(a,b){if(!t.State.calls[a])return!1;for(var c=t.State.calls[a][0],e=t.State.calls[a][1],f=t.State.calls[a][2],h=t.State.calls[a][4],i=!1,j=0,k=c.length;k>j;j++){var l=c[j].element;if(b||f.loop||("none"===f.display&&v.setPropertyValue(l,"display",f.display),"hidden"===f.visibility&&v.setPropertyValue(l,"visibility",f.visibility)),f.loop!==!0&&(m.queue(l)[1]===d||!/\.velocityQueueEntryFlag/i.test(m.queue(l)[1]))&&g(l)){g(l).isAnimating=!1,g(l).rootPropertyValueCache={};var n=!1;m.each(v.Lists.transforms3D,function(a,b){var c=/^scale/.test(b)?1:0,e=g(l).transformCache[b];g(l).transformCache[b]!==d&&new RegExp("^\\("+c+"[^.]").test(e)&&(n=!0,delete g(l).transformCache[b])}),f.mobileHA&&(n=!0,delete g(l).transformCache.translate3d),n&&v.flushTransformCache(l),v.Values.removeClass(l,"velocity-animating")}if(!b&&f.complete&&!f.loop&&j===k-1)try{f.complete.call(e,e)}catch(o){setTimeout(function(){throw o},1)}h&&f.loop!==!0&&h(e),g(l)&&f.loop===!0&&!b&&(m.each(g(l).tweensContainer,function(a,b){/^rotate/.test(a)&&360===parseFloat(b.endValue)&&(b.endValue=0,b.startValue=360),/^backgroundPosition/.test(a)&&100===parseFloat(b.endValue)&&"%"===b.unitType&&(b.endValue=0,b.startValue=100)}),t(l,"reverse",{loop:!0,delay:f.delay})),f.queue!==!1&&m.dequeue(l,f.queue)}t.State.calls[a]=!1;for(var p=0,q=t.State.calls.length;q>p;p++)if(t.State.calls[p]!==!1){i=!0;break}i===!1&&(t.State.isTicking=!1,delete t.State.calls,t.State.calls=[])}var m,n=function(){if(c.documentMode)return c.documentMode;for(var a=7;a>4;a--){var b=c.createElement("div");if(b.innerHTML="",b.getElementsByTagName("span").length)return b=null,a}return d}(),o=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),p={isString:function(a){return"string"==typeof a},isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(a){return"[object Function]"===Object.prototype.toString.call(a)},isNode:function(a){return a&&a.nodeType},isNodeList:function(a){return"object"==typeof a&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(a))&&a.length!==d&&(0===a.length||"object"==typeof a[0]&&a[0].nodeType>0)},isWrapped:function(a){return a&&(a.jquery||b.Zepto&&b.Zepto.zepto.isZ(a))},isSVG:function(a){return b.SVGElement&&a instanceof b.SVGElement},isEmptyObject:function(a){for(var b in a)return!1;return!0}},q=!1;if(a.fn&&a.fn.jquery?(m=a,q=!0):m=b.Velocity.Utilities,8>=n&&!q)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=n)return void(jQuery.fn.velocity=jQuery.fn.animate);var r=400,s="swing",t={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:b.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:c.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:m,Redirects:{},Easings:{},Promise:b.Promise,defaults:{queue:"",duration:r,easing:s,begin:d,complete:d,progress:d,display:d,visibility:d,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(a){m.data(a,"velocity",{isSVG:p.isSVG(a),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};b.pageYOffset!==d?(t.State.scrollAnchor=b,t.State.scrollPropertyLeft="pageXOffset",t.State.scrollPropertyTop="pageYOffset"):(t.State.scrollAnchor=c.documentElement||c.body.parentNode||c.body,t.State.scrollPropertyLeft="scrollLeft",t.State.scrollPropertyTop="scrollTop");var u=function(){function a(a){return-a.tension*a.x-a.friction*a.v}function b(b,c,d){var e={x:b.x+d.dx*c,v:b.v+d.dv*c,tension:b.tension,friction:b.friction};return{dx:e.v,dv:a(e)}}function c(c,d){var e={dx:c.v,dv:a(c)},f=b(c,.5*d,e),g=b(c,.5*d,f),h=b(c,d,g),i=1/6*(e.dx+2*(f.dx+g.dx)+h.dx),j=1/6*(e.dv+2*(f.dv+g.dv)+h.dv);return c.x=c.x+i*d,c.v=c.v+j*d,c}return function d(a,b,e){var f,g,h,i={x:-1,v:0,tension:null,friction:null},j=[0],k=0,l=1e-4,m=.016;for(a=parseFloat(a)||500,b=parseFloat(b)||20,e=e||null,i.tension=a,i.friction=b,f=null!==e,f?(k=d(a,b),g=k/e*m):g=m;h=c(h||i,g),j.push(1+h.x),k+=16,Math.abs(h.x)>l&&Math.abs(h.v)>l;);return f?function(a){return j[a*(j.length-1)|0]}:k}}();t.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},m.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){t.Easings[b[0]]=i.apply(null,b[1])});var v=t.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a=n)switch(a){case"name":return"filter";case"extract":var d=c.toString().match(/alpha\(opacity=(.*)\)/i);return c=d?d[1]/100:1;case"inject":return b.style.zoom=1,parseFloat(c)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){9>=n||t.State.isGingerbread||(v.Lists.transformsBase=v.Lists.transformsBase.concat(v.Lists.transforms3D));for(var a=0;ae&&(e=1),f=!/(\d)$/i.test(e);break;case"skew":f=!/(deg|\d)$/i.test(e);break;case"rotate":f=!/(deg|\d)$/i.test(e)}return f||(g(c).transformCache[b]="("+e+")"),g(c).transformCache[b]}}}();for(var a=0;a=n||3!==f.split(" ").length||(f+=" 1"),f;case"inject":return 8>=n?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(8>=n?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(n||t.State.isAndroid&&!t.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(t.State.prefixMatches[a])return[t.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;d>c;c++){var e;if(e=0===c?a:b[c]+a.replace(/^\w/,function(a){return a.toUpperCase()}),p.isString(t.State.prefixElement.style[e]))return t.State.prefixMatches[a]=e,[e,!0]}return[a,!1]}},Values:{hexToRgb:function(a){var b,c=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return a=a.replace(c,function(a,b,c,d){return b+b+c+c+d+d}),b=d.exec(a),b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:[0,0,0]},isCSSNullValue:function(a){return 0==a||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a)},getUnitType:function(a){return/^(rotate|skew)/i.test(a)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a)?"":"px"},getDisplayType:function(a){var b=a&&a.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b)?"inline":/^(li)$/i.test(b)?"list-item":/^(tr)$/i.test(b)?"table-row":/^(table)$/i.test(b)?"table":/^(tbody)$/i.test(b)?"table-row-group":"block"},addClass:function(a,b){a.classList?a.classList.add(b):a.className+=(a.className.length?" ":"")+b},removeClass:function(a,b){a.classList?a.classList.remove(b):a.className=a.className.toString().replace(new RegExp("(^|\\s)"+b.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(a,c,e,f){function h(a,c){function e(){j&&v.setPropertyValue(a,"display","none")}var i=0;if(8>=n)i=m.css(a,c);else{var j=!1;if(/^(width|height)$/.test(c)&&0===v.getPropertyValue(a,"display")&&(j=!0,v.setPropertyValue(a,"display",v.Values.getDisplayType(a))),!f){if("height"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var k=a.offsetHeight-(parseFloat(v.getPropertyValue(a,"borderTopWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderBottomWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingTop"))||0)-(parseFloat(v.getPropertyValue(a,"paddingBottom"))||0);return e(),k}if("width"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var l=a.offsetWidth-(parseFloat(v.getPropertyValue(a,"borderLeftWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderRightWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingLeft"))||0)-(parseFloat(v.getPropertyValue(a,"paddingRight"))||0);return e(),l}}var o;o=g(a)===d?b.getComputedStyle(a,null):g(a).computedStyle?g(a).computedStyle:g(a).computedStyle=b.getComputedStyle(a,null),"borderColor"===c&&(c="borderTopColor"),i=9===n&&"filter"===c?o.getPropertyValue(c):o[c],(""===i||null===i)&&(i=a.style[c]),e()}if("auto"===i&&/^(top|right|bottom|left)$/i.test(c)){var p=h(a,"position");("fixed"===p||"absolute"===p&&/top|left/i.test(c))&&(i=m(a).position()[c]+"px")}return i}var i;if(v.Hooks.registered[c]){var j=c,k=v.Hooks.getRoot(j);e===d&&(e=v.getPropertyValue(a,v.Names.prefixCheck(k)[0])),v.Normalizations.registered[k]&&(e=v.Normalizations.registered[k]("extract",a,e)),i=v.Hooks.extractValue(j,e)}else if(v.Normalizations.registered[c]){var l,o;l=v.Normalizations.registered[c]("name",a),"transform"!==l&&(o=h(a,v.Names.prefixCheck(l)[0]),v.Values.isCSSNullValue(o)&&v.Hooks.templates[c]&&(o=v.Hooks.templates[c][1])),i=v.Normalizations.registered[c]("extract",a,o)}if(!/^[\d-]/.test(i))if(g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c))if(/^(height|width)$/i.test(c))try{i=a.getBBox()[c]}catch(p){i=0}else i=a.getAttribute(c);else i=h(a,v.Names.prefixCheck(c)[0]);return v.Values.isCSSNullValue(i)&&(i=0),t.debug>=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(v.Normalizations.registered[c]&&"transform"===v.Normalizations.registered[c]("name",a))v.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(v.Hooks.registered[c]){var i=c,j=v.Hooks.getRoot(c);e=e||v.getPropertyValue(a,j),d=v.Hooks.injectValue(i,d,e),c=j}if(v.Normalizations.registered[c]&&(d=v.Normalizations.registered[c]("inject",a,d),c=v.Normalizations.registered[c]("name",a)),h=v.Names.prefixCheck(c)[0],8>=n)try{a.style[h]=d}catch(k){t.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d;t.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){function b(b){return parseFloat(v.getPropertyValue(a,b))}var c="";if((n||t.State.isAndroid&&!t.State.isChrome)&&g(a).isSVG){var d={translate:[b("translateX"),b("translateY")],skewX:[b("skewX")],skewY:[b("skewY")],scale:1!==b("scale")?[b("scale"),b("scale")]:[b("scaleX"),b("scaleY")],rotate:[b("rotateZ"),0,0]};m.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),d[a]&&(c+=a+"("+d[a].join(" ")+") ",delete d[a])})}else{var e,f;m.each(g(a).transformCache,function(b){return e=g(a).transformCache[b],"transformPerspective"===b?(f=e,!0):(9===n&&"rotateZ"===b&&(b="rotate"),void(c+=b+e+" "))}),f&&(c="perspective"+f+" "+c)}v.setPropertyValue(a,"transform",c)}};v.Hooks.register(),v.Normalizations.register(),t.hook=function(a,b,c){var e=d;return a=f(a),m.each(a,function(a,f){if(g(f)===d&&t.init(f),c===d)e===d&&(e=t.CSS.getPropertyValue(f,b));else{var h=t.CSS.setPropertyValue(f,b,c);"transform"===h[0]&&t.CSS.flushTransformCache(f),e=h}}),e};var w=function(){function a(){return h?B.promise||null:i}function e(){function a(a){function l(a,b){var c=d,e=d,g=d;return p.isArray(a)?(c=a[0],!p.isArray(a[1])&&/^[\d-]/.test(a[1])||p.isFunction(a[1])||v.RegEx.isHex.test(a[1])?g=a[1]:(p.isString(a[1])&&!v.RegEx.isHex.test(a[1])||p.isArray(a[1]))&&(e=b?a[1]:j(a[1],h.duration),a[2]!==d&&(g=a[2]))):c=a,b||(e=e||h.easing),p.isFunction(c)&&(c=c.call(f,y,x)),p.isFunction(g)&&(g=g.call(f,y,x)),[c||0,e,g]}function n(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=v.Values.getUnitType(a)),[d,c]}function r(){var a={myParent:f.parentNode||c.body,position:v.getPropertyValue(f,"position"),fontSize:v.getPropertyValue(f,"fontSize")},d=a.position===I.lastPosition&&a.myParent===I.lastParent,e=a.fontSize===I.lastFontSize;I.lastParent=a.myParent,I.lastPosition=a.position,I.lastFontSize=a.fontSize;var h=100,i={};if(e&&d)i.emToPx=I.lastEmToPx,i.percentToPxWidth=I.lastPercentToPxWidth,i.percentToPxHeight=I.lastPercentToPxHeight;else{var j=g(f).isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");t.init(j),a.myParent.appendChild(j),m.each(["overflow","overflowX","overflowY"],function(a,b){t.CSS.setPropertyValue(j,b,"hidden")}),t.CSS.setPropertyValue(j,"position",a.position),t.CSS.setPropertyValue(j,"fontSize",a.fontSize),t.CSS.setPropertyValue(j,"boxSizing","content-box"),m.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){t.CSS.setPropertyValue(j,b,h+"%")}),t.CSS.setPropertyValue(j,"paddingLeft",h+"em"),i.percentToPxWidth=I.lastPercentToPxWidth=(parseFloat(v.getPropertyValue(j,"width",null,!0))||1)/h,i.percentToPxHeight=I.lastPercentToPxHeight=(parseFloat(v.getPropertyValue(j,"height",null,!0))||1)/h,i.emToPx=I.lastEmToPx=(parseFloat(v.getPropertyValue(j,"paddingLeft"))||1)/h,a.myParent.removeChild(j)}return null===I.remToPx&&(I.remToPx=parseFloat(v.getPropertyValue(c.body,"fontSize"))||16),null===I.vwToPx&&(I.vwToPx=parseFloat(b.innerWidth)/100,I.vhToPx=parseFloat(b.innerHeight)/100),i.remToPx=I.remToPx,i.vwToPx=I.vwToPx,i.vhToPx=I.vhToPx,t.debug>=1&&console.log("Unit ratios: "+JSON.stringify(i),f),i}if(h.begin&&0===y)try{h.begin.call(o,o)}catch(u){setTimeout(function(){throw u},1)}if("scroll"===C){var w,z,A,D=/^x$/i.test(h.axis)?"Left":"Top",E=parseFloat(h.offset)||0;h.container?p.isWrapped(h.container)||p.isNode(h.container)?(h.container=h.container[0]||h.container,w=h.container["scroll"+D],A=w+m(f).position()[D.toLowerCase()]+E):h.container=null:(w=t.State.scrollAnchor[t.State["scrollProperty"+D]],z=t.State.scrollAnchor[t.State["scrollProperty"+("Left"===D?"Top":"Left")]],A=m(f).offset()[D.toLowerCase()]+E),i={scroll:{rootPropertyValue:!1,startValue:w,currentValue:w,endValue:A,unitType:"",easing:h.easing,scrollData:{container:h.container,direction:D,alternateValue:z}},element:f},t.debug&&console.log("tweensContainer (scroll): ",i.scroll,f)}else if("reverse"===C){if(!g(f).tweensContainer)return void m.dequeue(f,h.queue);"none"===g(f).opts.display&&(g(f).opts.display="auto"),"hidden"===g(f).opts.visibility&&(g(f).opts.visibility="visible"),g(f).opts.loop=!1,g(f).opts.begin=null,g(f).opts.complete=null,s.easing||delete h.easing,s.duration||delete h.duration,h=m.extend({},g(f).opts,h);var F=m.extend(!0,{},g(f).tweensContainer);for(var G in F)if("element"!==G){var H=F[G].startValue;F[G].startValue=F[G].currentValue=F[G].endValue,F[G].endValue=H,p.isEmptyObject(s)||(F[G].easing=h.easing),t.debug&&console.log("reverse tweensContainer ("+G+"): "+JSON.stringify(F[G]),f)}i=F}else if("start"===C){var F;g(f).tweensContainer&&g(f).isAnimating===!0&&(F=g(f).tweensContainer),m.each(q,function(a,b){if(RegExp("^"+v.Lists.colors.join("$|^")+"$").test(a)){var c=l(b,!0),e=c[0],f=c[1],g=c[2];if(v.RegEx.isHex.test(e)){for(var h=["Red","Green","Blue"],i=v.Values.hexToRgb(e),j=g?v.Values.hexToRgb(g):d,k=0;kL;L++){var M={delay:E.delay,progress:E.progress};L===K-1&&(M.display=E.display,M.visibility=E.visibility,M.complete=E.complete),w(o,"reverse",M)}return a()}};t=m.extend(w,t),t.animate=w;var x=b.requestAnimationFrame||o;return t.State.isMobile||c.hidden===d||c.addEventListener("visibilitychange",function(){c.hidden?(x=function(a){return setTimeout(function(){a(!0)},16)},k()):x=b.requestAnimationFrame||o}),a.Velocity=t,a!==b&&(a.fn.velocity=w,a.fn.velocity.defaults=t.defaults),m.each(["Down","Up"],function(a,b){t.Redirects["slide"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j=i.begin,k=i.complete,l={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},n={};i.display===d&&(i.display="Down"===b?"inline"===t.CSS.Values.getDisplayType(a)?"inline-block":"block":"none"),i.begin=function(){j&&j.call(g,g);for(var c in l){n[c]=a.style[c];var d=t.CSS.getPropertyValue(a,c);l[c]="Down"===b?[d,0]:[0,d]}n.overflow=a.style.overflow,a.style.overflow="hidden"},i.complete=function(){for(var b in n)a.style[b]=n[b];k&&k.call(g,g),h&&h.resolver(g)},t(a,l,i)}}),m.each(["In","Out"],function(a,b){t.Redirects["fade"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j={opacity:"In"===b?1:0},k=i.complete;i.complete=e!==f-1?i.begin=null:function(){k&&k.call(g,g),h&&h.resolver(g)},i.display===d&&(i.display="In"===b?"auto":"none"),t(this,j,i)}}),t}(window.jQuery||window.Zepto||window,window,document)})),!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return!!Array.isArray(a)&&(g(a,c[b],c),!0)}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===ya||f.eventType===Aa)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ba&&(i>xa||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Ca:ma(a)>=ma(b)?a>0?Da:Ea:b>0?Fa:Ga}function I(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],La)-J(a[1],a[0],La)}function L(a,b){return I(b[0],b[1],La)/I(a[0],a[1],La)}function M(){this.evEl=Na,this.evWin=Oa,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Ra,this.evWin=Sa,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ua,this.evWin=Va,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Aa|Ba)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xa,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(ya|za)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===ya)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Aa|Ba)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Ta={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Ua="touchstart",Va="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Ta[a.type];if(b===ya&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Aa|Ba)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}});var Wa={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Xa="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wa[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==ta,e=c.pointerType==va;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Aa|Ba)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Ya=v(ja.style,"touchAction"),Za=Ya!==d,$a="compute",_a="auto",ab="manipulation",bb="none",cb="pan-x",db="pan-y";T.prototype={set:function(a){a==$a&&(a=this.compute()),Za&&(this.manager.element.style[Ya]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Za){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bb),f=q(d,db),g=q(d,cb);return e||f&&c&Ha||g&&c&Ia?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var eb=1,fb=2,gb=4,hb=8,ib=hb,jb=16,kb=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hb>d&&b(!0),b(),d>=hb&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kb)},canEmit:function(){for(var a=0;af?Da:Ea,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ca:0>g?Fa:Ga,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fb||!(this.state&fb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(aa,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_a]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Aa|Ba)&&!f)this.reset();else if(a.eventType&ya)this.reset(),this._timer=e(function(){this.state=ib,this.tryEmit()},b.time,this);else if(a.eventType&Aa)return ib;return kb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ib&&(a&&a.eventType&Aa?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),j(ba,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fb)}}),j(ca,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Ha|Ia,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ha|Ia)?b=a.velocity:c&Ha?b=a.velocityX:c&Ia&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&ma(b)>this.options.velocity&&a.eventType&Aa},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(da,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ab]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance=0&&!d;)d=a[c[f]+"RequestAnimationFrame"],e=a[c[f]+"CancelRequestAnimationFrame"];d&&e||(d=function(a){var c=+Date.now(),d=Math.max(b+16,c);return setTimeout(function(){a(b=d)},d-c)},e=clearTimeout),a.requestAnimationFrame=d,a.cancelAnimationFrame=e}(window),Materialize.guid=function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return function(){return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}}(),Materialize.escapeHash=function(a){return a.replace(/(:|\.|\[|\]|,|=)/g,"\\$1")},Materialize.elementOrParentIsFixed=function(a){var b=$(a),c=b.add(b.parents()),d=!1;return c.each(function(){if("fixed"===$(this).css("position"))return d=!0,!1}),d};var getTime=Date.now||function(){return(new Date).getTime()};Materialize.throttle=function(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:getTime(),g=null,f=a.apply(d,e),d=e=null};return function(){var j=getTime();h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,k<=0?(clearTimeout(g),g=null,h=j,f=a.apply(d,e),d=e=null):g||c.trailing===!1||(g=setTimeout(i,k)),f}};var Vel;Vel=jQuery?jQuery.Velocity:$?$.Velocity:Velocity,function(a){a.fn.collapsible=function(b){var c={accordion:void 0,onOpen:void 0,onClose:void 0};return b=a.extend(c,b),this.each(function(){function c(b){j=i.find("> li > .collapsible-header"),b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}),j.not(b).removeClass("active").parent().removeClass("active"),j.not(b).parent().children(".collapsible-body").stop(!0,!1).each(function(){a(this).is(":visible")&&a(this).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height",""),f(a(this).siblings(".collapsible-header"))}})})}function d(b){b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function e(a){b.accordion||"accordion"===k||void 0===k?c(a):d(a),f(a)}function f(a){a.hasClass("active")?"function"==typeof b.onOpen&&b.onOpen.call(this,a.parent()):"function"==typeof b.onClose&&b.onClose.call(this,a.parent())}function g(a){var b=h(a);return b.length>0}function h(a){return a.closest("li > .collapsible-header")}var i=a(this),j=a(this).find("> li > .collapsible-header"),k=i.data("collapsible");i.off("click.collapse","> li > .collapsible-header"),j.off("click.collapse"),i.on("click.collapse","> li > .collapsible-header",function(b){var c=a(b.target);g(c)&&(c=h(c)),c.toggleClass("active"),e(c)}),b.accordion||"accordion"===k||void 0===k?e(j.filter(".active").first()):j.filter(".active").each(function(){e(a(this))})})},a(document).ready(function(){a(".collapsible").collapsible()})}(jQuery),function(a){a.fn.scrollTo=function(b){return a(this).scrollTop(a(this).scrollTop()-a(this).offset().top+a(b).offset().top),this},a.fn.dropdown=function(b){var c={inDuration:300,outDuration:225,constrainWidth:!0,hover:!1,gutter:0,belowOrigin:!1,alignment:"left",stopPropagation:!1};return"open"===b?(this.each(function(){a(this).trigger("open")}),!1):"close"===b?(this.each(function(){a(this).trigger("close")}),!1):void this.each(function(){function d(){void 0!==g.data("induration")&&(h.inDuration=g.data("induration")),void 0!==g.data("outduration")&&(h.outDuration=g.data("outduration")),void 0!==g.data("constrainwidth")&&(h.constrainWidth=g.data("constrainwidth")),void 0!==g.data("hover")&&(h.hover=g.data("hover")),void 0!==g.data("gutter")&&(h.gutter=g.data("gutter")),void 0!==g.data("beloworigin")&&(h.belowOrigin=g.data("beloworigin")),void 0!==g.data("alignment")&&(h.alignment=g.data("alignment")),void 0!==g.data("stoppropagation")&&(h.stopPropagation=g.data("stoppropagation"))}function e(b){"focus"===b&&(i=!0),d(),j.addClass("active"),g.addClass("active"),h.constrainWidth===!0?j.css("width",g.outerWidth()):j.css("white-space","nowrap");var c=window.innerHeight,e=g.innerHeight(),k=g.offset().left,l=g.offset().top-a(window).scrollTop(),m=h.alignment,n=0,o=0,p=0;h.belowOrigin===!0&&(p=e);var q=0,r=0,s=g.parent();if(s.is("body")||(s[0].scrollHeight>s[0].clientHeight&&(q=s[0].scrollTop),s[0].scrollWidth>s[0].clientWidth&&(r=s[0].scrollLeft)),k+j.innerWidth()>a(window).width()?m="right":k-j.innerWidth()+g.innerWidth()<0&&(m="left"),l+j.innerHeight()>c)if(l+e-j.innerHeight()<0){var t=c-l-p;j.css("max-height",t)}else p||(p+=e),p-=j.innerHeight();if("left"===m)n=h.gutter,o=g.position().left+n;else if("right"===m){var u=g.position().left+g.outerWidth()-j.outerWidth();n=-h.gutter,o=u+n}j.css({position:"absolute",top:g.position().top+p+q,left:o+r}),j.stop(!0,!0).css("opacity",0).slideDown({queue:!1,duration:h.inDuration,easing:"easeOutCubic",complete:function(){a(this).css("height","")}}).animate({opacity:1},{queue:!1,duration:h.inDuration,easing:"easeOutSine"}),a(document).bind("click."+j.attr("id")+" touchstart."+j.attr("id"),function(b){j.is(b.target)||g.is(b.target)||g.find(b.target).length||(f(),a(document).unbind("click."+j.attr("id")+" touchstart."+j.attr("id")))})}function f(){i=!1,j.fadeOut(h.outDuration),j.removeClass("active"),g.removeClass("active"),a(document).unbind("click."+j.attr("id")+" touchstart."+j.attr("id")),setTimeout(function(){j.css("max-height","")},h.outDuration)}var g=a(this),h=a.extend({},c,b),i=!1,j=a("#"+g.attr("data-activates"));if(d(),g.after(j),h.hover){var k=!1;g.unbind("click."+g.attr("id")),g.on("mouseenter",function(a){k===!1&&(e(),k=!0)}),g.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-content").is(j)||(j.stop(!0,!0),f(),k=!1)}),j.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-button").is(g)||(j.stop(!0,!0),f(),k=!1)})}else g.unbind("click."+g.attr("id")),g.bind("click."+g.attr("id"),function(b){i||(g[0]!=b.currentTarget||g.hasClass("active")||0!==a(b.target).closest(".dropdown-content").length?g.hasClass("active")&&(f(),a(document).unbind("click."+j.attr("id")+" touchstart."+j.attr("id"))):(b.preventDefault(),h.stopPropagation&&b.stopPropagation(),e("click")))});g.on("open",function(a,b){e(b)}),g.on("close",f)})},a(document).ready(function(){a(".dropdown-button").dropdown()})}(jQuery),function(a){var b=0,c=0,d=function(){return c++,"materialize-modal-overlay-"+c},e={init:function(c){var e={opacity:.5,inDuration:350,outDuration:250,ready:void 0, -complete:void 0,dismissible:!0,startingTop:"4%",endingTop:"10%"};return c=a.extend(e,c),this.each(function(){var e=a(this),f=a(this).attr("id")||"#"+a(this).data("target"),g=function(){var d=e.data("overlay-id"),f=a("#"+d);e.removeClass("open"),a("body").css({overflow:"",width:""}),e.find(".modal-close").off("click.close"),a(document).off("keyup.modal"+d),f.velocity({opacity:0},{duration:c.outDuration,queue:!1,ease:"easeOutQuart"});var g={duration:c.outDuration,queue:!1,ease:"easeOutCubic",complete:function(){a(this).css({display:"none"}),"function"==typeof c.complete&&c.complete.call(this,e),f.remove(),b--}};e.hasClass("bottom-sheet")?e.velocity({bottom:"-100%",opacity:0},g):e.velocity({top:c.startingTop,opacity:0,scaleX:.7},g)},h=function(f){var h=a("body"),i=h.innerWidth();if(h.css("overflow","hidden"),h.width(i),!e.hasClass("open")){var j=d(),k=a('');lStack=++b,k.attr("id",j).css("z-index",1e3+2*lStack),e.data("overlay-id",j).css("z-index",1e3+2*lStack+1),e.addClass("open"),a("body").append(k),c.dismissible&&(k.click(function(){g()}),a(document).on("keyup.modal"+j,function(a){27===a.keyCode&&g()})),e.find(".modal-close").on("click.close",function(a){g()}),k.css({display:"block",opacity:0}),e.css({display:"block",opacity:0}),k.velocity({opacity:c.opacity},{duration:c.inDuration,queue:!1,ease:"easeOutCubic"}),e.data("associated-overlay",k[0]);var l={duration:c.inDuration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready.call(this,e,f)}};e.hasClass("bottom-sheet")?e.velocity({bottom:"0",opacity:1},l):(a.Velocity.hook(e,"scaleX",.7),e.css({top:c.startingTop}),e.velocity({top:c.endingTop,opacity:1,scaleX:"1"},l))}};a(document).off("click.modalTrigger",'a[href="#'+f+'"], [data-target="'+f+'"]'),a(this).off("openModal"),a(this).off("closeModal"),a(document).on("click.modalTrigger",'a[href="#'+f+'"], [data-target="'+f+'"]',function(b){c.startingTop=(a(this).offset().top-a(window).scrollTop())/1.15,h(a(this)),b.preventDefault()}),a(this).on("openModal",function(){a(this).attr("href")||"#"+a(this).data("target");h()}),a(this).on("closeModal",function(){g()})})},open:function(){a(this).trigger("openModal")},close:function(){a(this).trigger("closeModal")}};a.fn.modal=function(b){return e[b]?e[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.modal"):e.init.apply(this,arguments)}}(jQuery),function(a){a.fn.materialbox=function(){return this.each(function(){function b(){f=!1;var b=i.parent(".material-placeholder"),d=(window.innerWidth,window.innerHeight,i.data("width")),g=i.data("height");i.velocity("stop",!0),a("#materialbox-overlay").velocity("stop",!0),a(".materialbox-caption").velocity("stop",!0),a("#materialbox-overlay").velocity({opacity:0},{duration:h,queue:!1,easing:"easeOutQuad",complete:function(){e=!1,a(this).remove()}}),i.velocity({width:d,height:g,left:0,top:0},{duration:h,queue:!1,easing:"easeOutQuad"}),a(".materialbox-caption").velocity({opacity:0},{duration:h,queue:!1,easing:"easeOutQuad",complete:function(){b.css({height:"",width:"",position:"",top:"",left:""}),i.css({height:"",top:"",left:"",width:"","max-width":"",position:"","z-index":"","will-change":""}),i.removeClass("active"),f=!0,a(this).remove(),c&&c.css("overflow","")}})}if(!a(this).hasClass("initialized")){a(this).addClass("initialized");var c,d,e=!1,f=!0,g=275,h=200,i=a(this),j=a("
        ").addClass("material-placeholder");i.wrap(j),i.on("click",function(){var h=i.parent(".material-placeholder"),j=window.innerWidth,k=window.innerHeight,l=i.width(),m=i.height();if(f===!1)return b(),!1;if(e&&f===!0)return b(),!1;f=!1,i.addClass("active"),e=!0,h.css({width:h[0].getBoundingClientRect().width,height:h[0].getBoundingClientRect().height,position:"relative",top:0,left:0}),c=void 0,d=h[0].parentNode;for(;null!==d&&!a(d).is(document);){var n=a(d);"visible"!==n.css("overflow")&&(n.css("overflow","visible"),c=void 0===c?n:c.add(n)),d=d.parentNode}i.css({position:"absolute","z-index":1e3,"will-change":"left, top, width, height"}).data("width",l).data("height",m);var o=a('
        ').css({opacity:0}).click(function(){f===!0&&b()});i.before(o);var p=o[0].getBoundingClientRect();if(o.css({width:j,height:k,left:-1*p.left,top:-1*p.top}),o.velocity({opacity:1},{duration:g,queue:!1,easing:"easeOutQuad"}),""!==i.data("caption")){var q=a('
        ');q.text(i.data("caption")),a("body").append(q),q.css({display:"inline"}),q.velocity({opacity:1},{duration:g,queue:!1,easing:"easeOutQuad"})}var r=0,s=l/j,t=m/k,u=0,v=0;s>t?(r=m/l,u=.9*j,v=.9*j*r):(r=l/m,u=.9*k*r,v=.9*k),i.hasClass("responsive-img")?i.velocity({"max-width":u,width:l},{duration:0,queue:!1,complete:function(){i.css({left:0,top:0}).velocity({height:v,width:u,left:a(document).scrollLeft()+j/2-i.parent(".material-placeholder").offset().left-u/2,top:a(document).scrollTop()+k/2-i.parent(".material-placeholder").offset().top-v/2},{duration:g,queue:!1,easing:"easeOutQuad",complete:function(){f=!0}})}}):i.css("left",0).css("top",0).velocity({height:v,width:u,left:a(document).scrollLeft()+j/2-i.parent(".material-placeholder").offset().left-u/2,top:a(document).scrollTop()+k/2-i.parent(".material-placeholder").offset().top-v/2},{duration:g,queue:!1,easing:"easeOutQuad",complete:function(){f=!0}})}),a(window).scroll(function(){e&&b()}),a(document).keyup(function(a){27===a.keyCode&&f===!0&&e&&b()})}})},a(document).ready(function(){a(".materialboxed").materialbox()})}(jQuery),function(a){a.fn.parallax=function(){var b=a(window).width();return this.each(function(c){function d(c){var d;d=b<601?e.height()>0?e.height():e.children("img").height():e.height()>0?e.height():500;var f=e.children("img").first(),g=f.height(),h=g-d,i=e.offset().top+d,j=e.offset().top,k=a(window).scrollTop(),l=window.innerHeight,m=k+l,n=(m-j)/(d+l),o=Math.round(h*n);c&&f.css("display","block"),i>k&&j=0?(f.velocity({right:q(c)},{duration:p,queue:!1,easing:"easeOutQuad"}),f.velocity({left:r(c)},{duration:p,queue:!1,easing:"easeOutQuad",delay:90})):(f.velocity({left:r(c)},{duration:p,queue:!1,easing:"easeOutQuad"}),f.velocity({right:q(c)},{duration:p,queue:!1,easing:"easeOutQuad",delay:90}))};b.swipeable&&i>b.responsiveThreshold&&(b.swipeable=!1),c=a(j.filter('[href="'+location.hash+'"]')),0===c.length&&(c=a(this).find("li.tab a.active").first()),0===c.length&&(c=a(this).find("li.tab a").first()),c.addClass("active"),n=j.index(c),n<0&&(n=0),void 0!==c[0]&&(d=a(c[0].hash),d.addClass("active")),h.find(".indicator").length||h.append('
        '),f=h.find(".indicator"),h.append(f),h.is(":visible")&&setTimeout(function(){f.css({right:q(c)}),f.css({left:r(c)})},0),a(window).resize(function(){k=h.width(),m=Math.max(k,h[0].scrollWidth)/j.length,n<0&&(n=0),0!==m&&0!==k&&(f.css({right:q(c)}),f.css({left:r(c)}))}),b.swipeable?(j.each(function(){var b=a(Materialize.escapeHash(this.hash));b.addClass("carousel-item"),l=l.add(b)}),e=l.wrapAll(''),l.css("display",""),a(".tabs-content.carousel").carousel({fullWidth:!0,noWrap:!0,onCycleTo:function(a){if(!o){var b=n;n=e.index(a),c=j.eq(n),s(b)}}})):j.not(c).each(function(){a(Materialize.escapeHash(this.hash)).hide()}),h.on("click","a",function(e){if(a(this).parent().hasClass("disabled"))return void e.preventDefault();if(!a(this).attr("target")){o=!0,k=h.width(),m=Math.max(k,h[0].scrollWidth)/j.length,c.removeClass("active");var f=d;c=a(this),d=a(Materialize.escapeHash(this.hash)),j=h.find("li.tab a");c.position();c.addClass("active"),prev_index=n,n=j.index(a(this)),n<0&&(n=0),b.swipeable?l.length&&l.carousel("set",n):(void 0!==d&&(d.show(),d.addClass("active"),"function"==typeof b.onShow&&b.onShow.call(this,d)),void 0===f||f.is(d)||(f.hide(),f.removeClass("active"))),g=setTimeout(function(){o=!1},p),s(prev_index),e.preventDefault()}})})},select_tab:function(a){this.find('a[href="#'+a+'"]').trigger("click")}};a.fn.tabs=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tabs"):b.init.apply(this,arguments)},a(document).ready(function(){a("ul.tabs").tabs()})}(jQuery),function(a){a.fn.tooltip=function(c){var d=5,e={delay:350,tooltip:"",position:"bottom",html:!1};return"remove"===c?(this.each(function(){a("#"+a(this).attr("data-tooltip-id")).remove(),a(this).off("mouseenter.tooltip mouseleave.tooltip")}),!1):(c=a.extend(e,c),this.each(function(){var e=Materialize.guid(),f=a(this);f.attr("data-tooltip-id")&&a("#"+f.attr("data-tooltip-id")).remove(),f.attr("data-tooltip-id",e);var g,h,i,j,k,l,m=function(){g=f.attr("data-html")?"true"===f.attr("data-html"):c.html,h=f.attr("data-delay"),h=void 0===h||""===h?c.delay:h,i=f.attr("data-position"),i=void 0===i||""===i?c.position:i,j=f.attr("data-tooltip"),j=void 0===j||""===j?c.tooltip:j};m();var n=function(){var b=a('
        ');return j=g?a("").html(j):a("").text(j),b.append(j).appendTo(a("body")).attr("id",e),l=a('
        '),l.appendTo(b),b};k=n(),f.off("mouseenter.tooltip mouseleave.tooltip");var o,p=!1;f.on({"mouseenter.tooltip":function(a){var c=function(){m(),p=!0,k.velocity("stop"),l.velocity("stop"),k.css({visibility:"visible",left:"0px",top:"0px"});var a,c,e,g=f.outerWidth(),h=f.outerHeight(),j=k.outerHeight(),n=k.outerWidth(),o="0px",q="0px",r=l[0].offsetWidth,s=l[0].offsetHeight,t=8,u=8,v=0;"top"===i?(a=f.offset().top-j-d,c=f.offset().left+g/2-n/2,e=b(c,a,n,j),o="-10px",l.css({bottom:0,left:0,borderRadius:"14px 14px 0 0",transformOrigin:"50% 100%",marginTop:j,marginLeft:n/2-r/2})):"left"===i?(a=f.offset().top+h/2-j/2,c=f.offset().left-n-d,e=b(c,a,n,j),q="-10px",l.css({top:"-7px",right:0,width:"14px",height:"14px",borderRadius:"14px 0 0 14px",transformOrigin:"95% 50%",marginTop:j/2,marginLeft:n})):"right"===i?(a=f.offset().top+h/2-j/2,c=f.offset().left+g+d,e=b(c,a,n,j),q="+10px",l.css({top:"-7px",left:0,width:"14px",height:"14px",borderRadius:"0 14px 14px 0",transformOrigin:"5% 50%",marginTop:j/2,marginLeft:"0px"})):(a=f.offset().top+f.outerHeight()+d,c=f.offset().left+g/2-n/2,e=b(c,a,n,j),o="+10px",l.css({top:0,left:0,marginLeft:n/2-r/2})),k.css({top:e.y,left:e.x}),t=Math.SQRT2*n/parseInt(r),u=Math.SQRT2*j/parseInt(s),v=Math.max(t,u),k.velocity({translateY:o,translateX:q},{duration:350,queue:!1}).velocity({opacity:1},{duration:300,delay:50,queue:!1}),l.css({visibility:"visible"}).velocity({opacity:1},{duration:55,delay:0,queue:!1}).velocity({scaleX:v,scaleY:v},{duration:300,delay:0,queue:!1,easing:"easeInOutQuad"})};o=setTimeout(c,h)},"mouseleave.tooltip":function(){p=!1,clearTimeout(o),setTimeout(function(){p!==!0&&(k.velocity({opacity:0,translateY:0,translateX:0},{duration:225,queue:!1}),l.velocity({opacity:0,scaleX:1,scaleY:1},{duration:225,queue:!1,complete:function(){l.css({visibility:"hidden"}),k.css({visibility:"hidden"}),p=!1}}))},225)}})}))};var b=function(b,c,d,e){var f=b,g=c;return f<0?f=4:f+d>window.innerWidth&&(f-=f+d-window.innerWidth),g<0?g=4:g+e>window.innerHeight+a(window).scrollTop&&(g-=g+e-window.innerHeight),{x:f,y:g}};a(document).ready(function(){a(".tooltipped").tooltip()})}(jQuery),function(a){"use strict";function b(a){return null!==a&&a===a.window}function c(a){return b(a)?a:9===a.nodeType&&a.defaultView}function d(a){var b,d,e={top:0,left:0},f=a&&a.ownerDocument;return b=f.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect()),d=c(f),{top:e.top+d.pageYOffset-b.clientTop,left:e.left+d.pageXOffset-b.clientLeft}}function e(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}function f(a){if(k.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(!(c instanceof SVGElement||c.className.indexOf("waves-effect")===-1)){b=c;break}if(c.classList.contains("waves-effect")){b=c;break}c=c.parentElement}return b}function g(b){var c=f(b);null!==c&&(j.show(b,c),"ontouchstart"in a&&(c.addEventListener("touchend",j.hide,!1),c.addEventListener("touchcancel",j.hide,!1)),c.addEventListener("mouseup",j.hide,!1),c.addEventListener("mouseleave",j.hide,!1))}var h=h||{},i=document.querySelectorAll.bind(document),j={duration:750,show:function(a,b){if(2===a.button)return!1;var c=b||this,f=document.createElement("div");f.className="waves-ripple",c.appendChild(f);var g=d(c),h=a.pageY-g.top,i=a.pageX-g.left,k="scale("+c.clientWidth/100*10+")";"touches"in a&&(h=a.touches[0].pageY-g.top,i=a.touches[0].pageX-g.left),f.setAttribute("data-hold",Date.now()),f.setAttribute("data-scale",k),f.setAttribute("data-x",i),f.setAttribute("data-y",h);var l={top:h+"px",left:i+"px"};f.className=f.className+" waves-notransition",f.setAttribute("style",e(l)),f.className=f.className.replace("waves-notransition",""),l["-webkit-transform"]=k,l["-moz-transform"]=k,l["-ms-transform"]=k,l["-o-transform"]=k,l.transform=k,l.opacity="1",l["-webkit-transition-duration"]=j.duration+"ms",l["-moz-transition-duration"]=j.duration+"ms",l["-o-transition-duration"]=j.duration+"ms",l["transition-duration"]=j.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f.setAttribute("style",e(l))},hide:function(a){k.touchup(a);var b=this,c=(1.4*b.clientWidth,null),d=b.getElementsByClassName("waves-ripple");if(!(d.length>0))return!1;c=d[d.length-1];var f=c.getAttribute("data-x"),g=c.getAttribute("data-y"),h=c.getAttribute("data-scale"),i=Date.now()-Number(c.getAttribute("data-hold")),l=350-i;l<0&&(l=0),setTimeout(function(){var a={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":j.duration+"ms","-moz-transition-duration":j.duration+"ms","-o-transition-duration":j.duration+"ms","transition-duration":j.duration+"ms","-webkit-transform":h,"-moz-transform":h,"-ms-transform":h,"-o-transform":h,transform:h};c.setAttribute("style",e(a)),setTimeout(function(){try{b.removeChild(c)}catch(a){return!1}},j.duration)},l)},wrapInput:function(a){for(var b=0;b0&&(k.touches-=1)},500):"mousedown"===a.type&&k.touches>0&&(b=!1),b},touchup:function(a){k.allowEvent(a)}};h.displayEffect=function(b){b=b||{},"duration"in b&&(j.duration=b.duration),j.wrapInput(i(".waves-effect")),"ontouchstart"in a&&document.body.addEventListener("touchstart",g,!1),document.body.addEventListener("mousedown",g,!1)},h.attach=function(b){"input"===b.tagName.toLowerCase()&&(j.wrapInput([b]),b=b.parentElement),"ontouchstart"in a&&b.addEventListener("touchstart",g,!1),b.addEventListener("mousedown",g,!1)},a.Waves=h,document.addEventListener("DOMContentLoaded",function(){h.displayEffect()},!1)}(window),Materialize.toast=function(a,b,c,d){function e(a){var b=document.createElement("div");if(b.classList.add("toast"),c)for(var e=c.split(" "),f=0,g=e.length;fe?Vel(b,{marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),b.parentNode.removeChild(b)}}):(b.classList.remove("panning"),Vel(b,{left:0,opacity:1},{duration:300,easing:"easeOutExpo",queue:!1}))}),b}c=c||"";var f=document.getElementById("toast-container");null===f&&(f=document.createElement("div"),f.id="toast-container",document.body.appendChild(f));var g=e(a);a&&f.appendChild(g),g.style.opacity=0,Vel(g,{translateY:"-35px",opacity:1},{duration:300,easing:"easeOutCubic",queue:!1});var h,i=b;null!=i&&(h=setInterval(function(){null===g.parentNode&&window.clearInterval(h),g.classList.contains("panning")||(i-=20),i<=0&&(Vel(g,{opacity:0,marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),this[0].parentNode.removeChild(this[0])}}),window.clearInterval(h))},20))},function(a){var b={init:function(b){var c={menuWidth:300,edge:"left",closeOnClick:!1,draggable:!0};b=a.extend(c,b),a(this).each(function(){var c=a(this),d=c.attr("data-activates"),e=a("#"+d);300!=b.menuWidth&&e.css("width",b.menuWidth);var f=a('.drag-target[data-sidenav="'+d+'"]');b.draggable?(f.length&&f.remove(),f=a('
        ').attr("data-sidenav",d),a("body").append(f)):f=a(),"left"==b.edge?(e.css("transform","translateX(-100%)"),f.css({left:0})):(e.addClass("right-aligned").css("transform","translateX(100%)"),f.css({right:0})),e.hasClass("fixed")&&window.innerWidth>992&&e.css("transform","translateX(0)"),e.hasClass("fixed")&&a(window).resize(function(){window.innerWidth>992?0!==a("#sidenav-overlay").length&&i?g(!0):e.css("transform","translateX(0%)"):i===!1&&("left"===b.edge?e.css("transform","translateX(-100%)"):e.css("transform","translateX(100%)"))}),b.closeOnClick===!0&&e.on("click.itemclick","a:not(.collapsible-header)",function(){g()});var g=function(c){h=!1,i=!1,a("body").css({overflow:"",width:""}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),"left"===b.edge?(f.css({width:"",right:"",left:"0"}),e.velocity({translateX:"-100%"},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}})):(f.css({width:"",right:"0",left:""}),e.velocity({translateX:"100%"},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}}))},h=!1,i=!1;b.draggable&&(f.on("click",function(){i&&g()}),f.hammer({prevent_default:!1}).bind("pan",function(c){if("touch"==c.gesture.pointerType){var d=(c.gesture.direction,c.gesture.center.x),f=(c.gesture.center.y,c.gesture.velocityX,a("body")),h=a("#sidenav-overlay"),j=f.innerWidth();if(f.css("overflow","hidden"),f.width(j),0===h.length&&(h=a('
        '),h.css("opacity",0).click(function(){g()}),a("body").append(h)),"left"===b.edge&&(d>b.menuWidth?d=b.menuWidth:d<0&&(d=0)),"left"===b.edge)d=b.menuWidth/2&&(i=!0),e.css("transform","translateX("+(d-b.menuWidth)+"px)");else{d=window.innerWidth-b.menuWidth/2&&(i=!1);var k=d-b.menuWidth/2;k<0&&(k=0),e.css("transform","translateX("+k+"px)")}var l;"left"===b.edge?(l=d/b.menuWidth,h.velocity({opacity:l},{duration:10,queue:!1,easing:"easeOutQuad"})):(l=Math.abs((d-window.innerWidth)/b.menuWidth),h.velocity({opacity:l},{duration:10,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(c){if("touch"==c.gesture.pointerType){var d=a('
        '),g=c.gesture.velocityX,j=c.gesture.center.x,k=j-b.menuWidth,l=j-b.menuWidth/2;k>0&&(k=0),l<0&&(l=0),h=!1,"left"===b.edge?i&&g<=.3||g<-.5?(0!==k&&e.velocity({translateX:[0,k]},{duration:300,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:0,left:""}),i=!0):(!i||g>.3)&&(a("body").css({overflow:"",width:""}),e.velocity({translateX:[-1*b.menuWidth-10,k]},{duration:200,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:"",left:0})):i&&g>=-.3||g>.5?(0!==l&&e.velocity({translateX:[0,l]},{duration:300,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:"",left:0}),i=!0):(!i||g<-.3)&&(a("body").css({overflow:"",width:""}),e.velocity({translateX:[b.menuWidth+10,l]},{duration:200,queue:!1,easing:"easeOutQuad"}),d.velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:0,left:""}))}})),c.off("click.sidenav").on("click.sidenav",function(){if(i===!0)i=!1,h=!1,g();else{var c=a("body"),d=a('
        '),j=c.innerWidth();c.css("overflow","hidden"),c.width(j),a("body").append(f),"left"===b.edge?(f.css({width:"50%",right:0,left:""}),e.velocity({translateX:[0,-1*b.menuWidth]},{duration:300,queue:!1,easing:"easeOutQuad"})):(f.css({width:"50%",right:"",left:0}),e.velocity({translateX:[0,b.menuWidth]},{duration:300,queue:!1,easing:"easeOutQuad"})),d.css("opacity",0).click(function(){i=!1,h=!1,g(),d.velocity({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(d),d.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){i=!0,h=!1}})}return!1})})},destroy:function(){var b=a("#sidenav-overlay"),c=a('.drag-target[data-sidenav="'+a(this).attr("data-activates")+'"]');b.trigger("click"),c.remove(),a(this).off("click"),b.remove()},show:function(){this.trigger("click")},hide:function(){a("#sidenav-overlay").trigger("click")}};a.fn.sideNav=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.sideNav"):b.init.apply(this,arguments)}}(jQuery),function(a){function b(b,c,d,e){var g=a();return a.each(f,function(a,f){if(f.height()>0){var h=f.offset().top,i=f.offset().left,j=i+f.width(),k=h+f.height(),l=!(i>c||jd||k");e.html(g),b.is(":visible")?e.css("width",b.width()):e.css("width",a(window).width()/2),b.css("height",e.height())}Materialize.updateTextFields=function(){var b="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(b).each(function(b,c){var d=a(this);a(c).val().length>0||c.autofocus||void 0!==d.attr("placeholder")?d.siblings("label").addClass("active"):a(c)[0].validity?d.siblings("label").toggleClass("active",a(c)[0].validity.badInput===!0):d.siblings("label").removeClass("active")})};var c="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(document).on("change",c,function(){0===a(this).val().length&&void 0===a(this).attr("placeholder")||a(this).siblings("label").addClass("active"),validate_field(a(this))}),a(document).ready(function(){Materialize.updateTextFields()}),a(document).on("reset",function(b){var d=a(b.target);d.is("form")&&(d.find(c).removeClass("valid").removeClass("invalid"),d.find(c).each(function(){""===a(this).attr("value")&&a(this).siblings("label").removeClass("active")}),d.find("select.initialized").each(function(){var a=d.find("option[selected]").text();d.siblings("input.select-dropdown").val(a)}))}),a(document).on("focus",c,function(){a(this).siblings("label, .prefix").addClass("active")}),a(document).on("blur",c,function(){var b=a(this),c=".prefix";0===b.val().length&&b[0].validity.badInput!==!0&&void 0===b.attr("placeholder")&&(c+=", label"),b.siblings(c).removeClass("active"),validate_field(b)}),window.validate_field=function(a){var b=void 0!==a.attr("data-length"),c=parseInt(a.attr("data-length")),d=a.val().length;0===a.val().length&&a[0].validity.badInput===!1?a.hasClass("validate")&&(a.removeClass("valid"),a.removeClass("invalid")):a.hasClass("validate")&&(a.is(":valid")&&b&&d<=c||a.is(":valid")&&!b?(a.removeClass("invalid"),a.addClass("valid")):(a.removeClass("valid"),a.addClass("invalid")))};var d="input[type=radio], input[type=checkbox]";a(document).on("keyup.radio",d,function(b){if(9===b.which){a(this).addClass("tabbed");var c=a(this);return void c.one("blur",function(b){a(this).removeClass("tabbed")})}});var e=a(".hiddendiv").first();e.length||(e=a('
        '),a("body").append(e));var f=".materialize-textarea";a(f).each(function(){var c=a(this);c.val().length&&b(c)}),a("body").on("keyup keydown autoresize",f,function(){b(a(this))}),a(document).on("change",'.file-field input[type="file"]',function(){for(var b=a(this).closest(".file-field"),c=b.find("input.file-path"),d=a(this)[0].files,e=[],f=0;f
        ');a(this).after(b)});var j=".range-field";a(document).on("change",h,function(b){var c=a(this).siblings(".thumb");c.find(".value").html(a(this).val())}),a(document).on("input mousedown touchstart",h,function(b){var c=a(this).siblings(".thumb"),d=a(this).outerWidth();c.length<=0&&(c=a(''),a(this).after(c)),c.find(".value").html(a(this).val()),i=!0,a(this).addClass("active"),c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),"input"!==b.type&&(g=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left,g<0?g=0:g>d&&(g=d),c.addClass("active").css("left",g)),c.find(".value").html(a(this).val())}),a(document).on("mouseup touchend",j,function(){i=!1,a(this).removeClass("active")}),a(document).on("mousemove touchmove",j,function(b){var c,d=a(this).children(".thumb");if(i){d.hasClass("active")||d.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),c=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var e=a(this).outerWidth();c<0?c=0:c>e&&(c=e),d.addClass("active").css("left",c),d.find(".value").html(d.siblings(h).val())}}),a(document).on("mouseout touchleave",j,function(){if(!i){var b=a(this).children(".thumb");b.hasClass("active")&&b.velocity({height:"0",width:"0",top:"10px",marginLeft:"-6px"},{duration:100}),b.removeClass("active")}}),a.fn.autocomplete=function(b){var c={data:{},limit:1/0,onAutocomplete:null};return b=a.extend(c,b),this.each(function(){var c,d=a(this),e=b.data,f=0,g=0,h=d.closest(".input-field");if(!a.isEmptyObject(e)){var i,j=a('');h.length?(i=h.children(".autocomplete-content.dropdown-content").first(),i.length||h.append(j)):(i=d.next(".autocomplete-content.dropdown-content"),i.length||d.after(j)),i.length&&(j=i);var k=function(a,b){var c=b.find("img"),d=b.text().toLowerCase().indexOf(""+a.toLowerCase()),e=d+a.length-1,f=b.text().slice(0,d),g=b.text().slice(d,e+1),h=b.text().slice(e+1);b.html(""+f+""+g+""+h+""),c.length&&b.prepend(c)},l=function(){g=0,j.find(".active").removeClass("active")};d.off("keyup.autocomplete").on("keyup.autocomplete",function(g){if(f=0,13!==g.which&&38!==g.which&&40!==g.which){var h=d.val().toLowerCase();if(c!==h&&(j.empty(),l(),""!==h))for(var i in e)if(e.hasOwnProperty(i)&&i.toLowerCase().indexOf(h)!==-1&&i.toLowerCase()!==h){if(f>=b.limit)break;var m=a("
      • ");e[i]?m.append(''+i+""):m.append(""+i+""),j.append(m),k(h,m),f++}c=h}}),d.off("keydown.autocomplete").on("keydown.autocomplete",function(a){var b,c=a.which,d=j.children("li").length,e=j.children(".active").first();return 13===c?(b=j.children("li").eq(g),void(b.length&&(b.click(),a.preventDefault()))):void(38!==c&&40!==c||(a.preventDefault(),38===c&&g>0&&g--,40===c&&g
        ');h.addClass(d.attr("class"));var i=a(''),j=d.children("option, optgroup"),k=[],l=!1,m=d.find("option:selected").html()||d.find("option:first").html()||"",n=function(b,c,d){var e=c.is(":disabled")?"disabled ":"",f="optgroup-option"===d?"optgroup-option ":"",g=c.data("icon"),h=c.attr("class");if(g){var j="";return h&&(j=' class="'+h+'"'),"multiple"===d?i.append(a('
      • "+c.html()+"
      • ")):i.append(a('
      • "+c.html()+"
      • ")),!0}"multiple"===d?i.append(a('
      • "+c.html()+"
      • ")):i.append(a('
      • '+c.html()+"
      • "))};j.length&&j.each(function(){if(a(this).is("option"))e?n(d,a(this),"multiple"):n(d,a(this));else if(a(this).is("optgroup")){var b=a(this).children("option");i.append(a('
      • '+a(this).attr("label")+"
      • ")),b.each(function(){n(d,a(this),"optgroup-option")})}}),i.find("li:not(.optgroup)").each(function(f){a(this).click(function(g){if(!a(this).hasClass("disabled")&&!a(this).hasClass("optgroup")){var h=!0;e?(a('input[type="checkbox"]',this).prop("checked",function(a,b){return!b}),h=c(k,a(this).index(),d),q.trigger("focus")):(i.find("li").removeClass("active"),a(this).toggleClass("active"),q.val(a(this).text())),r(i,a(this)),d.find("option").eq(f).prop("selected",h),d.trigger("change"),"undefined"!=typeof b&&b()}g.stopPropagation()})}),d.wrap(h);var o=a('');d.is(":disabled")&&o.addClass("disabled");var p=m.replace(/"/g,"""),q=a('');d.before(q),q.before(o),q.after(i),d.is(":disabled")||q.dropdown({hover:!1,closeOnClick:!1}),d.attr("tabindex")&&a(q[0]).attr("tabindex",d.attr("tabindex")),d.addClass("initialized"),q.on({focus:function(){if(a("ul.select-dropdown").not(i[0]).is(":visible")&&a("input.select-dropdown").trigger("close"),!i.is(":visible")){a(this).trigger("open",["focus"]);var b=a(this).val();e&&b.indexOf(",")>=0&&(b=b.split(",")[0]);var c=i.find("li").filter(function(){return a(this).text().toLowerCase()===b.toLowerCase()})[0];r(i,c,!0)}},click:function(a){a.stopPropagation()}}),q.on("blur",function(){e||a(this).trigger("close"),i.find("li.selected").removeClass("selected")}),i.hover(function(){l=!0},function(){l=!1}),a(window).on({click:function(){e&&(l||q.trigger("close"))}}),e&&d.find("option:selected:not(:disabled)").each(function(){var b=a(this).index();c(k,b,d),i.find("li").eq(b).find(":checkbox").prop("checked",!0)});var r=function(b,c,d){if(c){b.find("li.selected").removeClass("selected");var f=a(c);f.addClass("selected"),e&&!d||i.scrollTo(f)}},s=[],t=function(b){if(9==b.which)return void q.trigger("close");if(40==b.which&&!i.is(":visible"))return void q.trigger("open");if(13!=b.which||i.is(":visible")){b.preventDefault();var c=String.fromCharCode(b.which).toLowerCase(),d=[9,13,27,38,40];if(c&&d.indexOf(b.which)===-1){s.push(c);var f=s.join(""),g=i.find("li").filter(function(){return 0===a(this).text().toLowerCase().indexOf(f)})[0];g&&r(i,g)}if(13==b.which){var h=i.find("li.selected:not(.disabled)")[0];h&&(a(h).trigger("click"),e||q.trigger("close"))}40==b.which&&(g=i.find("li.selected").length?i.find("li.selected").next("li:not(.disabled)")[0]:i.find("li:not(.disabled)")[0],r(i,g)),27==b.which&&q.trigger("close"),38==b.which&&(g=i.find("li.selected").prev("li:not(.disabled)")[0],g&&r(i,g)),setTimeout(function(){s=[]},1e3)}};q.on("keydown",t)}})}}(jQuery),function(a){var b={init:function(b){var c={indicators:!0,height:400,transition:500,interval:6e3};return b=a.extend(c,b),this.each(function(){function c(a,b){a.hasClass("center-align")?a.velocity({opacity:0,translateY:-100},{duration:b,queue:!1}):a.hasClass("right-align")?a.velocity({opacity:0,translateX:100},{duration:b,queue:!1}):a.hasClass("left-align")&&a.velocity({opacity:0,translateX:-100},{duration:b,queue:!1})}function d(a){a>=j.length?a=0:a<0&&(a=j.length-1),k=i.find(".active").index(),k!=a&&(e=j.eq(k),$caption=e.find(".caption"),e.removeClass("active"),e.velocity({opacity:0},{duration:b.transition,queue:!1,easing:"easeOutQuad",complete:function(){j.not(".active").velocity({opacity:0,translateX:0,translateY:0},{duration:0,queue:!1})}}),c($caption,b.transition),b.indicators&&f.eq(k).removeClass("active"),j.eq(a).velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),j.eq(a).find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,delay:b.transition,queue:!1,easing:"easeOutQuad"}),j.eq(a).addClass("active"),b.indicators&&f.eq(a).addClass("active"))}var e,f,g,h=a(this),i=h.find("ul.slides").first(),j=i.find("> li"),k=i.find(".active").index();k!=-1&&(e=j.eq(k)),h.hasClass("fullscreen")||(b.indicators?h.height(b.height+40):h.height(b.height),i.height(b.height)),j.find(".caption").each(function(){c(a(this),0)}),j.find("img").each(function(){var b="data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";a(this).attr("src")!==b&&(a(this).css("background-image","url("+a(this).attr("src")+")"),a(this).attr("src",b))}),b.indicators&&(f=a('
          '),j.each(function(c){var e=a('
        • ');e.click(function(){var c=i.parent(),e=c.find(a(this)).index();d(e),clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval)}),f.append(e)}),h.append(f),f=h.find("ul.indicators").find("li.indicator-item")),e?e.show():(j.first().addClass("active").velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),k=0,e=j.eq(k),b.indicators&&f.eq(k).addClass("active")),e.find("img").each(function(){e.find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,queue:!1,easing:"easeOutQuad"})}),g=setInterval(function(){k=i.find(".active").index(),d(k+1)},b.transition+b.interval);var l=!1,m=!1,n=!1;h.hammer({prevent_default:!1}).bind("pan",function(a){if("touch"===a.gesture.pointerType){clearInterval(g);var b=a.gesture.direction,c=a.gesture.deltaX,d=a.gesture.velocityX,e=a.gesture.velocityY;$curr_slide=i.find(".active"),Math.abs(d)>Math.abs(e)&&$curr_slide.velocity({translateX:c},{duration:50,queue:!1,easing:"easeOutQuad"}),4===b&&(c>h.innerWidth()/2||d<-.65)?n=!0:2===b&&(c<-1*h.innerWidth()/2||d>.65)&&(m=!0);var f;m&&(f=$curr_slide.next(),0===f.length&&(f=j.first()),f.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"})),n&&(f=$curr_slide.prev(),0===f.length&&(f=j.last()),f.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(a){"touch"===a.gesture.pointerType&&($curr_slide=i.find(".active"),l=!1,curr_index=i.find(".active").index(),!n&&!m||j.length<=1?$curr_slide.velocity({translateX:0},{duration:300,queue:!1,easing:"easeOutQuad"}):m?(d(curr_index+1),$curr_slide.velocity({translateX:-1*h.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):n&&(d(curr_index-1),$curr_slide.velocity({translateX:h.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})),m=!1,n=!1,clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval))}),h.on("sliderPause",function(){clearInterval(g)}),h.on("sliderStart",function(){clearInterval(g),g=setInterval(function(){k=i.find(".active").index(),j.length==k+1?k=0:k+=1,d(k)},b.transition+b.interval)}),h.on("sliderNext",function(){k=i.find(".active").index(),d(k+1)}),h.on("sliderPrev",function(){k=i.find(".active").index(),d(k-1)})})},pause:function(){a(this).trigger("sliderPause")},start:function(){a(this).trigger("sliderStart")},next:function(){a(this).trigger("sliderNext")},prev:function(){a(this).trigger("sliderPrev")}};a.fn.slider=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)}}(jQuery),function(a){a(document).ready(function(){a(document).on("click.card",".card",function(b){a(this).find("> .card-reveal").length&&(a(b.target).is(a(".card-reveal .card-title"))||a(b.target).is(a(".card-reveal .card-title i"))?a(this).find(".card-reveal").velocity({translateY:0},{duration:225,queue:!1,easing:"easeInOutQuad",complete:function(){a(this).css({display:"none"})}}):(a(b.target).is(a(".card .activator"))||a(b.target).is(a(".card .activator i")))&&(a(b.target).closest(".card").css("overflow","hidden"),a(this).find(".card-reveal").css({display:"block"}).velocity("stop",!1).velocity({translateY:"-100%"},{duration:300,queue:!1,easing:"easeInOutQuad"})))})})}(jQuery),function(a){var b={data:[],placeholder:"",secondaryPlaceholder:"",autocompleteData:{},autocompleteLimit:1/0};a(document).ready(function(){a(document).on("click",".chip .close",function(b){var c=a(this).closest(".chips");c.attr("data-initialized")||a(this).closest(".chip").remove()})}),a.fn.material_chip=function(c){var d=this;if(this.$el=a(this),this.$document=a(document),this.SELS={CHIPS:".chips",CHIP:".chip",INPUT:"input",DELETE:".material-icons",SELECTED_CHIP:".selected"},"data"===c)return this.$el.data("chips");var e=a.extend({},b,c);d.hasAutocomplete=!a.isEmptyObject(e.autocompleteData),this.init=function(){var b=0;d.$el.each(function(){var c=a(this),f=Materialize.guid();d.chipId=f,e.data&&e.data instanceof Array||(e.data=[]),c.data("chips",e.data),c.attr("data-index",b),c.attr("data-initialized",!0),c.hasClass(d.SELS.CHIPS)||c.addClass("chips"),d.chips(c,f),b++})},this.handleEvents=function(){var b=d.SELS;d.$document.off("click.chips-focus",b.CHIPS).on("click.chips-focus",b.CHIPS,function(c){a(c.target).find(b.INPUT).focus()}),d.$document.off("click.chips-select",b.CHIP).on("click.chips-select",b.CHIP,function(c){var e=a(c.target);if(e.length){var f=e.hasClass("selected"),g=e.closest(b.CHIPS);a(b.CHIP).removeClass("selected"),f||d.selectChip(e.index(),g)}}),d.$document.off("keydown.chips").on("keydown.chips",function(c){if(!a(c.target).is("input, textarea")){var e,f=d.$document.find(b.CHIP+b.SELECTED_CHIP),g=f.closest(b.CHIPS),h=f.siblings(b.CHIP).length;if(f.length)if(8===c.which||46===c.which){c.preventDefault(),e=f.index(),d.deleteChip(e,g);var i=null;e+1h)return void g.find("input").focus();d.selectChip(e,g)}}}),d.$document.off("focusin.chips",b.CHIPS+" "+b.INPUT).on("focusin.chips",b.CHIPS+" "+b.INPUT,function(c){var d=a(c.target).closest(b.CHIPS);d.addClass("focus"),d.siblings("label, .prefix").addClass("active"),a(b.CHIP).removeClass("selected")}),d.$document.off("focusout.chips",b.CHIPS+" "+b.INPUT).on("focusout.chips",b.CHIPS+" "+b.INPUT,function(c){var d=a(c.target).closest(b.CHIPS);d.removeClass("focus"),d.data("chips").length||d.siblings("label").removeClass("active"),d.siblings(".prefix").removeClass("active")}),d.$document.off("keydown.chips-add",b.CHIPS+" "+b.INPUT).on("keydown.chips-add",b.CHIPS+" "+b.INPUT,function(c){var e=a(c.target),f=e.closest(b.CHIPS),g=f.children(b.CHIP).length;if(13===c.which){if(d.hasAutocomplete&&f.find(".autocomplete-content.dropdown-content").length&&f.find(".autocomplete-content.dropdown-content").children().length)return;return c.preventDefault(),d.addChip({tag:e.val()},f),void e.val("")}if((8===c.keyCode||37===c.keyCode)&&""===e.val()&&g)return c.preventDefault(),d.selectChip(g-1,f),void e.blur()}),d.$document.off("click.chips-delete",b.CHIPS+" "+b.DELETE).on("click.chips-delete",b.CHIPS+" "+b.DELETE,function(c){var e=a(c.target),f=e.closest(b.CHIPS),g=e.closest(b.CHIP);c.stopPropagation(),d.deleteChip(g.index(),f),f.find("input").focus()})},this.chips=function(b,c){var f="";b.data("chips").forEach(function(a){f+=d.renderChip(a)}),f+='',b.html(f),d.setPlaceholder(b);var g=b.next("label");g.length&&(g.attr("for",c),b.data("chips").length&&g.addClass("active"));var h=a("#"+c);d.hasAutocomplete&&h.autocomplete({data:e.autocompleteData,limit:e.autocompleteLimit,onAutocomplete:function(a){d.addChip({tag:a},b),h.val(""),h.focus()}})},this.renderChip=function(a){if(a.tag){var b='
          '+a.tag;return a.image&&(b+=' '),b+='close',b+="
          "}},this.setPlaceholder=function(a){a.data("chips").length&&e.placeholder?a.find("input").prop("placeholder",e.placeholder):!a.data("chips").length&&e.secondaryPlaceholder&&a.find("input").prop("placeholder",e.secondaryPlaceholder)},this.isValid=function(a,b){for(var c=a.data("chips"),d=!1,e=0;e=e&&!a(this).hasClass("pinned")&&(c(a(this)),a(this).css("top",b.offset),a(this).addClass("pinned")),eb.bottom&&!a(this).hasClass("pin-bottom")&&(c(a(this)),a(this).addClass("pin-bottom"),a(this).css("top",b.bottom-g))})}var e=Materialize.guid(),f=a(this),g=a(this).offset().top;a(this).data("pushpin-id",e),d(f,a(window).scrollTop()),a(window).on("scroll."+e,function(){var c=a(window).scrollTop()+b.offset;d(f,c)})}))}}(jQuery),function(a){a(document).ready(function(){a.fn.reverse=[].reverse,a(document).on("mouseenter.fixedActionBtn",".fixed-action-btn:not(.click-to-toggle):not(.toolbar)",function(c){var d=a(this);b(d)}),a(document).on("mouseleave.fixedActionBtn",".fixed-action-btn:not(.click-to-toggle):not(.toolbar)",function(b){var d=a(this);c(d)}),a(document).on("click.fabClickToggle",".fixed-action-btn.click-to-toggle > a",function(d){var e=a(this),f=e.parent();f.hasClass("active")?c(f):b(f)}),a(document).on("click.fabToolbar",".fixed-action-btn.toolbar > a",function(b){var c=a(this),e=c.parent();d(e)})}),a.fn.extend({openFAB:function(){b(a(this))},closeFAB:function(){c(a(this))},openToolbar:function(){d(a(this))},closeToolbar:function(){e(a(this))}});var b=function(b){var c=b;if(c.hasClass("active")===!1){var d,e,f=c.hasClass("horizontal");f===!0?e=40:d=40,c.addClass("active"),c.find("ul .btn-floating").velocity({scaleY:".4",scaleX:".4",translateY:d+"px",translateX:e+"px"},{duration:0});var g=0;c.find("ul .btn-floating").reverse().each(function(){a(this).velocity({opacity:"1",scaleX:"1",scaleY:"1",translateY:"0",translateX:"0"},{duration:80,delay:g}),g+=40})}},c=function(a){var b,c,d=a,e=d.hasClass("horizontal");e===!0?c=40:b=40,d.removeClass("active");d.find("ul .btn-floating").velocity("stop",!0),d.find("ul .btn-floating").velocity({opacity:"0",scaleX:".4",scaleY:".4",translateY:b+"px",translateX:c+"px"},{duration:80})},d=function(b){if("true"!==b.attr("data-open")){var c,d,f,g=window.innerWidth,h=window.innerHeight,i=b[0].getBoundingClientRect(),j=b.find("> a").first(),k=b.find("> ul").first(),l=a('
          '),m=j.css("background-color");j.append(l),c=i.left-g/2+i.width/2,d=h-i.bottom,f=g/l.width(),b.attr("data-origin-bottom",i.bottom),b.attr("data-origin-left",i.left),b.attr("data-origin-width",i.width),b.addClass("active"),b.attr("data-open",!0),b.css({"text-align":"center",width:"100%",bottom:0,left:0,transform:"translateX("+c+"px)",transition:"none"}),j.css({transform:"translateY("+-d+"px)",transition:"none"}),l.css({"background-color":m}),setTimeout(function(){b.css({transform:"",transition:"transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s"}),j.css({overflow:"visible",transform:"",transition:"transform .2s"}),setTimeout(function(){b.css({overflow:"hidden","background-color":m}),l.css({transform:"scale("+f+")",transition:"transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)"}),k.find("> li > a").css({opacity:1}),a(window).on("scroll.fabToolbarClose",function(){e(b),a(window).off("scroll.fabToolbarClose"),a(document).off("click.fabToolbarClose")}),a(document).on("click.fabToolbarClose",function(c){a(c.target).closest(k).length||(e(b),a(window).off("scroll.fabToolbarClose"),a(document).off("click.fabToolbarClose"))})},100)},0)}},e=function(a){if("true"===a.attr("data-open")){var b,c,d,e=window.innerWidth,f=window.innerHeight,g=a.attr("data-origin-width"),h=a.attr("data-origin-bottom"),i=a.attr("data-origin-left"),j=a.find("> .btn-floating").first(),k=a.find("> ul").first(),l=a.find(".fab-backdrop"),m=j.css("background-color");b=i-e/2+g/2,c=f-h,d=e/l.width(),a.removeClass("active"),a.attr("data-open",!1),a.css({"background-color":"transparent",transition:"none"}),j.css({transition:"none"}),l.css({transform:"scale(0)","background-color":m}),k.find("> li > a").css({opacity:""}),setTimeout(function(){l.remove(),a.css({"text-align":"",width:"",bottom:"",left:"",overflow:"","background-color":"",transform:"translate3d("+-b+"px,0,0)"}),j.css({overflow:"",transform:"translate3d(0,"+c+"px,0)"}),setTimeout(function(){a.css({transform:"translate3d(0,0,0)",transition:"transform .2s"}),j.css({transform:"translate3d(0,0,0)",transition:"transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)"})},20)},200)}}}(jQuery),function(a){Materialize.fadeInImage=function(b){var c;if("string"==typeof b)c=a(b);else{if("object"!=typeof b)return;c=b}c.css({opacity:0}),a(c).velocity({opacity:1},{duration:650,queue:!1,easing:"easeOutSine"}),a(c).velocity({opacity:1},{duration:1300,queue:!1,easing:"swing",step:function(b,c){c.start=100;var d=b/100,e=150-(100-b)/1.75;e<100&&(e=100),b>=0&&a(this).css({"-webkit-filter":"grayscale("+d+")brightness("+e+"%)",filter:"grayscale("+d+")brightness("+e+"%)"})}})},Materialize.showStaggeredList=function(b){var c;if("string"==typeof b)c=a(b);else{if("object"!=typeof b)return;c=b}var d=0;c.find("li").velocity({translateX:"-100px"},{duration:0}),c.find("li").each(function(){a(this).velocity({opacity:"1",translateX:"0"},{duration:800,delay:d,easing:[60,10]}),d+=120})},a(document).ready(function(){var b=!1,c=!1;a(".dismissable").each(function(){a(this).hammer({prevent_default:!1}).bind("pan",function(d){if("touch"===d.gesture.pointerType){var e=a(this),f=d.gesture.direction,g=d.gesture.deltaX,h=d.gesture.velocityX;e.velocity({translateX:g},{duration:50,queue:!1,easing:"easeOutQuad"}),4===f&&(g>e.innerWidth()/2||h<-.75)&&(b=!0),2===f&&(g<-1*e.innerWidth()/2||h>.75)&&(c=!0)}}).bind("panend",function(d){if(Math.abs(d.gesture.deltaX)i+f&&d.done!==!0){if("function"==typeof g)g.call(this,h);else if("string"==typeof g){var j=new Function(g);j(h)}d.done=!0}}}},d=Materialize.throttle(function(){c()},a.throttle||100);b||(window.addEventListener("scroll",d),window.addEventListener("resize",d),b=!0),setTimeout(d,0)}}(jQuery),function(a){"function"==typeof define&&define.amd?define("picker",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,l){function m(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",y.component.nodes(t.open),v.box),v.wrap),v.frame),v.holder)}function n(){w.data(g,y).addClass(v.input).attr("tabindex",-1).val(w.data("value")?y.get("select",u.format):f.value),u.editable||w.on("focus."+t.id+" click."+t.id,function(a){a.preventDefault(),y.$root.eq(0).focus()}).on("keydown."+t.id,q),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+"_root"})}function o(){y.$root.on({keydown:q,focusin:function(a){y.$root.removeClass(v.focused),a.stopPropagation()},"mousedown click":function(b){var c=b.target;c!=y.$root.children()[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is("input, select, textarea, button, option")||(b.preventDefault(),y.$root.eq(0).focus()))}}).on({focus:function(){w.addClass(v.target)},blur:function(){w.removeClass(v.target)}}).on("focus.toOpen",r).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(v.navDisabled)||b.hasClass(v.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(y.$root[0],e))&&y.$root.eq(0).focus(),!d&&c.nav?y.set("highlight",y.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?y.set("select",c.pick):c.clear?y.clear().close(!0):c.close&&y.close(!0)}),e(y.$root[0],"hidden",!0)}function p(){var b;u.hiddenName===!0?(b=f.name,f.name=""):(b=["string"==typeof u.hiddenPrefix?u.hiddenPrefix:"","string"==typeof u.hiddenSuffix?u.hiddenSuffix:"_submit"],b=b[0]+f.name+b[1]),y._hidden=a('")[0],w.on("change."+t.id,function(){y._hidden.value=f.value?y.get("select",u.formatSubmit):""}),u.container?a(u.container).append(y._hidden):w.after(y._hidden)}function q(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(y.close(),!1):void((32==b||c||!t.open&&y.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?y.clear().close():y.open()))}function r(a){a.stopPropagation(),"focus"==a.type&&y.$root.addClass(v.focused),y.open()}if(!f)return b;var s=!1,t={id:f.id||"P"+Math.abs(~~(Math.random()*new Date))},u=i?a.extend(!0,{},i.defaults,l):l||{},v=a.extend({},b.klasses(),u.klass),w=a(f),x=function(){return this.start()},y=x.prototype={constructor:x,$node:w,start:function(){return t&&t.start?y:(t.methods={},t.start=!0,t.open=!1,t.type=f.type,f.autofocus=f==h(),f.readOnly=!u.editable,f.id=f.id||t.id,"text"!=f.type&&(f.type="text"),y.component=new i(y,u),y.$root=a(b._.node("div",m(),v.picker,'id="'+f.id+'_root" tabindex="0"')),o(),u.formatSubmit&&p(),n(),u.container?a(u.container).append(y.$root):w.after(y.$root),y.on({start:y.component.onStart,render:y.component.onRender,stop:y.component.onStop,open:y.component.onOpen,close:y.component.onClose,set:y.component.onSet}).on({start:u.onStart,render:u.onRender,stop:u.onStop,open:u.onOpen,close:u.onClose,set:u.onSet}),s=c(y.$root.children()[0]),f.autofocus&&y.open(),y.trigger("start").trigger("render"))},render:function(a){return a?y.$root.html(m()):y.$root.find("."+v.box).html(y.component.nodes(t.open)),y.trigger("render")},stop:function(){return t.start?(y.close(),y._hidden&&y._hidden.parentNode.removeChild(y._hidden),y.$root.remove(),w.removeClass(v.input).removeData(g),setTimeout(function(){w.off("."+t.id)},0),f.type=t.type,f.readOnly=!1,y.trigger("stop"),t.methods={},t.start=!1,y):y},open:function(c){return t.open?y:(w.addClass(v.active),e(f,"expanded",!0),setTimeout(function(){y.$root.addClass(v.opened),e(y.$root[0],"hidden",!1)},0),c!==!1&&(t.open=!0,s&&k.css("overflow","hidden").css("padding-right","+="+d()),y.$root.eq(0).focus(),j.on("click."+t.id+" focusin."+t.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&y.close(b===y.$root.children()[0])}).on("keydown."+t.id,function(c){var d=c.keyCode,e=y.component.key[d],f=c.target;27==d?y.close(!0):f!=y.$root[0]||!e&&13!=d?a.contains(y.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(y.component.key.go,y,[b._.trigger(e)]):y.$root.find("."+v.highlighted).hasClass(v.disabled)||y.set("select",y.component.item.highlight).close())})),y.trigger("open"))},close:function(a){return a&&(y.$root.off("focus.toOpen").eq(0).focus(),setTimeout(function(){y.$root.on("focus.toOpen",r)},0)),w.removeClass(v.active),e(f,"expanded",!1),setTimeout(function(){y.$root.removeClass(v.opened+" "+v.focused),e(y.$root[0],"hidden",!0)},0),t.open?(t.open=!1,s&&k.css("overflow","").css("padding-right","-="+d()),j.off("."+t.id),y.trigger("close")):y},clear:function(a){return y.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in y.component.item&&(void 0===f&&(f=null),y.component.set(e,f,d)),"select"!=e&&"clear"!=e||w.val("clear"==e?"":y.get(e,u.format)).trigger("change");y.render()}return d.muted?y:y.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=t[a])return t[a];if("valueSubmit"==a){if(y._hidden)return y._hidden.value;a="value"}if("value"==a)return f.value;if(a in y.component.item){if("string"==typeof c){var d=y.component.get(a);return d?b._.trigger(y.component.formats.toString,y.component,[c,d]):""}return y.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),t.methods[e]=t.methods[e]||[],t.methods[e].push(f)}return y},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('
          ').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d,f=b[d];c+=null==f?"":e+'="'+b[d]+'"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement);return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+""):""},lead:function(a){return(a<10?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b}),function(a){"function"==typeof define&&define.amd?define(["picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c, -c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?"string"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b="min"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=j.item.enable===-1,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;dc.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&l<0)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.monthk.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,c.item.enable===-1?!d:d||a.pickc.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,"").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:!(!b.isPlainObject(a)||!b.isPlainObject(c))&&(d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to))},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):!(!b.isPlainObject(a)||!b.isPlainObject(c))&&d.overlapRanges(a,c)},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(b.enable==-1?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;g=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},q=function(d){var e=c.showMonthsShort?c.monthsShort:c.monthsFull;return"short_months"==d&&(e=c.monthsShort),c.selectMonths&&void 0==d?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[e[a],0,"value="+a+(k.month==a?" selected":"")+(k.year==m.year&&an.month?" disabled":"")]}}),c.klass.selectMonth+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):"short_months"==d?null!=i?f.node("div",e[i.month]):f.node("div",e[k.month]):f.node("div",e[k.month],c.klass.month)},r=function(d){var e=k.year,g=c.selectYears===!0?5:~~(c.selectYears/2);if(g){var h=m.year,i=n.year,j=e-g,l=e+g;if(h>j&&(l+=h-j,j=h),ip?p:o,l=i}if(c.selectYears&&void 0==d)return f.node("select",f.group({min:j,max:l,i:1,node:"option",item:function(a){return[a,0,"value="+a+(e==a?" selected":"")]}}),c.klass.selectYear+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return"raw"==d?f.node("div",e):f.node("div",e,c.klass.year)};return createDayLabel=function(){return null!=i?f.node("div",i.date):f.node("div",h.date)},createWeekdayLabel=function(){var a;a=null!=i?i.day:h.day;var b=c.weekdaysFull[a];return b},f.node("div",f.node("div",createWeekdayLabel(),"picker__weekday-display")+f.node("div",q("short_months"),c.klass.month_display)+f.node("div",createDayLabel(),c.klass.day_display)+f.node("div",r("raw"),c.klass.year_display),c.klass.date_display)+f.node("div",f.node("div",(c.selectYears?q()+r():q()+r())+p()+p(1),c.klass.header)+f.node("table",o+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pickn.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node("div",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",label:o,selected:!(!d||b.$node.val()!==o)||null,activedescendant:!!e||null,disabled:!!g||null})),"",f.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+f.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0})),c.klass.calendar_container)+f.node("div",f.node("button",c.today,"btn-flat picker__today","type=button data-pick="+h.pick+(a&&!b.disabled(h)?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.clear,"btn-flat picker__clear","type=button data-clear=1"+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.close,"btn-flat picker__close","type=button data-close=true "+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysLetter:["S","M","T","W","T","F","S"],today:"Today",clear:"Clear",close:"Close",format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",date_display:a+"date-display",day_display:a+"day-display",month_display:a+"month-display",year_display:a+"year-display",calendar_container:a+"calendar-container",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)}),function(a){function b(){var b=+a(this).attr("data-length"),c=+a(this).val().length,d=c<=b;a(this).parent().find('span[class="character-counter"]').html(c+"/"+b),e(d,a(this))}function c(b){var c=b.parent().find('span[class="character-counter"]');c.length||(c=a("").addClass("character-counter").css("float","right").css("font-size","12px").css("height",1),b.parent().append(c))}function d(){a(this).parent().find('span[class="character-counter"]').html("")}function e(a,b){var c=b.hasClass("invalid");a&&c?b.removeClass("invalid"):a||c||(b.removeClass("valid"),b.addClass("invalid"))}a.fn.characterCounter=function(){return this.each(function(){var e=a(this),f=e.parent().find('span[class="character-counter"]');if(!f.length){var g=void 0!==e.attr("data-length");g&&(e.on("input",b),e.on("focus",b),e.on("blur",d),c(e))}})},a(document).ready(function(){a("input, textarea").characterCounter()})}(jQuery),function(a){var b={init:function(b){var c={duration:200,dist:-100,shift:0,padding:0,fullWidth:!1,indicators:!1,noWrap:!1,onCycleTo:null};return b=a.extend(c,b),this.each(function(){function c(){"undefined"!=typeof window.ontouchstart&&(J[0].addEventListener("touchstart",l),J[0].addEventListener("touchmove",m),J[0].addEventListener("touchend",n)),J[0].addEventListener("mousedown",l),J[0].addEventListener("mousemove",m),J[0].addEventListener("mouseup",n),J[0].addEventListener("mouseleave",n),J[0].addEventListener("click",j)}function d(a){return a.targetTouches&&a.targetTouches.length>=1?a.targetTouches[0].clientX:a.clientX}function e(a){return a.targetTouches&&a.targetTouches.length>=1?a.targetTouches[0].clientY:a.clientY}function f(a){return a>=v?a%v:a<0?f(v+a%v):a}function g(c){var d,e,g,h,i,j,k,l=s;if(r="number"==typeof c?c:r,s=Math.floor((r+u/2)/u),g=r-s*u,h=g<0?1:-1,i=-h*g*2/u,e=v>>1,b.fullWidth?k="translateX(0)":(k="translateX("+(J[0].clientWidth-p)/2+"px) ",k+="translateY("+(J[0].clientHeight-q)/2+"px)"),K){var m=s%v,n=I.find(".indicator-item.active");n.index()!==m&&(n.removeClass("active"),I.find(".indicator-item").eq(m).addClass("active"))}for((!b.noWrap||s>=0&&s0?1-i:1):(zTranslation=b.dist*(2*d-i*h),tweenedOpacity=1-.2*(2*d-i*h)),(!b.noWrap||s-d>=0)&&(j=o[f(s-d)],j.style[C]=k+" translateX("+(-b.shift+(-u*d-g)/2)+"px) translateZ("+zTranslation+"px)",j.style.zIndex=-d,j.style.opacity=tweenedOpacity,j.style.display="block");if((!b.noWrap||s>=0&&s2||c<-2?(g(A-c),requestAnimationFrame(i)):g(A))}function j(c){if(G)return c.preventDefault(),c.stopPropagation(),!1;if(!b.fullWidth){var d=a(c.target).closest(".carousel-item").index(),e=s%v-d;0!==e&&(c.preventDefault(),c.stopPropagation()),k(d)}}function k(a){var c=s%v-a;b.noWrap||(c<0?Math.abs(c+v)0&&Math.abs(c-v)0&&J.trigger("carouselPrev",[c])}function l(a){t=!0,G=!1,H=!1,w=d(a),x=e(a),B=z=0,D=r,E=Date.now(),clearInterval(F),F=setInterval(h,100)}function m(a){var b,c,f;if(t)if(b=d(a),y=e(a),c=w-b,f=Math.abs(x-y),f<30&&!H)(c>2||c<-2)&&(G=!0,w=b,g(r+c));else{if(G)return a.preventDefault(),a.stopPropagation(),!1;H=!0}if(G)return a.preventDefault(),a.stopPropagation(),!1}function n(a){if(t)return t=!1,clearInterval(F),A=r,(B>10||B<-10)&&(z=.9*B,A=r+z),A=Math.round(A/u)*u,b.noWrap&&(A>=u*(v-1)?A=u*(v-1):A<0&&(A=0)),z=A-r,E=Date.now(),requestAnimationFrame(i),G&&(a.preventDefault(),a.stopPropagation()),!1}var o,p,q,r,s,t,u,v,w,x,z,A,B,C,D,E,F,G,H,I=a('
            '),J=a(this),K=J.attr("data-indicators")||b.indicators;if(J.hasClass("initialized"))return a(this).trigger("carouselNext",[1e-6]),!0;if(b.fullWidth){b.dist=0;var L=J.find(".carousel-item img").first();L.length?imageHeight=L.on("load",function(){J.css("height",a(this).height())}):(imageHeight=J.find(".carousel-item").first().height(),J.css("height",imageHeight)),K&&J.find(".carousel-fixed-item").addClass("with-indicators")}J.addClass("initialized"),t=!1,r=A=0,o=[],p=J.find(".carousel-item").first().innerWidth(),q=J.find(".carousel-item").first().innerHeight(),u=2*p+b.padding,J.find(".carousel-item").each(function(b){if(o.push(a(this)[0]),K){var c=a('
          • ');0===b&&c.addClass("active"),c.click(function(b){b.stopPropagation();var c=a(this).index();k(c)}),I.append(c)}}),K&&J.append(I),v=o.length,C="transform",["webkit","Moz","O","ms"].every(function(a){var b=a+"Transform";return"undefined"==typeof document.body.style[b]||(C=b,!1)}),a(window).on("resize.carousel",function(){b.fullWidth?(p=J.find(".carousel-item").first().innerWidth(),q=J.find(".carousel-item").first().innerHeight(),u=2*p+b.padding,r=2*s*p,A=r):g()}),c(),g(r),a(this).on("carouselNext",function(a,b){void 0===b&&(b=1),A=u*Math.round(r/u)+u*b,r!==A&&(z=A-r,E=Date.now(),requestAnimationFrame(i))}),a(this).on("carouselPrev",function(a,b){void 0===b&&(b=1),A=u*Math.round(r/u)-u*b,r!==A&&(z=A-r,E=Date.now(),requestAnimationFrame(i))}),a(this).on("carouselSet",function(a,b){void 0===b&&(b=0),k(b)})})},next:function(b){a(this).trigger("carouselNext",[b])},prev:function(b){a(this).trigger("carouselPrev",[b])},set:function(b){a(this).trigger("carouselSet",[b])}};a.fn.carousel=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.carousel"):b.init.apply(this,arguments)}}(jQuery); \ No newline at end of file diff --git a/node_modules/materialize-css/dropdown.html b/node_modules/materialize-css/dropdown.html deleted file mode 100644 index ccd8417..0000000 --- a/node_modules/materialize-css/dropdown.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - - Dropdown - Materialize - - - - - - - - - - - - - - - - -
            - - - -
            -
            -
            -
            - -
            -

            Introduction

            -

            Add a dropdown list to any button. Make sure that the data-activates attribute matches the id in the <ul> tag.

            -

            You can add a divider with the <li class="divider"></li> tag.

            - Drop Me! - -
            
            -  <!-- Dropdown Trigger -->
            -  <a class='dropdown-button btn' href='#' data-activates='dropdown1'>Drop Me!</a>
            -
            -  <!-- Dropdown Structure -->
            -  <ul id='dropdown1' class='dropdown-content'>
            -    <li><a href="#!">one</a></li>
            -    <li><a href="#!">two</a></li>
            -    <li class="divider"></li>
            -    <li><a href="#!">three</a></li>
            -  </ul>
            -        
            -
            - -
            -

            Options

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            inDurationThe duration of the transition enter in milliseconds. Default: 300
            outDurationThe duration of the transition out in milliseconds. Default: 225
            constrainWidthIf true, constrainWidth to the size of the dropdown activator. Default: true
            hoverIf true, the dropdown will open on hover. Default: false
            gutterThis defines the spacing from the aligned edge. Default: 0
            belowOriginIf true, the dropdown will show below the activator. Default: false
            alignmentDefines the edge the menu is aligned to. Default: 'left'
            stopPropagationIf true, stops the event propagating from the dropdown origin click handler. Default: false
            -

            To use these inline you have to add them as data attributes. If you want more dynamic control, you can define them using the jQuery plugin below.

            -
            
            -  <a class='dropdown-button btn' data-beloworigin="true" href='#' data-activates='dropdown1'>Drop Me!</a>
            -        
            -
            - - - -
            -

            jQuery Plugin Initialization

            -

            Initialization for dropdowns is only necessary if you create them dynamically.

            -
            
            -  $('.dropdown-button').dropdown({
            -      inDuration: 300,
            -      outDuration: 225,
            -      constrainWidth: false, // Does not change width of dropdown to that of the activator
            -      hover: true, // Activate on hover
            -      gutter: 0, // Spacing from edge
            -      belowOrigin: false, // Displays dropdown below the button
            -      alignment: 'left' // Displays dropdown with edge aligned to the left of button
            -      stopPropagation: false // Stops event propagation
            -    }
            -  );
            -        
            - -

            - You can also open dropdowns programatically, the below code will make your modal open on document ready: -

            - -
            
            -  $('.dropdown-button').dropdown('open');
            -        
            - -

            - You can also close dropdowns programatically: -

            - -
            
            -  $('.dropdown-button').dropdown('close');
            -        
            -
            - - -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/extras/noUiSlider/nouislider.css b/node_modules/materialize-css/extras/noUiSlider/nouislider.css deleted file mode 100644 index c8f3177..0000000 --- a/node_modules/materialize-css/extras/noUiSlider/nouislider.css +++ /dev/null @@ -1,399 +0,0 @@ -/*! - * Materialize v0.98.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ - -/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */ - - -/* Functional styling; - * These styles are required for noUiSlider to function. - * You don't need to change these rules to apply your design. - */ -.noUi-target, -.noUi-target * { - -webkit-touch-callout: none; - -webkit-tap-highlight-color: rgba(0,0,0,0); - -webkit-user-select: none; - -ms-touch-action: none; - touch-action: none; - -ms-user-select: none; - -moz-user-select: none; - user-select: none; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-target { - position: relative; - direction: ltr; -} -.noUi-base { - width: 100%; - height: 100%; - position: relative; - z-index: 1; /* Fix 401 */ -} -.noUi-connect { - position: absolute; - right: 0; - top: 0; - left: 0; - bottom: 0; -} -.noUi-origin { - position: absolute; - height: 0; - width: 0; -} -.noUi-handle { - position: relative; - z-index: 1; -} -.noUi-state-tap .noUi-connect, -.noUi-state-tap .noUi-origin { - -webkit-transition: top 0.25s, right 0.25s, bottom 0.25s, left 0.25s; - transition: top 0.25s, right 0.25s, bottom 0.25s, left 0.25s; -} -.noUi-state-drag * { - cursor: inherit !important; -} - -/* Painting and performance; - * Browsers can paint handles in their own layer. - */ -.noUi-base, -.noUi-handle { - -webkit-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); -} - -/* Slider size and handle placement; - */ -.noUi-horizontal { - height: 18px; -} -.noUi-horizontal .noUi-handle { - width: 34px; - height: 28px; - left: -17px; - top: -6px; -} -.noUi-vertical { - width: 18px; -} -.noUi-vertical .noUi-handle { - width: 28px; - height: 34px; - left: -6px; - top: -17px; -} - -/* Styling; - */ -.noUi-target { - background: #cdcdcd; - border-radius: 4px; - border: 1px solid transparent; -} -.noUi-connect { - background: #26A69A; - -webkit-transition: background 450ms; - transition: background 450ms; -} - -/* Handles and cursors; - */ -.noUi-draggable { - cursor: ew-resize; -} -.noUi-vertical .noUi-draggable { - cursor: ns-resize; -} -.noUi-handle { - border: 1px solid #D9D9D9; - border-radius: 3px; - background: #FFF; - cursor: default; - box-shadow: inset 0 0 1px #FFF, - inset 0 1px 7px #EBEBEB, - 0 3px 6px -3px #BBB; -} -.noUi-active { - box-shadow: inset 0 0 1px #FFF, - inset 0 1px 7px #DDD, - 0 3px 6px -3px #BBB; -} - -/* Handle stripes - */ -.noUi-handle:before, -.noUi-handle:after { - content: ""; - display: block; - position: absolute; - height: 14px; - width: 1px; - background: #E8E7E6; - left: 14px; - top: 6px; -} -.noUi-handle:after { - left: 17px; -} -.noUi-vertical .noUi-handle:before, -.noUi-vertical .noUi-handle:after { - width: 14px; - height: 1px; - left: 6px; - top: 14px; -} -.noUi-vertical .noUi-handle:after { - top: 17px; -} - -/* Disabled state; - */ - -[disabled] .noUi-connect { - background: #B8B8B8; -} -[disabled].noUi-target, -[disabled].noUi-handle, -[disabled] .noUi-handle { - cursor: not-allowed; -} - - -/* Base; - * - */ -.noUi-pips, -.noUi-pips * { - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-pips { - position: absolute; - color: #999; -} - -/* Values; - * - */ -.noUi-value { - position: absolute; - text-align: center; -} -.noUi-value-sub { - color: #ccc; - font-size: 10px; -} - -/* Markings; - * - */ -.noUi-marker { - position: absolute; - background: #CCC; -} -.noUi-marker-sub { - background: #AAA; -} -.noUi-marker-large { - background: #AAA; -} - -/* Horizontal layout; - * - */ -.noUi-pips-horizontal { - padding: 10px 0; - height: 80px; - top: 100%; - left: 0; - width: 100%; -} -.noUi-value-horizontal { - -webkit-transform: translate3d(-50%,50%,0); - transform: translate3d(-50%,50%,0); -} - -.noUi-marker-horizontal.noUi-marker { - margin-left: -1px; - width: 2px; - height: 5px; -} -.noUi-marker-horizontal.noUi-marker-sub { - height: 10px; -} -.noUi-marker-horizontal.noUi-marker-large { - height: 15px; -} - -/* Vertical layout; - * - */ -.noUi-pips-vertical { - padding: 0 10px; - height: 100%; - top: 0; - left: 100%; -} -.noUi-value-vertical { - -webkit-transform: translate3d(0,50%,0); - transform: translate3d(0,50%,0); - padding-left: 25px; -} - -.noUi-marker-vertical.noUi-marker { - width: 5px; - height: 2px; - margin-top: -1px; -} -.noUi-marker-vertical.noUi-marker-sub { - width: 10px; -} -.noUi-marker-vertical.noUi-marker-large { - width: 15px; -} - -.noUi-tooltip { - display: block; - position: absolute; - border: 1px solid transparent; - border-radius: 3px; - background: #fff; - color: #000; - padding: 5px; - text-align: center; -} -.noUi-horizontal .noUi-tooltip { - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - left: 50%; - bottom: 120%; -} -.noUi-vertical .noUi-tooltip { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - top: 50%; - right: 120%; -} - -/* Materialize Styles */ -.noUi-target { - border: 0; - border-radius: 0; -} -.noUi-horizontal { - height: 3px; -} - -.noUi-vertical { - height: 100%; - width: 3px; -} - -.noUi-horizontal .noUi-handle, -.noUi-vertical .noUi-handle { - width: 15px; - height: 15px; - border-radius: 50%; - box-shadow: none; - background-color: #26A69A; - border: none; - left: -5px; - top: -6px; - transition: width .2s cubic-bezier(0.215, 0.610, 0.355, 1.000), - height .2s cubic-bezier(0.215, 0.610, 0.355, 1.000), - left .2s cubic-bezier(0.215, 0.610, 0.355, 1.000), - top .2s cubic-bezier(0.215, 0.610, 0.355, 1.000); -} -.noUi-handle:before { - content: none; -} -.noUi-handle:after { - content: none; -} - -.noUi-target .noUi-active.noUi-handle { - width: 3px; - height: 3px; - left: 0; - top: 0; -} - -.noUi-target.noUi-horizontal .noUi-tooltip { - position: absolute; - height: 30px; - width: 30px; - top: -17px; - left: -2px; - background-color: #26A69A; - border-radius: 50%; - transition: border-radius .25s cubic-bezier(0.215, 0.610, 0.355, 1.000), - transform .25s cubic-bezier(0.215, 0.610, 0.355, 1.000); - transform: scale(.5) rotate(-45deg); - transform-origin: 50% 100%; -} -.noUi-target.noUi-horizontal .noUi-active .noUi-tooltip { - border-radius: 15px 15px 15px 0; - transform: rotate(-45deg) translate(23px, -25px); -} - -.noUi-tooltip span { - width: 100%; - text-align: center; - color: #fff; - font-size: 12px; - opacity: 0; - position: absolute; - top: 6px; - left: -1px; - transition: opacity .25s cubic-bezier(0.215, 0.610, 0.355, 1.000); -} - -.noUi-horizontal .noUi-tooltip span { - transform: rotate(45deg); -} - -.noUi-vertical .noUi-tooltip span { - transform: rotate(135deg); -} - - -.noUi-target.noUi-vertical .noUi-tooltip { - position: absolute; - height: 30px; - width: 30px; - top: -17px; - left: -2px; - background-color: #26A69A; - border-radius: 50%; - transition: border-radius .25s cubic-bezier(0.215, 0.610, 0.355, 1.000), - transform .25s cubic-bezier(0.215, 0.610, 0.355, 1.000); - transform: scale(.5) rotate(-45deg); - transform-origin: 50% 100%; -} -.noUi-target.noUi-vertical .noUi-active .noUi-tooltip { - border-radius: 15px 15px 15px 0; - transform: rotate(-135deg) translate(35px, -10px); -} -.noUi-vertical .noUi-tooltip span { - width: 100%; - text-align: center; - color: #fff; - font-size: 12px; - transform: rotate(135deg); - opacity: 0; - position: absolute; - top: 7px; - left: -1px; - transition: opacity .25s cubic-bezier(0.215, 0.610, 0.355, 1.000); -} - -.noUi-horizontal .noUi-active .noUi-tooltip span, -.noUi-vertical .noUi-active .noUi-tooltip span { - opacity: 1; -} diff --git a/node_modules/materialize-css/extras/noUiSlider/nouislider.js b/node_modules/materialize-css/extras/noUiSlider/nouislider.js deleted file mode 100644 index b03f2bd..0000000 --- a/node_modules/materialize-css/extras/noUiSlider/nouislider.js +++ /dev/null @@ -1,2145 +0,0 @@ -/*! - * Materialize v0.98.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ - -// wNumb -(function(){function r(b){return b.split("").reverse().join("")}function s(b,f,c){if((b[f]||b[c])&&b[f]===b[c])throw Error(f);}function v(b,f,c,d,e,p,q,k,l,h,n,a){q=a;var m,g=n="";p&&(a=p(a));if("number"!==typeof a||!isFinite(a))return!1;b&&0===parseFloat(a.toFixed(b))&&(a=0);0>a&&(m=!0,a=Math.abs(a));b&&(p=Math.pow(10,b),a=(Math.round(a*p)/p).toFixed(b));a=a.toString();-1!==a.indexOf(".")&&(b=a.split("."),a=b[0],c&&(n=c+b[1]));f&&(a=r(a).match(/.{1,3}/g),a=r(a.join(r(f))));m&&k&&(g+=k);d&&(g+=d); - m&&l&&(g+=l);g=g+a+n;e&&(g+=e);h&&(g=h(g,q));return g}function w(b,f,c,d,e,h,q,k,l,r,n,a){var m;b="";n&&(a=n(a));if(!a||"string"!==typeof a)return!1;k&&a.substring(0,k.length)===k&&(a=a.replace(k,""),m=!0);d&&a.substring(0,d.length)===d&&(a=a.replace(d,""));l&&a.substring(0,l.length)===l&&(a=a.replace(l,""),m=!0);e&&a.slice(-1*e.length)===e&&(a=a.slice(0,-1*e.length));f&&(a=a.split(f).join(""));c&&(a=a.replace(c,"."));m&&(b+="-");b=Number((b+a).replace(/[^0-9\.\-.]/g,""));q&&(b=q(b));return"number"=== -typeof b&&isFinite(b)?b:!1}function x(b){var f,c,d,e={};for(f=0;fd&&(e[c]=d):"encoder"===c||"decoder"===c||"edit"===c||"undo"===c?"function"===typeof d&&(e[c]=d):"string"===typeof d&&(e[c]=d);s(e,"mark","thousand");s(e,"prefix","negative");s(e,"prefix","negativeBefore");return e}function u(b,f,c){var d,e=[];for(d=0;d 0) { - addClass(element, className); - setTimeout(function(){ - removeClass(element, className); - }, duration); - } - } - - // Limits a value to 0 - 100 - function limit ( a ) { - return Math.max(Math.min(a, 100), 0); - } - - // Wraps a variable as an array, if it isn't one yet. - // Note that an input array is returned by reference! - function asArray ( a ) { - return Array.isArray(a) ? a : [a]; - } - - // Counts decimals - function countDecimals ( numStr ) { - numStr = String(numStr); - var pieces = numStr.split("."); - return pieces.length > 1 ? pieces[1].length : 0; - } - - // http://youmightnotneedjquery.com/#add_class - function addClass ( el, className ) { - if ( el.classList ) { - el.classList.add(className); - } else { - el.className += ' ' + className; - } - } - - // http://youmightnotneedjquery.com/#remove_class - function removeClass ( el, className ) { - if ( el.classList ) { - el.classList.remove(className); - } else { - el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); - } - } - - // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/ - function hasClass ( el, className ) { - return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className); - } - - // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes - function getPageOffset ( ) { - - var supportPageOffset = window.pageXOffset !== undefined, - isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"), - x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft, - y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; - - return { - x: x, - y: y - }; - } - - // we provide a function to compute constants instead - // of accessing window.* as soon as the module needs it - // so that we do not compute anything if not needed - function getActions ( ) { - - // Determine the events to bind. IE11 implements pointerEvents without - // a prefix, which breaks compatibility with the IE10 implementation. - return window.navigator.pointerEnabled ? { - start: 'pointerdown', - move: 'pointermove', - end: 'pointerup' - } : window.navigator.msPointerEnabled ? { - start: 'MSPointerDown', - move: 'MSPointerMove', - end: 'MSPointerUp' - } : { - start: 'mousedown touchstart', - move: 'mousemove touchmove', - end: 'mouseup touchend' - }; - } - - -// Value calculation - - // Determine the size of a sub-range in relation to a full range. - function subRangeRatio ( pa, pb ) { - return (100 / (pb - pa)); - } - - // (percentage) How many percent is this value of this range? - function fromPercentage ( range, value ) { - return (value * 100) / ( range[1] - range[0] ); - } - - // (percentage) Where is this value on this range? - function toPercentage ( range, value ) { - return fromPercentage( range, range[0] < 0 ? - value + Math.abs(range[0]) : - value - range[0] ); - } - - // (value) How much is this percentage on this range? - function isPercentage ( range, value ) { - return ((value * ( range[1] - range[0] )) / 100) + range[0]; - } - - -// Range conversion - - function getJ ( value, arr ) { - - var j = 1; - - while ( value >= arr[j] ){ - j += 1; - } - - return j; - } - - // (percentage) Input a value, find where, on a scale of 0-100, it applies. - function toStepping ( xVal, xPct, value ) { - - if ( value >= xVal.slice(-1)[0] ){ - return 100; - } - - var j = getJ( value, xVal ), va, vb, pa, pb; - - va = xVal[j-1]; - vb = xVal[j]; - pa = xPct[j-1]; - pb = xPct[j]; - - return pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb)); - } - - // (value) Input a percentage, find where it is on the specified range. - function fromStepping ( xVal, xPct, value ) { - - // There is no range group that fits 100 - if ( value >= 100 ){ - return xVal.slice(-1)[0]; - } - - var j = getJ( value, xPct ), va, vb, pa, pb; - - va = xVal[j-1]; - vb = xVal[j]; - pa = xPct[j-1]; - pb = xPct[j]; - - return isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb)); - } - - // (percentage) Get the step that applies at a certain value. - function getStep ( xPct, xSteps, snap, value ) { - - if ( value === 100 ) { - return value; - } - - var j = getJ( value, xPct ), a, b; - - // If 'snap' is set, steps are used as fixed points on the slider. - if ( snap ) { - - a = xPct[j-1]; - b = xPct[j]; - - // Find the closest position, a or b. - if ((value - a) > ((b-a)/2)){ - return b; - } - - return a; - } - - if ( !xSteps[j-1] ){ - return value; - } - - return xPct[j-1] + closest( - value - xPct[j-1], - xSteps[j-1] - ); - } - - -// Entry parsing - - function handleEntryPoint ( index, value, that ) { - - var percentage; - - // Wrap numerical input in an array. - if ( typeof value === "number" ) { - value = [value]; - } - - // Reject any invalid input, by testing whether value is an array. - if ( Object.prototype.toString.call( value ) !== '[object Array]' ){ - throw new Error("noUiSlider: 'range' contains invalid value."); - } - - // Covert min/max syntax to 0 and 100. - if ( index === 'min' ) { - percentage = 0; - } else if ( index === 'max' ) { - percentage = 100; - } else { - percentage = parseFloat( index ); - } - - // Check for correct input. - if ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) { - throw new Error("noUiSlider: 'range' value isn't numeric."); - } - - // Store values. - that.xPct.push( percentage ); - that.xVal.push( value[0] ); - - // NaN will evaluate to false too, but to keep - // logging clear, set step explicitly. Make sure - // not to override the 'step' setting with false. - if ( !percentage ) { - if ( !isNaN( value[1] ) ) { - that.xSteps[0] = value[1]; - } - } else { - that.xSteps.push( isNaN(value[1]) ? false : value[1] ); - } - - that.xHighestCompleteStep.push(0); - } - - function handleStepPoint ( i, n, that ) { - - // Ignore 'false' stepping. - if ( !n ) { - return true; - } - - // Factor to range ratio - that.xSteps[i] = fromPercentage([ - that.xVal[i] - ,that.xVal[i+1] - ], n) / subRangeRatio ( - that.xPct[i], - that.xPct[i+1] ); - - var totalSteps = (that.xVal[i+1] - that.xVal[i]) / that.xNumSteps[i]; - var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1); - var step = that.xVal[i] + (that.xNumSteps[i] * highestStep); - - that.xHighestCompleteStep[i] = step; - } - - -// Interface - - // The interface to Spectrum handles all direction-based - // conversions, so the above values are unaware. - - function Spectrum ( entry, snap, direction, singleStep ) { - - this.xPct = []; - this.xVal = []; - this.xSteps = [ singleStep || false ]; - this.xNumSteps = [ false ]; - this.xHighestCompleteStep = []; - - this.snap = snap; - this.direction = direction; - - var index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ]; - - // Map the object keys to an array. - for ( index in entry ) { - if ( entry.hasOwnProperty(index) ) { - ordered.push([entry[index], index]); - } - } - - // Sort all entries by value (numeric sort). - if ( ordered.length && typeof ordered[0][0] === "object" ) { - ordered.sort(function(a, b) { return a[0][0] - b[0][0]; }); - } else { - ordered.sort(function(a, b) { return a[0] - b[0]; }); - } - - - // Convert all entries to subranges. - for ( index = 0; index < ordered.length; index++ ) { - handleEntryPoint(ordered[index][1], ordered[index][0], this); - } - - // Store the actual step values. - // xSteps is sorted in the same order as xPct and xVal. - this.xNumSteps = this.xSteps.slice(0); - - // Convert all numeric steps to the percentage of the subrange they represent. - for ( index = 0; index < this.xNumSteps.length; index++ ) { - handleStepPoint(index, this.xNumSteps[index], this); - } - } - - Spectrum.prototype.getMargin = function ( value ) { - - var step = this.xNumSteps[0]; - - if ( step && ((value / step) % 1) !== 0 ) { - throw new Error("noUiSlider: 'limit', 'margin' and 'padding' must be divisible by step."); - } - - return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false; - }; - - Spectrum.prototype.toStepping = function ( value ) { - - value = toStepping( this.xVal, this.xPct, value ); - - return value; - }; - - Spectrum.prototype.fromStepping = function ( value ) { - - return fromStepping( this.xVal, this.xPct, value ); - }; - - Spectrum.prototype.getStep = function ( value ) { - - value = getStep(this.xPct, this.xSteps, this.snap, value ); - - return value; - }; - - Spectrum.prototype.getNearbySteps = function ( value ) { - - var j = getJ(value, this.xPct); - - return { - stepBefore: { startValue: this.xVal[j-2], step: this.xNumSteps[j-2], highestStep: this.xHighestCompleteStep[j-2] }, - thisStep: { startValue: this.xVal[j-1], step: this.xNumSteps[j-1], highestStep: this.xHighestCompleteStep[j-1] }, - stepAfter: { startValue: this.xVal[j-0], step: this.xNumSteps[j-0], highestStep: this.xHighestCompleteStep[j-0] } - }; - }; - - Spectrum.prototype.countStepDecimals = function () { - var stepDecimals = this.xNumSteps.map(countDecimals); - return Math.max.apply(null, stepDecimals); - }; - - // Outside testing - Spectrum.prototype.convert = function ( value ) { - return this.getStep(this.toStepping(value)); - }; - - /* Every input option is tested and parsed. This'll prevent - endless validation in internal methods. These tests are - structured with an item for every option available. An - option can be marked as required by setting the 'r' flag. - The testing function is provided with three arguments: - - The provided value for the option; - - A reference to the options object; - - The name for the option; - - The testing function returns false when an error is detected, - or true when everything is OK. It can also modify the option - object, to make sure all values can be correctly looped elsewhere. */ - - var defaultFormatter = { 'to': function( value ){ - return value !== undefined && value.toFixed(2); - }, 'from': Number }; - - function testStep ( parsed, entry ) { - - if ( !isNumeric( entry ) ) { - throw new Error("noUiSlider: 'step' is not numeric."); - } - - // The step option can still be used to set stepping - // for linear sliders. Overwritten if set in 'range'. - parsed.singleStep = entry; - } - - function testRange ( parsed, entry ) { - - // Filter incorrect input. - if ( typeof entry !== 'object' || Array.isArray(entry) ) { - throw new Error("noUiSlider: 'range' is not an object."); - } - - // Catch missing start or end. - if ( entry.min === undefined || entry.max === undefined ) { - throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); - } - - // Catch equal start or end. - if ( entry.min === entry.max ) { - throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal."); - } - - parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep); - } - - function testStart ( parsed, entry ) { - - entry = asArray(entry); - - // Validate input. Values aren't tested, as the public .val method - // will always provide a valid location. - if ( !Array.isArray( entry ) || !entry.length ) { - throw new Error("noUiSlider: 'start' option is incorrect."); - } - - // Store the number of handles. - parsed.handles = entry.length; - - // When the slider is initialized, the .val method will - // be called with the start options. - parsed.start = entry; - } - - function testSnap ( parsed, entry ) { - - // Enforce 100% stepping within subranges. - parsed.snap = entry; - - if ( typeof entry !== 'boolean' ){ - throw new Error("noUiSlider: 'snap' option must be a boolean."); - } - } - - function testAnimate ( parsed, entry ) { - - // Enforce 100% stepping within subranges. - parsed.animate = entry; - - if ( typeof entry !== 'boolean' ){ - throw new Error("noUiSlider: 'animate' option must be a boolean."); - } - } - - function testAnimationDuration ( parsed, entry ) { - - parsed.animationDuration = entry; - - if ( typeof entry !== 'number' ){ - throw new Error("noUiSlider: 'animationDuration' option must be a number."); - } - } - - function testConnect ( parsed, entry ) { - - var connect = [false]; - var i; - - // Map legacy options - if ( entry === 'lower' ) { - entry = [true, false]; - } - - else if ( entry === 'upper' ) { - entry = [false, true]; - } - - // Handle boolean options - if ( entry === true || entry === false ) { - - for ( i = 1; i < parsed.handles; i++ ) { - connect.push(entry); - } - - connect.push(false); - } - - // Reject invalid input - else if ( !Array.isArray( entry ) || !entry.length || entry.length !== parsed.handles + 1 ) { - throw new Error("noUiSlider: 'connect' option doesn't match handle count."); - } - - else { - connect = entry; - } - - parsed.connect = connect; - } - - function testOrientation ( parsed, entry ) { - - // Set orientation to an a numerical value for easy - // array selection. - switch ( entry ){ - case 'horizontal': - parsed.ort = 0; - break; - case 'vertical': - parsed.ort = 1; - break; - default: - throw new Error("noUiSlider: 'orientation' option is invalid."); - } - } - - function testMargin ( parsed, entry ) { - - if ( !isNumeric(entry) ){ - throw new Error("noUiSlider: 'margin' option must be numeric."); - } - - // Issue #582 - if ( entry === 0 ) { - return; - } - - parsed.margin = parsed.spectrum.getMargin(entry); - - if ( !parsed.margin ) { - throw new Error("noUiSlider: 'margin' option is only supported on linear sliders."); - } - } - - function testLimit ( parsed, entry ) { - - if ( !isNumeric(entry) ){ - throw new Error("noUiSlider: 'limit' option must be numeric."); - } - - parsed.limit = parsed.spectrum.getMargin(entry); - - if ( !parsed.limit || parsed.handles < 2 ) { - throw new Error("noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles."); - } - } - - function testPadding ( parsed, entry ) { - - if ( !isNumeric(entry) ){ - throw new Error("noUiSlider: 'padding' option must be numeric."); - } - - if ( entry === 0 ) { - return; - } - - parsed.padding = parsed.spectrum.getMargin(entry); - - if ( !parsed.padding ) { - throw new Error("noUiSlider: 'padding' option is only supported on linear sliders."); - } - - if ( parsed.padding < 0 ) { - throw new Error("noUiSlider: 'padding' option must be a positive number."); - } - - if ( parsed.padding >= 50 ) { - throw new Error("noUiSlider: 'padding' option must be less than half the range."); - } - } - - function testDirection ( parsed, entry ) { - - // Set direction as a numerical value for easy parsing. - // Invert connection for RTL sliders, so that the proper - // handles get the connect/background classes. - switch ( entry ) { - case 'ltr': - parsed.dir = 0; - break; - case 'rtl': - parsed.dir = 1; - break; - default: - throw new Error("noUiSlider: 'direction' option was not recognized."); - } - } - - function testBehaviour ( parsed, entry ) { - - // Make sure the input is a string. - if ( typeof entry !== 'string' ) { - throw new Error("noUiSlider: 'behaviour' must be a string containing options."); - } - - // Check if the string contains any keywords. - // None are required. - var tap = entry.indexOf('tap') >= 0; - var drag = entry.indexOf('drag') >= 0; - var fixed = entry.indexOf('fixed') >= 0; - var snap = entry.indexOf('snap') >= 0; - var hover = entry.indexOf('hover') >= 0; - - if ( fixed ) { - - if ( parsed.handles !== 2 ) { - throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles"); - } - - // Use margin to enforce fixed state - testMargin(parsed, parsed.start[1] - parsed.start[0]); - } - - parsed.events = { - tap: tap || snap, - drag: drag, - fixed: fixed, - snap: snap, - hover: hover - }; - } - - function testTooltips ( parsed, entry ) { - - if ( entry === false ) { - return; - } - - else if ( entry === true ) { - - parsed.tooltips = []; - - for ( var i = 0; i < parsed.handles; i++ ) { - parsed.tooltips.push(true); - } - } - - else { - - parsed.tooltips = asArray(entry); - - if ( parsed.tooltips.length !== parsed.handles ) { - throw new Error("noUiSlider: must pass a formatter for all handles."); - } - - parsed.tooltips.forEach(function(formatter){ - if ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) { - throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'."); - } - }); - } - } - - function testFormat ( parsed, entry ) { - - parsed.format = entry; - - // Any object with a to and from method is supported. - if ( typeof entry.to === 'function' && typeof entry.from === 'function' ) { - return true; - } - - throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods."); - } - - function testCssPrefix ( parsed, entry ) { - - if ( entry !== undefined && typeof entry !== 'string' && entry !== false ) { - throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`."); - } - - parsed.cssPrefix = entry; - } - - function testCssClasses ( parsed, entry ) { - - if ( entry !== undefined && typeof entry !== 'object' ) { - throw new Error("noUiSlider: 'cssClasses' must be an object."); - } - - if ( typeof parsed.cssPrefix === 'string' ) { - parsed.cssClasses = {}; - - for ( var key in entry ) { - if ( !entry.hasOwnProperty(key) ) { continue; } - - parsed.cssClasses[key] = parsed.cssPrefix + entry[key]; - } - } else { - parsed.cssClasses = entry; - } - } - - function testUseRaf ( parsed, entry ) { - if ( entry === true || entry === false ) { - parsed.useRequestAnimationFrame = entry; - } else { - throw new Error("noUiSlider: 'useRequestAnimationFrame' option should be true (default) or false."); - } - } - - // Test all developer settings and parse to assumption-safe values. - function testOptions ( options ) { - - // To prove a fix for #537, freeze options here. - // If the object is modified, an error will be thrown. - // Object.freeze(options); - - var parsed = { - margin: 0, - limit: 0, - padding: 0, - animate: true, - animationDuration: 300, - format: defaultFormatter - }; - - // Tests are executed in the order they are presented here. - var tests = { - 'step': { r: false, t: testStep }, - 'start': { r: true, t: testStart }, - 'connect': { r: true, t: testConnect }, - 'direction': { r: true, t: testDirection }, - 'snap': { r: false, t: testSnap }, - 'animate': { r: false, t: testAnimate }, - 'animationDuration': { r: false, t: testAnimationDuration }, - 'range': { r: true, t: testRange }, - 'orientation': { r: false, t: testOrientation }, - 'margin': { r: false, t: testMargin }, - 'limit': { r: false, t: testLimit }, - 'padding': { r: false, t: testPadding }, - 'behaviour': { r: true, t: testBehaviour }, - 'format': { r: false, t: testFormat }, - 'tooltips': { r: false, t: testTooltips }, - 'cssPrefix': { r: false, t: testCssPrefix }, - 'cssClasses': { r: false, t: testCssClasses }, - 'useRequestAnimationFrame': { r: false, t: testUseRaf } - }; - - var defaults = { - 'connect': false, - 'direction': 'ltr', - 'behaviour': 'tap', - 'orientation': 'horizontal', - 'cssPrefix' : 'noUi-', - 'cssClasses': { - target: 'target', - base: 'base', - origin: 'origin', - handle: 'handle', - handleLower: 'handle-lower', - handleUpper: 'handle-upper', - horizontal: 'horizontal', - vertical: 'vertical', - background: 'background', - connect: 'connect', - ltr: 'ltr', - rtl: 'rtl', - draggable: 'draggable', - drag: 'state-drag', - tap: 'state-tap', - active: 'active', - tooltip: 'tooltip', - pips: 'pips', - pipsHorizontal: 'pips-horizontal', - pipsVertical: 'pips-vertical', - marker: 'marker', - markerHorizontal: 'marker-horizontal', - markerVertical: 'marker-vertical', - markerNormal: 'marker-normal', - markerLarge: 'marker-large', - markerSub: 'marker-sub', - value: 'value', - valueHorizontal: 'value-horizontal', - valueVertical: 'value-vertical', - valueNormal: 'value-normal', - valueLarge: 'value-large', - valueSub: 'value-sub' - }, - 'useRequestAnimationFrame': true - }; - - // Run all options through a testing mechanism to ensure correct - // input. It should be noted that options might get modified to - // be handled properly. E.g. wrapping integers in arrays. - Object.keys(tests).forEach(function( name ){ - - // If the option isn't set, but it is required, throw an error. - if ( options[name] === undefined && defaults[name] === undefined ) { - - if ( tests[name].r ) { - throw new Error("noUiSlider: '" + name + "' is required."); - } - - return true; - } - - tests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] ); - }); - - // Forward pips options - parsed.pips = options.pips; - - var styles = [['left', 'top'], ['right', 'bottom']]; - - // Pre-define the styles. - parsed.style = styles[parsed.dir][parsed.ort]; - parsed.styleOposite = styles[parsed.dir?0:1][parsed.ort]; - - return parsed; - } - - - function closure ( target, options, originalOptions ){ - - var actions = getActions( ); - - // All variables local to 'closure' are prefixed with 'scope_' - var scope_Target = target; - var scope_Locations = []; - var scope_Base; - var scope_Handles; - var scope_HandleNumbers = []; - var scope_ActiveHandle = false; - var scope_Connects; - var scope_Spectrum = options.spectrum; - var scope_Values = []; - var scope_Events = {}; - var scope_Self; - - - // Append a origin to the base - function addOrigin ( base, handleNumber ) { - - var origin = addNodeTo(base, options.cssClasses.origin); - var handle = addNodeTo(origin, options.cssClasses.handle); - - handle.setAttribute('data-handle', handleNumber); - - if ( handleNumber === 0 ) { - addClass(handle, options.cssClasses.handleLower); - } - - else if ( handleNumber === options.handles - 1 ) { - addClass(handle, options.cssClasses.handleUpper); - } - - return origin; - } - - // Insert nodes for connect elements - function addConnect ( base, add ) { - - if ( !add ) { - return false; - } - - return addNodeTo(base, options.cssClasses.connect); - } - - // Add handles to the slider base. - function addElements ( connectOptions, base ) { - - scope_Handles = []; - scope_Connects = []; - - scope_Connects.push(addConnect(base, connectOptions[0])); - - // [::::O====O====O====] - // connectOptions = [0, 1, 1, 1] - - for ( var i = 0; i < options.handles; i++ ) { - // Keep a list of all added handles. - scope_Handles.push(addOrigin(base, i)); - scope_HandleNumbers[i] = i; - scope_Connects.push(addConnect(base, connectOptions[i + 1])); - } - } - - // Initialize a single slider. - function addSlider ( target ) { - - // Apply classes and data to the target. - addClass(target, options.cssClasses.target); - - if ( options.dir === 0 ) { - addClass(target, options.cssClasses.ltr); - } else { - addClass(target, options.cssClasses.rtl); - } - - if ( options.ort === 0 ) { - addClass(target, options.cssClasses.horizontal); - } else { - addClass(target, options.cssClasses.vertical); - } - - scope_Base = addNodeTo(target, options.cssClasses.base); - } - - - function addTooltip ( handle, handleNumber ) { - - if ( !options.tooltips[handleNumber] ) { - return false; - } - - return addNodeTo(handle.firstChild, options.cssClasses.tooltip); - } - - // The tooltips option is a shorthand for using the 'update' event. - function tooltips ( ) { - - // Tooltips are added with options.tooltips in original order. - var tips = scope_Handles.map(addTooltip); - - bindEvent('update', function(values, handleNumber, unencoded) { - - if ( !tips[handleNumber] ) { - return; - } - - var formattedValue = values[handleNumber]; - - if ( options.tooltips[handleNumber] !== true ) { - formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]); - } - - tips[handleNumber].innerHTML = '' + formattedValue + ''; - }); - } - - - function getGroup ( mode, values, stepped ) { - - // Use the range. - if ( mode === 'range' || mode === 'steps' ) { - return scope_Spectrum.xVal; - } - - if ( mode === 'count' ) { - - // Divide 0 - 100 in 'count' parts. - var spread = ( 100 / (values-1) ), v, i = 0; - values = []; - - // List these parts and have them handled as 'positions'. - while ((v=i++*spread) <= 100 ) { - values.push(v); - } - - mode = 'positions'; - } - - if ( mode === 'positions' ) { - - // Map all percentages to on-range values. - return values.map(function( value ){ - return scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value ); - }); - } - - if ( mode === 'values' ) { - - // If the value must be stepped, it needs to be converted to a percentage first. - if ( stepped ) { - - return values.map(function( value ){ - - // Convert to percentage, apply step, return to value. - return scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) ); - }); - - } - - // Otherwise, we can simply use the values. - return values; - } - } - - function generateSpread ( density, mode, group ) { - - function safeIncrement(value, increment) { - // Avoid floating point variance by dropping the smallest decimal places. - return (value + increment).toFixed(7) / 1; - } - - var indexes = {}, - firstInRange = scope_Spectrum.xVal[0], - lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1], - ignoreFirst = false, - ignoreLast = false, - prevPct = 0; - - // Create a copy of the group, sort it and filter away all duplicates. - group = unique(group.slice().sort(function(a, b){ return a - b; })); - - // Make sure the range starts with the first element. - if ( group[0] !== firstInRange ) { - group.unshift(firstInRange); - ignoreFirst = true; - } - - // Likewise for the last one. - if ( group[group.length - 1] !== lastInRange ) { - group.push(lastInRange); - ignoreLast = true; - } - - group.forEach(function ( current, index ) { - - // Get the current step and the lower + upper positions. - var step, i, q, - low = current, - high = group[index+1], - newPct, pctDifference, pctPos, type, - steps, realSteps, stepsize; - - // When using 'steps' mode, use the provided steps. - // Otherwise, we'll step on to the next subrange. - if ( mode === 'steps' ) { - step = scope_Spectrum.xNumSteps[ index ]; - } - - // Default to a 'full' step. - if ( !step ) { - step = high-low; - } - - // Low can be 0, so test for false. If high is undefined, - // we are at the last subrange. Index 0 is already handled. - if ( low === false || high === undefined ) { - return; - } - - // Make sure step isn't 0, which would cause an infinite loop (#654) - step = Math.max(step, 0.0000001); - - // Find all steps in the subrange. - for ( i = low; i <= high; i = safeIncrement(i, step) ) { - - // Get the percentage value for the current step, - // calculate the size for the subrange. - newPct = scope_Spectrum.toStepping( i ); - pctDifference = newPct - prevPct; - - steps = pctDifference / density; - realSteps = Math.round(steps); - - // This ratio represents the ammount of percentage-space a point indicates. - // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided. - // Round the percentage offset to an even number, then divide by two - // to spread the offset on both sides of the range. - stepsize = pctDifference/realSteps; - - // Divide all points evenly, adding the correct number to this subrange. - // Run up to <= so that 100% gets a point, event if ignoreLast is set. - for ( q = 1; q <= realSteps; q += 1 ) { - - // The ratio between the rounded value and the actual size might be ~1% off. - // Correct the percentage offset by the number of points - // per subrange. density = 1 will result in 100 points on the - // full range, 2 for 50, 4 for 25, etc. - pctPos = prevPct + ( q * stepsize ); - indexes[pctPos.toFixed(5)] = ['x', 0]; - } - - // Determine the point type. - type = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 ); - - // Enforce the 'ignoreFirst' option by overwriting the type for 0. - if ( !index && ignoreFirst ) { - type = 0; - } - - if ( !(i === high && ignoreLast)) { - // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value. - indexes[newPct.toFixed(5)] = [i, type]; - } - - // Update the percentage count. - prevPct = newPct; - } - }); - - return indexes; - } - - function addMarking ( spread, filterFunc, formatter ) { - - var element = document.createElement('div'), - out = '', - valueSizeClasses = [ - options.cssClasses.valueNormal, - options.cssClasses.valueLarge, - options.cssClasses.valueSub - ], - markerSizeClasses = [ - options.cssClasses.markerNormal, - options.cssClasses.markerLarge, - options.cssClasses.markerSub - ], - valueOrientationClasses = [ - options.cssClasses.valueHorizontal, - options.cssClasses.valueVertical - ], - markerOrientationClasses = [ - options.cssClasses.markerHorizontal, - options.cssClasses.markerVertical - ]; - - addClass(element, options.cssClasses.pips); - addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical); - - function getClasses( type, source ){ - var a = source === options.cssClasses.value, - orientationClasses = a ? valueOrientationClasses : markerOrientationClasses, - sizeClasses = a ? valueSizeClasses : markerSizeClasses; - - return source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type]; - } - - function getTags( offset, source, values ) { - return 'class="' + getClasses(values[1], source) + '" style="' + options.style + ': ' + offset + '%"'; - } - - function addSpread ( offset, values ){ - - // Apply the filter function, if it is set. - values[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1]; - - // Add a marker for every point - out += '
            '; - - // Values are only appended for points marked '1' or '2'. - if ( values[1] ) { - out += '
            ' + formatter.to(values[0]) + '
            '; - } - } - - // Append all points. - Object.keys(spread).forEach(function(a){ - addSpread(a, spread[a]); - }); - - element.innerHTML = out; - - return element; - } - - function pips ( grid ) { - - var mode = grid.mode, - density = grid.density || 1, - filter = grid.filter || false, - values = grid.values || false, - stepped = grid.stepped || false, - group = getGroup( mode, values, stepped ), - spread = generateSpread( density, mode, group ), - format = grid.format || { - to: Math.round - }; - - return scope_Target.appendChild(addMarking( - spread, - filter, - format - )); - } - - - // Shorthand for base dimensions. - function baseSize ( ) { - var rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort]; - return options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]); - } - - // Handler for attaching events trough a proxy. - function attachEvent ( events, element, callback, data ) { - - // This function can be used to 'filter' events to the slider. - // element is a node, not a nodeList - - var method = function ( e ){ - - if ( scope_Target.hasAttribute('disabled') ) { - return false; - } - - // Stop if an active 'tap' transition is taking place. - if ( hasClass(scope_Target, options.cssClasses.tap) ) { - return false; - } - - e = fixEvent(e, data.pageOffset); - - // Handle reject of multitouch - if ( !e ) { - return false; - } - - // Ignore right or middle clicks on start #454 - if ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) { - return false; - } - - // Ignore right or middle clicks on start #454 - if ( data.hover && e.buttons ) { - return false; - } - - e.calcPoint = e.points[ options.ort ]; - - // Call the event handler with the event [ and additional data ]. - callback ( e, data ); - }; - - var methods = []; - - // Bind a closure on the target for every event type. - events.split(' ').forEach(function( eventName ){ - element.addEventListener(eventName, method, false); - methods.push([eventName, method]); - }); - - return methods; - } - - // Provide a clean event with standardized offset values. - function fixEvent ( e, pageOffset ) { - - // Prevent scrolling and panning on touch events, while - // attempting to slide. The tap event also depends on this. - e.preventDefault(); - - // Filter the event to register the type, which can be - // touch, mouse or pointer. Offset changes need to be - // made on an event specific basis. - var touch = e.type.indexOf('touch') === 0; - var mouse = e.type.indexOf('mouse') === 0; - var pointer = e.type.indexOf('pointer') === 0; - var x; - var y; - - // IE10 implemented pointer events with a prefix; - if ( e.type.indexOf('MSPointer') === 0 ) { - pointer = true; - } - - if ( touch ) { - - // Fix bug when user touches with two or more fingers on mobile devices. - // It's useful when you have two or more sliders on one page, - // that can be touched simultaneously. - // #649, #663, #668 - if ( e.touches.length > 1 ) { - return false; - } - - // noUiSlider supports one movement at a time, - // so we can select the first 'changedTouch'. - x = e.changedTouches[0].pageX; - y = e.changedTouches[0].pageY; - } - - pageOffset = pageOffset || getPageOffset(); - - if ( mouse || pointer ) { - x = e.clientX + pageOffset.x; - y = e.clientY + pageOffset.y; - } - - e.pageOffset = pageOffset; - e.points = [x, y]; - e.cursor = mouse || pointer; // Fix #435 - - return e; - } - - // Translate a coordinate in the document to a percentage on the slider - function calcPointToPercentage ( calcPoint ) { - var location = calcPoint - offset(scope_Base, options.ort); - var proposal = ( location * 100 ) / baseSize(); - return options.dir ? 100 - proposal : proposal; - } - - // Find handle closest to a certain percentage on the slider - function getClosestHandle ( proposal ) { - - var closest = 100; - var handleNumber = false; - - scope_Handles.forEach(function(handle, index){ - - // Disabled handles are ignored - if ( handle.hasAttribute('disabled') ) { - return; - } - - var pos = Math.abs(scope_Locations[index] - proposal); - - if ( pos < closest ) { - handleNumber = index; - closest = pos; - } - }); - - return handleNumber; - } - - // Moves handle(s) by a percentage - // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...]) - function moveHandles ( upward, proposal, locations, handleNumbers ) { - - var proposals = locations.slice(); - - var b = [!upward, upward]; - var f = [upward, !upward]; - - // Copy handleNumbers so we don't change the dataset - handleNumbers = handleNumbers.slice(); - - // Check to see which handle is 'leading'. - // If that one can't move the second can't either. - if ( upward ) { - handleNumbers.reverse(); - } - - // Step 1: get the maximum percentage that any of the handles can move - if ( handleNumbers.length > 1 ) { - - handleNumbers.forEach(function(handleNumber, o) { - - var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o]); - - // Stop if one of the handles can't move. - if ( to === false ) { - proposal = 0; - } else { - proposal = to - proposals[handleNumber]; - proposals[handleNumber] = to; - } - }); - } - - // If using one handle, check backward AND forward - else { - b = f = [true]; - } - - var state = false; - - // Step 2: Try to set the handles with the found percentage - handleNumbers.forEach(function(handleNumber, o) { - state = setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o]) || state; - }); - - // Step 3: If a handle moved, fire events - if ( state ) { - handleNumbers.forEach(function(handleNumber){ - fireEvent('update', handleNumber); - fireEvent('slide', handleNumber); - }); - } - } - - // External event handling - function fireEvent ( eventName, handleNumber, tap ) { - - Object.keys(scope_Events).forEach(function( targetEvent ) { - - var eventType = targetEvent.split('.')[0]; - - if ( eventName === eventType ) { - scope_Events[targetEvent].forEach(function( callback ) { - - callback.call( - // Use the slider public API as the scope ('this') - scope_Self, - // Return values as array, so arg_1[arg_2] is always valid. - scope_Values.map(options.format.to), - // Handle index, 0 or 1 - handleNumber, - // Unformatted slider values - scope_Values.slice(), - // Event is fired by tap, true or false - tap || false, - // Left offset of the handle, in relation to the slider - scope_Locations.slice() - ); - }); - } - }); - } - - - // Fire 'end' when a mouse or pen leaves the document. - function documentLeave ( event, data ) { - if ( event.type === "mouseout" && event.target.nodeName === "HTML" && event.relatedTarget === null ){ - eventEnd (event, data); - } - } - - // Handle movement on document for handle and range drag. - function eventMove ( event, data ) { - - // Fix #498 - // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty). - // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero - // IE9 has .buttons and .which zero on mousemove. - // Firefox breaks the spec MDN defines. - if ( navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) { - return eventEnd(event, data); - } - - // Check if we are moving up or down - var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint); - - // Convert the movement into a percentage of the slider width/height - var proposal = (movement * 100) / data.baseSize; - - moveHandles(movement > 0, proposal, data.locations, data.handleNumbers); - } - - // Unbind move events on document, call callbacks. - function eventEnd ( event, data ) { - - // The handle is no longer active, so remove the class. - if ( scope_ActiveHandle ) { - removeClass(scope_ActiveHandle, options.cssClasses.active); - scope_ActiveHandle = false; - } - - // Remove cursor styles and text-selection events bound to the body. - if ( event.cursor ) { - document.body.style.cursor = ''; - document.body.removeEventListener('selectstart', document.body.noUiListener); - } - - // Unbind the move and end events, which are added on 'start'. - document.documentElement.noUiListeners.forEach(function( c ) { - document.documentElement.removeEventListener(c[0], c[1]); - }); - - // Remove dragging class. - removeClass(scope_Target, options.cssClasses.drag); - - setZindex(); - - data.handleNumbers.forEach(function(handleNumber){ - fireEvent('set', handleNumber); - fireEvent('change', handleNumber); - fireEvent('end', handleNumber); - }); - } - - // Bind move events on document. - function eventStart ( event, data ) { - - if ( data.handleNumbers.length === 1 ) { - - var handle = scope_Handles[data.handleNumbers[0]]; - - // Ignore 'disabled' handles - if ( handle.hasAttribute('disabled') ) { - return false; - } - - // Mark the handle as 'active' so it can be styled. - scope_ActiveHandle = handle.children[0]; - addClass(scope_ActiveHandle, options.cssClasses.active); - } - - // Fix #551, where a handle gets selected instead of dragged. - event.preventDefault(); - - // A drag should never propagate up to the 'tap' event. - event.stopPropagation(); - - // Attach the move and end events. - var moveEvent = attachEvent(actions.move, document.documentElement, eventMove, { - startCalcPoint: event.calcPoint, - baseSize: baseSize(), - pageOffset: event.pageOffset, - handleNumbers: data.handleNumbers, - buttonsProperty: event.buttons, - locations: scope_Locations.slice() - }); - - var endEvent = attachEvent(actions.end, document.documentElement, eventEnd, { - handleNumbers: data.handleNumbers - }); - - var outEvent = attachEvent("mouseout", document.documentElement, documentLeave, { - handleNumbers: data.handleNumbers - }); - - document.documentElement.noUiListeners = moveEvent.concat(endEvent, outEvent); - - // Text selection isn't an issue on touch devices, - // so adding cursor styles can be skipped. - if ( event.cursor ) { - - // Prevent the 'I' cursor and extend the range-drag cursor. - document.body.style.cursor = getComputedStyle(event.target).cursor; - - // Mark the target with a dragging state. - if ( scope_Handles.length > 1 ) { - addClass(scope_Target, options.cssClasses.drag); - } - - var f = function(){ - return false; - }; - - document.body.noUiListener = f; - - // Prevent text selection when dragging the handles. - document.body.addEventListener('selectstart', f, false); - } - - data.handleNumbers.forEach(function(handleNumber){ - fireEvent('start', handleNumber); - }); - } - - // Move closest handle to tapped location. - function eventTap ( event ) { - - // The tap event shouldn't propagate up - event.stopPropagation(); - - var proposal = calcPointToPercentage(event.calcPoint); - var handleNumber = getClosestHandle(proposal); - - // Tackle the case that all handles are 'disabled'. - if ( handleNumber === false ) { - return false; - } - - // Flag the slider as it is now in a transitional state. - // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that. - if ( !options.events.snap ) { - addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration); - } - - setHandle(handleNumber, proposal, true, true); - - setZindex(); - - fireEvent('slide', handleNumber, true); - fireEvent('set', handleNumber, true); - fireEvent('change', handleNumber, true); - fireEvent('update', handleNumber, true); - - if ( options.events.snap ) { - eventStart(event, { handleNumbers: [handleNumber] }); - } - } - - // Fires a 'hover' event for a hovered mouse/pen position. - function eventHover ( event ) { - - var proposal = calcPointToPercentage(event.calcPoint); - - var to = scope_Spectrum.getStep(proposal); - var value = scope_Spectrum.fromStepping(to); - - Object.keys(scope_Events).forEach(function( targetEvent ) { - if ( 'hover' === targetEvent.split('.')[0] ) { - scope_Events[targetEvent].forEach(function( callback ) { - callback.call( scope_Self, value ); - }); - } - }); - } - - // Attach events to several slider parts. - function bindSliderEvents ( behaviour ) { - - // Attach the standard drag event to the handles. - if ( !behaviour.fixed ) { - - scope_Handles.forEach(function( handle, index ){ - - // These events are only bound to the visual handle - // element, not the 'real' origin element. - attachEvent ( actions.start, handle.children[0], eventStart, { - handleNumbers: [index] - }); - }); - } - - // Attach the tap event to the slider base. - if ( behaviour.tap ) { - attachEvent (actions.start, scope_Base, eventTap, {}); - } - - // Fire hover events - if ( behaviour.hover ) { - attachEvent (actions.move, scope_Base, eventHover, { hover: true }); - } - - // Make the range draggable. - if ( behaviour.drag ){ - - scope_Connects.forEach(function( connect, index ){ - - if ( connect === false || index === 0 || index === scope_Connects.length - 1 ) { - return; - } - - var handleBefore = scope_Handles[index - 1]; - var handleAfter = scope_Handles[index]; - var eventHolders = [connect]; - - addClass(connect, options.cssClasses.draggable); - - // When the range is fixed, the entire range can - // be dragged by the handles. The handle in the first - // origin will propagate the start event upward, - // but it needs to be bound manually on the other. - if ( behaviour.fixed ) { - eventHolders.push(handleBefore.children[0]); - eventHolders.push(handleAfter.children[0]); - } - - eventHolders.forEach(function( eventHolder ) { - attachEvent ( actions.start, eventHolder, eventStart, { - handles: [handleBefore, handleAfter], - handleNumbers: [index - 1, index] - }); - }); - }); - } - } - - - // Split out the handle positioning logic so the Move event can use it, too - function checkHandlePosition ( reference, handleNumber, to, lookBackward, lookForward ) { - - // For sliders with multiple handles, limit movement to the other handle. - // Apply the margin option by adding it to the handle positions. - if ( scope_Handles.length > 1 ) { - - if ( lookBackward && handleNumber > 0 ) { - to = Math.max(to, reference[handleNumber - 1] + options.margin); - } - - if ( lookForward && handleNumber < scope_Handles.length - 1 ) { - to = Math.min(to, reference[handleNumber + 1] - options.margin); - } - } - - // The limit option has the opposite effect, limiting handles to a - // maximum distance from another. Limit must be > 0, as otherwise - // handles would be unmoveable. - if ( scope_Handles.length > 1 && options.limit ) { - - if ( lookBackward && handleNumber > 0 ) { - to = Math.min(to, reference[handleNumber - 1] + options.limit); - } - - if ( lookForward && handleNumber < scope_Handles.length - 1 ) { - to = Math.max(to, reference[handleNumber + 1] - options.limit); - } - } - - // The padding option keeps the handles a certain distance from the - // edges of the slider. Padding must be > 0. - if ( options.padding ) { - - if ( handleNumber === 0 ) { - to = Math.max(to, options.padding); - } - - if ( handleNumber === scope_Handles.length - 1 ) { - to = Math.min(to, 100 - options.padding); - } - } - - to = scope_Spectrum.getStep(to); - - // Limit percentage to the 0 - 100 range - to = limit(to); - - // Return false if handle can't move - if ( to === reference[handleNumber] ) { - return false; - } - - return to; - } - - function toPct ( pct ) { - return pct + '%'; - } - - // Updates scope_Locations and scope_Values, updates visual state - function updateHandlePosition ( handleNumber, to ) { - - // Update locations. - scope_Locations[handleNumber] = to; - - // Convert the value to the slider stepping/range. - scope_Values[handleNumber] = scope_Spectrum.fromStepping(to); - - // Called synchronously or on the next animationFrame - var stateUpdate = function() { - scope_Handles[handleNumber].style[options.style] = toPct(to); - updateConnect(handleNumber); - updateConnect(handleNumber + 1); - }; - - // Set the handle to the new position. - // Use requestAnimationFrame for efficient painting. - // No significant effect in Chrome, Edge sees dramatic performace improvements. - // Option to disable is useful for unit tests, and single-step debugging. - if ( window.requestAnimationFrame && options.useRequestAnimationFrame ) { - window.requestAnimationFrame(stateUpdate); - } else { - stateUpdate(); - } - } - - function setZindex ( ) { - - scope_HandleNumbers.forEach(function(handleNumber){ - // Handles before the slider middle are stacked later = higher, - // Handles after the middle later is lower - // [[7] [8] .......... | .......... [5] [4] - var dir = (scope_Locations[handleNumber] > 50 ? -1 : 1); - var zIndex = 3 + (scope_Handles.length + (dir * handleNumber)); - scope_Handles[handleNumber].childNodes[0].style.zIndex = zIndex; - }); - } - - // Test suggested values and apply margin, step. - function setHandle ( handleNumber, to, lookBackward, lookForward ) { - - to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward); - - if ( to === false ) { - return false; - } - - updateHandlePosition(handleNumber, to); - - return true; - } - - // Updates style attribute for connect nodes - function updateConnect ( index ) { - - // Skip connects set to false - if ( !scope_Connects[index] ) { - return; - } - - var l = 0; - var h = 100; - - if ( index !== 0 ) { - l = scope_Locations[index - 1]; - } - - if ( index !== scope_Connects.length - 1 ) { - h = scope_Locations[index]; - } - - scope_Connects[index].style[options.style] = toPct(l); - scope_Connects[index].style[options.styleOposite] = toPct(100 - h); - } - - // ... - function setValue ( to, handleNumber ) { - - // Setting with null indicates an 'ignore'. - // Inputting 'false' is invalid. - if ( to === null || to === false ) { - return; - } - - // If a formatted number was passed, attemt to decode it. - if ( typeof to === 'number' ) { - to = String(to); - } - - to = options.format.from(to); - - // Request an update for all links if the value was invalid. - // Do so too if setting the handle fails. - if ( to !== false && !isNaN(to) ) { - setHandle(handleNumber, scope_Spectrum.toStepping(to), false, false); - } - } - - // Set the slider value. - function valueSet ( input, fireSetEvent ) { - - var values = asArray(input); - var isInit = scope_Locations[0] === undefined; - - // Event fires by default - fireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent); - - values.forEach(setValue); - - // Animation is optional. - // Make sure the initial values were set before using animated placement. - if ( options.animate && !isInit ) { - addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration); - } - - // Now that all base values are set, apply constraints - scope_HandleNumbers.forEach(function(handleNumber){ - setHandle(handleNumber, scope_Locations[handleNumber], true, false); - }); - - setZindex(); - - scope_HandleNumbers.forEach(function(handleNumber){ - - fireEvent('update', handleNumber); - - // Fire the event only for handles that received a new value, as per #579 - if ( values[handleNumber] !== null && fireSetEvent ) { - fireEvent('set', handleNumber); - } - }); - } - - // Reset slider to initial values - function valueReset ( fireSetEvent ) { - valueSet(options.start, fireSetEvent); - } - - // Get the slider value. - function valueGet ( ) { - - var values = scope_Values.map(options.format.to); - - // If only one handle is used, return a single value. - if ( values.length === 1 ){ - return values[0]; - } - - return values; - } - - // Removes classes from the root and empties it. - function destroy ( ) { - - for ( var key in options.cssClasses ) { - if ( !options.cssClasses.hasOwnProperty(key) ) { continue; } - removeClass(scope_Target, options.cssClasses[key]); - } - - while (scope_Target.firstChild) { - scope_Target.removeChild(scope_Target.firstChild); - } - - delete scope_Target.noUiSlider; - } - - // Get the current step size for the slider. - function getCurrentStep ( ) { - - // Check all locations, map them to their stepping point. - // Get the step point, then find it in the input list. - return scope_Locations.map(function( location, index ){ - - var nearbySteps = scope_Spectrum.getNearbySteps( location ); - var value = scope_Values[index]; - var increment = nearbySteps.thisStep.step; - var decrement = null; - - // If the next value in this step moves into the next step, - // the increment is the start of the next step - the current value - if ( increment !== false ) { - if ( value + increment > nearbySteps.stepAfter.startValue ) { - increment = nearbySteps.stepAfter.startValue - value; - } - } - - - // If the value is beyond the starting point - if ( value > nearbySteps.thisStep.startValue ) { - decrement = nearbySteps.thisStep.step; - } - - else if ( nearbySteps.stepBefore.step === false ) { - decrement = false; - } - - // If a handle is at the start of a step, it always steps back into the previous step first - else { - decrement = value - nearbySteps.stepBefore.highestStep; - } - - - // Now, if at the slider edges, there is not in/decrement - if ( location === 100 ) { - increment = null; - } - - else if ( location === 0 ) { - decrement = null; - } - - // As per #391, the comparison for the decrement step can have some rounding issues. - var stepDecimals = scope_Spectrum.countStepDecimals(); - - // Round per #391 - if ( increment !== null && increment !== false ) { - increment = Number(increment.toFixed(stepDecimals)); - } - - if ( decrement !== null && decrement !== false ) { - decrement = Number(decrement.toFixed(stepDecimals)); - } - - return [decrement, increment]; - }); - } - - // Attach an event to this slider, possibly including a namespace - function bindEvent ( namespacedEvent, callback ) { - scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || []; - scope_Events[namespacedEvent].push(callback); - - // If the event bound is 'update,' fire it immediately for all handles. - if ( namespacedEvent.split('.')[0] === 'update' ) { - scope_Handles.forEach(function(a, index){ - fireEvent('update', index); - }); - } - } - - // Undo attachment of event - function removeEvent ( namespacedEvent ) { - - var event = namespacedEvent && namespacedEvent.split('.')[0]; - var namespace = event && namespacedEvent.substring(event.length); - - Object.keys(scope_Events).forEach(function( bind ){ - - var tEvent = bind.split('.')[0], - tNamespace = bind.substring(tEvent.length); - - if ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) { - delete scope_Events[bind]; - } - }); - } - - // Updateable: margin, limit, padding, step, range, animate, snap - function updateOptions ( optionsToUpdate, fireSetEvent ) { - - // Spectrum is created using the range, snap, direction and step options. - // 'snap' and 'step' can be updated, 'direction' cannot, due to event binding. - // If 'snap' and 'step' are not passed, they should remain unchanged. - var v = valueGet(); - - var updateAble = ['margin', 'limit', 'padding', 'range', 'animate', 'snap', 'step', 'format']; - - // Only change options that we're actually passed to update. - updateAble.forEach(function(name){ - if ( optionsToUpdate[name] !== undefined ) { - originalOptions[name] = optionsToUpdate[name]; - } - }); - - var newOptions = testOptions(originalOptions); - - // Load new options into the slider state - updateAble.forEach(function(name){ - if ( optionsToUpdate[name] !== undefined ) { - options[name] = newOptions[name]; - } - }); - - // Save current spectrum direction as testOptions in testRange call - // doesn't rely on current direction - newOptions.spectrum.direction = scope_Spectrum.direction; - scope_Spectrum = newOptions.spectrum; - - // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677) - options.margin = newOptions.margin; - options.limit = newOptions.limit; - options.padding = newOptions.padding; - - // Invalidate the current positioning so valueSet forces an update. - scope_Locations = []; - valueSet(optionsToUpdate.start || v, fireSetEvent); - } - - // Throw an error if the slider was already initialized. - if ( scope_Target.noUiSlider ) { - throw new Error('Slider was already initialized.'); - } - - // Create the base element, initialise HTML and set classes. - // Add handles and connect elements. - addSlider(scope_Target); - addElements(options.connect, scope_Base); - - scope_Self = { - destroy: destroy, - steps: getCurrentStep, - on: bindEvent, - off: removeEvent, - get: valueGet, - set: valueSet, - reset: valueReset, - // Exposed for unit testing, don't use this in your application. - __moveHandles: function(a, b, c) { moveHandles(a, b, scope_Locations, c); }, - options: originalOptions, // Issue #600, #678 - updateOptions: updateOptions, - target: scope_Target, // Issue #597 - pips: pips // Issue #594 - }; - - // Attach user events. - bindSliderEvents(options.events); - - // Use the public value method to set the start values. - valueSet(options.start); - - if ( options.pips ) { - pips(options.pips); - } - - if ( options.tooltips ) { - tooltips(); - } - - return scope_Self; - - } - - - // Run the standard initializer - function initialize ( target, originalOptions ) { - - if ( !target.nodeName ) { - throw new Error('noUiSlider.create requires a single element.'); - } - - if (originalOptions.tooltips === undefined) { - originalOptions.tooltips = true; - } - - // Test the options and create the slider environment; - var options = testOptions( originalOptions, target ); - var api = closure( target, options, originalOptions ); - - target.noUiSlider = api; - - return api; - } - - // Use an object instead of a function for future expansibility; - return { - create: initialize - }; - -})); \ No newline at end of file diff --git a/node_modules/materialize-css/extras/noUiSlider/nouislider.min.js b/node_modules/materialize-css/extras/noUiSlider/nouislider.min.js deleted file mode 100644 index b48574c..0000000 --- a/node_modules/materialize-css/extras/noUiSlider/nouislider.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){function a(a){return a.split("").reverse().join("")}function b(a,b,c){if((a[b]||a[c])&&a[b]===a[c])throw Error(b)}function c(b,c,d,e,f,g,h,i,j,k,l,m){h=m;var n,o=l="";return g&&(m=g(m)),!("number"!=typeof m||!isFinite(m))&&(b&&0===parseFloat(m.toFixed(b))&&(m=0),0>m&&(n=!0,m=Math.abs(m)),b&&(g=Math.pow(10,b),m=(Math.round(m*g)/g).toFixed(b)),m=m.toString(),-1!==m.indexOf(".")&&(b=m.split("."),m=b[0],d&&(l=d+b[1])),c&&(m=a(m).match(/.{1,3}/g),m=a(m.join(a(c)))),n&&i&&(o+=i),e&&(o+=e),n&&j&&(o+=j),o=o+m+l,f&&(o+=f),k&&(o=k(o,h)),o)}function d(a,b,c,d,e,f,g,h,i,j,k,l){var m;return a="",k&&(l=k(l)),!(!l||"string"!=typeof l)&&(h&&l.substring(0,h.length)===h&&(l=l.replace(h,""),m=!0),d&&l.substring(0,d.length)===d&&(l=l.replace(d,"")),i&&l.substring(0,i.length)===i&&(l=l.replace(i,""),m=!0),e&&l.slice(-1*e.length)===e&&(l=l.slice(0,-1*e.length)),b&&(l=l.split(b).join("")),c&&(l=l.replace(c,".")),m&&(a+="-"),a=Number((a+l).replace(/[^0-9\.\-.]/g,"")),g&&(a=g(a)),!("number"!=typeof a||!isFinite(a))&&a)}function e(a){var c,d,e,f={};for(c=0;ce&&(f[d]=e):"encoder"===d||"decoder"===d||"edit"===d||"undo"===d?"function"==typeof e&&(f[d]=e):"string"==typeof e&&(f[d]=e);return b(f,"mark","thousand"),b(f,"prefix","negative"),b(f,"prefix","negativeBefore"),f}function f(a,b,c){var d,e=[];for(d=0;d0&&(j(a,b),setTimeout(function(){k(a,b)},c))}function g(a){return Math.max(Math.min(a,100),0)}function h(a){return Array.isArray(a)?a:[a]}function i(a){a=String(a);var b=a.split(".");return b.length>1?b[1].length:0}function j(a,b){a.classList?a.classList.add(b):a.className+=" "+b}function k(a,b){a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("(^|\\b)"+b.split(" ").join("|")+"(\\b|$)","gi")," ")}function l(a,b){return a.classList?a.classList.contains(b):new RegExp("\\b"+b+"\\b").test(a.className)}function m(){var a=void 0!==window.pageXOffset,b="CSS1Compat"===(document.compatMode||""),c=a?window.pageXOffset:b?document.documentElement.scrollLeft:document.body.scrollLeft,d=a?window.pageYOffset:b?document.documentElement.scrollTop:document.body.scrollTop;return{x:c,y:d}}function n(){return window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"}}function o(a,b){return 100/(b-a)}function p(a,b){return 100*b/(a[1]-a[0])}function q(a,b){return p(a,a[0]<0?b+Math.abs(a[0]):b-a[0])}function r(a,b){return b*(a[1]-a[0])/100+a[0]}function s(a,b){for(var c=1;a>=b[c];)c+=1;return c}function t(a,b,c){if(c>=a.slice(-1)[0])return 100;var d,e,f,g,h=s(c,a);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],f+q([d,e],c)/o(f,g)}function u(a,b,c){if(c>=100)return a.slice(-1)[0];var d,e,f,g,h=s(c,b);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],r([d,e],(c-f)*o(f,g))}function v(a,b,d,e){if(100===e)return e;var f,g,h=s(e,a);return d?(f=a[h-1],g=a[h],e-f>(g-f)/2?g:f):b[h-1]?a[h-1]+c(e-a[h-1],b[h-1]):e}function w(a,b,c){var d;if("number"==typeof b&&(b=[b]),"[object Array]"!==Object.prototype.toString.call(b))throw new Error("noUiSlider: 'range' contains invalid value.");if(d="min"===a?0:"max"===a?100:parseFloat(a),!e(d)||!e(b[0]))throw new Error("noUiSlider: 'range' value isn't numeric.");c.xPct.push(d),c.xVal.push(b[0]),d?c.xSteps.push(!isNaN(b[1])&&b[1]):isNaN(b[1])||(c.xSteps[0]=b[1]),c.xHighestCompleteStep.push(0)}function x(a,b,c){if(!b)return!0;c.xSteps[a]=p([c.xVal[a],c.xVal[a+1]],b)/o(c.xPct[a],c.xPct[a+1]);var d=(c.xVal[a+1]-c.xVal[a])/c.xNumSteps[a],e=Math.ceil(Number(d.toFixed(3))-1),f=c.xVal[a]+c.xNumSteps[a]*e;c.xHighestCompleteStep[a]=f}function y(a,b,c,d){this.xPct=[],this.xVal=[],this.xSteps=[d||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=b,this.direction=c;var e,f=[];for(e in a)a.hasOwnProperty(e)&&f.push([a[e],e]);for(f.length&&"object"==typeof f[0][0]?f.sort(function(a,b){return a[0][0]-b[0][0]}):f.sort(function(a,b){return a[0]-b[0]}),e=0;e=50)throw new Error("noUiSlider: 'padding' option must be less than half the range.")}}function K(a,b){switch(b){case"ltr":a.dir=0;break;case"rtl":a.dir=1;break;default:throw new Error("noUiSlider: 'direction' option was not recognized.")}}function L(a,b){if("string"!=typeof b)throw new Error("noUiSlider: 'behaviour' must be a string containing options.");var c=b.indexOf("tap")>=0,d=b.indexOf("drag")>=0,e=b.indexOf("fixed")>=0,f=b.indexOf("snap")>=0,g=b.indexOf("hover")>=0;if(e){if(2!==a.handles)throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles");H(a,a.start[1]-a.start[0])}a.events={tap:c||f,drag:d,fixed:e,snap:f,hover:g}}function M(a,b){if(b!==!1)if(b===!0){a.tooltips=[];for(var c=0;c"+f+"
            "}})}function u(a,b,c){if("range"===a||"steps"===a)return ja.xVal;if("count"===a){var d,e=100/(b-1),f=0;for(b=[];(d=f++*e)<=100;)b.push(d);a="positions"}return"positions"===a?b.map(function(a){return ja.fromStepping(c?ja.getStep(a):a)}):"values"===a?c?b.map(function(a){return ja.fromStepping(ja.getStep(ja.toStepping(a)))}):b:void 0}function v(a,c,d){function e(a,b){return(a+b).toFixed(7)/1}var f={},g=ja.xVal[0],h=ja.xVal[ja.xVal.length-1],i=!1,j=!1,k=0;return d=b(d.slice().sort(function(a,b){return a-b})),d[0]!==g&&(d.unshift(g),i=!0),d[d.length-1]!==h&&(d.push(h),j=!0),d.forEach(function(b,g){var h,l,m,n,o,p,q,r,s,t,u=b,v=d[g+1];if("steps"===c&&(h=ja.xNumSteps[g]),h||(h=v-u),u!==!1&&void 0!==v)for(h=Math.max(h,1e-7),l=u;l<=v;l=e(l,h)){for(n=ja.toStepping(l),o=n-k,r=o/a,s=Math.round(r),t=o/s,m=1;m<=s;m+=1)p=k+m*t,f[p.toFixed(5)]=["x",0];q=d.indexOf(l)>-1?1:"steps"===c?2:0,!g&&i&&(q=0),l===v&&j||(f[n.toFixed(5)]=[l,q]),k=n}}),f}function w(a,b,c){function d(a,b){var c=b===e.cssClasses.value,d=c?m:n,f=c?k:l;return b+" "+d[e.ort]+" "+f[a]}function f(a,b,c){return'class="'+d(c[1],b)+'" style="'+e.style+": "+a+'%"'}function g(a,d){d[1]=d[1]&&b?b(d[0],d[1]):d[1],i+="
            ",d[1]&&(i+="
            "+c.to(d[0])+"
            ")}var h=document.createElement("div"),i="",k=[e.cssClasses.valueNormal,e.cssClasses.valueLarge,e.cssClasses.valueSub],l=[e.cssClasses.markerNormal,e.cssClasses.markerLarge,e.cssClasses.markerSub],m=[e.cssClasses.valueHorizontal,e.cssClasses.valueVertical],n=[e.cssClasses.markerHorizontal,e.cssClasses.markerVertical];return j(h,e.cssClasses.pips),j(h,0===e.ort?e.cssClasses.pipsHorizontal:e.cssClasses.pipsVertical),Object.keys(a).forEach(function(b){g(b,a[b])}),h.innerHTML=i,h}function x(a){var b=a.mode,c=a.density||1,d=a.filter||!1,e=a.values||!1,f=a.stepped||!1,g=u(b,e,f),h=v(c,b,g),i=a.format||{to:Math.round};return fa.appendChild(w(h,d,i))}function y(){var a=aa.getBoundingClientRect(),b="offset"+["Width","Height"][e.ort];return 0===e.ort?a.width||aa[b]:a.height||aa[b]}function z(a,b,c,d){var f=function(b){return!fa.hasAttribute("disabled")&&(!l(fa,e.cssClasses.tap)&&(!!(b=A(b,d.pageOffset))&&(!(a===ea.start&&void 0!==b.buttons&&b.buttons>1)&&((!d.hover||!b.buttons)&&(b.calcPoint=b.points[e.ort],void c(b,d))))))},g=[];return a.split(" ").forEach(function(a){b.addEventListener(a,f,!1),g.push([a,f])}),g}function A(a,b){a.preventDefault();var c,d,e=0===a.type.indexOf("touch"),f=0===a.type.indexOf("mouse"),g=0===a.type.indexOf("pointer");if(0===a.type.indexOf("MSPointer")&&(g=!0),e){if(a.touches.length>1)return!1;c=a.changedTouches[0].pageX,d=a.changedTouches[0].pageY}return b=b||m(),(f||g)&&(c=a.clientX+b.x,d=a.clientY+b.y),a.pageOffset=b,a.points=[c,d],a.cursor=f||g,a}function B(a){var b=a-d(aa,e.ort),c=100*b/y();return e.dir?100-c:c}function C(a){var b=100,c=!1;return ba.forEach(function(d,e){if(!d.hasAttribute("disabled")){var f=Math.abs(ga[e]-a);f1?d.forEach(function(a,c){var d=M(e,a,e[a]+b,f[c],g[c]);d===!1?b=0:(b=d-e[a],e[a]=d)}):f=g=[!0];var h=!1;d.forEach(function(a,d){h=Q(a,c[a]+b,f[d],g[d])||h}),h&&d.forEach(function(a){E("update",a),E("slide",a)})}function E(a,b,c){Object.keys(la).forEach(function(d){var f=d.split(".")[0];a===f&&la[d].forEach(function(a){a.call(da,ka.map(e.format.to),b,ka.slice(),c||!1,ga.slice())})})}function F(a,b){"mouseout"===a.type&&"HTML"===a.target.nodeName&&null===a.relatedTarget&&H(a,b)}function G(a,b){if(navigator.appVersion.indexOf("MSIE 9")===-1&&0===a.buttons&&0!==b.buttonsProperty)return H(a,b);var c=(e.dir?-1:1)*(a.calcPoint-b.startCalcPoint),d=100*c/b.baseSize;D(c>0,d,b.locations,b.handleNumbers)}function H(a,b){ia&&(k(ia,e.cssClasses.active),ia=!1),a.cursor&&(document.body.style.cursor="",document.body.removeEventListener("selectstart",document.body.noUiListener)),document.documentElement.noUiListeners.forEach(function(a){document.documentElement.removeEventListener(a[0],a[1])}),k(fa,e.cssClasses.drag),P(),b.handleNumbers.forEach(function(a){E("set",a),E("change",a),E("end",a)})}function I(a,b){if(1===b.handleNumbers.length){var c=ba[b.handleNumbers[0]];if(c.hasAttribute("disabled"))return!1;ia=c.children[0],j(ia,e.cssClasses.active)}a.preventDefault(),a.stopPropagation();var d=z(ea.move,document.documentElement,G,{startCalcPoint:a.calcPoint,baseSize:y(),pageOffset:a.pageOffset,handleNumbers:b.handleNumbers,buttonsProperty:a.buttons,locations:ga.slice()}),f=z(ea.end,document.documentElement,H,{handleNumbers:b.handleNumbers}),g=z("mouseout",document.documentElement,F,{handleNumbers:b.handleNumbers});if(document.documentElement.noUiListeners=d.concat(f,g),a.cursor){document.body.style.cursor=getComputedStyle(a.target).cursor,ba.length>1&&j(fa,e.cssClasses.drag);var h=function(){return!1};document.body.noUiListener=h,document.body.addEventListener("selectstart",h,!1)}b.handleNumbers.forEach(function(a){E("start",a)})}function J(a){a.stopPropagation();var b=B(a.calcPoint),c=C(b);return c!==!1&&(e.events.snap||f(fa,e.cssClasses.tap,e.animationDuration),Q(c,b,!0,!0),P(),E("slide",c,!0),E("set",c,!0),E("change",c,!0),E("update",c,!0),void(e.events.snap&&I(a,{handleNumbers:[c]})))}function K(a){var b=B(a.calcPoint),c=ja.getStep(b),d=ja.fromStepping(c);Object.keys(la).forEach(function(a){"hover"===a.split(".")[0]&&la[a].forEach(function(a){a.call(da,d)})})}function L(a){a.fixed||ba.forEach(function(a,b){z(ea.start,a.children[0],I,{handleNumbers:[b]})}),a.tap&&z(ea.start,aa,J,{}),a.hover&&z(ea.move,aa,K,{hover:!0}),a.drag&&ca.forEach(function(b,c){if(b!==!1&&0!==c&&c!==ca.length-1){var d=ba[c-1],f=ba[c],g=[b];j(b,e.cssClasses.draggable),a.fixed&&(g.push(d.children[0]),g.push(f.children[0])),g.forEach(function(a){z(ea.start,a,I,{handles:[d,f],handleNumbers:[c-1,c]})})}})}function M(a,b,c,d,f){return ba.length>1&&(d&&b>0&&(c=Math.max(c,a[b-1]+e.margin)),f&&b1&&e.limit&&(d&&b>0&&(c=Math.min(c,a[b-1]+e.limit)),f&&b50?-1:1,c=3+(ba.length+b*a);ba[a].childNodes[0].style.zIndex=c})}function Q(a,b,c,d){return b=M(ga,a,b,c,d),b!==!1&&(O(a,b),!0)}function S(a){if(ca[a]){var b=0,c=100;0!==a&&(b=ga[a-1]),a!==ca.length-1&&(c=ga[a]),ca[a].style[e.style]=N(b),ca[a].style[e.styleOposite]=N(100-c)}}function T(a,b){null!==a&&a!==!1&&("number"==typeof a&&(a=String(a)),a=e.format.from(a),a===!1||isNaN(a)||Q(b,ja.toStepping(a),!1,!1))}function U(a,b){var c=h(a),d=void 0===ga[0];b=void 0===b||!!b,c.forEach(T),e.animate&&!d&&f(fa,e.cssClasses.tap,e.animationDuration),ha.forEach(function(a){Q(a,ga[a],!0,!1)}),P(),ha.forEach(function(a){E("update",a),null!==c[a]&&b&&E("set",a)})}function V(a){U(e.start,a)}function W(){var a=ka.map(e.format.to);return 1===a.length?a[0]:a}function X(){for(var a in e.cssClasses)e.cssClasses.hasOwnProperty(a)&&k(fa,e.cssClasses[a]);for(;fa.firstChild;)fa.removeChild(fa.firstChild);delete fa.noUiSlider}function Y(){return ga.map(function(a,b){var c=ja.getNearbySteps(a),d=ka[b],e=c.thisStep.step,f=null;e!==!1&&d+e>c.stepAfter.startValue&&(e=c.stepAfter.startValue-d),f=d>c.thisStep.startValue?c.thisStep.step:c.stepBefore.step!==!1&&d-c.stepBefore.highestStep,100===a?e=null:0===a&&(f=null);var g=ja.countStepDecimals();return null!==e&&e!==!1&&(e=Number(e.toFixed(g))),null!==f&&f!==!1&&(f=Number(f.toFixed(g))),[f,e]})}function Z(a,b){la[a]=la[a]||[],la[a].push(b),"update"===a.split(".")[0]&&ba.forEach(function(a,b){E("update",b)})}function $(a){var b=a&&a.split(".")[0],c=b&&a.substring(b.length);Object.keys(la).forEach(function(a){var d=a.split(".")[0],e=a.substring(d.length);b&&b!==d||c&&c!==e||delete la[a]})}function _(a,b){var c=W(),d=["margin","limit","padding","range","animate","snap","step","format"];d.forEach(function(b){void 0!==a[b]&&(i[b]=a[b])});var f=R(i);d.forEach(function(b){void 0!==a[b]&&(e[b]=f[b])}),f.spectrum.direction=ja.direction,ja=f.spectrum,e.margin=f.margin,e.limit=f.limit,e.padding=f.padding,ga=[],U(a.start||c,b)}var aa,ba,ca,da,ea=n(),fa=c,ga=[],ha=[],ia=!1,ja=e.spectrum,ka=[],la={};if(fa.noUiSlider)throw new Error("Slider was already initialized.");return r(fa),q(e.connect,aa),da={destroy:X,steps:Y,on:Z,off:$,get:W,set:U,reset:V,__moveHandles:function(a,b,c){D(a,b,ga,c)},options:i,updateOptions:_,target:fa,pips:x},L(e.events),U(e.start),e.pips&&x(e.pips),e.tooltips&&t(),da}function T(a,b){if(!a.nodeName)throw new Error("noUiSlider.create requires a single element.");void 0===b.tooltips&&(b.tooltips=!0);var c=R(b,a),d=S(a,c,b);return a.noUiSlider=d,d}y.prototype.getMargin=function(a){var b=this.xNumSteps[0];if(b&&a/b%1!==0)throw new Error("noUiSlider: 'limit', 'margin' and 'padding' must be divisible by step.");return 2===this.xPct.length&&p(this.xVal,a)},y.prototype.toStepping=function(a){return a=t(this.xVal,this.xPct,a)},y.prototype.fromStepping=function(a){return u(this.xVal,this.xPct,a)},y.prototype.getStep=function(a){return a=v(this.xPct,this.xSteps,this.snap,a)},y.prototype.getNearbySteps=function(a){var b=s(a,this.xPct);return{stepBefore:{startValue:this.xVal[b-2],step:this.xNumSteps[b-2],highestStep:this.xHighestCompleteStep[b-2]},thisStep:{startValue:this.xVal[b-1],step:this.xNumSteps[b-1],highestStep:this.xHighestCompleteStep[b-1]},stepAfter:{startValue:this.xVal[b-0],step:this.xNumSteps[b-0],highestStep:this.xHighestCompleteStep[b-0]}}},y.prototype.countStepDecimals=function(){var a=this.xNumSteps.map(i);return Math.max.apply(null,a)},y.prototype.convert=function(a){return this.getStep(this.toStepping(a))};var U={to:function(a){return void 0!==a&&a.toFixed(2)},from:Number};return{create:T}}); \ No newline at end of file diff --git a/node_modules/materialize-css/fab-toolbar-demo.html b/node_modules/materialize-css/fab-toolbar-demo.html deleted file mode 100644 index a61f205..0000000 --- a/node_modules/materialize-css/fab-toolbar-demo.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - Floating Action Button - Materialize - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.eot b/node_modules/materialize-css/fonts/roboto/Roboto-Bold.eot deleted file mode 100644 index b73776e..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.eot and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.ttf b/node_modules/materialize-css/fonts/roboto/Roboto-Bold.ttf deleted file mode 100644 index 68822ca..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.ttf and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.woff b/node_modules/materialize-css/fonts/roboto/Roboto-Bold.woff deleted file mode 100644 index 1f75afd..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.woff and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.woff2 b/node_modules/materialize-css/fonts/roboto/Roboto-Bold.woff2 deleted file mode 100644 index 350d1c3..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Bold.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Light.eot b/node_modules/materialize-css/fonts/roboto/Roboto-Light.eot deleted file mode 100644 index 072cdc4..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Light.eot and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Light.ttf b/node_modules/materialize-css/fonts/roboto/Roboto-Light.ttf deleted file mode 100644 index aa45340..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Light.ttf and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Light.woff b/node_modules/materialize-css/fonts/roboto/Roboto-Light.woff deleted file mode 100644 index 3480c6c..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Light.woff and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Light.woff2 b/node_modules/materialize-css/fonts/roboto/Roboto-Light.woff2 deleted file mode 100644 index 9a4d98c..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Light.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.eot b/node_modules/materialize-css/fonts/roboto/Roboto-Medium.eot deleted file mode 100644 index f9ad995..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.eot and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.ttf b/node_modules/materialize-css/fonts/roboto/Roboto-Medium.ttf deleted file mode 100644 index a3c1a1f..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.ttf and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.woff b/node_modules/materialize-css/fonts/roboto/Roboto-Medium.woff deleted file mode 100644 index 1186773..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.woff and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.woff2 b/node_modules/materialize-css/fonts/roboto/Roboto-Medium.woff2 deleted file mode 100644 index d10a592..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Medium.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.eot b/node_modules/materialize-css/fonts/roboto/Roboto-Regular.eot deleted file mode 100644 index 9b5e8e4..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.eot and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.ttf b/node_modules/materialize-css/fonts/roboto/Roboto-Regular.ttf deleted file mode 100644 index 0e58508..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.ttf and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.woff b/node_modules/materialize-css/fonts/roboto/Roboto-Regular.woff deleted file mode 100644 index f823258..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.woff and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.woff2 b/node_modules/materialize-css/fonts/roboto/Roboto-Regular.woff2 deleted file mode 100644 index b7082ef..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Regular.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.eot b/node_modules/materialize-css/fonts/roboto/Roboto-Thin.eot deleted file mode 100644 index 2284a3b..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.eot and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.ttf b/node_modules/materialize-css/fonts/roboto/Roboto-Thin.ttf deleted file mode 100644 index 8779333..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.ttf and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.woff b/node_modules/materialize-css/fonts/roboto/Roboto-Thin.woff deleted file mode 100644 index 2a98c1e..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.woff and /dev/null differ diff --git a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.woff2 b/node_modules/materialize-css/fonts/roboto/Roboto-Thin.woff2 deleted file mode 100644 index a38025a..0000000 Binary files a/node_modules/materialize-css/fonts/roboto/Roboto-Thin.woff2 and /dev/null differ diff --git a/node_modules/materialize-css/footer.html b/node_modules/materialize-css/footer.html deleted file mode 100644 index 1a53d85..0000000 --- a/node_modules/materialize-css/footer.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - - - Footer - Materialize - - - - - - - - - - - - - - - - -
            - - - -
            -
            -
            - -
            - - - - - - -
            
            -  body {
            -    display: flex;
            -    min-height: 100vh;
            -    flex-direction: column;
            -  }
            -
            -  main {
            -    flex: 1 0 auto;
            -  }
            -      
            - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            - - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/forms.html b/node_modules/materialize-css/forms.html deleted file mode 100644 index e46700c..0000000 --- a/node_modules/materialize-css/forms.html +++ /dev/null @@ -1,1098 +0,0 @@ - - - - - - - - - Forms - Materialize - - - - - - - - - - - - - - - - - -
            - - - -
            -
            -
            - -
            - -
            -

            - Forms are the standard way to receive user inputted data. The transitions and smoothness of these elements are very important because of the inherent user interaction associated with forms. -

            - -

            Input fields

            -

            Text fields allow user input. The border should light up simply and clearly indicating which field the user is currently editing. You must have a .input-field div wrapping your input and label. This helps our jQuery animate the label. This is only used in our Input and Textarea form elements.

            -

            The validate class leverages HTML5 validation and will add a valid and invalid class accordingly. If you don't want the Green and Red validation states, just remove the validate class from your inputs.

            -
            -
            -
            -
            -
            - - -
            -
            - - -
            -
            -
            -
            - - -
            -
            -
            -
            - - -
            -
            -
            -
            - - -
            -
            -
            -
            - This is an inline input field: -
            - - -
            -
            -
            -
            -
            -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s6">
            -          <input placeholder="Placeholder" id="first_name" type="text" class="validate">
            -          <label for="first_name">First Name</label>
            -        </div>
            -        <div class="input-field col s6">
            -          <input id="last_name" type="text" class="validate">
            -          <label for="last_name">Last Name</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input disabled value="I am not editable" id="disabled" type="text" class="validate">
            -          <label for="disabled">Disabled</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input id="password" type="password" class="validate">
            -          <label for="password">Password</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input id="email" type="email" class="validate">
            -          <label for="email">Email</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="col s12">
            -          This is an inline input field:
            -          <div class="input-field inline">
            -            <input id="email" type="email" class="validate">
            -            <label for="email" data-error="wrong" data-success="right">Email</label>
            -          </div>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        

            -

            Prefilling Text Inputs

            -

            If you are having trouble with the labels overlapping prefilled content, Try adding class="active" to the label.
            You can also call the function Materialize.updateTextFields(); to reinitialize all the Materialize labels on the page if you are dynamically adding inputs.

            -
            -
            - - -
            -
            - -
            
            -  <div class="row">
            -    <div class="input-field col s6">
            -      <input value="Alvin" id="first_name2" type="text" class="validate">
            -      <label class="active" for="first_name2">First Name</label>
            -    </div>
            -  </div>
            -        
            - -
            
            -  $(document).ready(function() {
            -    Materialize.updateTextFields();
            -  });
            -        
            - -

            Icon Prefixes

            -

            You can add an icon prefix to make the form input label even more clear. Just add an icon with the class prefix before the input and label.


            -
            -
            -
            -
            - account_circle - - -
            -
            - phone - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s6">
            -          <i class="material-icons prefix">account_circle</i>
            -          <input id="icon_prefix" type="text" class="validate">
            -          <label for="icon_prefix">First Name</label>
            -        </div>
            -        <div class="input-field col s6">
            -          <i class="material-icons prefix">phone</i>
            -          <input id="icon_telephone" type="tel" class="validate">
            -          <label for="icon_telephone">Telephone</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            - -

            Custom Error or Success Messages

            -

            You can add custom validation messages by adding either data-error or data-success attributes to your input field labels.


            -
            -
            -
            -
            - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input id="email" type="email" class="validate">
            -          <label for="email" data-error="wrong" data-success="right">Email</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            - - -

            Changing colors

            -

            Here is a CSS template for modifying input fields in CSS. With Sass, you can achieve this by just changing a variable. The CSS shown below is unprefixed. Depending on what you use, you may have to change the type attribute selector.

            -
            
            -  /* label color */
            -   .input-field label {
            -     color: #000;
            -   }
            -   /* label focus color */
            -   .input-field input[type=text]:focus + label {
            -     color: #000;
            -   }
            -   /* label underline focus color */
            -   .input-field input[type=text]:focus {
            -     border-bottom: 1px solid #000;
            -     box-shadow: 0 1px 0 0 #000;
            -   }
            -   /* valid color */
            -   .input-field input[type=text].valid {
            -     border-bottom: 1px solid #000;
            -     box-shadow: 0 1px 0 0 #000;
            -   }
            -   /* invalid color */
            -   .input-field input[type=text].invalid {
            -     border-bottom: 1px solid #000;
            -     box-shadow: 0 1px 0 0 #000;
            -   }
            -   /* icon prefix focus color */
            -   .input-field .prefix.active {
            -     color: #000;
            -   }
            -        
            -
            - - - -
            -

            Textarea

            -

            Textareas allow larger expandable user input. The border should light up simply and clearly indicating which field the user is currently editing. You must have a .input-field div wrapping your input and label. This helps our jQuery animate the label. This is only used in our Input and Textarea form elements.

            -

            Textareas will auto resize to the text inside.

            - - -
            -
            -
            -
            - - -
            -
            -
            -
            -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <textarea id="textarea1" class="materialize-textarea"></textarea>
            -          <label for="textarea1">Textarea</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            -

            advanced note: When dynamically changing the value of a textarea with methods like jQuery's .val(), you must trigger an autoresize on it afterwords because .val() does not automatically trigger the events we've binded to the textarea.

            -
            
            -  $('#textarea1').val('New Text');
            -  $('#textarea1').trigger('autoresize');
            -        
            -
            - -

            Icon Prefixes

            -

            You can add an icon prefix to make the form input label even more clear. Just add an icon with the class prefix before the input and label.


            -
            -
            -
            -
            - mode_edit - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s6">
            -          <i class="material-icons prefix">mode_edit</i>
            -          <textarea id="icon_prefix2" class="materialize-textarea"></textarea>
            -          <label for="icon_prefix2">First Name</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            -
            -
            -

            Select

            -

            Select allows user input through specified options. Make sure you wrap it in a .input-field for proper alignment with other text fields. Remember that this is a jQuery plugin so make sure you initialize this in your document ready.

            -
            -
            -
            -
            - - -
            -
            -
            -

            You can add the property multiple to get the multiple select and select several options.

            -
            -
            - - -
            -
            -
            -

            We also support optgroups in our selects.

            -
            -
            - - -
            -
            -
            -

            You can add icons to your options in any type of select. In the option you add the image source with the data-icon attribute. You can add the left or right class to align your icon. You can also add the circle class to your icon.

            -
            -
            - - -
            -
            - - -
            -
            -
            -

            You can add the class browser-default to get the browser default.

            -
            -
            - - -
            -
            -
            -
            -
            
            -  <div class="input-field col s12">
            -    <select>
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="1">Option 1</option>
            -      <option value="2">Option 2</option>
            -      <option value="3">Option 3</option>
            -    </select>
            -    <label>Materialize Select</label>
            -  </div>
            -
            -  <div class="input-field col s12">
            -    <select multiple>
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="1">Option 1</option>
            -      <option value="2">Option 2</option>
            -      <option value="3">Option 3</option>
            -    </select>
            -    <label>Materialize Multiple Select</label>
            -  </div>
            -
            -  <div class="input-field col s12">
            -    <select multiple>
            -      <optgroup label="team 1">
            -        <option value="1">Option 1</option>
            -        <option value="2">Option 2</option>
            -      </optgroup>
            -      <optgroup label="team 2">
            -        <option value="3">Option 3</option>
            -        <option value="4">Option 4</option>
            -      </optgroup>
            -    </select>
            -    <label>Optgroups</label>
            -  </div>
            -
            -  <div class="input-field col s12 m6">
            -    <select class="icons">
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="" data-icon="images/sample-1.jpg" class="circle">example 1</option>
            -      <option value="" data-icon="images/office.jpg" class="circle">example 2</option>
            -      <option value="" data-icon="images/yuna.jpg" class="circle">example 1</option>
            -    </select>
            -    <label>Images in select</label>
            -  </div>
            -  <div class="input-field col s12 m6">
            -    <select class="icons">
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="" data-icon="images/sample-1.jpg" class="left circle">example 1</option>
            -      <option value="" data-icon="images/office.jpg" class="left circle">example 2</option>
            -      <option value="" data-icon="images/yuna.jpg" class="left circle">example 3</option>
            -    </select>
            -    <label>Images in select</label>
            -  </div>
            -
            -  <label>Browser Select</label>
            -  <select class="browser-default">
            -    <option value="" disabled selected>Choose your option</option>
            -    <option value="1">Option 1</option>
            -    <option value="2">Option 2</option>
            -    <option value="3">Option 3</option>
            -  </select>
            -            
            -
            -
            -

            -

            Disabled Styles

            -

            You can also add disabled to the select element to make the whole thing disabled. Or if you add disabled to the options, the individual options will be unselectable.

            -
            -
            -
            -
            - - - - -
            -
            -
            -
            -
            
            -  <label>Materialize Disabled</label>
            -  <select disabled>
            -    <option value="" disabled selected>Choose your option</option>
            -    <option value="1">Option 1</option>
            -    <option value="2">Option 2</option>
            -    <option value="3">Option 3</option>
            -  </select>
            -
            -  <label>Browser Disabled</label>
            -  <select class="browser-default" disabled>
            -    <option value="" disabled selected>Choose your option</option>
            -    <option value="1">Option 1</option>
            -    <option value="2">Option 2</option>
            -    <option value="3">Option 3</option>
            -  </select>
            -            
            -
            -
            - -

            Initialization

            -

            You must initialize the select element as shown below. In addition, you will need a separate call for any dynamically generated select elements your page generates.

            -
            
            -  $(document).ready(function() {
            -    $('select').material_select();
            -  });
            -            
            -
            -
            -

            Updating/Destroying Select

            -

            If you want to update the items inside the select, just rerun the initialization code from above after editing the original select. Or you can destroy the material select with this function below, and create a new select altogether

            -
            
            -  $('select').material_select('destroy');
            -            
            -
            -
            -
            - - -
            -

            Radio Buttons

            -

            Radio Buttons are used when the user must make only one selection out of a group of items

            -
            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -
            -

            Add radio buttons to a group by adding the name attribute along with the same corresponding value for each of the radio buttons in the group. Create disabled radio buttons by adding the disabled attribute as shown below.

            -
            
            -  <form action="#">
            -    <p>
            -      <input name="group1" type="radio" id="test1" />
            -      <label for="test1">Red</label>
            -    </p>
            -    <p>
            -      <input name="group1" type="radio" id="test2" />
            -      <label for="test2">Yellow</label>
            -    </p>
            -    <p>
            -      <input class="with-gap" name="group1" type="radio" id="test3"  />
            -      <label for="test3">Green</label>
            -    </p>
            -    <p>
            -      <input name="group1" type="radio" id="test4" disabled="disabled" />
            -      <label for="test4">Brown</label>
            -    </p>
            -  </form>
            -        
            -

            Options

            -

            To create a radio button with a gap, add class="with-gap" to your input. See the example below.

            - -

            - - -

            -
            
            -  <p>
            -    <input class="with-gap" name="group3" type="radio" id="test5" checked />
            -    <label for="test5">Red</label>
            -  </p>
            -        
            - -
            - - - -
            -

            Checkboxes

            -

            Use checkboxes when looking for yes or no answers. The for attribute is necessary to bind our custom checkbox with the input. Add the input's id as the value of the for attribute of the label.

            -
            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -
            -
            
            -  <form action="#">
            -    <p>
            -      <input type="checkbox" id="test5" />
            -      <label for="test5">Red</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="test6" checked="checked" />
            -      <label for="test6">Yellow</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" class="filled-in" id="filled-in-box" checked="checked" />
            -      <label for="filled-in-box">Filled in</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="indeterminate-checkbox" />
            -      <label for="indeterminate-checkbox">Indeterminate Style</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="test7" checked="checked" disabled="disabled" />
            -      <label for="test7">Green</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="test8" disabled="disabled" />
            -      <label for="test8">Brown</label>
            -    </p>
            -  </form>
            -        
            -
            - - -
            -

            Switches

            -
            -

            -

            - -
            -

            - -

            -

            - -
            -

            -
            -
            
            -  <!-- Switch -->
            -  <div class="switch">
            -    <label>
            -      Off
            -      <input type="checkbox">
            -      <span class="lever"></span>
            -      On
            -    </label>
            -  </div>
            -
            -  <!-- Disabled Switch -->
            -  <div class="switch">
            -    <label>
            -      Off
            -      <input disabled type="checkbox">
            -      <span class="lever"></span>
            -      On
            -    </label>
            -  </div>
            -        
            -
            - -
            -

            File Input

            -

            If you want to style an input button with a path input we provide this structure.

            -
            -
            -
            - File - -
            -
            - -
            -
            -
            -
            
            -  <form action="#">
            -    <div class="file-field input-field">
            -      <div class="btn">
            -        <span>File</span>
            -        <input type="file">
            -      </div>
            -      <div class="file-path-wrapper">
            -        <input class="file-path validate" type="text">
            -      </div>
            -    </div>
            -  </form>
            -        
            - -

            You can also use the multiple attribute to allow multiple file uploads.

            -
            -
            -
            - File - -
            -
            - -
            -
            -
            -
            
            -  <form action="#">
            -    <div class="file-field input-field">
            -      <div class="btn">
            -        <span>File</span>
            -        <input type="file" multiple>
            -      </div>
            -      <div class="file-path-wrapper">
            -        <input class="file-path validate" type="text" placeholder="Upload one or more files">
            -      </div>
            -    </div>
            -  </form>
            -        
            -
            - - -
            -

            Range

            -

            Add a range slider for values with a wide range. This one is set to be a number between 0 and 100. We have two different types of sliders. nouiSlider is a 3rd party plugin which we've modified. To use the noUiSlider, you will have to manually link the nouislider.css and nouislider.js files located in the extras folder.

            -

            noUiSlider

            -

            See noUiSlider's official documentation here to see a variety of slider options

            -
            -

             

            -
            
            -  var slider = document.getElementById('test5');
            -  noUiSlider.create(slider, {
            -   start: [20, 80],
            -   connect: true,
            -   step: 1,
            -   range: {
            -     'min': 0,
            -     'max': 100
            -   },
            -   format: wNumb({
            -     decimals: 0
            -   })
            -  });
            -        
            -

            HTML5 Range

            -
            -

            - -

            -
            -
            
            -  <form action="#">
            -    <p class="range-field">
            -      <input type="range" id="test5" min="0" max="100" />
            -    </p>
            -  </form>
            -        
            -
            - -
            -

            Date Picker

            -

            We use a modified version of pickadate.js to create a materialized date picker. Test it out below!

            - - -
            
            -  <input type="date" class="datepicker">
            -        
            - -

            Initialization

            -

            At this time, not all pickadate.js options are working with our implementation

            -
            
            -  $('.datepicker').pickadate({
            -    selectMonths: true, // Creates a dropdown to control month
            -    selectYears: 15 // Creates a dropdown of 15 years to control year
            -  });
            -        
            -
            - - -
            -

            Character Counter

            -

            Use a character counter in fields where a character restriction is in place.

            -
            -
            -
            -
            - - -
            -
            -
            -
            -
            - - -
            -
            -
            -
            -
            
            -    <div class="row">
            -      <form class="col s12">
            -        <div class="row">
            -          <div class="input-field col s6">
            -            <input id="input_text" type="text" data-length="10">
            -            <label for="input_text">Input text</label>
            -          </div>
            -        </div>
            -        <div class="row">
            -          <div class="input-field col s12">
            -            <textarea id="textarea1" class="materialize-textarea" data-length="120"></textarea>
            -            <label for="textarea1">Textarea</label>
            -          </div>
            -        </div>
            -      </form>
            -    </div>
            -          
            -
            -

            Initialization

            -

            There are no options for this plugin, but if you are adding these dynamically, you can use this to initialize them.

            -
            
            -  $(document).ready(function() {
            -    $('input#input_text, textarea#textarea1').characterCounter();
            -  });
            -        
            -
            - -
            -

            Autocomplete

            -

            - Add an autocomplete dropdown below your input to suggest possible values. -

            - -
            -
            -
            -
            - textsms - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <div class="col s12">
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <i class="material-icons prefix">textsms</i>
            -          <input type="text" id="autocomplete-input" class="autocomplete">
            -          <label for="autocomplete-input">Autocomplete</label>
            -        </div>
            -      </div>
            -    </div>
            -  </div>
            -        
            - -

            Initialization

            -

            The data is a json object where the key is the matching string and the value is an optional image url.

            -
            
            -  $('input.autocomplete').autocomplete({
            -    data: {
            -      "Apple": null,
            -      "Microsoft": null,
            -      "Google": 'http://placehold.it/250x250'
            -    },
            -    limit: 20, // The max amount of results that can be shown at once. Default: Infinity.
            -  });
            -        
            -
            - - - -
            - - -
            -
            - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/fullscreen-slider-demo.html b/node_modules/materialize-css/fullscreen-slider-demo.html deleted file mode 100644 index 316f2fc..0000000 --- a/node_modules/materialize-css/fullscreen-slider-demo.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - Fullscreen Slider - Materialize - - - - - - - - - - - - - -
            -
              -
            • - -
              -

              This is our big Tagline!

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              Left Aligned Caption

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              Right Aligned Caption

              -
              Here's our small slogan.
              -
              -
            • -
            -
            - -
            - close - - -
            - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/getting-started.html b/node_modules/materialize-css/getting-started.html deleted file mode 100644 index e3d01d5..0000000 --- a/node_modules/materialize-css/getting-started.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - - - - - - Getting Started - Materialize - - - - - - - - - - - - - - - - -
            - - -
            -
            -
            -
            -
            -

            Getting Started

            -

            Learn how to easily start using Materialize in your website.

            -
            -
            - -
            - - -
            - -
            -
            -
            -
            - -
            - -
            - -
            -
            -

            Download

            -

            Materialize comes in two different forms. You can select which version you want depending on your preference and expertise. To start using Materialize, all you have to do is download one of the options below.

            - -
            -

            Materialize

            -

            This is the standard version that comes with both the minified and unminified CSS and JavaScript files. This option requires little to no setup. Use this if you are unfamiliar with Sass.

            - Materializefile_download -
            -
            -

            Sass

            -

            This version contains the source SCSS files. By choosing this version you have more control over which components to include. You will need a Sass compiler if you choose this option.

            - Sourcefile_download -
            -
            -
            -

            CDN

            -

            You can find all the versions of the CDN at cdnjs.

            -
            
            -  <!-- Compiled and minified CSS -->
            -  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css">
            -
            -  <!-- Compiled and minified JavaScript -->
            -  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script>
            -          
            -
            -
            -
            -

            NPM

            -

            You can also get the latest release using NPM. This release contains source files as well as the compiled CSS and JavaScript files.

            -
            
            -  npm install materialize-css
            -          
            -
            -
            -
            -

            Bower

            -

            You can also get the latest release using bower. This release contains source files as well as the compiled CSS and JavaScript files.

            -
            
            -  bower install materialize
            -          
            -
            -
            - -
            -

            Thanks for Downloading!

            -

            We hope you find Materialize useful in your next project. We would appreciate if you helped us spread the word about Materialize on our Social Media. Also if you want to support the development, you can donate to us.

            -
            -
            -
            - - - -
            -
            -
            -
            - -
            -
            - -
            -
            -
            -
            -
            -
            - -
            -
            -

            Setup

            -

            Project Structure

            -

            After downloading, extract the files into the directory where your website is located. Your directory will look something like this.

            -

            You'll notice that there are two sets of the files. The min means that the file is "compressed" to reduce load times. These minified files are usually used in production while it is better to use the unminified files during development.

            - -
            
            -  MyWebsite/
            -  |--css/
            -  |  |--materialize.css
            -  |
            -  |--fonts/
            -  |  |--roboto/
            -  |
            -  |--js/
            -  |  |--materialize.js
            -  |
            -  |--index.html
            -          
            -
            -
            -

            HTML Setup

            -

            Next you just have to make sure you link the files properly in your webpage. Generally it is wise to import javascript files at the end of the body to reduce page load time. Follow the example below on how to import Materialize into your webpage.

            -

            One last thing to note is that you have to import jQuery before importing materialize.js!

            -
            
            -  <!DOCTYPE html>
            -  <html>
            -    <head>
            -      <!--Import Google Icon Font-->
            -      <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
            -      <!--Import materialize.css-->
            -      <link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>
            -
            -      <!--Let browser know website is optimized for mobile-->
            -      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
            -    </head>
            -
            -    <body>
            -      <!--Import jQuery before materialize.js-->
            -      <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
            -      <script type="text/javascript" src="js/materialize.min.js"></script>
            -    </body>
            -  </html>
            -        
            -
            -
            - -
            -

            Templates

            -

            We have created some starter templates so you can easily start designing your website with minimal setup up time. Browse through our collection and download your best fit.

            - -
            -

            Starter Template

            - -

            This is the simplest starter page with a Header, Call-to-Action, and Icon Features.

            - Demosearch - Downloadfile_download -
            - -
            -

            Parallax Template

            - -

            This is the simplest starter page with a Header, Call-to-Action, and Icon Features.

            - Demosearch - Downloadfile_download -
            -
            - - - -
            -
            -

            Third-party Options

            -

            There are a few community-made options for you to easily include Materialize in your project. Keep in mind these are untested and may be out-of-date.

            -

            Ruby Gem

            -

            See here for documentation on this gem.

            -
            
            -  gem 'materialize-sass'
            -          
            -

            Meteor Package

            -
            
            -  meteor add materialize:materialize
            -          
            -

            Ember Package

            -
            
            -  # install via npm
            -  $ npm install ember-cli-materialize --save-dev
            -  # make ember-cli fetch internal dependencies
            -  $ ember g ember-cli-materialize
            -          
            - -
            -
            - -
            -
            -

            Sass Setup

            -

            This section is only relevant if you chose to download the Sass version of Materialize.

            -

            Compiling Sass

            -

            Instead of having a css folder, you will find that the download instead contains many .scss files which contain the styles of individual components. Unfortunately, the browser cannot interpret Sass, so you must have your Sass compiler compile the scss/materialize.scss into a regular CSS file. At this point you can link this newly outputted file in your HTML page.

            - -
            
            -  MyWebsite/
            -  |--css/
            -  |  |--materialize.css <-- compiled from scss/materialize.scss
            -  |
            -  |--fonts/
            -  |  |--roboto/
            -  |
            -  |--js/
            -  |  |--materialize.js
            -  |
            -  |--scss/
            -  |  |--materialize.scss
            -  |  |--components/
            -  |
            -  |--index.html
            -        
            -
            -
            - -
            - -
            - -
            - -
            -
            - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/grid.html b/node_modules/materialize-css/grid.html deleted file mode 100644 index fb74d01..0000000 --- a/node_modules/materialize-css/grid.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - - - - - - Grid - Materialize - - - - - - - - - - - - - - - - -
            - - - -
            -
            -
            - -
            - - -
            -
            -

            We are using a standard 12 column fluid responsive grid system. The grid helps you layout your page in an ordered, easy fashion.

            -

            Container

            -

            The container class is not strictly part of the grid but is important in laying out content. It allows you to center your page content. The container class is set to ~70% of the window width. It helps you center and contain your page content. We use the container to contain our body content. - -

            Demo

            -

            Try the button below to see what the page looks like without containers

            - Turn off Containers - - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -
            - -

            -

            -

            -

            -
            -
            -
            -
            -
            -
            -
            - - -

            To add a container just put your content inside a <div> tag with a container class. Here's an example of how your page might be set up.

            - -
            
            -    <body>
            -      <div class="container">
            -        <!-- Page Content goes here -->
            -      </div>
            -    </body>
            -          
            - -
            - - - -
            -

            Introduction

            -

            Take a look at this section to quickly understand how the grid works!

            -

            12 Columns

            -

            Our standard grid has 12 columns. No matter the size of the browser, each of these columns will always have an equal width.

            -
            -
            1
            -
            2
            -
            3
            -
            4
            -
            5
            -
            6
            -
            7
            -
            8
            -
            9
            -
            10
            -
            11
            -
            12
            -
            -

            To get a feel of how the grid is used in HTML, take a look at the code below which will produce a similar result to the one above.

            -
            
            -    <div class="row">
            -      <div class="col s1">1</div>
            -      <div class="col s1">2</div>
            -      <div class="col s1">3</div>
            -      <div class="col s1">4</div>
            -      <div class="col s1">5</div>
            -      <div class="col s1">6</div>
            -      <div class="col s1">7</div>
            -      <div class="col s1">8</div>
            -      <div class="col s1">9</div>
            -      <div class="col s1">10</div>
            -      <div class="col s1">11</div>
            -      <div class="col s1">12</div>
            -    </div>
            -          
            -

            Note: For now, just know that the s1 stands for small-1 which in plain English means "1 column on small screens".

            - -
            - -

            Columns live inside Rows

            -

            Remember when you are creating your layout that all columns must be contained inside a row and that you must add the col class to your inner divs to make them into columns

            -
            -
            This div is 12-columns wide on all screen sizes
            -
            6-columns (one-half)
            -
            6-columns (one-half)
            -
            -
            
            -    <div class="row">
            -      <div class="col s12">This div is 12-columns wide</div>
            -      <div class="col s6">This div is 6-columns wide</div>
            -      <div class="col s6">This div is 6-columns wide</div>
            -    </div>
            -          
            - -
            -
            - - -
            -

            Offsets

            -

            To offset, simply add offset-s2 to the class where s signifies the screen class-prefix (s = small, m = medium, l = large) and the number after is the number of columns you want to offset by.

            -
            -
            This div is 12-columns wide on all screen sizes
            -
            6-columns (offset-by-6)
            -
            -
            
            -    <div class="row">
            -      <div class="col s12"><span class="flow-text">This div is 12-columns wide on all screen sizes</span></div>
            -      <div class="col s6 offset-s6"><span class="flow-text">6-columns (offset-by-6)</span></div>
            -    </div>
            -          
            -
            - -
            - - -
            -

            Push and Pull

            -

            You can easily change the order of your columns with push and pull. Simply add push-s2 or pull-s2 to the class where s signifies the screen class-prefix (s = small, m = medium, l = large) and the number after is the number of columns you want to push or pull by.

            -
            -
            This div is 7-columns wide on pushed to the right by 5-columns.
            -
            5-columns wide pulled to the left by 7-columns.
            -
            -
            
            -    <div class="row">
            -      <div class="col s7 push-s5"><span class="flow-text">This div is 7-columns wide on pushed to the right by 5-columns.</span></div>
            -      <div class="col s5 pull-s7"><span class="flow-text">5-columns wide pulled to the left by 7-columns.</span></div>
            -    </div>
            -          
            -
            - -
            - - -
            -

            Creating Layouts

            -

            Here we will show you how to create some commonly used layouts with our grid system. Hopefully these will get you more comfortable with laying out elements. To keep these demos simple, the ones here will not be responsive.

            -
            -
            -

            Section

            -

            The section class is used for simple top and bottom padding. Just add the section class to your div's containing large blocks of content.

            -
            -
            -

            Divider

            -

            Dividers are 1 pixel lines that help break up your content. Just add the divider to a div in between your content.

            -
            -
            - -

            Example Sections and Dividers

            -
            -
            -
            Section 1
            -

            Stuff

            -
            -
            -
            -
            Section 2
            -

            Stuff

            -
            -
            -
            -
            Section 3
            -

            Stuff

            -
            -
            -
            
            -  <div class="divider"></div>
            -  <div class="section">
            -    <h5>Section 1</h5>
            -    <p>Stuff</p>
            -  </div>
            -  <div class="divider"></div>
            -  <div class="section">
            -    <h5>Section 2</h5>
            -    <p>Stuff</p>
            -  </div>
            -  <div class="divider"></div>
            -  <div class="section">
            -    <h5>Section 3</h5>
            -    <p>Stuff</p>
            -  </div>
            -          

            - -

            Example Promotion Table

            -

            If we want 3 divs that are equal size, we define the divs with a width of 4-columns, 4+4+4 = 12, which nicely adds up to 12. Inside those divs, we can put our content. Take our front page content for example. We've modified it slightly for the sake of this example.

            -
            -
            -
            - flash_on -

            Speeds up development

            -

            We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components.

            -
            -
            -
            -
            - group -

            User Experience Focused

            -

            By utilizing elements and principles of Material Design, we were able to create a framework that focuses on User Experience.

            -
            -
            -
            -
            - settings -

            Easy to work with

            -

            We have provided detailed documentation as well as specific code examples to help new users get started.

            -
            -
            -
            - -
            
            -    <div class="row">
            -
            -      <div class="col s4">
            -        <!-- Promo Content 1 goes here -->
            -      </div>
            -      <div class="col s4">
            -        <!-- Promo Content 2 goes here -->
            -      </div>
            -      <div class="col s4">
            -        <!-- Promo Content 3 goes here -->
            -      </div>
            -
            -    </div>
            -          
            - -
            - -

            Example Side Navigation Layout

            -

            You can see how easy it is to create layouts using the grid system. Just remember to make sure your column numbers add up to 12 for an even layout.

            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -

            -

            -

            -
            -
            -

            -

            -

            -

            -
            -
            -
            -
            -
            -
            - -
            
            -    <!-- Navbar goes here -->
            -
            -    <!-- Page Layout here -->
            -    <div class="row">
            -
            -      <div class="col s3">
            -        <!-- Grey navigation panel -->
            -      </div>
            -
            -      <div class="col s9">
            -        <!-- Teal page content  -->
            -      </div>
            -
            -    </div>
            -          
            -
            - - - -
            -

            Creating Responsive Layouts

            -

            Above we showed you how to layout elements using our grid system. Now we'll show you how to design your layouts so that they look great on all screen sizes.

            -

            Screen Sizes

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Mobile Devices
            <= 600px
            Tablet Devices
            <= 992px
            Desktop Devices
            > 992px
            Class Prefix.s.m.l
            Container Width85%85%70%
            Number of Columns121212
            - -
            - -

            Adding Responsiveness

            -

            In the previous examples, we only defined the size for small screens using "col s12". This is fine if we want a fixed layout since the rules propagate upwards. By just saying s12, we are essentially saying "col s12 m12 l12". But by explicitly defining the size we can make our website more responsive.

            - -
            -
            I am always full-width (col s12)
            -
            I am full-width on mobile (col s12 m6)
            -
            -
            
            -    <div class="row">
            -      <div class="grid-example col s12"><span class="flow-text">I am always full-width (col s12)</span></div>
            -      <div class="grid-example col s12 m6"><span class="flow-text">I am full-width on mobile (col s12 m6)</span></div>
            -    </div>
            -          
            - -
            - -

            Responsive Side Navigation Layout

            -

            In this example below, we take the same layout from above, but we make it responsive by defining how many columns the div should take up on each screen size. Try resizing your browser and watch the layout change below.

            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -

            -

            -

            -
            -
            -

            -

            -

            -

            -
            -
            -
            -
            -
            -
            - -
            
            -    <!-- Navbar goes here -->
            -
            -    <!-- Page Layout here -->
            -    <div class="row">
            -
            -      <div class="col s12 m4 l3"> <!-- Note that "m4 l3" was added -->
            -        <!-- Grey navigation panel
            -
            -              This content will be:
            -          3-columns-wide on large screens,
            -          4-columns-wide on medium screens,
            -          12-columns-wide on small screens  -->
            -
            -      </div>
            -
            -      <div class="col s12 m8 l9"> <!-- Note that "m8 l9" was added -->
            -        <!-- Teal page content
            -
            -              This content will be:
            -          9-columns-wide on large screens,
            -          8-columns-wide on medium screens,
            -          12-columns-wide on small screens  -->
            -
            -      </div>
            -
            -    </div>
            -          
            - -

            More Responsive Grid Examples

            -
            -
            s12
            -
            s12 m4 l2
            -
            s12 m4 l8
            -
            s12 m4 l2
            -
            s12 m6 l3
            -
            s12 m6 l3
            -
            s12 m6 l3
            -
            s12 m6 l3
            -
            -
            -
            
            -  <div class="row">
            -    <div class="col s12"><p>s12</p></div>
            -    <div class="col s12 m4 l2"><p>s12 m4</p></div>
            -    <div class="col s12 m4 l8"><p>s12 m4</p></div>
            -    <div class="col s12 m4 l2"><p>s12 m4</p></div>
            -  </div>
            -  <div class="row">
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -  </div>
            -            
            -
            -
            -
            - - -
            - - - -
            -
            - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/helpers.html b/node_modules/materialize-css/helpers.html deleted file mode 100644 index 6452ae2..0000000 --- a/node_modules/materialize-css/helpers.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - - - Helpers - Materialize - - - - - - - - - - - - - - - - -
            - - - -
            -
            -
            - -
            - - -
            -

            Alignment

            -

            We have easy to use classes to help you align your content.

            - -
            Vertical Align
            -

            You can easily vertically center things by adding the class valign-wrapper to the container holding the items you want to vertically align.

            -
            -
            This should be vertically aligned
            -
            -
            
            -<div class="valign-wrapper">
            -  <h5 class="valign">This should be vertically aligned</h5>
            -</div>
            -        

            - -
            Text Align
            -

            These classes are for horizontally aligning content. We have .left-align, .right-align and .center-align

            -
            -
            -
            This should be left aligned
            -
            -
            -
            -
            -
            This should be right aligned
            -
            -
            -
            -
            -
            This should be center aligned
            -
            -
            
            -  <div>
            -    <h5 class="left-align">This should be left aligned</h5>
            -  </div>
            -  <div>
            -    <h5 class="right-align">This should be right aligned</h5>
            -  </div>
            -  <div>
            -    <h5 class="center-align">This should be center aligned</h5>
            -  </div>
            -        

            - -
            Quick Floats
            -

            Quickly float things by adding the class left or right to the element. !important is used to avoid specificity issues.

            -
            
            -<div class="left">...</div>
            -<div class="right">...</div>
            -        

            - -
            - - -
            -

            Hiding Content

            -

            We provide easy to use classes to hide content on specific screen sizes.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Screen Range
            .hideHidden for all Devices
            .hide-on-small-onlyHidden for Mobile Only
            .hide-on-med-onlyHidden for Tablet Only
            .hide-on-med-and-downHidden for Tablet and Below
            .hide-on-med-and-upHidden for Tablet and Above
            .hide-on-large-onlyHidden for Desktop Only
            -
            -
            Usage
            -
            
            -  <div class="hide-on-small-only"></div>
            -        

            - -
            - - - - -
            -

            Formatting

            -

            These classes help format various content on your site.

            - -
            Truncation
            -

            To truncate long lines of text in an ellipsis, add the class truncate to the tag which contains the text. See an example below of a header being truncated inside a card.

            - -
            -
            -
            -

            This is an extremely long title that will be truncated

            -
            -
            -
            - -
            
            -  <h4 class="truncate">This is an extremely long title that will be truncated</h4>
            -        

            - -
            Hover
            -

            The hoverable is a hover class that adds an animation for box shadow as seen below. It can be used on most elements, but meant for use on cards.

            -
            -
            - - Card Title -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            - -
            
            -  <div class="card-panel hoverable"> Hoverable Card Panel</div>
            -        
            - -
            - - -
            -

            Browser Defaults

            -

            Because we override many of the default browser styles and elements, we provide the .browser-default class to revert these elements to their original state.

            - - - - - - - - - - - - - - - - - - -
            Name of ElementReverted Style
            ULBullet points
            SELECTBrowser default select element
            -
            - - -
            - -
            - -
            - -
            -
            - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/icons.html b/node_modules/materialize-css/icons.html deleted file mode 100644 index c8778f6..0000000 --- a/node_modules/materialize-css/icons.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - - - - - - Icons - Materialize - - - - - - - - - - - - - - - - -
            - - - -
            -
            -
            -
            - -
            -

            We have included 740 Material Design Icons courtesy of Google. You can download them directly from the Material Design specs.

            -

            Usage

            -

            To be able to use these icons, you must include this line in the <head>portion of your HTML code

            -
            
            -  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
            -

            To use these icons, use the material-icons class on an element and provide the ligature as the text content.

            -
            
            -      <i class="material-icons">add</i>
            -            
            - -

            Sizes

            -

            To control the size of the icon, change the font-size: 30px property of your icon. Optionally you can use preset classes as shown below.

            -
            -
            -
            insert_chart

            Tiny

            -
            insert_chart

            Small

            -
            insert_chart

            Medium

            -
            insert_chart

            Large

            -
            -
            -
            
            -      <!--
            -      Sizes:
            -      tiny: 1rem
            -      small: 2rem
            -      medium: 4rem
            -      large: 6rem
            -      -->
            -      <i class="large material-icons">insert_chart</i>
            -            
            - - -
            -

            -
            info_outlineinfo_outline
            -
            inputinput
            -
            invert_colorsinvert_colors
            -
            labellabel
            -
            label_outlinelabel_outline
            -
            languagelanguage
            -
            query_builderquery_builder
            -
            perm_identityperm_identity
            -
            perm_mediaperm_media
            -
            perm_phone_msgperm_phone_msg
            -
            perm_scan_wifiperm_scan_wifi
            -
            picture_in_picturepicture_in_picture
            -
            play_for_workplay_for_work
            -
            polymerpolymer
            -
            power_settings_newpower_settings_new
            -
            printprint
            -
            thumb_downthumb_down
            -
            thumb_upthumb_up
            -
            thumbs_up_downthumbs_up_down
            -
            emailemail
            -
            dialpaddialpad
            -
            dialer_sipdialer_sip
            -
            contactscontacts
            -
            forward_5forward_5
            -
            stay_current_portraitstay_current_portrait
            -
            stay_primary_landscapestay_primary_landscape
            -
            stay_primary_portraitstay_primary_portrait
            -
            swap_callsswap_calls
            -
            textsmstextsms
            -
            voicemailvoicemail
            -
            vpn_keyvpn_key
            -
            group_workgroup_work
            -
            gradegrade
            -
            clear_allclear_all
            -
            chat_bubble_outlinechat_bubble_outline
            -
            chat_bubblechat_bubble
            -
            repeatrepeat
            -
            repeat_onerepeat_one
            -
            replayreplay
            -
            replay_10replay_10
            -
            replay_30replay_30
            -
            replay_5replay_5
            -
            shuffleshuffle
            -
            skip_nextskip_next
            -
            skip_previousskip_previous
            -
            contact_phonecontact_phone
            -
            commentcomment
            -
            recent_actorsrecent_actors
            -
            snoozesnooze
            -
            sort_by_alphasort_by_alpha
            -
            stopstop
            -
            subtitlessubtitles
            -
            surround_soundsurround_sound
            -
            webweb
            -
            volume_upvolume_up
            -
            volume_offvolume_off
            -
            volume_mutevolume_mute
            -
            toctoc
            -
            todaytoday
            -
            tolltoll
            -
            track_changestrack_changes
            -
            translatetranslate
            -
            trending_downtrending_down
            -
            question_answerquestion_answer
            -
            receiptreceipt
            -
            donedone
            -
            tabtab
            -
            tab_unselectedtab_unselected
            -
            theaterstheaters
            -
            hdhd
            -
            gamesgames
            -
            hearinghearing
            -
            view_moduleview_module
            -
            view_listview_list
            -
            settings_remotesettings_remote
            -
            settings_voicesettings_voice
            -
            searchsearch
            -
            settingssettings
            -
            settings_applicationssettings_applications
            -
            settings_backup_restoresettings_backup_restore
            -
            settings_bluetoothsettings_bluetooth
            -
            settings_brightnesssettings_brightness
            -
            settings_cellsettings_cell
            -
            settings_ethernetsettings_ethernet
            -
            settings_input_antennasettings_input_antenna
            -
            trending_flattrending_flat
            -
            trending_uptrending_up
            -
            workwork
            -
            youtube_searched_foryoutube_searched_for
            -
            zoom_inzoom_in
            -
            my_locationmy_location
            -
            visibility_offvisibility_off
            -
            visibilityvisibility
            -
            view_weekview_week
            -
            view_streamview_stream
            -
            view_quiltview_quilt
            -
            video_libraryvideo_library
            -
            videocamvideocam
            -
            videocam_offvideocam_off
            -
            volume_downvolume_down
            -
            settings_overscansettings_overscan
            -
            settings_input_svideosettings_input_svideo
            -
            settings_input_hdmisettings_input_hdmi
            -
            settings_input_compositesettings_input_composite
            -
            settings_input_componentsettings_input_component
            -
            launchlaunch
            -
            perm_device_informationperm_device_information
            -
            perm_data_settingperm_data_setting
            -
            zoom_outzoom_out
            -
            alarm_onalarm_on
            -
            dnsdns
            -
            redeemredeem
            -
            reorderreorder
            -
            report_problemreport_problem
            -
            restorerestore
            -
            roomroom
            -
            scheduleschedule
            -
            moviemovie
            -
            androidandroid
            -
            announcementannouncement
            -
            mic_offmic_off
            -
            mic_nonemic_none
            -
            swap_horizswap_horiz
            -
            swap_vertswap_vert
            -
            swap_vertical_circleswap_vertical_circle
            -
            system_update_altsystem_update_alt
            -
            present_to_allpresent_to_all
            -
            portable_wifi_offportable_wifi_off
            -
            phonelink_setupphonelink_setup
            -
            phonelink_ringphonelink_ring
            -
            phonelink_lockphonelink_lock
            -
            phonelink_erasephonelink_erase
            -
            person_pinperson_pin
            -
            navigationnavigation
            -
            new_releasesnew_releases
            -
            not_interestednot_interested
            -
            pausepause
            -
            pause_circle_filledpause_circle_filled
            -
            pause_circle_outlinepause_circle_outline
            -
            play_arrowplay_arrow
            -
            play_circle_filledplay_circle_filled
            -
            play_circle_outlineplay_circle_outline
            -
            playlist_addplaylist_add
            -
            queuequeue
            -
            queue_musicqueue_music
            -
            radioradio
            -
            classclass
            -
            codecode
            -
            credit_cardcredit_card
            -
            dashboarddashboard
            -
            deletedelete
            -
            descriptiondescription
            -
            open_withopen_with
            -
            pageviewpageview
            -
            paymentpayment
            -
            perm_camera_micperm_camera_mic
            -
            perm_contact_calendarperm_contact_calendar
            -
            airplayairplay
            -
            done_alldone_all
            -
            phonephone
            -
            no_simno_sim
            -
            invert_colors_offinvert_colors_off
            -
            chatchat
            -
            call_splitcall_split
            -
            call_receivedcall_received
            -
            call_missedcall_missed
            -
            call_mergecall_merge
            -
            call_madecall_made
            -
            call_endcall_end
            -
            callcall
            -
            businessbusiness
            -
            alarm_offalarm_off
            -
            messagemessage
            -
            location_onlocation_on
            -
            location_offlocation_off
            -
            live_helplive_help
            -
            albumalbum
            -
            av_timerav_timer
            -
            closed_captionclosed_caption
            -
            equalizerequalizer
            -
            turned_in_notturned_in_not
            -
            verified_userverified_user
            -
            view_agendaview_agenda
            -
            view_arrayview_array
            -
            view_carouselview_carousel
            -
            view_columnview_column
            -
            subjectsubject
            -
            supervisor_accountsupervisor_account
            -
            settings_powersettings_power
            -
            shopshop
            -
            shop_twoshop_two
            -
            shopping_basketshopping_basket
            -
            shopping_cartshopping_cart
            -
            speaker_notesspeaker_notes
            -
            spellcheckspellcheck
            -
            starstar
            -
            starsstars
            -
            storestore
            -
            ring_volumering_volume
            -
            speaker_phonespeaker_phone
            -
            stay_current_landscapestay_current_landscape
            -
            forumforum
            -
            import_exportimport_export
            -
            open_in_browseropen_in_browser
            -
            open_in_newopen_in_new
            -
            forward_30forward_30
            -
            turned_inturned_in
            -
            view_headlineview_headline
            -
            view_dayview_day
            -
            warningwarning
            -
            error_outlineerror_outline
            -
            errorerror
            -
            add_alertadd_alert
            -
            settings_phonesettings_phone
            -
            forward_10forward_10
            -
            fast_rewindfast_rewind
            -
            fast_forwardfast_forward
            -
            explicitexplicit
            -
            listlist
            -
            locklock
            -
            lock_openlock_open
            -
            lock_outlinelock_outline
            -
            loyaltyloyalty
            -
            markunread_mailboxmarkunread_mailbox
            -
            note_addnote_add
            -
            offline_pinoffline_pin
            -
            httphttp
            -
            micmic
            -
            looploop
            -
            library_musiclibrary_music
            -
            library_bookslibrary_books
            -
            library_addlibrary_add
            -
            high_qualityhigh_quality
            -
            infoinfo
            -
            httpshttps
            -
            aspect_ratioaspect_ratio
            -
            assessmentassessment
            -
            assignmentassignment
            -
            assignment_indassignment_ind
            -
            assignment_lateassignment_late
            -
            mode_editmode_edit
            - - -
            -
            - -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/index.html b/node_modules/materialize-css/index.html deleted file mode 100644 index 3c9fff0..0000000 --- a/node_modules/materialize-css/index.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - Documentation - Materialize - - - - - - - - - - - - - - - - -
            - - -
            -
            -
            -

            Materialize

            -
            -

            A modern responsive front-end framework based on Material Design

            -
            - - - -
            - - -
            -
            - -
            -
            -
            -
            - Latest Commit on Github: -    - -    - - Github -
            -
            -
            -
            - -
            -
            - -
            -
            -
            - -
            -
            - -
            -

            Materialize simplifies life for developers and the users they serve.

            -
            - - -
            -
            -
            - flash_on -

            Speeds up development

            -

            We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

            -
            -
            - -
            -
            - group -

            User Experience Focused

            -

            By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

            -
            -
            - -
            -
            - settings -

            Easy to work with

            -

            We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

            -
            -
            -
            - -
            -
            -
            -
            -

            Materialize Showcase

            -

            Checkout what people are creating with Materialize. Get inspired by these beautiful sites and you can even submit your own website to be showcased here.

            - Explore our Showcase -
            -
            -
            - - -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/jade/404.jade b/node_modules/materialize-css/jade/404.jade deleted file mode 100644 index 3a31640..0000000 --- a/node_modules/materialize-css/jade/404.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var white_nav = true -- var page = "404" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/404_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/_footer.html b/node_modules/materialize-css/jade/_footer.html deleted file mode 100644 index 32159d9..0000000 --- a/node_modules/materialize-css/jade/_footer.html +++ /dev/null @@ -1,37 +0,0 @@ -
            -
            -
            -
            -
            Help Materialize Grow
            -

            We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

            -
            - - - -
            - -
            -
            -
            Join the Discussion
            -

            We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

            - Chat -
            -
            -
            Connect
            - -
            - -
            -
            -
            -
            -
            - -
            diff --git a/node_modules/materialize-css/jade/_head.jade b/node_modules/materialize-css/jade/_head.jade deleted file mode 100644 index 30e82bc..0000000 --- a/node_modules/materialize-css/jade/_head.jade +++ /dev/null @@ -1,40 +0,0 @@ -meta(http-equiv='Content-Type', content='text/html; charset=UTF-8') -meta(name='viewport', content='width=device-width, initial-scale=1') -meta(http-equiv='X-UA-Compatible', content='IE=edge') -meta(name='msapplication-tap-highlight', content='no') - -if meta_descript - meta(name='description', content='#{meta_descript}') -else - meta(name='description', content='Materialize is a modern responsive CSS framework based on Material Design by Google. ') - -if page - title #{page} - Materialize -else - title Documentation - Materialize - - -// Favicons -link(rel='apple-touch-icon-precomposed', href='images/favicon/apple-touch-icon-152x152.png') -meta(name='msapplication-TileColor', content='#FFFFFF') -meta(name='msapplication-TileImage', content='images/favicon/mstile-144x144.png') -link(rel='icon', href='images/favicon/favicon-32x32.png', sizes='32x32') - -// Android 5 Chrome Color -meta(name='theme-color', content='#EE6E73') -// CSS -link(href='css/prism.css', rel='stylesheet') -link(href='css/ghpages-materialize.css', type='text/css', rel='stylesheet', media='screen,projection') -link(href='http://fonts.googleapis.com/css?family=Inconsolata', rel='stylesheet', type='text/css') -link(href='http://fonts.googleapis.com/icon?family=Material+Icons', rel='stylesheet') - -if !isDemo - script. - window.liveSettings = { - api_key: "a0b49b34b93844c38eaee15690d86413", - picker: "bottom-right", - detectlang: true, - dynamic: true, - autocollect: true - }; - script(src='//cdn.transifex.com/live.js') diff --git a/node_modules/materialize-css/jade/_navbar.jade b/node_modules/materialize-css/jade/_navbar.jade deleted file mode 100644 index 6c61916..0000000 --- a/node_modules/materialize-css/jade/_navbar.jade +++ /dev/null @@ -1,115 +0,0 @@ -header - if no_nav == false - nav.top-nav - .container - .nav-wrapper - a.page-title #{page} - .container - a.button-collapse.top-nav(href='#', data-activates='nav-mobile', class=(no_nav == false ? "full hide-on-large-only" : "" + "waves-effect waves-light circle hide-on-large-only")) - i.material-icons menu - ul#nav-mobile.side-nav.fixed - li(class="logo") - a#logo-container.brand-logo(href='http://materializecss.com/') - object#front-page-logo(type='image/svg+xml', data='res/materialize.svg') Your browser does not support SVG - li(class="search") - div.search-wrapper.card - input(id="search") - i.material-icons search - div.search-results - li.bold(class=(page == "About" ? "active" : "")) - a.waves-effect.waves-teal(href='about.html') About - li.bold(class=(page == "Getting Started" ? "active" : "")) - a.waves-effect.waves-teal(href='getting-started.html') Getting Started - - li.no-padding - ul.collapsible.collapsible-accordion - li.bold - a.collapsible-header(class=(page == "Sass" || page == "Typography" || page == "Color" || page == "Shadow" || page == "Grid" || page == "Media CSS" || page == "Table" || page == "CSS Transitions" || page == "Helpers" ? "active" : "")+" waves-effect waves-teal") - | CSS - .collapsible-body - ul - li(class=(page == "Color" ? "active" : "")) - a(href='color.html') Color - li(class=(page == "Grid" ? "active" : "")) - a(href='grid.html') Grid - li(class=(page == "Helpers" ? "active" : "")) - a(href='helpers.html') Helpers - li(class=(page == "Media CSS" ? "active" : "")) - a(href='media-css.html') Media - li(class=(page == "Sass" ? "active" : "")) - a(href='sass.html') Sass - li(class=(page == "Shadow" ? "active" : "")) - a(href='shadow.html') Shadow - li(class=(page == "Table" ? "active" : "")) - a(href='table.html') Table - li(class=(page == "CSS Transitions" ? "active" : "")) - a(href='css-transitions.html') Transitions - li(class=(page == "Typography" ? "active" : "")) - a(href='typography.html') Typography - li.bold - a.collapsible-header(class=(page == "Forms" || page == "Buttons" || page == "Navbar" || page == "Cards" || page == "Chips" || page == "Preloader" || page == "Pagination" || page == "Collections" || page == "Badges" || page == "Breadcrumbs" || page == "Footer" ? "active" : "" || page == "Icons" ? "active" : "")+" waves-effect waves-teal") - | Components - .collapsible-body - ul - li(class=(page == "Badges" ? "active" : "")) - a(href='badges.html') Badges - li(class=(page == "Buttons" ? "active" : "")) - a(href='buttons.html') Buttons - li(class=(page == "Breadcrumbs" ? "active" : "")) - a(href='breadcrumbs.html') Breadcrumbs - li(class=(page == "Cards" ? "active" : "")) - a(href='cards.html') Cards - li(class=(page == "Chips" ? "active" : "")) - a(href='chips.html') Chips - li(class=(page == "Collections" ? "active" : "")) - a(href='collections.html') Collections - li(class=(page == "Footer" ? "active" : "")) - a(href='footer.html') Footer - li(class=(page == "Forms" ? "active" : "")) - a(href='forms.html') Forms - li(class=(page == "Icons" ? "active" : "")) - a(href='icons.html') Icons - li(class=(page == "Navbar" ? "active" : "")) - a(href='navbar.html') Navbar - li(class=(page == "Pagination" ? "active" : "")) - a(href='pagination.html') Pagination - li(class=(page == "Preloader" ? "active" : "")) - a(href='preloader.html') Preloader - li.bold - a.collapsible-header(class=(page == "Dialogs" || page == "Modals" || page == "Dropdown" || page == "Tabs" || page == "ScrollFire" || page == "Scrollspy" || page == "SideNav" || page == "Pushpin" || page == "Waves" || page == "Media" || page == "Transitions" || page == "Parallax" || page == "Collapsible" ? "active" : "" || page == "Carousel" ? "active" : "")+" waves-effect waves-teal") - | JavaScript - .collapsible-body - ul - li(class=(page == "Carousel" ? "active" : "")) - a(href='carousel.html') Carousel - li(class=(page == "Collapsible" ? "active" : "")) - a(href='collapsible.html') Collapsible - li(class=(page == "Dialogs" ? "active" : "")) - a(href='dialogs.html') Dialogs - li(class=(page == "Dropdown" ? "active" : "")) - a(href='dropdown.html') Dropdown - li(class=(page == "Media" ? "active" : "")) - a(href='media.html') Media - li(class=(page == "Modals" ? "active" : "")) - a(href='modals.html') Modals - li(class=(page == "Parallax" ? "active" : "")) - a(href='parallax.html') Parallax - li(class=(page == "Pushpin" ? "active" : "")) - a(href='pushpin.html') Pushpin - li(class=(page == "ScrollFire" ? "active" : "")) - a(href='scrollfire.html') ScrollFire - li(class=(page == "Scrollspy" ? "active" : "")) - a(href='scrollspy.html') Scrollspy - li(class=(page == "SideNav" ? "active" : "")) - a(href='side-nav.html') SideNav - li(class=(page == "Tabs" ? "active" : "")) - a(href='tabs.html') Tabs - li(class=(page == "Transitions" ? "active" : "")) - a(href='transitions.html') Transitions - li(class=(page == "Waves" ? "active" : "")) - a(href='waves.html') Waves - - li.bold(class=(page == "Mobile" ? "active" : "")) - a.waves-effect.waves-teal(href='http://materializecss.com/mobile.html') Mobile - li.bold(class=(page == "Showcase" ? "active" : "")) - a.waves-effect.waves-teal(href='showcase.html') Showcase diff --git a/node_modules/materialize-css/jade/_scripts.html b/node_modules/materialize-css/jade/_scripts.html deleted file mode 100644 index 69b338c..0000000 --- a/node_modules/materialize-css/jade/_scripts.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/jade/about.jade b/node_modules/materialize-css/jade/about.jade deleted file mode 100644 index f9eb4ce..0000000 --- a/node_modules/materialize-css/jade/about.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var white_nav = true -- var page = "About" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include about/about_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/about/about_content.html b/node_modules/materialize-css/jade/about/about_content.html deleted file mode 100644 index 0c2640b..0000000 --- a/node_modules/materialize-css/jade/about/about_content.html +++ /dev/null @@ -1,132 +0,0 @@ -
            -
            -
            -
            -

            About

            -

            Learn about the Material Design and our Project Team.

            -
            -
            -
            - - -
            -
            -
            -
            -
            - -
            - -
            - -
            - -
            -

            Material Design

            -

            Created and designed by Google, Material Design is a design language that combines the classic principles of successful design - along with innovation and technology. Google's goal is to develop a system of design that allows for a unified user experience - across all their products on any platform.

            -
            - -
            -
            -

            Principles

            -
            - -

            Material is the metaphor

            -

            The metaphor of material defines the relationship between space and motion. The idea is that the technology is inspired by paper and ink and is utilized to facilitate creativity and innovation. Surfaces and edges provide familiar visual cues that allow users to quickly understand the technology beyond the physical world.

            -
            -
            - -
            - -

            Bold, graphic, intentional

            -

            Elements and components such as grids, typography, color, and imagery are not only visually pleasing, but also create a sense of hierarchy, meaning, and focus. Emphasis on different actions and components create a visual guide for users.

            -
            -
            - -
            - -

            Motion provides meaning

            -

            Motion allows the user to draw a parallel between what they see on the screen and in real life. By providing both feedback and familiarity, this allows the user to fully immerse him or herself into unfamiliar technology. Motion contains consistency and continuity in addition to giving users additional subconscious information about objects and transformations.

            -
            -
            -
            - - -
            -
            -

            Meet the Team

            -

            We are a team of students from Carnegie Mellon University.

            -
            -
            - -
            -
            -
            -
            - -
            -
            -
            - -
            -
            -
            -

            Alvin Wang

            -

            Alvin is an Information Systems and Human Computer Interaction Major. He worked as a Software Engineer at Fidelity Investments this past summer.

            -
            -
            - -
            -
            -
            - -
            -
            -
            -

            Alan Chang

            -

            Alan is an Information Systems major with a minor in computer science. He worked at as a Front End Developer at Shift Collaborative this past summer.

            -
            -
            - -
            -
            -
            - -
            -
            -
            -

            Alex Mark

            -

            Alex is an Information Systems major with a minor in Human Computer Interaction. He worked as a software developer for Intuit this past summer.

            -
            -
            - -
            -
            -
            - -
            -
            -
            -

            Kevin Louie

            -

            Kevin is an Information Systems major with a minor in Human Computer Interaction. This past summer, he worked as a technology analyst at PPG Industries.

            -
            -
            -
            - -
            - -
            - -
            - -
            -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/badges.jade b/node_modules/materialize-css/jade/badges.jade deleted file mode 100644 index 184ec19..0000000 --- a/node_modules/materialize-css/jade/badges.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Badges" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/badges_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/breadcrumbs.jade b/node_modules/materialize-css/jade/breadcrumbs.jade deleted file mode 100644 index 0d4196a..0000000 --- a/node_modules/materialize-css/jade/breadcrumbs.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Breadcrumbs" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/breadcrumbs_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/buttons.jade b/node_modules/materialize-css/jade/buttons.jade deleted file mode 100644 index b169b07..0000000 --- a/node_modules/materialize-css/jade/buttons.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Buttons" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/buttons_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/cards.jade b/node_modules/materialize-css/jade/cards.jade deleted file mode 100644 index 3414188..0000000 --- a/node_modules/materialize-css/jade/cards.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Cards" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/cards_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/carousel.jade b/node_modules/materialize-css/jade/carousel.jade deleted file mode 100644 index 00e5945..0000000 --- a/node_modules/materialize-css/jade/carousel.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Carousel" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/carousel_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/chips.jade b/node_modules/materialize-css/jade/chips.jade deleted file mode 100644 index 8ca245b..0000000 --- a/node_modules/materialize-css/jade/chips.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Chips" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/chips_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/collapsible.jade b/node_modules/materialize-css/jade/collapsible.jade deleted file mode 100644 index bee01c4..0000000 --- a/node_modules/materialize-css/jade/collapsible.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Collapsible" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/collapsible_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/collections.jade b/node_modules/materialize-css/jade/collections.jade deleted file mode 100644 index 5933892..0000000 --- a/node_modules/materialize-css/jade/collections.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Collections" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/collections_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/color.jade b/node_modules/materialize-css/jade/color.jade deleted file mode 100644 index 2b44b3e..0000000 --- a/node_modules/materialize-css/jade/color.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Color" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/color_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/css-transitions.jade b/node_modules/materialize-css/jade/css-transitions.jade deleted file mode 100644 index 569fdda..0000000 --- a/node_modules/materialize-css/jade/css-transitions.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "CSS Transitions" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/css-transitions_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/dialogs.jade b/node_modules/materialize-css/jade/dialogs.jade deleted file mode 100644 index 6ecbc69..0000000 --- a/node_modules/materialize-css/jade/dialogs.jade +++ /dev/null @@ -1,18 +0,0 @@ -- var no_nav = false -- var page = "Dialogs" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/dialogs_content.html - include _footer.html - include _scripts.html - script(type='text/javascript'). - var displayCustomHTMLToast = function () { - var $toastContent = $('I am toast content'); - Materialize.toast($toastContent, 5000); - } diff --git a/node_modules/materialize-css/jade/dropdown.jade b/node_modules/materialize-css/jade/dropdown.jade deleted file mode 100644 index 6bec7e4..0000000 --- a/node_modules/materialize-css/jade/dropdown.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Dropdown" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/dropdown_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/footer.jade b/node_modules/materialize-css/jade/footer.jade deleted file mode 100644 index 049b671..0000000 --- a/node_modules/materialize-css/jade/footer.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Footer" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/footer_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/forms.jade b/node_modules/materialize-css/jade/forms.jade deleted file mode 100644 index bbdcc14..0000000 --- a/node_modules/materialize-css/jade/forms.jade +++ /dev/null @@ -1,29 +0,0 @@ -- var no_nav = false -- var page = "Forms" - -doctype html -html(lang="en") - head - include _head.jade - link(href='/extras/noUiSlider/nouislider.css', rel='stylesheet') - body - include _navbar.jade - main - include page-contents/forms_content.html - include _footer.html - include _scripts.html - script(src="/extras/noUiSlider/nouislider.js") - script(type='text/javascript'). - var slider = document.getElementById('range-input'); - noUiSlider.create(slider, { - start: [20, 80], - connect: true, - step: 1, - range: { - 'min': 0, - 'max': 100 - }, - format: wNumb({ - decimals: 0 - }) - }); \ No newline at end of file diff --git a/node_modules/materialize-css/jade/fullscreen-slider-demo.jade b/node_modules/materialize-css/jade/fullscreen-slider-demo.jade deleted file mode 100644 index bb995f4..0000000 --- a/node_modules/materialize-css/jade/fullscreen-slider-demo.jade +++ /dev/null @@ -1,10 +0,0 @@ -- var page = "Fullscreen Slider" -- var isDemo = true - -doctype html -html(lang="en") - head - include _head.jade - body - include page-contents/fullscreen_slider_demo_content.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/getting-started.jade b/node_modules/materialize-css/jade/getting-started.jade deleted file mode 100644 index 386b602..0000000 --- a/node_modules/materialize-css/jade/getting-started.jade +++ /dev/null @@ -1,26 +0,0 @@ -- var white_nav = true -- var page = "Getting Started" -- var meta_descript = "Learn how to quickly get started using our CSS framework. We have guides for a variety of skill levels." - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include getting_started/getting_started_content.html - include _footer.html - include _scripts.html - script. - $('#download-source, #download-sass').on('click', function () { - $('#download').slideUp( - { duration: 500, - easing: "easeOutQuart", - queue: false, - complete: function() - { $('#download-thanks').slideDown({ duration: 300, - easing: "easeOutQuart"}); } - }); - - }); \ No newline at end of file diff --git a/node_modules/materialize-css/jade/getting_started/getting_started_content.html b/node_modules/materialize-css/jade/getting_started/getting_started_content.html deleted file mode 100644 index 858ff5d..0000000 --- a/node_modules/materialize-css/jade/getting_started/getting_started_content.html +++ /dev/null @@ -1,237 +0,0 @@ -
            -
            -
            -
            -

            Getting Started

            -

            Learn how to easily start using Materialize in your website.

            -
            -
            - -
            - - -
            - -
            -
            -
            -
            - -
            - -
            - -
            -
            -

            Download

            -

            Materialize comes in two different forms. You can select which version you want depending on your preference and expertise. To start using Materialize, all you have to do is download one of the options below.

            - -
            -

            Materialize

            -

            This is the standard version that comes with both the minified and unminified CSS and JavaScript files. This option requires little to no setup. Use this if you are unfamiliar with Sass.

            - Materializefile_download -
            -
            -

            Sass

            -

            This version contains the source SCSS files. By choosing this version you have more control over which components to include. You will need a Sass compiler if you choose this option.

            - Sourcefile_download -
            -
            -
            -

            CDN

            -

            You can find all the versions of the CDN at cdnjs.

            -
            
            -  <!-- Compiled and minified CSS -->
            -  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css">
            -
            -  <!-- Compiled and minified JavaScript -->
            -  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script>
            -          
            -
            -
            -
            -

            NPM

            -

            You can also get the latest release using NPM. This release contains source files as well as the compiled CSS and JavaScript files.

            -
            
            -  npm install materialize-css
            -          
            -
            -
            -
            -

            Bower

            -

            You can also get the latest release using bower. This release contains source files as well as the compiled CSS and JavaScript files.

            -
            
            -  bower install materialize
            -          
            -
            -
            - -
            -

            Thanks for Downloading!

            -

            We hope you find Materialize useful in your next project. We would appreciate if you helped us spread the word about Materialize on our Social Media. Also if you want to support the development, you can donate to us.

            -
            -
            -
            - - - -
            -
            -
            -
            - -
            -
            - -
            -
            -
            -
            -
            -
            - -
            -
            -

            Setup

            -

            Project Structure

            -

            After downloading, extract the files into the directory where your website is located. Your directory will look something like this.

            -

            You'll notice that there are two sets of the files. The min means that the file is "compressed" to reduce load times. These minified files are usually used in production while it is better to use the unminified files during development.

            - -
            
            -  MyWebsite/
            -  |--css/
            -  |  |--materialize.css
            -  |
            -  |--fonts/
            -  |  |--roboto/
            -  |
            -  |--js/
            -  |  |--materialize.js
            -  |
            -  |--index.html
            -          
            -
            -
            -

            HTML Setup

            -

            Next you just have to make sure you link the files properly in your webpage. Generally it is wise to import javascript files at the end of the body to reduce page load time. Follow the example below on how to import Materialize into your webpage.

            -

            One last thing to note is that you have to import jQuery before importing materialize.js!

            -
            
            -  <!DOCTYPE html>
            -  <html>
            -    <head>
            -      <!--Import Google Icon Font-->
            -      <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
            -      <!--Import materialize.css-->
            -      <link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>
            -
            -      <!--Let browser know website is optimized for mobile-->
            -      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
            -    </head>
            -
            -    <body>
            -      <!--Import jQuery before materialize.js-->
            -      <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
            -      <script type="text/javascript" src="js/materialize.min.js"></script>
            -    </body>
            -  </html>
            -        
            -
            -
            - -
            -

            Templates

            -

            We have created some starter templates so you can easily start designing your website with minimal setup up time. Browse through our collection and download your best fit.

            - -
            -

            Starter Template

            - -

            This is the simplest starter page with a Header, Call-to-Action, and Icon Features.

            - Demosearch - Downloadfile_download -
            - -
            -

            Parallax Template

            - -

            This is the simplest starter page with a Header, Call-to-Action, and Icon Features.

            - Demosearch - Downloadfile_download -
            -
            - - - -
            -
            -

            Third-party Options

            -

            There are a few community-made options for you to easily include Materialize in your project. Keep in mind these are untested and may be out-of-date.

            -

            Ruby Gem

            -

            See here for documentation on this gem.

            -
            
            -  gem 'materialize-sass'
            -          
            -

            Meteor Package

            -
            
            -  meteor add materialize:materialize
            -          
            -

            Ember Package

            -
            
            -  # install via npm
            -  $ npm install ember-cli-materialize --save-dev
            -  # make ember-cli fetch internal dependencies
            -  $ ember g ember-cli-materialize
            -          
            - -
            -
            - -
            -
            -

            Sass Setup

            -

            This section is only relevant if you chose to download the Sass version of Materialize.

            -

            Compiling Sass

            -

            Instead of having a css folder, you will find that the download instead contains many .scss files which contain the styles of individual components. Unfortunately, the browser cannot interpret Sass, so you must have your Sass compiler compile the scss/materialize.scss into a regular CSS file. At this point you can link this newly outputted file in your HTML page.

            - -
            
            -  MyWebsite/
            -  |--css/
            -  |  |--materialize.css <-- compiled from scss/materialize.scss
            -  |
            -  |--fonts/
            -  |  |--roboto/
            -  |
            -  |--js/
            -  |  |--materialize.js
            -  |
            -  |--scss/
            -  |  |--materialize.scss
            -  |  |--components/
            -  |
            -  |--index.html
            -        
            -
            -
            - -
            - -
            - -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/grid.jade b/node_modules/materialize-css/jade/grid.jade deleted file mode 100644 index 72c9700..0000000 --- a/node_modules/materialize-css/jade/grid.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Grid" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/grid_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/helpers.jade b/node_modules/materialize-css/jade/helpers.jade deleted file mode 100644 index 907b022..0000000 --- a/node_modules/materialize-css/jade/helpers.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Helpers" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/helpers_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/icons.jade b/node_modules/materialize-css/jade/icons.jade deleted file mode 100644 index 8308b5b..0000000 --- a/node_modules/materialize-css/jade/icons.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Icons" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/icons_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/index.jade b/node_modules/materialize-css/jade/index.jade deleted file mode 100644 index 50dfc27..0000000 --- a/node_modules/materialize-css/jade/index.jade +++ /dev/null @@ -1,12 +0,0 @@ -- var no_nav = true - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include index/index_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/index/index_content.html b/node_modules/materialize-css/jade/index/index_content.html deleted file mode 100644 index 379a892..0000000 --- a/node_modules/materialize-css/jade/index/index_content.html +++ /dev/null @@ -1,84 +0,0 @@ -
            -
            -

            Materialize

            -
            -

            A modern responsive front-end framework based on Material Design

            -
            - - - -
            - - -
            -
            - -
            -
            -
            -
            - Latest Commit on Github: -    - -    - - Github -
            -
            -
            -
            - -
            -
            - -
            -
            -
            - -
            -
            - -
            -

            Materialize simplifies life for developers and the users they serve.

            -
            - - -
            -
            -
            - flash_on -

            Speeds up development

            -

            We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

            -
            -
            - -
            -
            - group -

            User Experience Focused

            -

            By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

            -
            -
            - -
            -
            - settings -

            Easy to work with

            -

            We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

            -
            -
            -
            - -
            -
            -
            -
            -

            Materialize Showcase

            -

            Checkout what people are creating with Materialize. Get inspired by these beautiful sites and you can even submit your own website to be showcased here.

            - Explore our Showcase -
            -
            -
            - diff --git a/node_modules/materialize-css/jade/lunr.min.js b/node_modules/materialize-css/jade/lunr.min.js deleted file mode 100644 index 6aa6bc7..0000000 --- a/node_modules/materialize-css/jade/lunr.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.12 - * Copyright (C) 2015 Oliver Nightingale - * MIT Licensed - * @license - */ -!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.12",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=y,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=g,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=g,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=g,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==e?e:void 0},t.stopWordFilter.stopWords={a:"a",able:"able",about:"about",across:"across",after:"after",all:"all",almost:"almost",also:"also",am:"am",among:"among",an:"an",and:"and",any:"any",are:"are",as:"as",at:"at",be:"be",because:"because",been:"been",but:"but",by:"by",can:"can",cannot:"cannot",could:"could",dear:"dear",did:"did","do":"do",does:"does",either:"either","else":"else",ever:"ever",every:"every","for":"for",from:"from",get:"get",got:"got",had:"had",has:"has",have:"have",he:"he",her:"her",hers:"hers",him:"him",his:"his",how:"how",however:"however",i:"i","if":"if","in":"in",into:"into",is:"is",it:"it",its:"its",just:"just",least:"least",let:"let",like:"like",likely:"likely",may:"may",me:"me",might:"might",most:"most",must:"must",my:"my",neither:"neither",no:"no",nor:"nor",not:"not",of:"of",off:"off",often:"often",on:"on",only:"only",or:"or",other:"other",our:"our",own:"own",rather:"rather",said:"said",say:"say",says:"says",she:"she",should:"should",since:"since",so:"so",some:"some",than:"than",that:"that",the:"the",their:"their",them:"them",then:"then",there:"there",these:"these",they:"they","this":"this",tis:"tis",to:"to",too:"too",twas:"twas",us:"us",wants:"wants",was:"was",we:"we",were:"were",what:"what",when:"when",where:"where",which:"which","while":"while",who:"who",whom:"whom",why:"why",will:"will","with":"with",would:"would",yet:"yet",you:"you",your:"your"},t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){var e=t.replace(/^\W+/,"").replace(/\W+$/,"");return""===e?void 0:e},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n -
            -
            - - - - - -
            -

            Toast

            -

            Swipe to Dismiss

            -

            On all devices, you can swipe to dismiss toasts.

            - - -
            -
            -
            -
            -
            - - -
            -
            - -
            -
            -
            -
            diff --git a/node_modules/materialize-css/jade/modals.jade b/node_modules/materialize-css/jade/modals.jade deleted file mode 100644 index 21d7d07..0000000 --- a/node_modules/materialize-css/jade/modals.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Modals" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/modals_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/navbar.jade b/node_modules/materialize-css/jade/navbar.jade deleted file mode 100644 index ce17736..0000000 --- a/node_modules/materialize-css/jade/navbar.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Navbar" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/navbar_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/404_content.html b/node_modules/materialize-css/jade/page-contents/404_content.html deleted file mode 100644 index cf3b410..0000000 --- a/node_modules/materialize-css/jade/page-contents/404_content.html +++ /dev/null @@ -1,33 +0,0 @@ -
            -
            -
            -
            -

            404

            -

            Page not found.

            -
            -
            -
            - - -
            -
            -
            -
            -
            - -
            - -
            - -
            - -
            -

            Are You Lost?

            -

            The page you were looking for does not exist. If you think this is a mistake and one of our pages has gone missing, throw us an email or send us a tweet. Click below to learn more about our CSS framework.

            - Learn More -
            - -
            - -
            -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/badges_content.html b/node_modules/materialize-css/jade/page-contents/badges_content.html deleted file mode 100644 index 4e3c7f9..0000000 --- a/node_modules/materialize-css/jade/page-contents/badges_content.html +++ /dev/null @@ -1,196 +0,0 @@ -
            -
            - -
            - - -
            - -
            -
            -

            Badges can notify you that there are new or unread messages or notifications. Add the new class to the badge to give it the background.

            - -

            Collections

            - -
            - 1Alan - 4Alan - Alan - 14Alan -
            -
            
            -  <div class="collection">
            -    <a href="#!" class="collection-item"><span class="badge">1</span>Alan</a>
            -    <a href="#!" class="collection-item"><span class="new badge">4</span>Alan</a>
            -    <a href="#!" class="collection-item">Alan</a>
            -    <a href="#!" class="collection-item"><span class="badge">14</span>Alan</a>
            -  </div>
            -            
            -
            -
            -
            - - - - - -
            -
            -
            - -

            Badges in Collapsibles

            - -
              -
            • -
              4filter_dramaFirst
              -

              Lorem ipsum dolor sit amet.

              -
            • -
            • -
              1placeSecond
              -

              Lorem ipsum dolor sit amet.

              -
            • -
            -
            - -
            
            -<ul class="collapsible" data-collapsible="accordion">
            -  <li>
            -    <div class="collapsible-header"><span class="new badge">4</span><i class="material-icons">filter_drama</i>First</div>
            -    <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
            -  </li>
            -  <li>
            -    <div class="collapsible-header"><span class="badge">1</span><i class="material-icons">place</i>Second</div>
            -    <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
            -  </li>
            -</ul>
            - -
            -
            -
            - -
            - -
            -
            -

            Options

            -

            You can customize captions in many ways.

            -
            -
            - -
            -
            Custom Caption
            - -
            -

            You can explicitly set the caption in a badge using the data-badge-caption attribute.

            -
            
            -  <span class="new badge" data-badge-caption="custom caption">4</span>
            -  <span class="badge" data-badge-caption="custom caption">4</span>
            -            
            -
            -
            - -
            -
            Colors
            -
            -
            - Red4 - Blue4 -
            -
            -
            -

            You can use our color classes to set the background-color of the badge.

            -
            
            -  <span class="new badge red">4</span>
            -  <span class="new badge blue">4</span>
            -            
            -
            -
            - -
            - - - -
            - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/breadcrumbs_content.html b/node_modules/materialize-css/jade/page-contents/breadcrumbs_content.html deleted file mode 100644 index 7553c21..0000000 --- a/node_modules/materialize-css/jade/page-contents/breadcrumbs_content.html +++ /dev/null @@ -1,61 +0,0 @@ -
            -
            - -
            - - -
            - -
            -
            -

            Breadcrumbs are a good way to display your current location. This is usually used when you have multiple layers of content.

            -

            Basic

            - - - -

            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <div class="col s12">
            -        <a href="#!" class="breadcrumb">First</a>
            -        <a href="#!" class="breadcrumb">Second</a>
            -        <a href="#!" class="breadcrumb">Third</a>
            -      </div>
            -    </div>
            -  </nav>
            -            
            -
            -
            -
            -
            - - - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/buttons_content.html b/node_modules/materialize-css/jade/page-contents/buttons_content.html deleted file mode 100644 index e18f381..0000000 --- a/node_modules/materialize-css/jade/page-contents/buttons_content.html +++ /dev/null @@ -1,207 +0,0 @@ -
            -
            - -
            -
            -

            - There are 3 main button types described in material design. The raised button is a standard button that signify actions and seek to give depth to a mostly flat page. The floating circular action button is meant for very important functions. Flat buttons are usually used within elements that already have depth like cards or modals. -

            -

            Raised

            - button - cloudbutton - cloudbutton -
            
            -<a class="waves-effect waves-light btn">button</a>
            -<a class="waves-effect waves-light btn"><i class="material-icons left">cloud</i>button</a>
            -<a class="waves-effect waves-light btn"><i class="material-icons right">cloud</i>button</a>
            -        
            -
            -
            -

            Floating

            - add

            -
            
            -  <a class="btn-floating btn-large waves-effect waves-light red"><i class="material-icons">add</i></a>
            -        
            -
            - -

            Fixed Action Button

            -

            If you want a fixed floating action button, you can add multiple actions that will appear on hover. Our demo is in the bottom righthand corner of the page.

            -
            
            -  <div class="fixed-action-btn">
            -    <a class="btn-floating btn-large red">
            -      <i class="large material-icons">mode_edit</i>
            -    </a>
            -    <ul>
            -      <li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
            -      <li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
            -      <li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
            -      <li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
            -    </ul>
            -  </div>
            -        
            - -

            You can also open and close the Fixed Action Button Menu programatically.

            -
            
            -  $('.fixed-action-btn').openFAB();
            -  $('.fixed-action-btn').closeFAB();
            -  $('.fixed-action-btn.toolbar').openToolbar();
            -  $('.fixed-action-btn.toolbar').closeToolbar();
            -        
            -
            -

            Horizontal FAB

            -

            Creating a horizontal FAB is easy! Just add the class horizontal to the FAB.

            - -
            
            -  <div class="fixed-action-btn horizontal">
            -    <a class="btn-floating btn-large red">
            -      <i class="large material-icons">mode_edit</i>
            -    </a>
            -    <ul>
            -      <li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
            -      <li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
            -      <li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
            -      <li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
            -    </ul>
            -  </div>
            -        
            - - -
            - -

            Click-only FAB

            -

            If you want to disable the hover behaviour, and instead toggle the FAB menu when the user clicks on the large button (works great on mobile!), just add the click-to-toggle class to the FAB.

            - -
            
            -  <div class="fixed-action-btn horizontal click-to-toggle">
            -    <a class="btn-floating btn-large red">
            -      <i class="material-icons">menu</i>
            -    </a>
            -    <ul>
            -      <li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
            -      <li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
            -      <li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
            -      <li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
            -    </ul>
            -  </div>
            -        
            - -

            FAB to Toolbar

            -

            Instead of displaying individual button options, you can transition your FAB into a toolbar on click. Just add the toolbar class to the FAB.

            - -
            
            -  <div class="fixed-action-btn toolbar">
            -    <a class="btn-floating btn-large red">
            -      <i class="large material-icons">mode_edit</i>
            -    </a>
            -    <ul>
            -      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">insert_chart</i></a></li>
            -      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">format_quote</i></a></li>
            -      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">publish</i></a></li>
            -      <li class="waves-effect waves-light"><a href="#!"><i class="material-icons">attach_file</i></a></li>
            -    </ul>
            -  </div>
            -        
            - -
            -
            -

            Flat

            -

            Flat buttons are used to reduce excessive layering. For example, flat buttons are usually used for actions within a card or modal so there aren't too many overlapping shadows.

            - Button -
            
            -  <a class="waves-effect waves-teal btn-flat">Button</a>
            -        
            -
            -
            -

            Submit Button

            -

            When you use a button to submit a form, instead of using a input tag, use a button tag with a type submit

            - -
            
            -  <button class="btn waves-effect waves-light" type="submit" name="action">Submit
            -    <i class="material-icons right">send</i>
            -  </button>
            -        
            -
            -
            -

            Large

            -

            This button has a larger height for buttons that need more attention.

            - Button - cloudbutton - cloudbutton -
            
            -<a class="waves-effect waves-light btn-large">Button</a>
            -<a class="waves-effect waves-light btn-large"><i class="material-icons left">cloud</i>button</a>
            -<a class="waves-effect waves-light btn-large"><i class="material-icons right">cloud</i>button</a>
            -        
            -
            -
            -

            Disabled

            -

            This style can be applied to all button types

            - Button - Button - Button - add -
            
            -<a class="btn-large disabled">Button</a>
            -<a class="btn disabled">Button</a>
            -<a class="btn-flat disabled">Button</a>
            -<a class="btn-floating disabled"><i class="material-icons">add</i></a>
            -        
            -
            - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/cards_content.html b/node_modules/materialize-css/jade/page-contents/cards_content.html deleted file mode 100644 index c212d98..0000000 --- a/node_modules/materialize-css/jade/page-contents/cards_content.html +++ /dev/null @@ -1,566 +0,0 @@ -
            -
            - -
            - - -
            -

            Cards are a convenient means of displaying content composed of different types of objects. They’re also well-suited for presenting similar objects whose size or supported actions can vary considerably, like photos with captions of variable length.

            -

            Basic Card

            -
            -
            - -
            -
            - Card Title -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            -
            - -
            -
            -
            
            -      <div class="row">
            -        <div class="col s12 m6">
            -          <div class="card blue-grey darken-1">
            -            <div class="card-content white-text">
            -              <span class="card-title">Card Title</span>
            -              <p>I am a very simple card. I am good at containing small bits of information.
            -              I am convenient because I require little markup to use effectively.</p>
            -            </div>
            -            <div class="card-action">
            -              <a href="#">This is a link</a>
            -              <a href="#">This is a link</a>
            -            </div>
            -          </div>
            -        </div>
            -      </div>
            -            
            -
            -
            -
            -
            - -
            -
            - -
            -

            Image Card

            -
            -
            - - Card Title -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            -
            -
            -



            -

            - Here is the standard card with an image thumbnail. -

            -
            -
            -
            -
            
            -      <div class="row">
            -        <div class="col s12 m7">
            -          <div class="card">
            -            <div class="card-image">
            -              <img src="images/sample-1.jpg">
            -              <span class="card-title">Card Title</span>
            -            </div>
            -            <div class="card-content">
            -              <p>I am a very simple card. I am good at containing small bits of information.
            -              I am convenient because I require little markup to use effectively.</p>
            -            </div>
            -            <div class="card-action">
            -              <a href="#">This is a link</a>
            -            </div>
            -          </div>
            -        </div>
            -      </div>
            -            
            -
            -
            -
            -
            - -
            -
            - -
            -

            FABs in Cards

            -
            -
            - - Card Title - add -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            -
            -
            -
            -



            -

            - Here is an image card with a Floating Action Button. -

            -
            -
            -
            -
            -
            -
            - - add -
            -
            - Card Title -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            -
            -
            -
            -

            - Here is an image card with a large Floating Action Button. -

            -
            -
            -
            -
            
            -  <div class="row">
            -    <div class="col s12 m6">
            -      <div class="card">
            -        <div class="card-image">
            -          <img src="images/sample-1.jpg">
            -          <span class="card-title">Card Title</span>
            -          <a class="btn-floating halfway-fab waves-effect waves-light red"><i class="material-icons">add</i></a>
            -        </div>
            -        <div class="card-content">
            -          <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</p>
            -        </div>
            -      </div>
            -    </div>
            -  </div>
            -            
            -
            -
            -
            -
            - -
            -
            - -
            -

            Horizontal Card

            -
            -
            - -
            -
            -
            -

            I am a very simple card. I am good at containing small bits of information.

            -
            - -
            -
            -
            -
            -



            -

            - Here is the standard card with a horizontal image. -

            -
            -
            -
            -
            
            -  <div class="col s12 m7">
            -    <h2 class="header">Horizontal Card</h2>
            -    <div class="card horizontal">
            -      <div class="card-image">
            -        <img src="http://lorempixel.com/100/190/nature/6">
            -      </div>
            -      <div class="card-stacked">
            -        <div class="card-content">
            -          <p>I am a very simple card. I am good at containing small bits of information.</p>
            -        </div>
            -        <div class="card-action">
            -          <a href="#">This is a link</a>
            -        </div>
            -      </div>
            -    </div>
            -  </div>
            -            
            -
            -
            -
            -
            - -
            -
            - -
            -

            Card Reveal

            -
            -
            - -
            -
            - Card Titlemore_vert - -

            This is a link

            -
            -
            - Card Titleclose -

            Here is some more information about this product that is only revealed once clicked on.

            -
            -
            -
            -
            -



            -

            - Here you can add a card that reveals more information once clicked. Just add the card-reveal div with a span.card-title inside to make this work. Add the class activator to an element inside the card to allow it to open the card reveal. -

            -
            -
            -
            -
            
            -  <div class="card">
            -    <div class="card-image waves-effect waves-block waves-light">
            -      <img class="activator" src="images/office.jpg">
            -    </div>
            -    <div class="card-content">
            -      <span class="card-title activator grey-text text-darken-4">Card Title<i class="material-icons right">more_vert</i></span>
            -      <p><a href="#">This is a link</a></p>
            -    </div>
            -    <div class="card-reveal">
            -      <span class="card-title grey-text text-darken-4">Card Title<i class="material-icons right">close</i></span>
            -      <p>Here is some more information about this product that is only revealed once clicked on.</p>
            -    </div>
            -  </div>
            -            
            -
            -
            -
            -
            -

            Card Action Options

            -
            -
            - -
            -
            - Card Titlemore_vert - -

            This is a link

            -
            -
            - Card Titleclose -

            Here is some more information about this product that is only revealed once clicked on.

            -
            - - -
            -
            -
            -

            -

            - The default state is having the card-reveal go over the card-action. -

            -
            -
            -
            -
            -
            -
            - -
            -
            - Card Titlemore_vert - -

            This is a link

            -
            - - - -
            - Card Titleclose -

            Here is some more information about this product that is only revealed once clicked on.

            -
            -
            -
            -
            -

            - You can make your card-action always visible by adding the class sticky-action to the overall card. -

            -
            -
            -
            -
            
            -  <div class="card sticky-action">
            -    ...
            -
            -    <div class="card-action">...</div>
            -
            -    <div class="card-reveal">...</div>
            -  </div>
            -            
            -
            -
            -
            - - -
            -
            - -
            -

            Tabs in Cards

            -

            - You can add tabs to your cards by adding a dividing cards-tabs div inbetween your header content and your tab content. -

            -
            
            -  <div class="card">
            -    <div class="card-content">
            -      <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</p>
            -    </div>
            -    <div class="card-tabs">
            -      <ul class="tabs tabs-fixed-width">
            -        <li class="tab"><a href="#test4">Test 1</a></li>
            -        <li class="tab"><a class="active" href="#test5">Test 2</a></li>
            -        <li class="tab"><a href="#test6">Test 3</a></li>
            -      </ul>
            -    </div>
            -    <div class="card-content grey lighten-4">
            -      <div id="test4">Test 1</div>
            -      <div id="test5">Test 2</div>
            -      <div id="test6">Test 3</div>
            -    </div>
            -  </div>
            -
            -
            -
            -
            -

            White

            -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            -
            - -
            -
            -
            Test 1
            -
            Test 2
            -
            Test 3
            -
            -
            -
            -
            -

            -

            - Basic white background card with tabs. -

            -
            -
            -
            -
            -

            Colored

            -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            -
            - -
            -
            -
            Test 1
            -
            Test 2
            -
            Test 3
            -
            -
            -
            -
            -

            -

            - Colored or dark background card with tabs. -

            -
            -
            -
            - - -
            -
            - -
            -

            Card Sizes

            -

            If you want to have uniformly sized cards, you can use our premade size classes. Just add the size class in addition to the card class.

            -
            
            -  <div class="card small">
            -    <!-- Card Content -->
            -  </div>
            -            
            -
            -
            -
            -
            -

            Small

            -
            -
            - - Card Title -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            -
            -
            -

            -

            - The Small Card limits the height of the card to 300px. -

            -
            -
            - -
            -
            -

            Medium

            -
            -
            - - Card Title -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            -
            -
            -

            -

            - The Medium Card limits the height of the card to 400px. -

            -
            -
            - -
            -
            -

            Large

            -
            -
            - - Card Title -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            -
            -
            -

            -

            - The Large Card limits the height of the card to 500px. -

            -
            -
            -
            - - -
            -
            - -
            -

            Card Panel

            -
            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks. -
            -
            -
            -



            -

            - For a simpler card with less markup, try using a card panel which just has padding and a shadow effect -

            -
            -
            -
            -
            
            -    <div class="row">
            -      <div class="col s12 m5">
            -        <div class="card-panel teal">
            -          <span class="white-text">I am a very simple card. I am good at containing small bits of information.
            -          I am convenient because I require little markup to use effectively. I am similar to what is called a panel in other frameworks.
            -          </span>
            -        </div>
            -      </div>
            -    </div>
            -            
            -
            -
            -
            - - -
            - - - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/carousel_content.html b/node_modules/materialize-css/jade/page-contents/carousel_content.html deleted file mode 100644 index 7d4be4d..0000000 --- a/node_modules/materialize-css/jade/page-contents/carousel_content.html +++ /dev/null @@ -1,203 +0,0 @@ -
            -
            -
            - - -
            -

            Introduction

            -

            Our Carousel is a robust and versatile component that can be an image slider, to an item carousel, to an onboarding experience. It is touch enabled making it especially smooth to use on mobile.

            -

            Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.


            - -
            - -
            
            -  <div class="carousel">
            -    <a class="carousel-item" href="#one!"><img src="http://lorempixel.com/250/250/nature/1"></a>
            -    <a class="carousel-item" href="#two!"><img src="http://lorempixel.com/250/250/nature/2"></a>
            -    <a class="carousel-item" href="#three!"><img src="http://lorempixel.com/250/250/nature/3"></a>
            -    <a class="carousel-item" href="#four!"><img src="http://lorempixel.com/250/250/nature/4"></a>
            -    <a class="carousel-item" href="#five!"><img src="http://lorempixel.com/250/250/nature/5"></a>
            -  </div>
            -      
            -
            - - -
            -

            jQuery Initialization

            -
            
            -    $(document).ready(function(){
            -      $('.carousel').carousel();
            -    });
            -        
            -
            - -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            durationTransition duration in milliseconds. (Default: 200)
            distPerspective zoom. If 0, all items are the same size. (Default: -100)
            shiftSet the spacing of the center item. (Default: 0)
            paddingSet the padding between non center items. (Default: 0)
            fullWidthMake the carousel a full width slider like the second example. (Default: false)
            indicatorsSet to true to show indicators. (Default: false)
            noWrapDon't wrap around and cycle through items. (Default: false)
            -
            - -

            jQuery Plugin Methods

            -

            We have methods to pause, start, move to next and move to previous slide.

            -
            
            -// Next slide
            -$('.carousel').carousel('next');
            -$('.carousel').carousel('next', 3); // Move next n times.
            -// Previous slide
            -$('.carousel').carousel('prev');
            -$('.carousel').carousel('prev', 4); // Move prev n times.
            -// Set to nth slide
            -$('.carousel').carousel('set', 4);
            -      
            -
            - - -
            -

            Full Width Slider

            -

            Our carousel has a full width option that makes it into a simple and elegant image carousel. You can also have indicators that show up on the bottom of the slider.

            -

            Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.


            - -
            - -
            
            -  <div class="carousel carousel-slider">
            -    <a class="carousel-item" href="#one!"><img src="http://lorempixel.com/800/400/food/1"></a>
            -    <a class="carousel-item" href="#two!"><img src="http://lorempixel.com/800/400/food/2"></a>
            -    <a class="carousel-item" href="#three!"><img src="http://lorempixel.com/800/400/food/3"></a>
            -    <a class="carousel-item" href="#four!"><img src="http://lorempixel.com/800/400/food/4"></a>
            -  </div>
            -        
            - -
            
            -  $('.carousel.carousel-slider').carousel({fullWidth: true});
            -        
            -
            - - -
            -

            Special Options

            -

            The carousel doesn't only support images but also allows you to make content carousels. You can add fixed items to your carousel by adding a div with the class carousel-fixed-item and adding your fixed content in there.

            -

            Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.

            -
            - -
            -
            
            -  <div class="carousel carousel-slider center" data-indicators="true">
            -    <div class="carousel-fixed-item center">
            -      <a class="btn waves-effect white grey-text darken-text-2">button</a>
            -    </div>
            -    <div class="carousel-item red white-text" href="#one!">
            -      <h2>First Panel</h2>
            -      <p class="white-text">This is your first panel</p>
            -    </div>
            -    <div class="carousel-item amber white-text" href="#two!">
            -      <h2>Second Panel</h2>
            -      <p class="white-text">This is your second panel</p>
            -    </div>
            -    <div class="carousel-item green white-text" href="#three!">
            -      <h2>Third Panel</h2>
            -      <p class="white-text">This is your third panel</p>
            -    </div>
            -    <div class="carousel-item blue white-text" href="#four!">
            -      <h2>Fourth Panel</h2>
            -      <p class="white-text">This is your fourth panel</p>
            -    </div>
            -  </div>
            -        
            -
            
            -  $('.carousel.carousel-slider').carousel({fullWidth: true});
            -        
            -
            - -
            - - - - - -
            - -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/chips_content.html b/node_modules/materialize-css/jade/page-contents/chips_content.html deleted file mode 100644 index dd64e3f..0000000 --- a/node_modules/materialize-css/jade/page-contents/chips_content.html +++ /dev/null @@ -1,239 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            - Chips can be used to represent small blocks of information. They are most commonly used either for contacts or for tags. -

            -
            - Contact Person - Jane Doe -
            -
            - Tag - close -
            -
            - -
            -

            Contacts

            -

            - To create a contact chip just add an img inside. -

            -
            
            -  <div class="chip">
            -    <img src="images/yuna.jpg" alt="Contact Person">
            -    Jane Doe
            -  </div>
            -        
            -
            - -
            -

            Tags

            -

            - To create a tag chip just add an close icon inside with the class close. -

            -
            
            -  <div class="chip">
            -    Tag
            -    <i class="close material-icons">close</i>
            -  </div>
            -        
            -
            - -
            -

            Javascript Plugin Usage

            -

            To add tags, just enter your tag text and press enter. You can delete them by clicking on the close icon or by using your delete button.

            -
            -
            -

            Set initial tags.

            -
            -
            -

            Use placeholders and override hint texts.

            -
            -
            -

            Use autocomplete with chips.

            -
            -
            - -
            -

            Markup

            -
            
            -  <div class="chips"></div>
            -  <div class="chips chips-initial"></div>
            -  <div class="chips chips-placeholder"></div>
            -  <div class="chips chips-autocomplete"></div>
            -        
            -

            jQuery Initialization

            -
            
            -  $('.chips').material_chip();
            -  $('.chips-initial').material_chip({
            -    data: [{
            -      tag: 'Apple',
            -    }, {
            -      tag: 'Microsoft',
            -    }, {
            -      tag: 'Google',
            -    }],
            -  });
            -  $('.chips-placeholder').material_chip({
            -    placeholder: 'Enter a tag',
            -    secondaryPlaceholder: '+Tag',
            -  });
            -  $('.chips-autocomplete').material_chip({
            -    autocompleteData: {
            -      'Apple': null,
            -      'Microsoft': null,
            -      'Google': null
            -    }
            -  });
            -        
            -

            Chip data object

            -
            
            -  var chip = {
            -    tag: 'chip content',
            -    image: '', //optional
            -    id: 1, //optional
            -  };
            -        
            - -
            -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Option NameTypeDescription
            dataarraySet the chip data (look at the Chip data object)
            placeholderstringSet first placeholder when there are no tags.
            secondaryPlaceholderstringSet second placeholder when adding additional tags.
            autocompleteDataObjectSet autocomplete data.
            autocompleteLimitIntegerSet autocomplete limit.
            -
            - -
            -

            Events

            -

            Material chips exposes a few events for hooking - into chips functionality. -

            - - - - - - - - - - - - - - - - - - - - - -
            EventDescription
            chips.addthis method is triggered when a chip is added.
            chips.deletethis method is triggered when a chip is deleted.
            chips.selectthis method is triggered when a chip is selected.
            - -

            - -
            
            -  $('.chips').on('chip.add', function(e, chip){
            -    // you have the added chip here
            -  });
            -
            -  $('.chips').on('chip.delete', function(e, chip){
            -    // you have the deleted chip here
            -  });
            -
            -  $('.chips').on('chip.select', function(e, chip){
            -    // you have the selected chip here
            -  });
            -        
            - -
            -
            -

            Methods

            -

            - Use these methods to access the chip data. -

            - - - - - - - - - - - - - -
            ParameterDescription
            dataIt returns the stored data.
            - -

            - -
            
            -  $('.chips-initial').material_chip('data');
            -        
            - -
            -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/collapsible_content.html b/node_modules/materialize-css/jade/page-contents/collapsible_content.html deleted file mode 100644 index aacbe95..0000000 --- a/node_modules/materialize-css/jade/page-contents/collapsible_content.html +++ /dev/null @@ -1,198 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            - Collapsibles are accordion elements that expand when clicked on. They allow you to hide content that is not immediately relevant to the user. - -

              -
            • -
              filter_dramaFirst
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              placeSecond
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              whatshotThird
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            -
            - -
            -

            Popout

            -

            - To create a popout collapsible, just add the class popout. - -

              -
            • -
              subtitlesFirst
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              gamesSecond
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              library_booksThird
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            -
            
            -  <ul class="collapsible popout" data-collapsible="accordion">
            -        
            -
            - - - -
            -

            Collapsible HTML Structure

            -
            
            -  <ul class="collapsible" data-collapsible="accordion">
            -    <li>
            -      <div class="collapsible-header"><i class="material-icons">filter_drama</i>First</div>
            -      <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
            -    </li>
            -    <li>
            -      <div class="collapsible-header"><i class="material-icons">place</i>Second</div>
            -      <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
            -    </li>
            -    <li>
            -      <div class="collapsible-header"><i class="material-icons">whatshot</i>Third</div>
            -      <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
            -    </li>
            -  </ul>
            -        
            -
            - -
            -

            Initialization

            - Collapsible elements only need initialization if they are added dynamically. You can also pass in options inside the initialization, however this can be done in the HTML markup as well. -
            
            -  $(document).ready(function(){
            -    $('.collapsible').collapsible();
            -  });
            -        
            - -

            -
            Preselected Section
            - If you want a collapsible with a preopened section just add the active class to the collapsible-header. -
              -
            • -
              filter_dramaFirst
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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. Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              placeSecond
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              whatshotThird
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            -
            
            -  <div class="collapsible-header active"><i class="mdi-maps-place"></i>Second</div>
            -        
            -
            - -
            -

            Options

            - You can customize the behavior of each collapsible using these options. For example, you can call a custom function to run when a collapsbile is opened or closed. The function passes the li element that was opened or closed as an argument. -
            
            -  $('.collapsible').collapsible({
            -    accordion: false, // A setting that changes the collapsible behavior to expandable instead of the default accordion style
            -    onOpen: function(el) { alert('Open'); }, // Callback for Collapsible open
            -    onClose: function(el) { alert('Closed'); } // Callback for Collapsible close
            -  });
            -        
            -

            - -

            Collapsible Types

            - There are two ways a collapsible can behave. It can either allow multiple sections to stay open, or it can only allow one section to stay open at a time, which is called an accordion. See below for a demo of each type -
            -
            -
            -
            Accordion
            -
            -
              -
            • -
              filter_dramaFirst
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              placeSecond
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              whatshotThird
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            -
            -
            - This is default behavior, but you can explicitly set it by setting the data-collapsible attribute in HTML. -
            
            -    <ul class="collapsible" data-collapsible="accordion">
            -            
            -
            -
            -
            -
            -
            -
            Expandable
            -
            -
              -
            • -
              filter_dramaFirst
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              placeSecond
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            • -
              whatshotThird
              -
              Lorem ipsum dolor sit amet, consectetur adipiscing 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.
              -
            • -
            -
            -
            -
            
            -  <ul class="collapsible" data-collapsible="expandable">
            -            
            -
            -
            -
            - -
            - - - - - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/collections_content.html b/node_modules/materialize-css/jade/page-contents/collections_content.html deleted file mode 100644 index c0ee638..0000000 --- a/node_modules/materialize-css/jade/page-contents/collections_content.html +++ /dev/null @@ -1,232 +0,0 @@ -
            -
            - -
            - - -
            - -
            -
            -

            Collections allow you to group list objects together.

            -

            Basic

            -
              -
            • Alvin
            • -
            • Alvin
            • -
            • Alvin
            • -
            • Alvin
            • -
            -
            
            -    <ul class="collection">
            -      <li class="collection-item">Alvin</li>
            -      <li class="collection-item">Alvin</li>
            -      <li class="collection-item">Alvin</li>
            -      <li class="collection-item">Alvin</li>
            -    </ul>
            -            
            -
            -
            -
            -
            - - - -
            -
            -
            -

            Headers

            -
              -
            • First Names

            • -
            • Alvin
            • -
            • Alvin
            • -
            • Alvin
            • -
            • Alvin
            • -
            -
            
            -      <ul class="collection with-header">
            -        <li class="collection-header"><h4>First Names</h4></li>
            -        <li class="collection-item">Alvin</li>
            -        <li class="collection-item">Alvin</li>
            -        <li class="collection-item">Alvin</li>
            -        <li class="collection-item">Alvin</li>
            -      </ul>
            -            
            -
            -
            -
            - - -
            -
            -
            -

            Secondary content

            - -
            
            -      <ul class="collection with-header">
            -        <li class="collection-header"><h4>First Names</h4></li>
            -        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -        <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -      </ul>
            -            
            -
            - -
            -
            - -
            -
            -
            -

            Avatar Content

            -
              -
            • - - Title -

              First Line
              - Second Line -

              - grade -
            • -
            • - folder - Title -

              First Line
              - Second Line -

              - grade -
            • -
            • - insert_chart - Title -

              First Line
              - Second Line -

              - grade -
            • -
            • - play_arrow - Title -

              First Line
              - Second Line -

              - grade -
            • -
            -
            
            -  <ul class="collection">
            -    <li class="collection-item avatar">
            -      <img src="images/yuna.jpg" alt="" class="circle">
            -      <span class="title">Title</span>
            -      <p>First Line <br>
            -         Second Line
            -      </p>
            -      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
            -    </li>
            -    <li class="collection-item avatar">
            -      <i class="material-icons circle">folder</i>
            -      <span class="title">Title</span>
            -      <p>First Line <br>
            -         Second Line
            -      </p>
            -      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
            -    </li>
            -    <li class="collection-item avatar">
            -      <i class="material-icons circle green">insert_chart</i>
            -      <span class="title">Title</span>
            -      <p>First Line <br>
            -         Second Line
            -      </p>
            -      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
            -    </li>
            -    <li class="collection-item avatar">
            -      <i class="material-icons circle red">play_arrow</i>
            -      <span class="title">Title</span>
            -      <p>First Line <br>
            -         Second Line
            -      </p>
            -      <a href="#!" class="secondary-content"><i class="material-icons">grade</i></a>
            -    </li>
            -  </ul>
            -            
            -
            - -
            -
            - -
            -
            -
            -

            Dismissable Content

            -

            You can just add the class dismissable to enable each collection item to be swiped away. This is only for touch enabled devices.

            - -
            
            -      <ul class="collection">
            -        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -        <li class="collection-item dismissable"><div>Alvin<a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
            -      </ul>
            -            
            -
            - -
            -
            - - - -
            - - - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/color_content.html b/node_modules/materialize-css/jade/page-contents/color_content.html deleted file mode 100644 index b5a7e62..0000000 --- a/node_modules/materialize-css/jade/page-contents/color_content.html +++ /dev/null @@ -1,381 +0,0 @@ -
            -
            - -
            - -
            -

            Usage

            -

            - Here is a color palette based on the material design base colors. Each of these colors is defined with a base color class and an optional lighten or darken class. -

            -
            -
            Background Color
            -
            -

            To apply a background color, just add the color name and light/darkness as a class to the element.

            -
            This is a card panel with a teal lighten-2 class
            -
            
            -    <div class="card-panel teal lighten-2">This is a card panel with a teal lighten-2 class</div>
            -            
            -
            - -
            - -
            Text Color
            -
            -

            To apply a text color, just append -text to the color class like this:

            -
            This is a card panel with dark blue text
            -
            
            -    <div class="card-panel">
            -      <span class="blue-text text-darken-2">This is a card panel with dark blue text</span>
            -    </div>
            -            
            -
            -
            -
            - -
            -

            Sass

            -

            - For background colors, you can apply the color simply by extending the classes like the example below. -

            -
            
            -  .ilike-blue-container {
            -    @extend .blue, .lighten-4;
            -  }
            -        
            - -

            - For changing text color, you can apply the color simply by extending the classes like the example below. -

            -
            
            -  .ilike-blue-container {
            -    @extend .blue-text, .text-lighten-4;
            -  }
            -        
            -
            -
            - -

            Color Palette

            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/css-transitions_content.html b/node_modules/materialize-css/jade/page-contents/css-transitions_content.html deleted file mode 100644 index bddb37f..0000000 --- a/node_modules/materialize-css/jade/page-contents/css-transitions_content.html +++ /dev/null @@ -1,47 +0,0 @@ -
            -
            - -
            - -
            -

            We've made some custom animation classes that will transition your content with only CSS. Each CSS transition consists of a base class that applies the necessary styles and additional classes that control the state of the transition.

            - -

            Scale

            -

            Use this scale in and out elements. Make sure to add the base transition class scale-transition. Then add the class scale-out to scale the element down until it is hidden. To start something as hidden, add the class scale-out first, and then add the class scale-in to scale the element up until it is shown.

            - - add - - Toggle Scale - -
            
            -  <!-- Scaled in -->
            -  <a id="scale-demo" href="#!" class="btn-floating btn-large scale-transition">
            -    <i class="material-icons">add</i>
            -  </a>
            -
            -  <!-- Scaled out -->
            -  <a id="scale-demo" href="#!" class="btn-floating btn-large scale-transition scale-out">
            -    <i class="material-icons">add</i>
            -  </a>
            -  
            -
            - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/dialogs_content.html b/node_modules/materialize-css/jade/page-contents/dialogs_content.html deleted file mode 100644 index c314d40..0000000 --- a/node_modules/materialize-css/jade/page-contents/dialogs_content.html +++ /dev/null @@ -1,133 +0,0 @@ -
            -
            -
            - -
            -

            Dialogs are content that are not originally visible on a page but show up with extra information if needed. The transitions should make the appearance of the dialog make sense and not jarring to the user.

            -

            Toasts

            -

            Materialize provides an easy way for you to send unobtrusive alerts to your users through toasts. These toasts are also placed and sized responsively, try it out by clicking the button below on different device sizes.

            - Toast! -

            To do this, call the Materialize.toast() function programatically in JavaScript.

            -
            
            -  // Materialize.toast(message, displayLength, className, completeCallback);
            -  Materialize.toast('I am a toast!', 4000) // 4000 is the duration of the toast
            -        
            -

            One way to add this into your application is to add this as an onclick event to a button

            -
            
            -  <a class="btn" onclick="Materialize.toast('I am a toast', 4000)">Toast!</a>
            -        
            - -

            Custom HTML

            -

            You can pass in an HTML String as the first argument as well. Take a look at the example below, where we pass in text as well as a flat button. If you call an external function instead of in-line JavaScript, you will not need to escape quotation marks.

            - Toast with Action -
            
            -  var $toastContent = $('<span>I am toast content</span>');
            -  Materialize.toast($toastContent, 5000);
            -        
            - -

            Callback

            -

            You can have the toast callback a function when it has been dismissed

            - Toast! -
            
            -  <a class="btn" onclick="Materialize.toast('I am a toast', 4000,'',function(){alert('Your toast was dismissed')})">Toast!</a>
            -        
            - -

            Styling Toasts

            -

            We've added the ability to customize your toasts easily. You can pass in classes as an optional parameter into the toast function. We've added a rounded class for you, but you can create your own CSS classes and apply them to toasts. Checkout out our full example below.

            - - Round Toast! - -
            
            -  Materialize.toast('I am a toast!', 3000, 'rounded') // 'rounded' is the class I'm applying to the toast
            -        
            -
            - - - - -
            -

            Tooltips

            - -

            Tooltips are small, interactive, textual hints for mainly graphical elements. When using icons for actions you can use a tooltip to give people clarification on its function.

            - - - -

            Add the Tooltipped class to your element and add either top, bottom, left, right on data-tooltip to control the position.

            -
            
            -  <!-- data-position can be : bottom, top, left, or right -->
            -  <!-- data-delay controls delay before tooltip shows (in milliseconds)-->
            -  <a class="btn tooltipped" data-position="bottom" data-delay="50" data-tooltip="I am tooltip">Hover me!</a>
            -        
            -
            -

            Initialization

            -

            Tooltips are initialized automatically, but if you have dynamically added tooltips, you will need to initialize them.

            -
            
            -  $(document).ready(function(){
            -    $('.tooltipped').tooltip({delay: 50});
            -  });
            -        

            - -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            delayDelay time before tooltip appears. (Default: 350)
            tooltipTooltip text. Can use custom HTML if you set the html option.
            positionSet the direction of the tooltip. 'top', 'right', 'bottom', 'left'. (Default: 'bottom')
            htmlAllow custom html inside the tooltip. (Default: false)
            - -
            -

            Removal

            -

            To remove the tooltip from the button, pass in 'remove' as the option to the tooltip function

            -
            
            -  // This will remove the tooltip functionality for the buttons on this page
            -  $('.tooltipped').tooltip('remove');
            -        
            -
            - -
            - - - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/dropdown_content.html b/node_modules/materialize-css/jade/page-contents/dropdown_content.html deleted file mode 100644 index 192f1e8..0000000 --- a/node_modules/materialize-css/jade/page-contents/dropdown_content.html +++ /dev/null @@ -1,138 +0,0 @@ -
            -
            -
            - -
            -

            Introduction

            -

            Add a dropdown list to any button. Make sure that the data-activates attribute matches the id in the <ul> tag.

            -

            You can add a divider with the <li class="divider"></li> tag.

            - Drop Me! - -
            
            -  <!-- Dropdown Trigger -->
            -  <a class='dropdown-button btn' href='#' data-activates='dropdown1'>Drop Me!</a>
            -
            -  <!-- Dropdown Structure -->
            -  <ul id='dropdown1' class='dropdown-content'>
            -    <li><a href="#!">one</a></li>
            -    <li><a href="#!">two</a></li>
            -    <li class="divider"></li>
            -    <li><a href="#!">three</a></li>
            -  </ul>
            -        
            -
            - -
            -

            Options

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            inDurationThe duration of the transition enter in milliseconds. Default: 300
            outDurationThe duration of the transition out in milliseconds. Default: 225
            constrainWidthIf true, constrainWidth to the size of the dropdown activator. Default: true
            hoverIf true, the dropdown will open on hover. Default: false
            gutterThis defines the spacing from the aligned edge. Default: 0
            belowOriginIf true, the dropdown will show below the activator. Default: false
            alignmentDefines the edge the menu is aligned to. Default: 'left'
            stopPropagationIf true, stops the event propagating from the dropdown origin click handler. Default: false
            -

            To use these inline you have to add them as data attributes. If you want more dynamic control, you can define them using the jQuery plugin below.

            -
            
            -  <a class='dropdown-button btn' data-beloworigin="true" href='#' data-activates='dropdown1'>Drop Me!</a>
            -        
            -
            - - - -
            -

            jQuery Plugin Initialization

            -

            Initialization for dropdowns is only necessary if you create them dynamically.

            -
            
            -  $('.dropdown-button').dropdown({
            -      inDuration: 300,
            -      outDuration: 225,
            -      constrainWidth: false, // Does not change width of dropdown to that of the activator
            -      hover: true, // Activate on hover
            -      gutter: 0, // Spacing from edge
            -      belowOrigin: false, // Displays dropdown below the button
            -      alignment: 'left' // Displays dropdown with edge aligned to the left of button
            -      stopPropagation: false // Stops event propagation
            -    }
            -  );
            -        
            - -

            - You can also open dropdowns programatically, the below code will make your modal open on document ready: -

            - -
            
            -  $('.dropdown-button').dropdown('open');
            -        
            - -

            - You can also close dropdowns programatically: -

            - -
            
            -  $('.dropdown-button').dropdown('close');
            -        
            -
            - - -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/footer_content.html b/node_modules/materialize-css/jade/page-contents/footer_content.html deleted file mode 100644 index 711a0a1..0000000 --- a/node_modules/materialize-css/jade/page-contents/footer_content.html +++ /dev/null @@ -1,108 +0,0 @@ -
            -
            - -
            - - - - - - -
            
            -  body {
            -    display: flex;
            -    min-height: 100vh;
            -    flex-direction: column;
            -  }
            -
            -  main {
            -    flex: 1 0 auto;
            -  }
            -      
            - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/forms_content.html b/node_modules/materialize-css/jade/page-contents/forms_content.html deleted file mode 100644 index a7a554b..0000000 --- a/node_modules/materialize-css/jade/page-contents/forms_content.html +++ /dev/null @@ -1,900 +0,0 @@ -
            -
            - -
            - -
            -

            - Forms are the standard way to receive user inputted data. The transitions and smoothness of these elements are very important because of the inherent user interaction associated with forms. -

            - -

            Input fields

            -

            Text fields allow user input. The border should light up simply and clearly indicating which field the user is currently editing. You must have a .input-field div wrapping your input and label. This helps our jQuery animate the label. This is only used in our Input and Textarea form elements.

            -

            The validate class leverages HTML5 validation and will add a valid and invalid class accordingly. If you don't want the Green and Red validation states, just remove the validate class from your inputs.

            -
            -
            -
            -
            -
            - - -
            -
            - - -
            -
            -
            -
            - - -
            -
            -
            -
            - - -
            -
            -
            -
            - - -
            -
            -
            -
            - This is an inline input field: -
            - - -
            -
            -
            -
            -
            -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s6">
            -          <input placeholder="Placeholder" id="first_name" type="text" class="validate">
            -          <label for="first_name">First Name</label>
            -        </div>
            -        <div class="input-field col s6">
            -          <input id="last_name" type="text" class="validate">
            -          <label for="last_name">Last Name</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input disabled value="I am not editable" id="disabled" type="text" class="validate">
            -          <label for="disabled">Disabled</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input id="password" type="password" class="validate">
            -          <label for="password">Password</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input id="email" type="email" class="validate">
            -          <label for="email">Email</label>
            -        </div>
            -      </div>
            -      <div class="row">
            -        <div class="col s12">
            -          This is an inline input field:
            -          <div class="input-field inline">
            -            <input id="email" type="email" class="validate">
            -            <label for="email" data-error="wrong" data-success="right">Email</label>
            -          </div>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        

            -

            Prefilling Text Inputs

            -

            If you are having trouble with the labels overlapping prefilled content, Try adding class="active" to the label.
            You can also call the function Materialize.updateTextFields(); to reinitialize all the Materialize labels on the page if you are dynamically adding inputs.

            -
            -
            - - -
            -
            - -
            
            -  <div class="row">
            -    <div class="input-field col s6">
            -      <input value="Alvin" id="first_name2" type="text" class="validate">
            -      <label class="active" for="first_name2">First Name</label>
            -    </div>
            -  </div>
            -        
            - -
            
            -  $(document).ready(function() {
            -    Materialize.updateTextFields();
            -  });
            -        
            - -

            Icon Prefixes

            -

            You can add an icon prefix to make the form input label even more clear. Just add an icon with the class prefix before the input and label.


            -
            -
            -
            -
            - account_circle - - -
            -
            - phone - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s6">
            -          <i class="material-icons prefix">account_circle</i>
            -          <input id="icon_prefix" type="text" class="validate">
            -          <label for="icon_prefix">First Name</label>
            -        </div>
            -        <div class="input-field col s6">
            -          <i class="material-icons prefix">phone</i>
            -          <input id="icon_telephone" type="tel" class="validate">
            -          <label for="icon_telephone">Telephone</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            - -

            Custom Error or Success Messages

            -

            You can add custom validation messages by adding either data-error or data-success attributes to your input field labels.


            -
            -
            -
            -
            - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <input id="email" type="email" class="validate">
            -          <label for="email" data-error="wrong" data-success="right">Email</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            - - -

            Changing colors

            -

            Here is a CSS template for modifying input fields in CSS. With Sass, you can achieve this by just changing a variable. The CSS shown below is unprefixed. Depending on what you use, you may have to change the type attribute selector.

            -
            
            -  /* label color */
            -   .input-field label {
            -     color: #000;
            -   }
            -   /* label focus color */
            -   .input-field input[type=text]:focus + label {
            -     color: #000;
            -   }
            -   /* label underline focus color */
            -   .input-field input[type=text]:focus {
            -     border-bottom: 1px solid #000;
            -     box-shadow: 0 1px 0 0 #000;
            -   }
            -   /* valid color */
            -   .input-field input[type=text].valid {
            -     border-bottom: 1px solid #000;
            -     box-shadow: 0 1px 0 0 #000;
            -   }
            -   /* invalid color */
            -   .input-field input[type=text].invalid {
            -     border-bottom: 1px solid #000;
            -     box-shadow: 0 1px 0 0 #000;
            -   }
            -   /* icon prefix focus color */
            -   .input-field .prefix.active {
            -     color: #000;
            -   }
            -        
            -
            - - - -
            -

            Textarea

            -

            Textareas allow larger expandable user input. The border should light up simply and clearly indicating which field the user is currently editing. You must have a .input-field div wrapping your input and label. This helps our jQuery animate the label. This is only used in our Input and Textarea form elements.

            -

            Textareas will auto resize to the text inside.

            - - -
            -
            -
            -
            - - -
            -
            -
            -
            -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <textarea id="textarea1" class="materialize-textarea"></textarea>
            -          <label for="textarea1">Textarea</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            -

            advanced note: When dynamically changing the value of a textarea with methods like jQuery's .val(), you must trigger an autoresize on it afterwords because .val() does not automatically trigger the events we've binded to the textarea.

            -
            
            -  $('#textarea1').val('New Text');
            -  $('#textarea1').trigger('autoresize');
            -        
            -
            - -

            Icon Prefixes

            -

            You can add an icon prefix to make the form input label even more clear. Just add an icon with the class prefix before the input and label.


            -
            -
            -
            -
            - mode_edit - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <form class="col s12">
            -      <div class="row">
            -        <div class="input-field col s6">
            -          <i class="material-icons prefix">mode_edit</i>
            -          <textarea id="icon_prefix2" class="materialize-textarea"></textarea>
            -          <label for="icon_prefix2">First Name</label>
            -        </div>
            -      </div>
            -    </form>
            -  </div>
            -        
            -
            -
            -

            Select

            -

            Select allows user input through specified options. Make sure you wrap it in a .input-field for proper alignment with other text fields. Remember that this is a jQuery plugin so make sure you initialize this in your document ready.

            -
            -
            -
            -
            - - -
            -
            -
            -

            You can add the property multiple to get the multiple select and select several options.

            -
            -
            - - -
            -
            -
            -

            We also support optgroups in our selects.

            -
            -
            - - -
            -
            -
            -

            You can add icons to your options in any type of select. In the option you add the image source with the data-icon attribute. You can add the left or right class to align your icon. You can also add the circle class to your icon.

            -
            -
            - - -
            -
            - - -
            -
            -
            -

            You can add the class browser-default to get the browser default.

            -
            -
            - - -
            -
            -
            -
            -
            
            -  <div class="input-field col s12">
            -    <select>
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="1">Option 1</option>
            -      <option value="2">Option 2</option>
            -      <option value="3">Option 3</option>
            -    </select>
            -    <label>Materialize Select</label>
            -  </div>
            -
            -  <div class="input-field col s12">
            -    <select multiple>
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="1">Option 1</option>
            -      <option value="2">Option 2</option>
            -      <option value="3">Option 3</option>
            -    </select>
            -    <label>Materialize Multiple Select</label>
            -  </div>
            -
            -  <div class="input-field col s12">
            -    <select multiple>
            -      <optgroup label="team 1">
            -        <option value="1">Option 1</option>
            -        <option value="2">Option 2</option>
            -      </optgroup>
            -      <optgroup label="team 2">
            -        <option value="3">Option 3</option>
            -        <option value="4">Option 4</option>
            -      </optgroup>
            -    </select>
            -    <label>Optgroups</label>
            -  </div>
            -
            -  <div class="input-field col s12 m6">
            -    <select class="icons">
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="" data-icon="images/sample-1.jpg" class="circle">example 1</option>
            -      <option value="" data-icon="images/office.jpg" class="circle">example 2</option>
            -      <option value="" data-icon="images/yuna.jpg" class="circle">example 1</option>
            -    </select>
            -    <label>Images in select</label>
            -  </div>
            -  <div class="input-field col s12 m6">
            -    <select class="icons">
            -      <option value="" disabled selected>Choose your option</option>
            -      <option value="" data-icon="images/sample-1.jpg" class="left circle">example 1</option>
            -      <option value="" data-icon="images/office.jpg" class="left circle">example 2</option>
            -      <option value="" data-icon="images/yuna.jpg" class="left circle">example 3</option>
            -    </select>
            -    <label>Images in select</label>
            -  </div>
            -
            -  <label>Browser Select</label>
            -  <select class="browser-default">
            -    <option value="" disabled selected>Choose your option</option>
            -    <option value="1">Option 1</option>
            -    <option value="2">Option 2</option>
            -    <option value="3">Option 3</option>
            -  </select>
            -            
            -
            -
            -

            -

            Disabled Styles

            -

            You can also add disabled to the select element to make the whole thing disabled. Or if you add disabled to the options, the individual options will be unselectable.

            -
            -
            -
            -
            - - - - -
            -
            -
            -
            -
            
            -  <label>Materialize Disabled</label>
            -  <select disabled>
            -    <option value="" disabled selected>Choose your option</option>
            -    <option value="1">Option 1</option>
            -    <option value="2">Option 2</option>
            -    <option value="3">Option 3</option>
            -  </select>
            -
            -  <label>Browser Disabled</label>
            -  <select class="browser-default" disabled>
            -    <option value="" disabled selected>Choose your option</option>
            -    <option value="1">Option 1</option>
            -    <option value="2">Option 2</option>
            -    <option value="3">Option 3</option>
            -  </select>
            -            
            -
            -
            - -

            Initialization

            -

            You must initialize the select element as shown below. In addition, you will need a separate call for any dynamically generated select elements your page generates.

            -
            
            -  $(document).ready(function() {
            -    $('select').material_select();
            -  });
            -            
            -
            -
            -

            Updating/Destroying Select

            -

            If you want to update the items inside the select, just rerun the initialization code from above after editing the original select. Or you can destroy the material select with this function below, and create a new select altogether

            -
            
            -  $('select').material_select('destroy');
            -            
            -
            -
            -
            - - -
            -

            Radio Buttons

            -

            Radio Buttons are used when the user must make only one selection out of a group of items

            -
            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -
            -

            Add radio buttons to a group by adding the name attribute along with the same corresponding value for each of the radio buttons in the group. Create disabled radio buttons by adding the disabled attribute as shown below.

            -
            
            -  <form action="#">
            -    <p>
            -      <input name="group1" type="radio" id="test1" />
            -      <label for="test1">Red</label>
            -    </p>
            -    <p>
            -      <input name="group1" type="radio" id="test2" />
            -      <label for="test2">Yellow</label>
            -    </p>
            -    <p>
            -      <input class="with-gap" name="group1" type="radio" id="test3"  />
            -      <label for="test3">Green</label>
            -    </p>
            -    <p>
            -      <input name="group1" type="radio" id="test4" disabled="disabled" />
            -      <label for="test4">Brown</label>
            -    </p>
            -  </form>
            -        
            -

            Options

            -

            To create a radio button with a gap, add class="with-gap" to your input. See the example below.

            - -

            - - -

            -
            
            -  <p>
            -    <input class="with-gap" name="group3" type="radio" id="test5" checked />
            -    <label for="test5">Red</label>
            -  </p>
            -        
            - -
            - - - -
            -

            Checkboxes

            -

            Use checkboxes when looking for yes or no answers. The for attribute is necessary to bind our custom checkbox with the input. Add the input's id as the value of the for attribute of the label.

            -
            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -

            - - -

            -
            -
            
            -  <form action="#">
            -    <p>
            -      <input type="checkbox" id="test5" />
            -      <label for="test5">Red</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="test6" checked="checked" />
            -      <label for="test6">Yellow</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" class="filled-in" id="filled-in-box" checked="checked" />
            -      <label for="filled-in-box">Filled in</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="indeterminate-checkbox" />
            -      <label for="indeterminate-checkbox">Indeterminate Style</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="test7" checked="checked" disabled="disabled" />
            -      <label for="test7">Green</label>
            -    </p>
            -    <p>
            -      <input type="checkbox" id="test8" disabled="disabled" />
            -      <label for="test8">Brown</label>
            -    </p>
            -  </form>
            -        
            -
            - - -
            -

            Switches

            -
            -

            -

            - -
            -

            - -

            -

            - -
            -

            -
            -
            
            -  <!-- Switch -->
            -  <div class="switch">
            -    <label>
            -      Off
            -      <input type="checkbox">
            -      <span class="lever"></span>
            -      On
            -    </label>
            -  </div>
            -
            -  <!-- Disabled Switch -->
            -  <div class="switch">
            -    <label>
            -      Off
            -      <input disabled type="checkbox">
            -      <span class="lever"></span>
            -      On
            -    </label>
            -  </div>
            -        
            -
            - -
            -

            File Input

            -

            If you want to style an input button with a path input we provide this structure.

            -
            -
            -
            - File - -
            -
            - -
            -
            -
            -
            
            -  <form action="#">
            -    <div class="file-field input-field">
            -      <div class="btn">
            -        <span>File</span>
            -        <input type="file">
            -      </div>
            -      <div class="file-path-wrapper">
            -        <input class="file-path validate" type="text">
            -      </div>
            -    </div>
            -  </form>
            -        
            - -

            You can also use the multiple attribute to allow multiple file uploads.

            -
            -
            -
            - File - -
            -
            - -
            -
            -
            -
            
            -  <form action="#">
            -    <div class="file-field input-field">
            -      <div class="btn">
            -        <span>File</span>
            -        <input type="file" multiple>
            -      </div>
            -      <div class="file-path-wrapper">
            -        <input class="file-path validate" type="text" placeholder="Upload one or more files">
            -      </div>
            -    </div>
            -  </form>
            -        
            -
            - - -
            -

            Range

            -

            Add a range slider for values with a wide range. This one is set to be a number between 0 and 100. We have two different types of sliders. nouiSlider is a 3rd party plugin which we've modified. To use the noUiSlider, you will have to manually link the nouislider.css and nouislider.js files located in the extras folder.

            -

            noUiSlider

            -

            See noUiSlider's official documentation here to see a variety of slider options

            -
            -

             

            -
            
            -  var slider = document.getElementById('test5');
            -  noUiSlider.create(slider, {
            -   start: [20, 80],
            -   connect: true,
            -   step: 1,
            -   range: {
            -     'min': 0,
            -     'max': 100
            -   },
            -   format: wNumb({
            -     decimals: 0
            -   })
            -  });
            -        
            -

            HTML5 Range

            -
            -

            - -

            -
            -
            
            -  <form action="#">
            -    <p class="range-field">
            -      <input type="range" id="test5" min="0" max="100" />
            -    </p>
            -  </form>
            -        
            -
            - -
            -

            Date Picker

            -

            We use a modified version of pickadate.js to create a materialized date picker. Test it out below!

            - - -
            
            -  <input type="date" class="datepicker">
            -        
            - -

            Initialization

            -

            At this time, not all pickadate.js options are working with our implementation

            -
            
            -  $('.datepicker').pickadate({
            -    selectMonths: true, // Creates a dropdown to control month
            -    selectYears: 15 // Creates a dropdown of 15 years to control year
            -  });
            -        
            -
            - - -
            -

            Character Counter

            -

            Use a character counter in fields where a character restriction is in place.

            -
            -
            -
            -
            - - -
            -
            -
            -
            -
            - - -
            -
            -
            -
            -
            
            -    <div class="row">
            -      <form class="col s12">
            -        <div class="row">
            -          <div class="input-field col s6">
            -            <input id="input_text" type="text" data-length="10">
            -            <label for="input_text">Input text</label>
            -          </div>
            -        </div>
            -        <div class="row">
            -          <div class="input-field col s12">
            -            <textarea id="textarea1" class="materialize-textarea" data-length="120"></textarea>
            -            <label for="textarea1">Textarea</label>
            -          </div>
            -        </div>
            -      </form>
            -    </div>
            -          
            -
            -

            Initialization

            -

            There are no options for this plugin, but if you are adding these dynamically, you can use this to initialize them.

            -
            
            -  $(document).ready(function() {
            -    $('input#input_text, textarea#textarea1').characterCounter();
            -  });
            -        
            -
            - -
            -

            Autocomplete

            -

            - Add an autocomplete dropdown below your input to suggest possible values. -

            - -
            -
            -
            -
            - textsms - - -
            -
            -
            -
            - -
            
            -  <div class="row">
            -    <div class="col s12">
            -      <div class="row">
            -        <div class="input-field col s12">
            -          <i class="material-icons prefix">textsms</i>
            -          <input type="text" id="autocomplete-input" class="autocomplete">
            -          <label for="autocomplete-input">Autocomplete</label>
            -        </div>
            -      </div>
            -    </div>
            -  </div>
            -        
            - -

            Initialization

            -

            The data is a json object where the key is the matching string and the value is an optional image url.

            -
            
            -  $('input.autocomplete').autocomplete({
            -    data: {
            -      "Apple": null,
            -      "Microsoft": null,
            -      "Google": 'http://placehold.it/250x250'
            -    },
            -    limit: 20, // The max amount of results that can be shown at once. Default: Infinity.
            -  });
            -        
            -
            - - - -
            - - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/fullscreen_slider_demo_content.html b/node_modules/materialize-css/jade/page-contents/fullscreen_slider_demo_content.html deleted file mode 100644 index c63635f..0000000 --- a/node_modules/materialize-css/jade/page-contents/fullscreen_slider_demo_content.html +++ /dev/null @@ -1,31 +0,0 @@ -
            -
              -
            • - -
              -

              This is our big Tagline!

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              Left Aligned Caption

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              Right Aligned Caption

              -
              Here's our small slogan.
              -
              -
            • -
            -
            - -
            - close - - -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/grid_content.html b/node_modules/materialize-css/jade/page-contents/grid_content.html deleted file mode 100644 index bdea5fe..0000000 --- a/node_modules/materialize-css/jade/page-contents/grid_content.html +++ /dev/null @@ -1,479 +0,0 @@ -
            -
            - -
            - - -
            -
            -

            We are using a standard 12 column fluid responsive grid system. The grid helps you layout your page in an ordered, easy fashion.

            -

            Container

            -

            The container class is not strictly part of the grid but is important in laying out content. It allows you to center your page content. The container class is set to ~70% of the window width. It helps you center and contain your page content. We use the container to contain our body content. - -

            Demo

            -

            Try the button below to see what the page looks like without containers

            - Turn off Containers - - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -
            - -

            -

            -

            -

            -
            -
            -
            -
            -
            -
            -
            - - -

            To add a container just put your content inside a <div> tag with a container class. Here's an example of how your page might be set up.

            - -
            
            -    <body>
            -      <div class="container">
            -        <!-- Page Content goes here -->
            -      </div>
            -    </body>
            -          
            - -
            - - - -
            -

            Introduction

            -

            Take a look at this section to quickly understand how the grid works!

            -

            12 Columns

            -

            Our standard grid has 12 columns. No matter the size of the browser, each of these columns will always have an equal width.

            -
            -
            1
            -
            2
            -
            3
            -
            4
            -
            5
            -
            6
            -
            7
            -
            8
            -
            9
            -
            10
            -
            11
            -
            12
            -
            -

            To get a feel of how the grid is used in HTML, take a look at the code below which will produce a similar result to the one above.

            -
            
            -    <div class="row">
            -      <div class="col s1">1</div>
            -      <div class="col s1">2</div>
            -      <div class="col s1">3</div>
            -      <div class="col s1">4</div>
            -      <div class="col s1">5</div>
            -      <div class="col s1">6</div>
            -      <div class="col s1">7</div>
            -      <div class="col s1">8</div>
            -      <div class="col s1">9</div>
            -      <div class="col s1">10</div>
            -      <div class="col s1">11</div>
            -      <div class="col s1">12</div>
            -    </div>
            -          
            -

            Note: For now, just know that the s1 stands for small-1 which in plain English means "1 column on small screens".

            - -
            - -

            Columns live inside Rows

            -

            Remember when you are creating your layout that all columns must be contained inside a row and that you must add the col class to your inner divs to make them into columns

            -
            -
            This div is 12-columns wide on all screen sizes
            -
            6-columns (one-half)
            -
            6-columns (one-half)
            -
            -
            
            -    <div class="row">
            -      <div class="col s12">This div is 12-columns wide</div>
            -      <div class="col s6">This div is 6-columns wide</div>
            -      <div class="col s6">This div is 6-columns wide</div>
            -    </div>
            -          
            - -
            -
            - - -
            -

            Offsets

            -

            To offset, simply add offset-s2 to the class where s signifies the screen class-prefix (s = small, m = medium, l = large) and the number after is the number of columns you want to offset by.

            -
            -
            This div is 12-columns wide on all screen sizes
            -
            6-columns (offset-by-6)
            -
            -
            
            -    <div class="row">
            -      <div class="col s12"><span class="flow-text">This div is 12-columns wide on all screen sizes</span></div>
            -      <div class="col s6 offset-s6"><span class="flow-text">6-columns (offset-by-6)</span></div>
            -    </div>
            -          
            -
            - -
            - - -
            -

            Push and Pull

            -

            You can easily change the order of your columns with push and pull. Simply add push-s2 or pull-s2 to the class where s signifies the screen class-prefix (s = small, m = medium, l = large) and the number after is the number of columns you want to push or pull by.

            -
            -
            This div is 7-columns wide on pushed to the right by 5-columns.
            -
            5-columns wide pulled to the left by 7-columns.
            -
            -
            
            -    <div class="row">
            -      <div class="col s7 push-s5"><span class="flow-text">This div is 7-columns wide on pushed to the right by 5-columns.</span></div>
            -      <div class="col s5 pull-s7"><span class="flow-text">5-columns wide pulled to the left by 7-columns.</span></div>
            -    </div>
            -          
            -
            - -
            - - -
            -

            Creating Layouts

            -

            Here we will show you how to create some commonly used layouts with our grid system. Hopefully these will get you more comfortable with laying out elements. To keep these demos simple, the ones here will not be responsive.

            -
            -
            -

            Section

            -

            The section class is used for simple top and bottom padding. Just add the section class to your div's containing large blocks of content.

            -
            -
            -

            Divider

            -

            Dividers are 1 pixel lines that help break up your content. Just add the divider to a div in between your content.

            -
            -
            - -

            Example Sections and Dividers

            -
            -
            -
            Section 1
            -

            Stuff

            -
            -
            -
            -
            Section 2
            -

            Stuff

            -
            -
            -
            -
            Section 3
            -

            Stuff

            -
            -
            -
            
            -  <div class="divider"></div>
            -  <div class="section">
            -    <h5>Section 1</h5>
            -    <p>Stuff</p>
            -  </div>
            -  <div class="divider"></div>
            -  <div class="section">
            -    <h5>Section 2</h5>
            -    <p>Stuff</p>
            -  </div>
            -  <div class="divider"></div>
            -  <div class="section">
            -    <h5>Section 3</h5>
            -    <p>Stuff</p>
            -  </div>
            -          

            - -

            Example Promotion Table

            -

            If we want 3 divs that are equal size, we define the divs with a width of 4-columns, 4+4+4 = 12, which nicely adds up to 12. Inside those divs, we can put our content. Take our front page content for example. We've modified it slightly for the sake of this example.

            -
            -
            -
            - flash_on -

            Speeds up development

            -

            We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components.

            -
            -
            -
            -
            - group -

            User Experience Focused

            -

            By utilizing elements and principles of Material Design, we were able to create a framework that focuses on User Experience.

            -
            -
            -
            -
            - settings -

            Easy to work with

            -

            We have provided detailed documentation as well as specific code examples to help new users get started.

            -
            -
            -
            - -
            
            -    <div class="row">
            -
            -      <div class="col s4">
            -        <!-- Promo Content 1 goes here -->
            -      </div>
            -      <div class="col s4">
            -        <!-- Promo Content 2 goes here -->
            -      </div>
            -      <div class="col s4">
            -        <!-- Promo Content 3 goes here -->
            -      </div>
            -
            -    </div>
            -          
            - -
            - -

            Example Side Navigation Layout

            -

            You can see how easy it is to create layouts using the grid system. Just remember to make sure your column numbers add up to 12 for an even layout.

            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -

            -

            -

            -
            -
            -

            -

            -

            -

            -
            -
            -
            -
            -
            -
            - -
            
            -    <!-- Navbar goes here -->
            -
            -    <!-- Page Layout here -->
            -    <div class="row">
            -
            -      <div class="col s3">
            -        <!-- Grey navigation panel -->
            -      </div>
            -
            -      <div class="col s9">
            -        <!-- Teal page content  -->
            -      </div>
            -
            -    </div>
            -          
            -
            - - - -
            -

            Creating Responsive Layouts

            -

            Above we showed you how to layout elements using our grid system. Now we'll show you how to design your layouts so that they look great on all screen sizes.

            -

            Screen Sizes

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Mobile Devices
            <= 600px
            Tablet Devices
            <= 992px
            Desktop Devices
            > 992px
            Class Prefix.s.m.l
            Container Width85%85%70%
            Number of Columns121212
            - -
            - -

            Adding Responsiveness

            -

            In the previous examples, we only defined the size for small screens using "col s12". This is fine if we want a fixed layout since the rules propagate upwards. By just saying s12, we are essentially saying "col s12 m12 l12". But by explicitly defining the size we can make our website more responsive.

            - -
            -
            I am always full-width (col s12)
            -
            I am full-width on mobile (col s12 m6)
            -
            -
            
            -    <div class="row">
            -      <div class="grid-example col s12"><span class="flow-text">I am always full-width (col s12)</span></div>
            -      <div class="grid-example col s12 m6"><span class="flow-text">I am full-width on mobile (col s12 m6)</span></div>
            -    </div>
            -          
            - -
            - -

            Responsive Side Navigation Layout

            -

            In this example below, we take the same layout from above, but we make it responsive by defining how many columns the div should take up on each screen size. Try resizing your browser and watch the layout change below.

            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -

            -

            -

            -
            -
            -

            -

            -

            -

            -
            -
            -
            -
            -
            -
            - -
            
            -    <!-- Navbar goes here -->
            -
            -    <!-- Page Layout here -->
            -    <div class="row">
            -
            -      <div class="col s12 m4 l3"> <!-- Note that "m4 l3" was added -->
            -        <!-- Grey navigation panel
            -
            -              This content will be:
            -          3-columns-wide on large screens,
            -          4-columns-wide on medium screens,
            -          12-columns-wide on small screens  -->
            -
            -      </div>
            -
            -      <div class="col s12 m8 l9"> <!-- Note that "m8 l9" was added -->
            -        <!-- Teal page content
            -
            -              This content will be:
            -          9-columns-wide on large screens,
            -          8-columns-wide on medium screens,
            -          12-columns-wide on small screens  -->
            -
            -      </div>
            -
            -    </div>
            -          
            - -

            More Responsive Grid Examples

            -
            -
            s12
            -
            s12 m4 l2
            -
            s12 m4 l8
            -
            s12 m4 l2
            -
            s12 m6 l3
            -
            s12 m6 l3
            -
            s12 m6 l3
            -
            s12 m6 l3
            -
            -
            -
            
            -  <div class="row">
            -    <div class="col s12"><p>s12</p></div>
            -    <div class="col s12 m4 l2"><p>s12 m4</p></div>
            -    <div class="col s12 m4 l8"><p>s12 m4</p></div>
            -    <div class="col s12 m4 l2"><p>s12 m4</p></div>
            -  </div>
            -  <div class="row">
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
            -  </div>
            -            
            -
            -
            -
            - - -
            - - - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/helpers_content.html b/node_modules/materialize-css/jade/page-contents/helpers_content.html deleted file mode 100644 index aa44f9b..0000000 --- a/node_modules/materialize-css/jade/page-contents/helpers_content.html +++ /dev/null @@ -1,194 +0,0 @@ -
            -
            - -
            - - -
            -

            Alignment

            -

            We have easy to use classes to help you align your content.

            - -
            Vertical Align
            -

            You can easily vertically center things by adding the class valign-wrapper to the container holding the items you want to vertically align.

            -
            -
            This should be vertically aligned
            -
            -
            
            -<div class="valign-wrapper">
            -  <h5 class="valign">This should be vertically aligned</h5>
            -</div>
            -        

            - -
            Text Align
            -

            These classes are for horizontally aligning content. We have .left-align, .right-align and .center-align

            -
            -
            -
            This should be left aligned
            -
            -
            -
            -
            -
            This should be right aligned
            -
            -
            -
            -
            -
            This should be center aligned
            -
            -
            
            -  <div>
            -    <h5 class="left-align">This should be left aligned</h5>
            -  </div>
            -  <div>
            -    <h5 class="right-align">This should be right aligned</h5>
            -  </div>
            -  <div>
            -    <h5 class="center-align">This should be center aligned</h5>
            -  </div>
            -        

            - -
            Quick Floats
            -

            Quickly float things by adding the class left or right to the element. !important is used to avoid specificity issues.

            -
            
            -<div class="left">...</div>
            -<div class="right">...</div>
            -        

            - -
            - - -
            -

            Hiding Content

            -

            We provide easy to use classes to hide content on specific screen sizes.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Screen Range
            .hideHidden for all Devices
            .hide-on-small-onlyHidden for Mobile Only
            .hide-on-med-onlyHidden for Tablet Only
            .hide-on-med-and-downHidden for Tablet and Below
            .hide-on-med-and-upHidden for Tablet and Above
            .hide-on-large-onlyHidden for Desktop Only
            -
            -
            Usage
            -
            
            -  <div class="hide-on-small-only"></div>
            -        

            - -
            - - - - -
            -

            Formatting

            -

            These classes help format various content on your site.

            - -
            Truncation
            -

            To truncate long lines of text in an ellipsis, add the class truncate to the tag which contains the text. See an example below of a header being truncated inside a card.

            - -
            -
            -
            -

            This is an extremely long title that will be truncated

            -
            -
            -
            - -
            
            -  <h4 class="truncate">This is an extremely long title that will be truncated</h4>
            -        

            - -
            Hover
            -

            The hoverable is a hover class that adds an animation for box shadow as seen below. It can be used on most elements, but meant for use on cards.

            -
            -
            - - Card Title -
            -
            -

            I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

            -
            - -
            - -
            
            -  <div class="card-panel hoverable"> Hoverable Card Panel</div>
            -        
            - -
            - - -
            -

            Browser Defaults

            -

            Because we override many of the default browser styles and elements, we provide the .browser-default class to revert these elements to their original state.

            - - - - - - - - - - - - - - - - - - -
            Name of ElementReverted Style
            ULBullet points
            SELECTBrowser default select element
            -
            - - -
            - -
            - -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/icons_content.html b/node_modules/materialize-css/jade/page-contents/icons_content.html deleted file mode 100644 index 8c3bb0d..0000000 --- a/node_modules/materialize-css/jade/page-contents/icons_content.html +++ /dev/null @@ -1,305 +0,0 @@ -
            -
            -
            - -
            -

            We have included 740 Material Design Icons courtesy of Google. You can download them directly from the Material Design specs.

            -

            Usage

            -

            To be able to use these icons, you must include this line in the <head>portion of your HTML code

            -
            
            -  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
            -

            To use these icons, use the material-icons class on an element and provide the ligature as the text content.

            -
            
            -      <i class="material-icons">add</i>
            -            
            - -

            Sizes

            -

            To control the size of the icon, change the font-size: 30px property of your icon. Optionally you can use preset classes as shown below.

            -
            -
            -
            insert_chart

            Tiny

            -
            insert_chart

            Small

            -
            insert_chart

            Medium

            -
            insert_chart

            Large

            -
            -
            -
            
            -      <!--
            -      Sizes:
            -      tiny: 1rem
            -      small: 2rem
            -      medium: 4rem
            -      large: 6rem
            -      -->
            -      <i class="large material-icons">insert_chart</i>
            -            
            - - -
            -

            -
            info_outlineinfo_outline
            -
            inputinput
            -
            invert_colorsinvert_colors
            -
            labellabel
            -
            label_outlinelabel_outline
            -
            languagelanguage
            -
            query_builderquery_builder
            -
            perm_identityperm_identity
            -
            perm_mediaperm_media
            -
            perm_phone_msgperm_phone_msg
            -
            perm_scan_wifiperm_scan_wifi
            -
            picture_in_picturepicture_in_picture
            -
            play_for_workplay_for_work
            -
            polymerpolymer
            -
            power_settings_newpower_settings_new
            -
            printprint
            -
            thumb_downthumb_down
            -
            thumb_upthumb_up
            -
            thumbs_up_downthumbs_up_down
            -
            emailemail
            -
            dialpaddialpad
            -
            dialer_sipdialer_sip
            -
            contactscontacts
            -
            forward_5forward_5
            -
            stay_current_portraitstay_current_portrait
            -
            stay_primary_landscapestay_primary_landscape
            -
            stay_primary_portraitstay_primary_portrait
            -
            swap_callsswap_calls
            -
            textsmstextsms
            -
            voicemailvoicemail
            -
            vpn_keyvpn_key
            -
            group_workgroup_work
            -
            gradegrade
            -
            clear_allclear_all
            -
            chat_bubble_outlinechat_bubble_outline
            -
            chat_bubblechat_bubble
            -
            repeatrepeat
            -
            repeat_onerepeat_one
            -
            replayreplay
            -
            replay_10replay_10
            -
            replay_30replay_30
            -
            replay_5replay_5
            -
            shuffleshuffle
            -
            skip_nextskip_next
            -
            skip_previousskip_previous
            -
            contact_phonecontact_phone
            -
            commentcomment
            -
            recent_actorsrecent_actors
            -
            snoozesnooze
            -
            sort_by_alphasort_by_alpha
            -
            stopstop
            -
            subtitlessubtitles
            -
            surround_soundsurround_sound
            -
            webweb
            -
            volume_upvolume_up
            -
            volume_offvolume_off
            -
            volume_mutevolume_mute
            -
            toctoc
            -
            todaytoday
            -
            tolltoll
            -
            track_changestrack_changes
            -
            translatetranslate
            -
            trending_downtrending_down
            -
            question_answerquestion_answer
            -
            receiptreceipt
            -
            donedone
            -
            tabtab
            -
            tab_unselectedtab_unselected
            -
            theaterstheaters
            -
            hdhd
            -
            gamesgames
            -
            hearinghearing
            -
            view_moduleview_module
            -
            view_listview_list
            -
            settings_remotesettings_remote
            -
            settings_voicesettings_voice
            -
            searchsearch
            -
            settingssettings
            -
            settings_applicationssettings_applications
            -
            settings_backup_restoresettings_backup_restore
            -
            settings_bluetoothsettings_bluetooth
            -
            settings_brightnesssettings_brightness
            -
            settings_cellsettings_cell
            -
            settings_ethernetsettings_ethernet
            -
            settings_input_antennasettings_input_antenna
            -
            trending_flattrending_flat
            -
            trending_uptrending_up
            -
            workwork
            -
            youtube_searched_foryoutube_searched_for
            -
            zoom_inzoom_in
            -
            my_locationmy_location
            -
            visibility_offvisibility_off
            -
            visibilityvisibility
            -
            view_weekview_week
            -
            view_streamview_stream
            -
            view_quiltview_quilt
            -
            video_libraryvideo_library
            -
            videocamvideocam
            -
            videocam_offvideocam_off
            -
            volume_downvolume_down
            -
            settings_overscansettings_overscan
            -
            settings_input_svideosettings_input_svideo
            -
            settings_input_hdmisettings_input_hdmi
            -
            settings_input_compositesettings_input_composite
            -
            settings_input_componentsettings_input_component
            -
            launchlaunch
            -
            perm_device_informationperm_device_information
            -
            perm_data_settingperm_data_setting
            -
            zoom_outzoom_out
            -
            alarm_onalarm_on
            -
            dnsdns
            -
            redeemredeem
            -
            reorderreorder
            -
            report_problemreport_problem
            -
            restorerestore
            -
            roomroom
            -
            scheduleschedule
            -
            moviemovie
            -
            androidandroid
            -
            announcementannouncement
            -
            mic_offmic_off
            -
            mic_nonemic_none
            -
            swap_horizswap_horiz
            -
            swap_vertswap_vert
            -
            swap_vertical_circleswap_vertical_circle
            -
            system_update_altsystem_update_alt
            -
            present_to_allpresent_to_all
            -
            portable_wifi_offportable_wifi_off
            -
            phonelink_setupphonelink_setup
            -
            phonelink_ringphonelink_ring
            -
            phonelink_lockphonelink_lock
            -
            phonelink_erasephonelink_erase
            -
            person_pinperson_pin
            -
            navigationnavigation
            -
            new_releasesnew_releases
            -
            not_interestednot_interested
            -
            pausepause
            -
            pause_circle_filledpause_circle_filled
            -
            pause_circle_outlinepause_circle_outline
            -
            play_arrowplay_arrow
            -
            play_circle_filledplay_circle_filled
            -
            play_circle_outlineplay_circle_outline
            -
            playlist_addplaylist_add
            -
            queuequeue
            -
            queue_musicqueue_music
            -
            radioradio
            -
            classclass
            -
            codecode
            -
            credit_cardcredit_card
            -
            dashboarddashboard
            -
            deletedelete
            -
            descriptiondescription
            -
            open_withopen_with
            -
            pageviewpageview
            -
            paymentpayment
            -
            perm_camera_micperm_camera_mic
            -
            perm_contact_calendarperm_contact_calendar
            -
            airplayairplay
            -
            done_alldone_all
            -
            phonephone
            -
            no_simno_sim
            -
            invert_colors_offinvert_colors_off
            -
            chatchat
            -
            call_splitcall_split
            -
            call_receivedcall_received
            -
            call_missedcall_missed
            -
            call_mergecall_merge
            -
            call_madecall_made
            -
            call_endcall_end
            -
            callcall
            -
            businessbusiness
            -
            alarm_offalarm_off
            -
            messagemessage
            -
            location_onlocation_on
            -
            location_offlocation_off
            -
            live_helplive_help
            -
            albumalbum
            -
            av_timerav_timer
            -
            closed_captionclosed_caption
            -
            equalizerequalizer
            -
            turned_in_notturned_in_not
            -
            verified_userverified_user
            -
            view_agendaview_agenda
            -
            view_arrayview_array
            -
            view_carouselview_carousel
            -
            view_columnview_column
            -
            subjectsubject
            -
            supervisor_accountsupervisor_account
            -
            settings_powersettings_power
            -
            shopshop
            -
            shop_twoshop_two
            -
            shopping_basketshopping_basket
            -
            shopping_cartshopping_cart
            -
            speaker_notesspeaker_notes
            -
            spellcheckspellcheck
            -
            starstar
            -
            starsstars
            -
            storestore
            -
            ring_volumering_volume
            -
            speaker_phonespeaker_phone
            -
            stay_current_landscapestay_current_landscape
            -
            forumforum
            -
            import_exportimport_export
            -
            open_in_browseropen_in_browser
            -
            open_in_newopen_in_new
            -
            forward_30forward_30
            -
            turned_inturned_in
            -
            view_headlineview_headline
            -
            view_dayview_day
            -
            warningwarning
            -
            error_outlineerror_outline
            -
            errorerror
            -
            add_alertadd_alert
            -
            settings_phonesettings_phone
            -
            forward_10forward_10
            -
            fast_rewindfast_rewind
            -
            fast_forwardfast_forward
            -
            explicitexplicit
            -
            listlist
            -
            locklock
            -
            lock_openlock_open
            -
            lock_outlinelock_outline
            -
            loyaltyloyalty
            -
            markunread_mailboxmarkunread_mailbox
            -
            note_addnote_add
            -
            offline_pinoffline_pin
            -
            httphttp
            -
            micmic
            -
            looploop
            -
            library_musiclibrary_music
            -
            library_bookslibrary_books
            -
            library_addlibrary_add
            -
            high_qualityhigh_quality
            -
            infoinfo
            -
            httpshttps
            -
            aspect_ratioaspect_ratio
            -
            assessmentassessment
            -
            assignmentassignment
            -
            assignment_indassignment_ind
            -
            assignment_lateassignment_late
            -
            mode_editmode_edit
            - - -
            -
            - -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/media-css_content.html b/node_modules/materialize-css/jade/page-contents/media-css_content.html deleted file mode 100644 index 806c106..0000000 --- a/node_modules/materialize-css/jade/page-contents/media-css_content.html +++ /dev/null @@ -1,103 +0,0 @@ -
            -
            - -
            - - -
            -

            Images

            -

            Images can be styled in different ways using Materialize

            - -

            Responsive Images

            -

            To make images resize responsively to page width, you can add the class responsive-img to your image tag. It will now have a max-width: 100% and height:auto.

            -
            
            -    <img class="responsive-img" src="cool_pic.jpg">
            -        
            -

            Circular images

            -
            -
            -
            -
            - -
            -
            - - This is a square image. Add the "circle" class to it to make it appear circular. - -
            -
            -
            -
            - -
            -
            -

            To make images appear circular, simply add class="circle" to them

            -
            
            -      <div class="col s12 m8 offset-m2 l6 offset-l3">
            -        <div class="card-panel grey lighten-5 z-depth-1">
            -          <div class="row valign-wrapper">
            -            <div class="col s2">
            -              <img src="images/yuna.jpg" alt="" class="circle responsive-img"> <!-- notice the "circle" class -->
            -            </div>
            -            <div class="col s10">
            -              <span class="black-text">
            -                This is a square image. Add the "circle" class to it to make it appear circular.
            -              </span>
            -            </div>
            -          </div>
            -        </div>
            -      </div>
            -            
            -
            -
            -
            - - -
            -

            Videos

            -

            We provide a container for Embedded Videos that resizes them responsively.

            -

            Responsive Embeds

            -

            To make your embeds responsive, merely wrap them with a containing div which has the class video-container

            -
            - -
            -
            
            -      <div class="video-container">
            -        <iframe width="853" height="480" src="//www.youtube.com/embed/Q8TXgCzxEnw?rel=0" frameborder="0" allowfullscreen></iframe>
            -      </div>
            -        
            -

            Responsive Videos

            -

            To make your HTML5 Videos responsive just add the class responsive-video to the video tag.

            - - -
            
            -  <video class="responsive-video" controls>
            -    <source src="movie.mp4" type="video/mp4">
            -  </video>
            -        
            - -
            - - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/media_content.html b/node_modules/materialize-css/jade/page-contents/media_content.html deleted file mode 100644 index 307f1bb..0000000 --- a/node_modules/materialize-css/jade/page-contents/media_content.html +++ /dev/null @@ -1,188 +0,0 @@ -
            -
            -
            -

            Media components include things that have to do with large media objects like Images, Video, Audio, etc.

            - -
            -

            Material Box

            -

            Material box is a material design implementation of the Lightbox plugin. When a user clicks on an image that can be enlarged. Material box centers the image and enlarges it in a smooth, non-jarring manner. To dismiss the image, the user can either click on the image again, scroll away, or press the ESC key.

            - - -

            Creating the above image with the effect is as simple as adding a materialboxed class to the image tag.

            -
            
            -    <img class="materialboxed" width="650" src="images/sample-1.jpg">
            -      
            - - -

            Initialization

            -

            Materialbox is intialized automatically. However, if you add images dynamically, you will have to add this initialization code.

            -
            
            -  $(document).ready(function(){
            -    $('.materialboxed').materialbox();
            -  });
            -        
            - -

            Captions

            -

            It is very easy to add a short caption to your photo. Just add the caption as a data-caption attribute.

            - -
            
            -  <img class="materialboxed" data-caption="A picture of some deer and tons of trees" width="250" src="http://th01.deviantart.net/fs70/PRE/i/2013/126/1/e/nature_portrait_by_pw_fotografie-d63tx0n.jpg">
            -          
            -
            - -
            - - - -
            -

            Slider

            -

            Our slider is a simple and elegant image carousel. You can also have captions that will be transitioned on their own depending on their alignment. You can also have indicators that show up on the bottom of the slider.

            -

            Note: This is also Hammer.js compatible! Try swiping with your finger to scroll through the slider.


            - -
            -
              -
            • - -
              -

              This is our big Tagline!

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              Left Aligned Caption

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              Right Aligned Caption

              -
              Here's our small slogan.
              -
              -
            • -
            • - -
              -

              This is our big Tagline!

              -
              Here's our small slogan.
              -
              -
            • -
            -

            - -
            
            -  <div class="slider">
            -    <ul class="slides">
            -      <li>
            -        <img src="http://lorempixel.com/580/250/nature/1"> <!-- random image -->
            -        <div class="caption center-align">
            -          <h3>This is our big Tagline!</h3>
            -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
            -        </div>
            -      </li>
            -      <li>
            -        <img src="http://lorempixel.com/580/250/nature/2"> <!-- random image -->
            -        <div class="caption left-align">
            -          <h3>Left Aligned Caption</h3>
            -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
            -        </div>
            -      </li>
            -      <li>
            -        <img src="http://lorempixel.com/580/250/nature/3"> <!-- random image -->
            -        <div class="caption right-align">
            -          <h3>Right Aligned Caption</h3>
            -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
            -        </div>
            -      </li>
            -      <li>
            -        <img src="http://lorempixel.com/580/250/nature/4"> <!-- random image -->
            -        <div class="caption center-align">
            -          <h3>This is our big Tagline!</h3>
            -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
            -        </div>
            -      </li>
            -    </ul>
            -  </div>
            -      
            - -
            -

            Fullscreen Slider

            -

            You can easliy make this slider a fullscreen slider by adding the class fullscreen to the slider div. Here's a quick demo.

            - Open Demo - -
            -

            jQuery Initialization

            -
            
            -    $(document).ready(function(){
            -      $('.slider').slider();
            -    });
            -        
            -
            - -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            indicatorsSet to false to hide slide indicators. (Default: True)
            heightSet height of slider. (Default: 400)
            transitionSet the duration of the transition animation in ms. (Default: 500)
            intervalSet the duration between transitions in ms. (Default: 6000)
            -
            - -

            jQuery Plugin Methods

            -

            We have methods to pause, start, move to next and move to previous slide.

            -
            
            -// Pause slider
            -$('.slider').slider('pause');
            -// Start slider
            -$('.slider').slider('start');
            -// Next slide
            -$('.slider').slider('next');
            -// Previous slide
            -$('.slider').slider('prev');
            -      
            -
            - -
            - - - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/modals_content.html b/node_modules/materialize-css/jade/page-contents/modals_content.html deleted file mode 100644 index 9a8f0a9..0000000 --- a/node_modules/materialize-css/jade/page-contents/modals_content.html +++ /dev/null @@ -1,213 +0,0 @@ -
            -
            -
            - -
            -

            Introduction

            -

            Use a modal for dialog boxes, confirmation messages, or other content that can be called up. In order for the modal to work you have to add the Modal ID to the link of the trigger. To add a close button, just add the class .modal-close to your button.

            - Modal    Modal With Fixed Footer    Modal Bottom Sheet Style - - - -
            - - - -
            -

            Modals HTML Structure

            -
            
            -  <!-- Modal Trigger -->
            -  <a class="waves-effect waves-light btn" href="#modal1">Modal</a>
            -
            -  <!-- Modal Structure -->
            -  <div id="modal1" class="modal">
            -    <div class="modal-content">
            -      <h4>Modal Header</h4>
            -      <p>A bunch of text</p>
            -    </div>
            -    <div class="modal-footer">
            -      <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Agree</a>
            -    </div>
            -  </div>
            -          
            -
            - - - - -
            -

            Bottom Sheet Modals

            -

            Bottom Sheet Modals are good for displaying actions to the user on the bottom of a screen. They still act the same as regular modals.

            -
            
            -  <!-- Modal Trigger -->
            -  <a class="waves-effect waves-light btn" href="#modal1">Modal</a>
            -
            -  <!-- Modal Structure -->
            -  <div id="modal1" class="modal bottom-sheet">
            -    <div class="modal-content">
            -      <h4>Modal Header</h4>
            -      <p>A bunch of text</p>
            -    </div>
            -    <div class="modal-footer">
            -      <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Agree</a>
            -    </div>
            -  </div>
            -          
            -
            - -
            -

            Modals with Button trigger

            -

            If you prefer to use a button to open a modal specify the Modal ID in data-target rather than the href attribute.

            - -
            
            -  <!-- Modal Trigger -->
            -  <button data-target="modal1" class="btn">Modal</button>
            -          
            -
            - - - -
            -

            jQuery Plugin Initialization

            -

            To open a modal using a trigger:

            -
            
            -  $(document).ready(function(){
            -    // the "href" attribute of .modal-trigger must specify the modal ID that wants to be triggered
            -    $('.modal').modal();
            -  });
            -          
            -

            You can also open modals programatically, the below code will make your modal open on document ready:

            -
            
            -  $('#modal1').modal('open');
            -          
            -

            You can also close them programatically:

            -
            
            -  $('#modal1').modal('close');
            -        
            -
            - - - -
            -

            Options

            -

            You can customize the behavior of each modal using these options. For example, you can call a custom function to run when a modal is dismissed. To do this, just place your function in the intialization code as shown below.

            -
            
            -  $('.modal').modal({
            -      dismissible: true, // Modal can be dismissed by clicking outside of the modal
            -      opacity: .5, // Opacity of modal background
            -      inDuration: 300, // Transition in duration
            -      outDuration: 200, // Transition out duration
            -      startingTop: '4%', // Starting top style attribute
            -      endingTop: '10%', // Ending top style attribute
            -      ready: function(modal, trigger) { // Callback for Modal open. Modal and trigger parameters available.
            -        alert("Ready");
            -        console.log(modal, trigger);
            -      },
            -      complete: function() { alert('Closed'); } // Callback for Modal close
            -    }
            -  );
            -      
            -
            - -
            - - - - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/navbar_content.html b/node_modules/materialize-css/jade/page-contents/navbar_content.html deleted file mode 100644 index ad08fb1..0000000 --- a/node_modules/materialize-css/jade/page-contents/navbar_content.html +++ /dev/null @@ -1,520 +0,0 @@ -
            -
            - -
            - - - -
            -

            Left Aligned Links

            -

            To left align your navbar links, just add a left class to your <ul> that contains them.

            -
            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#" class="brand-logo right">Logo</a>
            -      <ul id="nav-mobile" class="left hide-on-med-and-down">
            -        <li><a href="sass.html">Sass</a></li>
            -        <li><a href="badges.html">Components</a></li>
            -        <li><a href="collapsible.html">JavaScript</a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -        
            -
            - -
            -

            Centering the logo

            -

            The logo will center itself on medium and down screens, but if you want the logo to always be centered, add the center class to your <a class="brand-logo">. You will have to make sure yourself that links do not overlap if you use this.

            -
            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#" class="brand-logo center">Logo</a>
            -      <ul id="nav-mobile" class="left hide-on-med-and-down">
            -        <li><a href="sass.html">Sass</a></li>
            -        <li><a href="badges.html">Components</a></li>
            -        <li><a href="collapsible.html">JavaScript</a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -        
            -
            - -
            - -

            Active Items

            -

            - Add active class to your li tags to denote the current page. -

            - -
            - -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#!" class="brand-logo center">Logo</a>
            -      <ul class="left hide-on-med-and-down">
            -        <li><a href="sass.html">Sass</a></li>
            -        <li><a href="badges.html">Components</a></li>
            -        <li class="active"><a href="collapsible.html">JavaScript</a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -        
            -
            - - - - - - - -
            -

            Icon Links

            - - - -
            - -

            You can add icons into links. For icon only links you don't need any additional class. Just pop the i tag in and it will work.

            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#!" class="brand-logo"><i class="material-icons">cloud</i>Logo</a>
            -      <ul class="right hide-on-med-and-down">
            -        <li><a href="sass.html"><i class="material-icons">search</i></a></li>
            -        <li><a href="badges.html"><i class="material-icons">view_module</i></a></li>
            -        <li><a href="collapsible.html"><i class="material-icons">refresh</i></a></li>
            -        <li><a href="mobile.html"><i class="material-icons">more_vert</i></a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -
            - - - -
            - -

            For adding an icon to a text link you need to add either a left or right class to the icon depending on where you want the icon to be.

            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#!" class="brand-logo">Logo</a>
            -      <ul class="right hide-on-med-and-down">
            -        <li><a href="sass.html"><i class="material-icons left">search</i>Link with Left Icon</a></li>
            -        <li><a href="badges.html"><i class="material-icons right">view_module</i>Link with Right Icon</a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -
            -
            - -
            -

            Buttons

            - - - -
            - -

            You can add buttons into links. For buttons you don't need any additional class. Just pop the .btn class on the a tag.

            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#!" class="brand-logo">Logo</a>
            -      <ul class="right hide-on-med-and-down">
            -        <li><a class="waves-effect waves-light btn">Button</a></li>
            -        <li><a class="waves-effect waves-light btn">Button <i class="material-icons right">cloud</i></a></li>
            -        <li><a class="waves-effect waves-light btn-large">Large Button</a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -
            - -
            Halfway FAB in Extended Navbar
            -

            Add a halfway FAB to your extended navbar.

            - - -

            -
            
            -  <nav class="nav-extended">
            -    <div class="nav-wrapper">
            -      <a href="#!" class="brand-logo">Logo</a>
            -      <ul class="right hide-on-med-and-down">
            -        <li><a>A link</a></li>
            -        <li><a>A second link</a></li>
            -        <li><a>A third link</a></li>
            -      </ul>
            -    </div>
            -    <div class="nav-content">
            -      <span class="nav-title">Title</span>
            -      <a class="btn-floating btn-large halfway-fab waves-effect waves-light teal">
            -        <i class="material-icons">add</i>
            -      </a>
            -    </div>
            -  </nav>
            -
            -
            - -
            -

            Search Bar

            - - - -
            - -

            You can add a search form in the navbar.

            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <form>
            -        <div class="input-field">
            -          <input id="search" type="search" required>
            -          <label class="label-icon" for="search"><i class="material-icons">search</i></label>
            -          <i class="material-icons">close</i>
            -        </div>
            -      </form>
            -    </div>
            -  </nav>
            -
            - -
            - -
            -

            Mobile Collapse Button

            - - - -
            - -

            When your nav bar is resized, you will see that the links on the right turn into a hamburger icon menu. Take a look at the example below to get this functionality. Add the entire button-collapse line to your nav.

            -
            
            -  <nav>
            -    <div class="nav-wrapper">
            -      <a href="#!" class="brand-logo">Logo</a>
            -      <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
            -      <ul class="right hide-on-med-and-down">
            -        <li><a href="sass.html">Sass</a></li>
            -        <li><a href="badges.html">Components</a></li>
            -        <li><a href="collapsible.html">Javascript</a></li>
            -        <li><a href="mobile.html">Mobile</a></li>
            -      </ul>
            -      <ul class="side-nav" id="mobile-demo">
            -        <li><a href="sass.html">Sass</a></li>
            -        <li><a href="badges.html">Components</a></li>
            -        <li><a href="collapsible.html">Javascript</a></li>
            -        <li><a href="mobile.html">Mobile</a></li>
            -      </ul>
            -    </div>
            -  </nav>
            -          
            - -
            -

            Initialization

            -

            After including the button-collapse line into your navbar, all you have to do now is place this code in your page's $( document ).ready(function(){}) code. This example below assumes you have not modified the classes in the above example. In the case that you have, just change the jQuery selector in the line below to match it.

            -
            
            -    $(".button-collapse").sideNav();
            -        
            -
            - -
            - - - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/pagination_content.html b/node_modules/materialize-css/jade/page-contents/pagination_content.html deleted file mode 100644 index 088eac6..0000000 --- a/node_modules/materialize-css/jade/page-contents/pagination_content.html +++ /dev/null @@ -1,63 +0,0 @@ -
            -
            - -
            - - -
            - -
            -
            -

            Add pagination links to help split up your long content into shorter, easier to understand blocks.

            -

            Basic

            - -

            -
            
            -  <ul class="pagination">
            -    <li class="disabled"><a href="#!"><i class="material-icons">chevron_left</i></a></li>
            -    <li class="active"><a href="#!">1</a></li>
            -    <li class="waves-effect"><a href="#!">2</a></li>
            -    <li class="waves-effect"><a href="#!">3</a></li>
            -    <li class="waves-effect"><a href="#!">4</a></li>
            -    <li class="waves-effect"><a href="#!">5</a></li>
            -    <li class="waves-effect"><a href="#!"><i class="material-icons">chevron_right</i></a></li>
            -  </ul>
            -            
            -
            -
            -
            -
            - - - -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/parallax_content.html b/node_modules/materialize-css/jade/page-contents/parallax_content.html deleted file mode 100644 index 89b783c..0000000 --- a/node_modules/materialize-css/jade/page-contents/parallax_content.html +++ /dev/null @@ -1,70 +0,0 @@ -
            -
            - -
            - - -
            -

            Introduction

            -

            Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling. Check out the demo to get a better idea of it.

            - Open Demo -
            - - - -
            -

            Parallax HTML Structure

            -
            
            -    <div class="parallax-container">
            -      <div class="parallax"><img src="images/parallax1.jpg"></div>
            -    </div>
            -        
            -
            - - - -
            -

            Initialization

            -
            
            -    $(document).ready(function(){
            -      $('.parallax').parallax();
            -    });
            -        
            -
            - - - -
            -

            Parallax Customization

            -

            The parallax container height is what defines how much of the image can be seen. This is set to a default of 500px. You can add your own style to override this.

            -
            
            -    .parallax-container {
            -      height: "your height here";
            -    }
            -        
            -
            - -
            - - - -
            - -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/parallax_demo_content.html b/node_modules/materialize-css/jade/page-contents/parallax_demo_content.html deleted file mode 100644 index 967ce21..0000000 --- a/node_modules/materialize-css/jade/page-contents/parallax_demo_content.html +++ /dev/null @@ -1,51 +0,0 @@ -
            - -
            - -
            - -
            -
            -
            -
            -
            -

            Parallax

            -

            Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

            -
            -
            -

            Parallax Demo HTML

            -
            
            -  <div class="parallax-container">
            -    <div class="parallax"><img src="images/parallax1.jpg"></div>
            -  </div>
            -  <div class="section white">
            -    <div class="row container">
            -      <h2 class="header">Parallax</h2>
            -      <p class="grey-text text-darken-3 lighten-3">Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.</p>
            -    </div>
            -  </div>
            -  <div class="parallax-container">
            -    <div class="parallax"><img src="images/parallax2.jpg"></div>
            -  </div>
            -      
            -
            -
            -
            -
            -
            - -
            - close - - -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/preloader_content.html b/node_modules/materialize-css/jade/page-contents/preloader_content.html deleted file mode 100644 index 5b19388..0000000 --- a/node_modules/materialize-css/jade/page-contents/preloader_content.html +++ /dev/null @@ -1,333 +0,0 @@ -
            -
            - -
            -

            If you have content that will take a long time to load, you should give the user feedback. For this reason we provide a number activity + progress indicators.

            -
            -

            Linear

            -

            There are a couple different types of linear progress bars.

            -

            Determinate

            -
            -
            -
            -
            -
            -
            -
            -
            
            -  <div class="progress">
            -      <div class="determinate" style="width: 70%"></div>
            -  </div>
            -        
            - -

            Indeterminate

            -
            -
            -
            -
            -
            -
            -
            -
            
            -  <div class="progress">
            -      <div class="indeterminate"></div>
            -  </div>
            -        
            - -
            - - -
            -

            Circular

            -

            There are 4 colors and 3 sizes of circular spinners. The spinner should be nested in a preloader-wrapper div. The default size is medium, but you can add the classes big or small to adjust the size accordingly. You can add the classes spinner-red-only, spinner-blue-only, spinner-yellow-only and spinner-green-only. You can also leave this class as just spinner-layer and it will be set to the $spinner-default-color variable in our variables.scss file.

            -

            Colors

            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            
            -  <div class="preloader-wrapper big active">
            -    <div class="spinner-layer spinner-blue-only">
            -      <div class="circle-clipper left">
            -        <div class="circle"></div>
            -      </div><div class="gap-patch">
            -        <div class="circle"></div>
            -      </div><div class="circle-clipper right">
            -        <div class="circle"></div>
            -      </div>
            -    </div>
            -  </div>
            -
            -  <div class="preloader-wrapper active">
            -    <div class="spinner-layer spinner-red-only">
            -      <div class="circle-clipper left">
            -        <div class="circle"></div>
            -      </div><div class="gap-patch">
            -        <div class="circle"></div>
            -      </div><div class="circle-clipper right">
            -        <div class="circle"></div>
            -      </div>
            -    </div>
            -  </div>
            -
            -  <div class="preloader-wrapper small active">
            -    <div class="spinner-layer spinner-green-only">
            -      <div class="circle-clipper left">
            -        <div class="circle"></div>
            -      </div><div class="gap-patch">
            -        <div class="circle"></div>
            -      </div><div class="circle-clipper right">
            -        <div class="circle"></div>
            -      </div>
            -    </div>
            -  </div>
            -        
            -
            - -
            -

            Circular Flashing Colors

            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            
            -    <div class="preloader-wrapper big active">
            -      <div class="spinner-layer spinner-blue">
            -        <div class="circle-clipper left">
            -          <div class="circle"></div>
            -        </div><div class="gap-patch">
            -          <div class="circle"></div>
            -        </div><div class="circle-clipper right">
            -          <div class="circle"></div>
            -        </div>
            -      </div>
            -
            -      <div class="spinner-layer spinner-red">
            -        <div class="circle-clipper left">
            -          <div class="circle"></div>
            -        </div><div class="gap-patch">
            -          <div class="circle"></div>
            -        </div><div class="circle-clipper right">
            -          <div class="circle"></div>
            -        </div>
            -      </div>
            -
            -      <div class="spinner-layer spinner-yellow">
            -        <div class="circle-clipper left">
            -          <div class="circle"></div>
            -        </div><div class="gap-patch">
            -          <div class="circle"></div>
            -        </div><div class="circle-clipper right">
            -          <div class="circle"></div>
            -        </div>
            -      </div>
            -
            -      <div class="spinner-layer spinner-green">
            -        <div class="circle-clipper left">
            -          <div class="circle"></div>
            -        </div><div class="gap-patch">
            -          <div class="circle"></div>
            -        </div><div class="circle-clipper right">
            -          <div class="circle"></div>
            -        </div>
            -      </div>
            -    </div>
            -        
            -
            - - -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/pushpin_content.html b/node_modules/materialize-css/jade/page-contents/pushpin_content.html deleted file mode 100644 index ede15c8..0000000 --- a/node_modules/materialize-css/jade/page-contents/pushpin_content.html +++ /dev/null @@ -1,126 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            Pushpin is our fixed positioning plugin. Use this to pin elements to your page during specific scroll ranges. You can check out our live example: the fixed table of contents on the right.

            - - Open Demo - -

            -
            Demo Code
            -
            
            -  $('.pushpin-demo-nav').each(function() {
            -    var $this = $(this);
            -    var $target = $('#' + $(this).attr('data-target'));
            -    $this.pushpin({
            -      top: $target.offset().top,
            -      bottom: $target.offset().top + $target.outerHeight() - $this.height()
            -    });
            -  });
            -        
            -
            
            -  // Only necessary for window height sized blocks.
            -  html, body, .block {
            -    height: 100%;
            -  }
            -        
            - -
            - -
            -

            jQuery Plugin Initialization

            -

            Here is a sample initialization of pushpin. Take a look at what the options are and customize them to your needs.

            -
            
            -  $(document).ready(function(){
            -    $('.target').pushpin({
            -      top: 0,
            -      bottom: 1000,
            -      offset: 0
            -    });
            -  });
            -        
            -
            - -
            -

            CSS Classes

            -

            A pushpinned element has 3 states. One above and below the scrolling threshold, and the pinned state where the element becomes fixed. Because pushpin changes positioning, chances are your element will look different when the states change. Use these css classes to correctly style your 3 states.

            -
            
            -  // Class for when element is above threshold
            -  .pin-top {
            -    position: relative;
            -  }
            -
            -  // Class for when element is below threshold
            -  .pin-bottom {
            -    position: relative;
            -  }
            -
            -  // Class for when element is pinned
            -  .pinned {
            -    position: fixed !important;
            -  }
            -        
            -
            - - -
            -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            topThe distance in pixels from the top of the page where the element becomes fixed. (Default: 0)
            bottomThe distance in pixels from the top of the page where the elements stops being fixed. (Default: Infinity)
            offsetThe offset from the top the element will be fixed at. (Default: 0)
            - -
            -

            Removal

            -

            To remove the pushpin from an element, pass in 'remove' as the option to the pushpin function

            -
            
            -  //Removes pushpin and pushpin classes
            -  $('.tabs-wrapper .row').pushpin('remove');
            -        
            - -
            -
            - - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/pushpin_demo_content.html b/node_modules/materialize-css/jade/page-contents/pushpin_demo_content.html deleted file mode 100644 index 13f7ddb..0000000 --- a/node_modules/materialize-css/jade/page-contents/pushpin_demo_content.html +++ /dev/null @@ -1,50 +0,0 @@ -
            - -
            - -
            - -
            - -
            - -
            - -
            - close - - -
            diff --git a/node_modules/materialize-css/jade/page-contents/sass_content.html b/node_modules/materialize-css/jade/page-contents/sass_content.html deleted file mode 100644 index f63480a..0000000 --- a/node_modules/materialize-css/jade/page-contents/sass_content.html +++ /dev/null @@ -1,159 +0,0 @@ -
            -
            - -
            - - -
            -

            Variables

            -

            - When using Sass, you can change the color scheme of your site extremely quickly. Below is a very small sample of what you can change through sass in _variables.scss. -

            -
            
            -  $primary-color: color("materialize-red", "lighten-2") !default;
            -  $primary-color-light: false !default;
            -  $primary-color-dark: false !default;
            -  @if not $primary-color-light {
            -    $primary-color-light: lighten($primary-color, 15%);
            -  }
            -  @if not $primary-color-dark {
            -    $primary-color-dark: darken($primary-color, 15%);
            -  }
            -  $secondary-color: color("teal", "lighten-1") !default;
            -  $success-color: color("green", "base") !default;
            -  $error-color: color("red", "base") !default;
            -
            -  $link-color: color("light-blue", "darken-1") !default;
            -
            -  /*** More variables not shown here.. ***/
            -        
            -
            - - -
            -

            Media Queries

            -

            - We have 3 media queries for the 3 standard screen sizes you can use in your custom Sass files. This also includes media query variables that will define the range. -

            -

            - Small screens are defined as having a max-width of 600px -
            - Medium screens are defined as having a max-width of 992px -
            - Large screen are defined as having a min-width of 993px -

            - -

            CSS

            -
            
            -  /* These classes can be added to HTML Elements
            -   * to affect visibility on certain displays.
            -   */
            -  .hide-on-small-only
            -  .hide-on-small-and-down
            -  .hide-on-med-and-down
            -  .hide-on-med-and-up
            -  .hide-on-med-only
            -  .hide-on-large-only
            -  .show-on-large
            -  .show-on-medium
            -  .show-on-small
            -  .show-on-medium-and-up
            -  .show-on-medium-and-down
            -            
            - -

            Sass

            -
            
            -  @media #{$small-and-down} {
            -    // styles for small screens and down
            -  }
            -  @media #{$medium-and-up} {
            -    // styles for medium screens and larger
            -  }
            -  @media #{$medium-and-down} {
            -    // styles for medium screens and down
            -  }
            -  @media #{$large-and-up} {
            -    // styles for large screens and up
            -  }
            -            
            -
            - - -
            -

            Prefixer

            -

            - One major goal of this framework is to be as adaptable as possible which includes cross browser compatibility. We have adapted a prefixer script to Sass which will automatically add all browser prefixes for certain CSS properties. -

            - - - For Example: Using this Sass mixin -
            
            -  @include transition(.3s);
            -        
            - Will Output This -
            
            -  -webkit-transition: 0.3s;
            -  -moz-transition: 0.3s;
            -  -o-transition: 0.3s;
            -  -ms-transition: 0.3s;
            -  transition: 0.3s;
            -        
            - Here is the full list of mixins -
            
            -  animation($args)
            -  animation-delay($delay)
            -  animation-direction($direction)
            -  animation-duration($duration)
            -  animation-fill-mode($mode)
            -  animation-iteration-count($count)
            -  animation-name($name)
            -  animation-play-state($state)
            -  animation-timing-function($function)
            -  background-size($args)
            -  box-sizing($args)
            -      border-box()
            -      content-box()
            -  columns($args)
            -      column-count($count)
            -      column-gap($gap)
            -      column-rule($args)
            -      column-width($width)
            -  gradient($default,$start,$stop)
            -      linear-gradient-top($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])
            -      linear-gradient-left($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])
            -  transform($args)
            -      transform-origin($args)
            -      transform-style($style)
            -      rotate($deg)
            -      scale($factor)
            -      translate($x,$y)
            -      translate3d($x,$y,$z)
            -      translateHardware($x,$y)
            -  text-shadow($args)
            -  transition($args)
            -      transition-delay($delay)
            -      transition-duration($duration)
            -      transition-property($property)
            -      transition-timing-function($function)
            -        
            -
            -
            -
            -
            -
            - - -
            - -
            -
            - -
            - -
            diff --git a/node_modules/materialize-css/jade/page-contents/scrollfire_content.html b/node_modules/materialize-css/jade/page-contents/scrollfire_content.html deleted file mode 100644 index 5fa8692..0000000 --- a/node_modules/materialize-css/jade/page-contents/scrollfire_content.html +++ /dev/null @@ -1,124 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            ScrollFire is a jQuery Plugin that executes callback functions depending on how far into the page you've scrolled. We'll show you how you can use this plugin with many demos and examples.

            -
            - - -
            -

            jQuery Plugin Initialization

            -
            
            -  var options = [
            -    {selector: '.class', offset: 200, callback: customCallbackFunc } },
            -    {selector: '.other-class', offset: 200, callback: function() {
            -      customCallbackFunc();
            -    } },
            -  ];
            -  Materialize.scrollFire(options);
            -        
            -
            - -
            -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            selectorThe selector for the element that is being tracked.
            offsetIf this is 0, the callback will be fired when the selector element is at the very bottom of the user's window.
            callbackExecute a callback function when the user scrolls to the threshold. It will only be called once.
            The callback provides a parameter which refers to the current element selected.
            - - -

            ScrollFire Demo

            -

            Scroll through slowly to get sense of what ScrollFire can do for you. This is the ScrollFire code that we have used on this page.

            -
            -    
            -    var options = [
            -      {selector: '#staggered-test', offset: 50, callback: function(el) {
            -        Materialize.toast("This is our ScrollFire Demo!", 1500 );
            -      } },
            -      {selector: '#staggered-test', offset: 205, callback: function(el) {
            -        Materialize.toast("Please continue scrolling!", 1500 );
            -      } },
            -      {selector: '#staggered-test', offset: 400, callback: function(el) {
            -        Materialize.showStaggeredList($(el));
            -      } },
            -      {selector: '#image-test', offset: 500, callback: function(el) {
            -        Materialize.fadeInImage($(el));
            -      } }
            -    ];
            -    Materialize.scrollFire(options);
            -        
            - - - -
            - - - -
            - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - - - diff --git a/node_modules/materialize-css/jade/page-contents/scrollspy_content.html b/node_modules/materialize-css/jade/page-contents/scrollspy_content.html deleted file mode 100644 index 0aeddfc..0000000 --- a/node_modules/materialize-css/jade/page-contents/scrollspy_content.html +++ /dev/null @@ -1,92 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            Scrollspy is a jQuery plugin that tracks certain elements and which element the user's screen is currently centered on. Our main demo of this is our table of contents on every documentation page to the right. Clicking on these links will also scroll the page to that element.

            -
            - - -
            -

            Table of Contents Structure

            -
            
            -  <div class="row">
            -    <div class="col s12 m9 l10">
            -      <div id="introduction" class="section scrollspy">
            -        <p>Content </p>
            -      </div>
            -
            -      <div id="structure" class="section scrollspy">
            -        <p>Content </p>
            -      </div>
            -
            -      <div id="initialization" class="section scrollspy">
            -        <p>Content </p>
            -      </div>
            -    </div>
            -    <div class="col hide-on-small-only m3 l2">
            -      <ul class="section table-of-contents">
            -        <li><a href="#introduction">Introduction</a></li>
            -        <li><a href="#structure">Structure</a></li>
            -        <li><a href="#initialization">Intialization</a></li>
            -      </ul>
            -    </div>
            -  </div>
            -        
            -
            - - -
            -

            jQuery Plugin Initialization

            -
            
            -  $(document).ready(function(){
            -    $('.scrollspy').scrollSpy();
            -  });
            -        
            -
            - - -
            -

            jQuery Plugin Options

            - - - - - - - - - - - - - - -
            Option NameDescription
            scrollOffsetOffset for centering element when scrolled to. Default: 200
            -
            - -
            - - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/shadow_content.html b/node_modules/materialize-css/jade/page-contents/shadow_content.html deleted file mode 100644 index db9eb8e..0000000 --- a/node_modules/materialize-css/jade/page-contents/shadow_content.html +++ /dev/null @@ -1,64 +0,0 @@ -
            -
            - -
            - -
            -

            In material design, everything should have a certain z-depth that determines how far raised or close to the page the element is.

            -

            You can easily apply this shadow effect by adding a class="z-depth-2" to an HTML tag. Alternatively you can extend any of these shadows with Sass using @extend .z-depth-2. A z-depth-0 can be used to remove shadows from elements that have z-depths by default.

            -
            -
            -

            -
            -
            -

            -
            -
            -

            -
            -
            -

            -
            -
            -

            -
            -
            -

            -
            -
            -
            
            -    <div class="col s12 m2">
            -      <p class="z-depth-1">z-depth-1</p>
            -    </div>
            -    <div class="col s12 m2">
            -      <p class="z-depth-2">z-depth-2</p>
            -    </div>
            -    <div class="col s12 m2">
            -      <p class="z-depth-3">z-depth-3</p>
            -    </div>
            -    <div class="col s12 m2">
            -      <p class="z-depth-4">z-depth-4</p>
            -    </div>
            -    <div class="col s12 m2">
            -      <p class="z-depth-5">z-depth-5</p>
            -    </div>
            -        
            -
            -
            - -
            -
            -
            - - -
            -
            - -
            -
            -
            - -
            -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/sideNav_content.html b/node_modules/materialize-css/jade/page-contents/sideNav_content.html deleted file mode 100644 index e7f3d15..0000000 --- a/node_modules/materialize-css/jade/page-contents/sideNav_content.html +++ /dev/null @@ -1,184 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            This is a slide out menu. You can add a dropdown to your sidebar by using our collapsible component. If you want to see a demo, our sidebar will use this on smaller screens. To use this in conjunction with a fullscreen navigation, you have to use two copies of the same UL.

            - - Side nav demo - - - -

            HTML Structure

            -
            
            -  <ul id="slide-out" class="side-nav">
            -    <li><div class="userView">
            -      <div class="background">
            -        <img src="images/office.jpg">
            -      </div>
            -      <a href="#!user"><img class="circle" src="images/yuna.jpg"></a>
            -      <a href="#!name"><span class="white-text name">John Doe</span></a>
            -      <a href="#!email"><span class="white-text email">jdandturk@gmail.com</span></a>
            -    </div></li>
            -    <li><a href="#!"><i class="material-icons">cloud</i>First Link With Icon</a></li>
            -    <li><a href="#!">Second Link</a></li>
            -    <li><div class="divider"></div></li>
            -    <li><a class="subheader">Subheader</a></li>
            -    <li><a class="waves-effect" href="#!">Third Link With Waves</a></li>
            -  </ul>
            -  <a href="#" data-activates="slide-out" class="button-collapse"><i class="material-icons">menu</i></a>
            -        
            -
            - -
            -

            jQuery Plugin Initialization

            -
            
            -  // Initialize collapse button
            -  $(".button-collapse").sideNav();
            -  // Initialize collapsible (uncomment the line below if you use the dropdown variation)
            -  //$('.collapsible').collapsible();
            -        
            -
            - - -
            -

            Options

            -

            You can customize the sideNav by setting your own width and the alignment of the menu.

            -
            
            -  $('.button-collapse').sideNav({
            -      menuWidth: 300, // Default is 300
            -      edge: 'right', // Choose the horizontal origin
            -      closeOnClick: true, // Closes side-nav on <a> clicks, useful for Angular/Meteor
            -      draggable: true // Choose whether you can drag to open on touch screens
            -    }
            -  );
            -        
            -
            - -
            -

            jQuery Plugin Methods

            -

            We have methods to show and hide your sidebar you can use to programmatically control your sidebar.

            -
            
            -  // Show sideNav
            -  $('.button-collapse').sideNav('show');
            -  // Hide sideNav
            -  $('.button-collapse').sideNav('hide');
            -  // Destroy sideNav
            -  $('.button-collapse').sideNav('destroy');
            -        
            -
            - -
            -

            Variations

            -

            - Here are some useful variations and additional elements you can add to your sidebar. -

            - -

            Dropdown HTML Structure

            -

            Add collapsible menus to your sidebar.

            -
            
            -    <ul id="slide-out" class="side-nav">
            -      <li><a href="#!">First Sidebar Link</a></li>
            -      <li><a href="#!">Second Sidebar Link</a></li>
            -      <li class="no-padding">
            -        <ul class="collapsible collapsible-accordion">
            -          <li>
            -            <a class="collapsible-header">Dropdown<i class="material-icons">arrow_drop_down</i></a>
            -            <div class="collapsible-body">
            -              <ul>
            -                <li><a href="#!">First</a></li>
            -                <li><a href="#!">Second</a></li>
            -                <li><a href="#!">Third</a></li>
            -                <li><a href="#!">Fourth</a></li>
            -              </ul>
            -            </div>
            -          </li>
            -        </ul>
            -      </li>
            -    </ul>
            -    <ul class="right hide-on-med-and-down">
            -      <li><a href="#!">First Sidebar Link</a></li>
            -      <li><a href="#!">Second Sidebar Link</a></li>
            -      <li><a class="dropdown-button" href="#!" data-activates="dropdown1">Dropdown<i class="material-icons right">arrow_drop_down</i></a></li>
            -      <ul id='dropdown1' class='dropdown-content'>
            -        <li><a href="#!">First</a></li>
            -        <li><a href="#!">Second</a></li>
            -        <li><a href="#!">Third</a></li>
            -        <li><a href="#!">Fourth</a></li>
            -      </ul>
            -    </ul>
            -    <a href="#" data-activates="slide-out" class="button-collapse"><i class="material-icons">menu</i></a>
            -          

            - -

            Fullscreen HTML Structure

            -

            If you want the menu to be accessible on all screensizes you just have to add a simple helper class show-on-large to the .button-collapse.

            - -
            
            -    <ul id="slide-out" class="side-nav">
            -      <li><a href="#!">First Sidebar Link</a></li>
            -      <li><a href="#!">Second Sidebar Link</a></li>
            -    </ul>
            -    <a href="#" data-activates="slide-out" class="button-collapse show-on-large"><i class="material-icons">menu</i></a>
            -          

            - -

            Fixed HTML Structure

            -

            Add the class fixed to have the sideNav be fixed and open on large screens and hides to the regular functionality on smaller screens. Our sideNav on the left is an example of this.

            -
            
            -    <ul id="slide-out" class="side-nav fixed">
            -      <li><a href="#!">First Sidebar Link</a></li>
            -      <li><a href="#!">Second Sidebar Link</a></li>
            -    </ul>
            -    <a href="#" data-activates="slide-out" class="button-collapse"><i class="material-icons">menu</i></a>
            -          
            -

            If you are planning on using this you will have to offset your content by the width of the side menu. Place the padding on where the offset content will be, which in our case is in header, main and footer.

            -
            
            -    header, main, footer {
            -      padding-left: 300px;
            -    }
            -
            -    @media only screen and (max-width : 992px) {
            -      header, main, footer {
            -        padding-left: 0;
            -      }
            -    }
            -          
            -
            -
            - - -
            - -
            - -
            -
            diff --git a/node_modules/materialize-css/jade/page-contents/table_content.html b/node_modules/materialize-css/jade/page-contents/table_content.html deleted file mode 100644 index 041597c..0000000 --- a/node_modules/materialize-css/jade/page-contents/table_content.html +++ /dev/null @@ -1,307 +0,0 @@ -
            -
            - -
            - - -
            -

            Tables are a nice way to organize a lot of data. We provide a few utility classes to help you style your table as easily as possible. In addition, to improve mobile experience, all tables on mobile-screen widths are centered automatically.

            -

            Borderless Table

            -
            -
            -

            Tables are borderless by default.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            NameItem NameItem Price
            AlvinEclair$0.87
            AlanJellybean$3.76
            JonathanLollipop$7.00
            ShannonKitKat$9.99
            -
            -
            -
            
            -      <table>
            -        <thead>
            -          <tr>
            -              <th data-field="id">Name</th>
            -              <th data-field="name">Item Name</th>
            -              <th data-field="price">Item Price</th>
            -          </tr>
            -        </thead>
            -
            -        <tbody>
            -          <tr>
            -            <td>Alvin</td>
            -            <td>Eclair</td>
            -            <td>$0.87</td>
            -          </tr>
            -          <tr>
            -            <td>Alan</td>
            -            <td>Jellybean</td>
            -            <td>$3.76</td>
            -          </tr>
            -          <tr>
            -            <td>Jonathan</td>
            -            <td>Lollipop</td>
            -            <td>$7.00</td>
            -          </tr>
            -        </tbody>
            -      </table>
            -            
            -
            -
            -
            - -
            -

            Bordered Table

            -
            -
            -

            Add class="bordered" to the table tag for a bordered table

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            NameItem NameItem Price
            AlvinEclair$0.87
            AlanJellybean$3.76
            JonathanLollipop$7.00
            ShannonKitKat$9.99
            -
            -
            -
            - -
            -

            Striped Table

            -
            -
            -

            Add class="striped" to the table tag for a striped table

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            NameItem NameItem Price
            AlvinEclair$0.87
            AlanJellybean$3.76
            JonathanLollipop$7.00
            ShannonKitKat$9.99
            -
            -
            -
            - -
            -

            Highlight Table

            -
            -
            -

            Add class="highlight" to the table tag for a highlight table

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            NameItem NameItem Price
            AlvinEclair$0.87
            AlanJellybean$3.76
            JonathanLollipop$7.00
            ShannonKitKat$9.99
            -
            -
            -
            - -
            -

            Centered Table

            -
            -
            -

            Add class="centered" to the table tag to center align all the text in the table

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            NameItem NameItem Price
            AlvinEclair$0.87
            AlanJellybean$3.76
            JonathanLollipop$7.00
            ShannonKitKat$9.99
            -
            -
            - -
            - -
            -

            Responsive Table

            -
            -
            -

            Add class="responsive-table" to the table tag to make the table horizontally scrollable on smaller screen widths.

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            NameItem NameItem Price
            AlvinEclair$0.87
            AlanJellybean$3.76
            JonathanLollipop$7.00
            ShannonKitKat$9.99
            -
            -
            - -
            - - -
            - -
            -
            -
            - - -
            - -
            -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/tabs_content.html b/node_modules/materialize-css/jade/page-contents/tabs_content.html deleted file mode 100644 index 5f2b8e5..0000000 --- a/node_modules/materialize-css/jade/page-contents/tabs_content.html +++ /dev/null @@ -1,210 +0,0 @@ -
            -
            - -
            - -
            -

            Introduction

            -

            The tabs structure consists of an unordered list of tabs that have hashes corresponding to tab ids. Then when you click on each tab, only the container with the corresponding tab id will become visible. You can add the class .disabled to make a tab inaccessible.

            - -
            -
            Variable Width TabsDefault
            - -

            Test 1

            -

            Test 2

            -

            Test 3

            -

            Test 4

            - -
            -
            Fixed Width TabsAdd the .tabs-fixed-width class
            - -

            Test 1

            -

            Test 2

            -

            Test 3

            -

            Test 4

            -

            Test 5

            - -
            -
            Scrollable Tabs Tabs automatically become scrollable
            - -

            Test 5

            -

            Test 6

            -

            Test 7

            -

            Test 8

            -

            Test 9

            -

            Test 10

            -

            Test 11

            -

            Test 12

            -

            Test 13

            -

            Test 14

            -

            Test 15

            -
            - - -
            -

            Tabs HTML Structure

            -
            
            -  <div class="row">
            -    <div class="col s12">
            -      <ul class="tabs">
            -        <li class="tab col s3"><a href="#test1">Test 1</a></li>
            -        <li class="tab col s3"><a class="active" href="#test2">Test 2</a></li>
            -        <li class="tab col s3 disabled"><a href="#test3">Disabled Tab</a></li>
            -        <li class="tab col s3"><a href="#test4">Test 4</a></li>
            -      </ul>
            -    </div>
            -    <div id="test1" class="col s12">Test 1</div>
            -    <div id="test2" class="col s12">Test 2</div>
            -    <div id="test3" class="col s12">Test 3</div>
            -    <div id="test4" class="col s12">Test 4</div>
            -  </div>
            -        
            -
            - -
            -

            jQuery Plugin Initialization

            -

            Tabs are initialized automatically, but if you add tabs dynamically you will have to initialize them like this.

            -
            
            -  $(document).ready(function(){
            -    $('ul.tabs').tabs();
            -  });
            -        
            -
            - -
            -

            jQuery Plugin Methods

            -

            You can programmatically trigger a tab change with our select_tab method. You have to input the id of the tab you want to switch to. In the case of our demo it would be either test1, test2, test3, or test4.

            -
            
            -  $(document).ready(function(){
            -    $('ul.tabs').tabs('select_tab', 'tab_id');
            -  });
            -        
            -
            - - -
            -

            jQuery Plugin Options

            - - - - - - - - - - - - - - - - - - - - - - -
            Option NameDescription
            onShowExecute a callback function when the tab is changed.
            The callback provides a parameter which refers to the current tab being shown.
            swipeableSet to true to enable swipeable tabs. This also uses the responsiveThreshold option. Default: false
            responsiveThresholdThe maximum width of the screen, in pixels, where the swipeable functionality initializes. Default: Infinity
            -
            - - -
            -

            Preselecting a tab

            -

            By default, the first tab is selected. But if this is not what you want, you can preselect a tab by either passing in the hash in the url ex:#test2. Or you can add the class active to the a tag.

            -
            
            -  <li class="tab col s2"><a class="active" href="#test3">Test 3</a></li>
            -        
            -
            - - -
            -

            Linking to an External Page

            -

            By default, Materialize tabs will ignore their default anchor behaviour. To force a tab to behave as a regular hyperlink, just specify the target property of that link! A list of target values may be found here.

            -
            
            -  <li class="tab col s2">
            -    <a target="_blank" href="https://github.com/Dogfalo/materialize">External link in new window</a>
            -  </li>
            -  <li class="tab col s2">
            -    <a target="_self" href="https://github.com/Dogfalo/materialize">External link in same window</a>
            -  </li>
            -        
            -
            - - -
            -

            Swipeable Tabs

            -

            By setting the swipeable option to true, you can enable tabs where you can swipe on touch enabled devices to switch tabs. Make sure you keep the tab content divs in the same wrapping container. You can also set the responsiveThreshold option to a screen width in pixels where the swipeable functionality will activate.

            -

            Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.

            - -
            Test 1
            -
            Test 2
            -
            Test 3
            - -
            
            -  <ul id="tabs-swipe-demo" class="tabs">
            -    <li class="tab col s3"><a href="#test-swipe-1">Test 1</a></li>
            -    <li class="tab col s3"><a class="active" href="#test-swipe-2">Test 2</a></li>
            -    <li class="tab col s3"><a href="#test-swipe-3">Test 3</a></li>
            -  </ul>
            -  <div id="test-swipe-1" class="col s12 blue">Test 1</div>
            -  <div id="test-swipe-2" class="col s12 red">Test 2</div>
            -  <div id="test-swipe-3" class="col s12 green">Test 3</div>
            -        
            -
            - -
            - - - - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/transitions_content.html b/node_modules/materialize-css/jade/page-contents/transitions_content.html deleted file mode 100644 index bfd0047..0000000 --- a/node_modules/materialize-css/jade/page-contents/transitions_content.html +++ /dev/null @@ -1,103 +0,0 @@ -
            -
            - -
            - -
            -

            We've made some custom animation functions that will transition your content. It's recommended to use this with our ScrollFire Plugin to make your content transition in as you scroll.

            - -

            showStaggeredList

            -

            Use this to create a staggered reveal effect for any UL Tag with list items. Just make sure the list items in the UL are opacity: 0; to ensure the animation works correctly.

            - - - - - - - - - - - - - - - -
            Option NameDescription
            selectorOrElThe selector or element that the transition targets.
            -
            - - Click Me -
            
            -  <a href="#!" class="btn" onclick="Materialize.showStaggeredList('#staggered-test')">Click Me</a>
            -        
            - -
            - -
            -

            fadeInImage

            -

            Use this to fade in images. It also animates grayscale and brightness to give it a unique effect.

            - - - - - - - - - - - - - - - -
            Option NameDescription
            selectorOrElThe selector or element that the transition targets.
            -
            - - Click Me -
            
            -  <a href="#!" class="btn" onclick="Materialize.fadeInImage('#image-test')">Click Me</a>
            -        
            - -
            -
            - -
            - -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/page-contents/typography_content.html b/node_modules/materialize-css/jade/page-contents/typography_content.html deleted file mode 100644 index b351b38..0000000 --- a/node_modules/materialize-css/jade/page-contents/typography_content.html +++ /dev/null @@ -1,95 +0,0 @@ -
            -
            - -
            - -
            -
            -

            Roboto 2.0

            -

            - The standard font Material Design uses is Roboto. We have included the font files with our framework. -

            -
            -

            We bundle our framework with the latest iteration of Roboto Google has released. It comes with 5 different font weights you can use: 200, 300, 400, 500, 600.

            Here is an image from Google's Roboto Specimen document displaying the different font weights.

            - -
            - -

            Removing Roboto

            -

            In case you don't want to use Roboto on your webpage, fear not. Simply change the font stack by modifying the code below to your liking and add it to your custom css.

            -
            
            -  html {
            -    font-family: GillSans, Calibri, Trebuchet, sans-serif;
            -  }
            -        
            -
            - - -
            -

            Headers

            -

            We provide some basic styling on header tags. In the example, you can see the the 6 header tags' different sizes.

            -
            -

            Heading h1

            -

            Heading h2

            -

            Heading h3

            -

            Heading h4

            -
            Heading h5
            -
            Heading h6
            -
            -
            - -
            -

            Blockquotes

            -

            - Blockquotes are mainly used to give emphasis to a quote or citation. You can also use these for some extra text hierarchy and emphasis. -

            -
            - This is an example quotation that uses the blockquote tag. -
            Here is another line to make it look bigger. -
            -
            
            -    <blockquote>
            -      This is an example quotation that uses the blockquote tag.
            -    </blockquote>
            -          
            -
            - -
            -

            Flow Text

            - Toggle flow-text -
            -

            - One common flaw we've seen in many frameworks is a lack of support for truly responsive text. While elements on the page resize fluidly, text still resizes on a fixed basis. To ameliorate this problem, for text heavy pages, we've created a class that fluidly scales text size and line-height to optimize readability for the user. Line length stays between 45-80 characters and line height scales to be larger on smaller screens.

            -

            To see Flow Text in action, slowly resize your browser and watch the size of this text body change! Use the button above to toggle off/on flow-text to see the difference!

            -
            - -
            - -

            To use flow-text on a body of text, simply just add the class flow-text to a tag, see the code blow.

            -
            -
            
            -    <p class="flow-text">I am Flow Text</p>
            -          
            -
            -
            - -
            - -
            -
            -
            -
            - - -
            - -
            -
            -
            -
            \ No newline at end of file diff --git a/node_modules/materialize-css/jade/page-contents/waves_content.html b/node_modules/materialize-css/jade/page-contents/waves_content.html deleted file mode 100644 index e6910dd..0000000 --- a/node_modules/materialize-css/jade/page-contents/waves_content.html +++ /dev/null @@ -1,110 +0,0 @@ -
            -
            - -
            - -
            - -

            Introduction

            -

            Waves is an external library that we've included in Materialize to allow us to create the ink effect outlined in Material Design

            - Wave -
            - - - -
            -

            Applying Waves

            -

            To put the waves effect on buttons, you just have to put the class waves-effect on to the buttons. If you want the waves effect to be white instead, add both waves-effect waves-light as classes.

            -
            
            -  <a class="waves-effect waves-light btn-large" href="#">Wave</a>
            -      
            -
            - - - -
            - -

            Customization

            -

            There are several ways to customize waves, you can either use pre-created classes, or you can define your own color by creating a new class

            -
            -
            -
            Available Colors
            -

            To use these, just add the corresponding class to your button. Play around with changing the background color of butons and the waves effect to create something cool!

            -
            
            -    <a href="#!" class="btn waves-effect waves-teal">Send</a>
            -          
            -
            -
            DefaultSend
            -
            waves-lightSend
            -
            waves-redSend
            -
            waves-yellowSend
            -
            waves-orangeSend
            -
            waves-purpleSend
            -
            waves-greenSend
            -
            waves-tealSend
            -
            -
            - -
            -
            Custom Colors
            -

            If the color you want is not already available, you can easily make your own waves color by creating a custom CSS class. Take a look at the example below where we add a waves-brown effect

            - -
            
            -    /*
            -    When creating your CSS selector,
            -    change "brown" to something of your choosing
            -    */
            -    .waves-effect.waves-brown .waves-ripple {
            -     /* The alpha value allows the text and background color
            -     of the button to still show through. */
            -      background-color: rgba(121, 85, 72, 0.65);
            -    }
            -          
            -
            -
            -
            - -
            - -

            Circle

            -

            If you want waves to form to a non rectangular shape, there is an option for circular waves. Just add the waves-circle in addition to waves-effect

            -
            -
            -
            HTML Markup
            -
            
            -  <a href="#!" class="waves-effect waves-circle waves-light btn-floating secondary-content">
            -    <i class="material-icons">add</i>
            -  </a>
            -          
            -
            -
            Defaultadd
            -
            waves-lightadd
            -
            -
            -
            -
            - -
            - - - -
            - -
            - -
            -
            - diff --git a/node_modules/materialize-css/jade/pagination.jade b/node_modules/materialize-css/jade/pagination.jade deleted file mode 100644 index 395c4ef..0000000 --- a/node_modules/materialize-css/jade/pagination.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Pagination" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/pagination_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/parallax-demo.jade b/node_modules/materialize-css/jade/parallax-demo.jade deleted file mode 100644 index 1303858..0000000 --- a/node_modules/materialize-css/jade/parallax-demo.jade +++ /dev/null @@ -1,11 +0,0 @@ -- var page = "Parallax" -- var isDemo = true - -doctype html -html(lang="en") - head - include _head.jade - body(class="parallax-demo") - include page-contents/parallax_demo_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/parallax.jade b/node_modules/materialize-css/jade/parallax.jade deleted file mode 100644 index 0682abe..0000000 --- a/node_modules/materialize-css/jade/parallax.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Parallax" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/parallax_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/parallax/parallax_content.html b/node_modules/materialize-css/jade/parallax/parallax_content.html deleted file mode 100644 index 6f0cec1..0000000 --- a/node_modules/materialize-css/jade/parallax/parallax_content.html +++ /dev/null @@ -1,51 +0,0 @@ -
            - -
            - -
            - -
            -
            -
            -
            -
            -

            Parallax

            -

            Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

            -
            -
            -

            Parallax Demo HTML

            -
            
            -  <div class="parallax-container">
            -    <div class="parallax"><img src="images/parallax1.jpg"></div>
            -  </div>
            -  <div class="section white">
            -    <div class="row container">
            -      <h2 class="header">Parallax</h2>
            -      <p class="grey-text text-darken-3 lighten-3">Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.</p>
            -    </div>
            -  </div>
            -  <div class="parallax-container">
            -    <div class="parallax"><img src="images/parallax2.jpg"></div>
            -  </div>
            -      
            -
            -
            -
            -
            -
            - \ No newline at end of file diff --git a/node_modules/materialize-css/jade/preloader.jade b/node_modules/materialize-css/jade/preloader.jade deleted file mode 100644 index bd9c64c..0000000 --- a/node_modules/materialize-css/jade/preloader.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Preloader" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/preloader_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/pushpin-demo.jade b/node_modules/materialize-css/jade/pushpin-demo.jade deleted file mode 100644 index 0cfefed..0000000 --- a/node_modules/materialize-css/jade/pushpin-demo.jade +++ /dev/null @@ -1,21 +0,0 @@ -- var page = "Pushpin Demo" -- var isDemo = true - -doctype html -html(lang="en") - head - include _head.jade - style. - html, body, .block { - height: 100%; - } - nav ul li a:hover, nav ul li a.active { - background-color: rgba(0,0,0,.1); - } - footer { - padding-left: 0; - } - body - include page-contents/pushpin_demo_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/pushpin.jade b/node_modules/materialize-css/jade/pushpin.jade deleted file mode 100644 index 9133412..0000000 --- a/node_modules/materialize-css/jade/pushpin.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Pushpin" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/pushpin_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/sass.jade b/node_modules/materialize-css/jade/sass.jade deleted file mode 100644 index 5bb19dd..0000000 --- a/node_modules/materialize-css/jade/sass.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Sass" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/sass_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/scrollFire.jade b/node_modules/materialize-css/jade/scrollFire.jade deleted file mode 100644 index 11d76c9..0000000 --- a/node_modules/materialize-css/jade/scrollFire.jade +++ /dev/null @@ -1,34 +0,0 @@ -- var no_nav = false -- var page = "ScrollFire" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/scrollfire_content.html - include _footer.html - include _scripts.html - //- Scrollfire Script - script(type='text/javascript'). - var options = [ - {selector: '#staggered-test', offset: 50, callback: function(el) { - Materialize.toast("This is our ScrollFire Demo!", 1500); - $("#call-1").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); - } }, - {selector: '#staggered-test', offset: 205, callback: function(el) { - Materialize.toast("Please continue scrolling!", 1500); - $("#call-2").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); - } }, - {selector: '#staggered-test', offset: 500, callback: function(el) { - Materialize.showStaggeredList($(el)); - $("#call-3").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); - } }, - {selector: '#image-test', offset: 500, callback: function(el) { - Materialize.fadeInImage($(el)); - $("#call-4").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); - } } - ]; - Materialize.scrollFire(options); diff --git a/node_modules/materialize-css/jade/scrollspy.jade b/node_modules/materialize-css/jade/scrollspy.jade deleted file mode 100644 index 162770b..0000000 --- a/node_modules/materialize-css/jade/scrollspy.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Scrollspy" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/scrollspy_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/search.js b/node_modules/materialize-css/jade/search.js deleted file mode 100644 index 965648f..0000000 --- a/node_modules/materialize-css/jade/search.js +++ /dev/null @@ -1,348 +0,0 @@ -(function ($) { - $(document).ready(function() { - window.index = lunr(function () { - this.field('title', {boost: 10}); - this.field('body'); - this.ref('href'); - }); - window.index.pipeline.reset(); - - window.index.add({ - href: 'http://materializecss.com/about.html', - title: 'About', - body: 'Created and designed by Google, Material Design is a design language that combines the classic principles of successful design along with innovation and technology. Google"s goal is to develop a system of design that allows for a unified user experience across all their products on any platform.' - }); - - window.index.add({ - href: 'http://materializecss.com/badges.html', - title: 'Badges', - body: 'Badges can notify you that there are new or unread messages or notifications.' - }); - - window.index.add({ - href: 'http://materializecss.com/buttons.html', - title: 'Buttons', - body: 'There are 3 main button types described in material design. The raised button is a standard button that signify actions and seek to give depth to a mostly flat page. The floating circular action button is meant for very important functions. Flat buttons are usually used within elements that already have depth like cards or modals.' - }); - - window.index.add({ - href: 'http://materializecss.com/breadcrumbs.html', - title: 'Breadcrumbs', - body: 'There are 3 main button types described in material design. The raised button is a standard button that signify actions and seek to give depth to a mostly flat page. The floating circular action button is meant for very important functions. Flat buttons are usually used within elements that already have depth like cards or modals.' - }); - - window.index.add({ - href: 'http://materializecss.com/cards.html', - title: 'Cards', - body: 'Breadcrumbs are a good way to display your current location. This is usually used when you have multiple layers of content.' - }); - - window.index.add({ - href: 'http://materializecss.com/carousel.html', - title: 'Carousel', - body: 'Our Carousel is a robust and versatile component that can be an image slider, to an item carousel, to an onboarding experience.' - }); - - window.index.add({ - href: 'http://materializecss.com/chips.html', - title: 'Chips', - body: 'Chips can be used to represent small blocks of information. They are most commonly used either for contacts or for tags.' - }); - - window.index.add({ - href: 'http://materializecss.com/collapsible.html', - title: 'Collapsible', - body: 'Collapsibles are accordion elements that expand when clicked on. They allow you to hide content that is not immediately relevant to the user.' - }); - - window.index.add({ - href: 'http://materializecss.com/collections.html', - title: 'Collections', - body: 'Collections allow you to group list objects together.' - }); - - window.index.add({ - href: 'http://materializecss.com/color.html', - title: 'Color', - body: 'Here is a color palette based on the material design base colors. Each of these colors is defined with a base color class and an optional lighten or darken class.' - }); - - window.index.add({ - href: 'http://materializecss.com/dialogs.html', - title: 'dialogs tooltips toasts', - body: 'Dialogs are content that are not original visible on a page but show up with extra information if needed. The transitions should make the appearance of the dialog make sense and not jarring to the user.' - }); - - window.index.add({ - href: 'http://materializecss.com/dropdown.html', - title: 'dropdown', - body: 'Add a dropdown list to any button.' - }); - - window.index.add({ - href: 'http://materializecss.com/footer.html', - title: 'footer', - body: 'Footers are a great way to organize a lot of site navigation and information at the end of a page. This is where the user will look once hes finished scrolling through the current page or is looking for additional information about your website.' - }); - - window.index.add({ - href: 'http://materializecss.com/forms.html', - title: 'forms select radio checkbox switch range textarea', - body: 'Forms are the standard way to receive user inputted data. The transitions and smoothness of these elements are very important because of the inherent user interaction associated with forms.' - }); - - window.index.add({ - href: 'http://materializecss.com/fullscreen-slider-demo.html', - title: 'Fullscreen slider demo', - body: 'Fullscreen slider demo' - }); - - window.index.add({ - href: 'http://materializecss.com/getting-started.html', - title: 'Getting Started', - body: 'Learn how to easily start using Materialize in your website.' - }); - - window.index.add({ - href: 'http://materializecss.com/grid.html', - title: 'Grid', - body: 'We are using a standard 12 column fluid responsive grid system. The grid helps you layout your page in an ordered, easy fashion.' - }); - - window.index.add({ - href: 'http://materializecss.com/helpers.html', - title: 'Helpers', - body: 'helper classes' - }); - - window.index.add({ - href: 'http://materializecss.com/icons.html', - title: 'icons', - body: 'We have included 740 Material Design Icons courtesy of Google' - }); - - window.index.add({ - href: 'http://materializecss.com/media-css.html', - title: 'Media CSS', - body: 'Media CSS classes' - }); - - window.index.add({ - href: 'http://materializecss.com/media.html', - title: 'Media JavaScript slider materialbox', - body: 'Media components include things that have to do with large media objects like Images, Video, Audio, etc.' - }); - - window.index.add({ - href: 'http://materializecss.com/mobile.html', - title: 'Mobile', - body: 'Mobile only interactive components.' - }); - - window.index.add({ - href: 'http://materializecss.com/modals.html', - title: 'modals', - body: 'Use a modal for dialog boxes, confirmation messages, or other content that can be called up.' - }); - - window.index.add({ - href: 'http://materializecss.com/navbar.html', - title: 'navbar', - body: 'The navbar is fully contained by an HTML5 Nav tag. Inside a recommended container div, there are 2 main parts of the navbar. A logo or brand link, and the navigations links. You can align these links to the left or right.' - }); - - window.index.add({ - href: 'http://materializecss.com/pagination.html', - title: 'pagination', - body: 'Add pagination links to help split up your long content into shorter, easier to understand blocks.' - }); - - window.index.add({ - href: 'http://materializecss.com/parallax.html', - title: 'parallax', - body: 'Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.' - }); - - window.index.add({ - href: 'http://materializecss.com/preloader.html', - title: 'preloader', - body: 'If you have content that will take a long time to load, you should give the user feedback. For this reason we provide a number activity + progress indicators.' - }); - - window.index.add({ - href: 'http://materializecss.com/pushpin.html', - title: 'Pushpin', - body: 'Pushpin is our fixed positioning plugin. You can check out our live examples: the fixed Table of Contents on the right.' - }); - - window.index.add({ - href: 'http://materializecss.com/sass.html', - title: 'Sass', - body: 'When using Sass, you can change the color scheme of your site extremely quickly.' - }); - - window.index.add({ - href: 'http://materializecss.com/scrollfire.html', - title: 'scrollFire', - body: 'ScrollFire is a jQuery Plugin that executes callback functions depending on how far into the page you"ve scrolled.' - }); - - window.index.add({ - href: 'http://materializecss.com/scrollspy.html', - title: 'scrollspy', - body: 'Scrollspy is a jQuery plugin that tracks certain elements and which element the users screen is currently centered on.' - }); - - window.index.add({ - href: 'http://materializecss.com/shadow.html', - title: 'shadow', - body: 'In material design, everything should have a certain z-depth that determines how far raised or close to the page the element is.' - }); - - window.index.add({ - href: 'http://materializecss.com/showcase.html', - title: 'showcase', - body: 'Here is our showcase of websites that use materialize.' - }); - - window.index.add({ - href: 'http://materializecss.com/side-nav.html', - title: 'sideNav side Nav', - body: 'This is a slide out menu. You can add a dropdown to your sidebar by using our collapsible component.' - }); - - window.index.add({ - href: 'http://materializecss.com/table.html', - title: 'table', - body: 'Tables are a nice way to organize a lot of data. We provide a few utility classes to help you style your table as easily as possible.' - }); - - window.index.add({ - href: 'http://materializecss.com/tabs.html', - title: 'tabs', - body: 'The tabs structure consists of an unordered list of tabs that have hashes corresponding to tab ids. Then when you click on each tab, only the container with the corresponding tab id will become visible.' - }); - - window.index.add({ - href: 'http://materializecss.com/transitions.html', - title: 'transitions animation', - body: 'Weve made some custom animation functions that will transition your content.' - }); - - window.index.add({ - href: 'http://materializecss.com/typography.html', - title: 'Typography', - body: 'font, headers, blockquotes, flow text.' - }); - - window.index.add({ - href: 'http://materializecss.com/waves.html', - title: 'waves', - body: 'Waves is an external library that weve included in Materialize to allow us to create the ink effect outlined in Material Design' - }); - - // icon click - $('ul#nav-mobile li.search .search-wrapper i.material-icons').click(function() { - if ($('.search-results .focused').length) { - $('.search-results .focused').first()[0].click(); - } else if ($('.search-results').children().length) { - $('.search-results').children().first()[0].click(); - } - }); - - var renderResults = function(results) { - var resultsContainer = $('.search-results'); - resultsContainer.empty(); - Array.prototype.forEach.call(results, function(result) { - var resultDiv = $('' + result[0] + ''); - resultsContainer.append(resultDiv); - }); - }; - - var debounce = function (fn) { - var timeout; - return function () { - var args = Array.prototype.slice.call(arguments), - ctx = this; - - clearTimeout(timeout); - timeout = setTimeout(function () { - fn.apply(ctx, args); - }, 100); - }; - }; - - $('input#search').focus(function() { $(this).parent().addClass('focused'); }); - $('input#search').blur(function() { - if (!$(this).val()) { - $(this).parent().removeClass('focused'); - } - }); - - $('input#search').bind('keyup', debounce(function (e) { - if ($(this).val() < 2) { - renderResults([]); - return; - } - - if (e.which === 38 || e.which === 40 || e.keyCode === 13) return; - - var query = $(this).val(); - var results = window.index.search(query).slice(0, 6).map(function (result) { - var href = result.ref.split('http://materializecss.com/')[1]; - return [href.charAt(0).toUpperCase() + href.slice(1), result.ref]; - }); - renderResults(results); - })); - - - $('input#search').bind('keydown', debounce(function (e) { - // Escape. - if (e.keyCode === 27) { - $(this).val(''); - $(this).blur(); - renderResults([]); - return; - } else if (e.keyCode === 13) { - // enter - if ($('.search-results .focused').length) { - $('.search-results .focused').first()[0].click(); - } else if ($('.search-results').children().length) { - $('.search-results').children().first()[0].click(); - } - return; - } - - // Arrow keys. - var focused; - switch(e.which) { - case 38: // up - if ($('.search-results .focused').length) { - focused = $('.search-results .focused'); - focused.removeClass('focused'); - focused.prev().addClass('focused'); - } - break; - - case 40: // down - if (!$('.search-results .focused').length) { - focused = $('.search-results').children().first(); - focused.addClass('focused'); - } else { - focused = $('.search-results .focused'); - if (focused.next().length) { - focused.removeClass('focused'); - focused.next().addClass('focused'); - } - } - break; - - default: return; // exit this handler for other keys - } - e.preventDefault(); - })); - - - - }); -}( jQuery )); \ No newline at end of file diff --git a/node_modules/materialize-css/jade/shadow.jade b/node_modules/materialize-css/jade/shadow.jade deleted file mode 100644 index bc03f2d..0000000 --- a/node_modules/materialize-css/jade/shadow.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Shadow" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/shadow_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/showcase.jade b/node_modules/materialize-css/jade/showcase.jade deleted file mode 100644 index af51141..0000000 --- a/node_modules/materialize-css/jade/showcase.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Showcase" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include showcase/showcase_content.html - include _footer.html - include _scripts.html diff --git a/node_modules/materialize-css/jade/showcase/showcase_content.html b/node_modules/materialize-css/jade/showcase/showcase_content.html deleted file mode 100644 index bfc3139..0000000 --- a/node_modules/materialize-css/jade/showcase/showcase_content.html +++ /dev/null @@ -1,118 +0,0 @@ -
            -
            -
            -

            - Submit your site -

            - - -
            -
            - -
            - - -
            - -
            - -
            Emerald
            -
            -
            - -
            Caliber
            -
            -
            - -
            -
            - -
            Close Heat
            -
            -
            - -
            Stamplay
            -
            -
            - -
            RDX Sports
            -
            -
            - -
            - -
            - -
            Mako
            -
            -
            - -
            Straphq
            -
            -
            - -
            - - -
            - -
            Adbeus
            -
            -
            - -
            -
            - -
            Roboterwelt
            -
            -
            - -
            Joel Cox
            -
            - -
            - -
            -
            - -
            eadBox
            -
            -
            - -
            Webonise
            -
            -
            - -
            Kenya Apps
            -
            - -
            - -
            - -
            - - -
            - - - - diff --git a/node_modules/materialize-css/jade/sideNav.jade b/node_modules/materialize-css/jade/sideNav.jade deleted file mode 100644 index 58c7f2d..0000000 --- a/node_modules/materialize-css/jade/sideNav.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "SideNav" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/sideNav_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/table.jade b/node_modules/materialize-css/jade/table.jade deleted file mode 100644 index 3435fc4..0000000 --- a/node_modules/materialize-css/jade/table.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Table" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/table_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/tabs.jade b/node_modules/materialize-css/jade/tabs.jade deleted file mode 100644 index 5700bf3..0000000 --- a/node_modules/materialize-css/jade/tabs.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Tabs" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/tabs_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/transitions.jade b/node_modules/materialize-css/jade/transitions.jade deleted file mode 100644 index 1b1886e..0000000 --- a/node_modules/materialize-css/jade/transitions.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Transitions" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/transitions_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/typography.jade b/node_modules/materialize-css/jade/typography.jade deleted file mode 100644 index f51717a..0000000 --- a/node_modules/materialize-css/jade/typography.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Typography" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/typography_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/jade/waves.jade b/node_modules/materialize-css/jade/waves.jade deleted file mode 100644 index 64bd904..0000000 --- a/node_modules/materialize-css/jade/waves.jade +++ /dev/null @@ -1,13 +0,0 @@ -- var no_nav = false -- var page = "Waves" - -doctype html -html(lang="en") - head - include _head.jade - body - include _navbar.jade - main - include page-contents/waves_content.html - include _footer.html - include _scripts.html \ No newline at end of file diff --git a/node_modules/materialize-css/js/animation.js b/node_modules/materialize-css/js/animation.js deleted file mode 100644 index f9e6cf3..0000000 --- a/node_modules/materialize-css/js/animation.js +++ /dev/null @@ -1,8 +0,0 @@ -// Custom Easing -jQuery.extend( jQuery.easing, -{ - easeInOutMaterial: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t + b; - return c/4*((t-=2)*t*t + 2) + b; - } -}); \ No newline at end of file diff --git a/node_modules/materialize-css/js/buttons.js b/node_modules/materialize-css/js/buttons.js deleted file mode 100644 index b15a04c..0000000 --- a/node_modules/materialize-css/js/buttons.js +++ /dev/null @@ -1,267 +0,0 @@ -(function ($) { - $(document).ready(function() { - - // jQuery reverse - $.fn.reverse = [].reverse; - - // Hover behaviour: make sure this doesn't work on .click-to-toggle FABs! - $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) { - var $this = $(this); - openFABMenu($this); - }); - $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) { - var $this = $(this); - closeFABMenu($this); - }); - - // Toggle-on-click behaviour. - $(document).on('click.fabClickToggle', '.fixed-action-btn.click-to-toggle > a', function(e) { - var $this = $(this); - var $menu = $this.parent(); - if ($menu.hasClass('active')) { - closeFABMenu($menu); - } else { - openFABMenu($menu); - } - }); - - // Toolbar transition behaviour. - $(document).on('click.fabToolbar', '.fixed-action-btn.toolbar > a', function(e) { - var $this = $(this); - var $menu = $this.parent(); - FABtoToolbar($menu); - }); - - }); - - $.fn.extend({ - openFAB: function() { - openFABMenu($(this)); - }, - closeFAB: function() { - closeFABMenu($(this)); - }, - openToolbar: function() { - FABtoToolbar($(this)); - }, - closeToolbar: function() { - toolbarToFAB($(this)); - } - }); - - - var openFABMenu = function (btn) { - var $this = btn; - if ($this.hasClass('active') === false) { - - // Get direction option - var horizontal = $this.hasClass('horizontal'); - var offsetY, offsetX; - - if (horizontal === true) { - offsetX = 40; - } else { - offsetY = 40; - } - - $this.addClass('active'); - $this.find('ul .btn-floating').velocity( - { scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, - { duration: 0 }); - - var time = 0; - $this.find('ul .btn-floating').reverse().each( function () { - $(this).velocity( - { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'}, - { duration: 80, delay: time }); - time += 40; - }); - } - }; - - var closeFABMenu = function (btn) { - var $this = btn; - // Get direction option - var horizontal = $this.hasClass('horizontal'); - var offsetY, offsetX; - - if (horizontal === true) { - offsetX = 40; - } else { - offsetY = 40; - } - - $this.removeClass('active'); - var time = 0; - $this.find('ul .btn-floating').velocity("stop", true); - $this.find('ul .btn-floating').velocity( - { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, - { duration: 80 } - ); - }; - - - /** - * Transform FAB into toolbar - * @param {Object} object jQuery object - */ - var FABtoToolbar = function(btn) { - if (btn.attr('data-open') === "true") { - return; - } - - var offsetX, offsetY, scaleFactor; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var btnRect = btn[0].getBoundingClientRect(); - var anchor = btn.find('> a').first(); - var menu = btn.find('> ul').first(); - var backdrop = $('
            '); - var fabColor = anchor.css('background-color'); - anchor.append(backdrop); - - offsetX = btnRect.left - (windowWidth / 2) + (btnRect.width / 2); - offsetY = windowHeight - btnRect.bottom; - scaleFactor = windowWidth / backdrop.width(); - btn.attr('data-origin-bottom', btnRect.bottom); - btn.attr('data-origin-left', btnRect.left); - btn.attr('data-origin-width', btnRect.width); - - // Set initial state - btn.addClass('active'); - btn.attr('data-open', true); - btn.css({ - 'text-align': 'center', - width: '100%', - bottom: 0, - left: 0, - transform: 'translateX(' + offsetX + 'px)', - transition: 'none' - }); - anchor.css({ - transform: 'translateY(' + -offsetY + 'px)', - transition: 'none' - }); - backdrop.css({ - 'background-color': fabColor - }); - - - setTimeout(function() { - btn.css({ - transform: '', - transition: 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s' - }); - anchor.css({ - overflow: 'visible', - transform: '', - transition: 'transform .2s' - }); - - setTimeout(function() { - btn.css({ - overflow: 'hidden', - 'background-color': fabColor - }); - backdrop.css({ - transform: 'scale(' + scaleFactor + ')', - transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)' - }); - menu.find('> li > a').css({ - opacity: 1 - }); - - // Scroll to close. - $(window).on('scroll.fabToolbarClose', function() { - toolbarToFAB(btn); - $(window).off('scroll.fabToolbarClose'); - $(document).off('click.fabToolbarClose'); - }); - - $(document).on('click.fabToolbarClose', function(e) { - if (!$(e.target).closest(menu).length) { - toolbarToFAB(btn); - $(window).off('scroll.fabToolbarClose'); - $(document).off('click.fabToolbarClose'); - } - }); - }, 100); - }, 0); - }; - - /** - * Transform toolbar back into FAB - * @param {Object} object jQuery object - */ - var toolbarToFAB = function(btn) { - if (btn.attr('data-open') !== "true") { - return; - } - - var offsetX, offsetY, scaleFactor; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var btnWidth = btn.attr('data-origin-width'); - var btnBottom = btn.attr('data-origin-bottom'); - var btnLeft = btn.attr('data-origin-left'); - var anchor = btn.find('> .btn-floating').first(); - var menu = btn.find('> ul').first(); - var backdrop = btn.find('.fab-backdrop'); - var fabColor = anchor.css('background-color'); - - offsetX = btnLeft - (windowWidth / 2) + (btnWidth / 2); - offsetY = windowHeight - btnBottom; - scaleFactor = windowWidth / backdrop.width(); - - - // Hide backdrop - btn.removeClass('active'); - btn.attr('data-open', false); - btn.css({ - 'background-color': 'transparent', - transition: 'none' - }); - anchor.css({ - transition: 'none' - }); - backdrop.css({ - transform: 'scale(0)', - 'background-color': fabColor - }); - menu.find('> li > a').css({ - opacity: '' - }); - - setTimeout(function() { - backdrop.remove(); - - // Set initial state. - btn.css({ - 'text-align': '', - width: '', - bottom: '', - left: '', - overflow: '', - 'background-color': '', - transform: 'translate3d(' + -offsetX + 'px,0,0)' - }); - anchor.css({ - overflow: '', - transform: 'translate3d(0,' + offsetY + 'px,0)' - }); - - setTimeout(function() { - btn.css({ - transform: 'translate3d(0,0,0)', - transition: 'transform .2s' - }); - anchor.css({ - transform: 'translate3d(0,0,0)', - transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)' - }); - }, 20); - }, 200); - }; - - -}( jQuery )); diff --git a/node_modules/materialize-css/js/cards.js b/node_modules/materialize-css/js/cards.js deleted file mode 100644 index ccd6610..0000000 --- a/node_modules/materialize-css/js/cards.js +++ /dev/null @@ -1,26 +0,0 @@ -(function ($) { - $(document).ready(function() { - - $(document).on('click.card', '.card', function (e) { - if ($(this).find('> .card-reveal').length) { - if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { - // Make Reveal animate down and display none - $(this).find('.card-reveal').velocity( - {translateY: 0}, { - duration: 225, - queue: false, - easing: 'easeInOutQuad', - complete: function() { $(this).css({ display: 'none'}); } - } - ); - } - else if ($(e.target).is($('.card .activator')) || - $(e.target).is($('.card .activator i')) ) { - $(e.target).closest('.card').css('overflow', 'hidden'); - $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); - } - } - }); - - }); -}( jQuery )); \ No newline at end of file diff --git a/node_modules/materialize-css/js/carousel.js b/node_modules/materialize-css/js/carousel.js deleted file mode 100644 index 6a8b8fe..0000000 --- a/node_modules/materialize-css/js/carousel.js +++ /dev/null @@ -1,481 +0,0 @@ -(function ($) { - - var methods = { - - init : function(options) { - var defaults = { - duration: 200, // ms - dist: -100, // zoom scale TODO: make this more intuitive as an option - shift: 0, // spacing for center image - padding: 0, // Padding between non center items - fullWidth: false, // Change to full width styles - indicators: false, // Toggle indicators - noWrap: false, // Don't wrap around and cycle through items. - onCycleTo: null // Callback for when a new slide is cycled to. - }; - options = $.extend(defaults, options); - - return this.each(function() { - - var images, item_width, item_height, offset, center, pressed, dim, count, - reference, referenceY, amplitude, target, velocity, - xform, frame, timestamp, ticker, dragged, vertical_dragged; - var $indicators = $('
              '); - - - // Initialize - var view = $(this); - var showIndicators = view.attr('data-indicators') || options.indicators; - - // Don't double initialize. - if (view.hasClass('initialized')) { - // Redraw carousel. - $(this).trigger('carouselNext', [0.000001]); - return true; - } - - - // Options - if (options.fullWidth) { - options.dist = 0; - var firstImage = view.find('.carousel-item img').first(); - if (firstImage.length) { - imageHeight = firstImage.on('load', function(){ - view.css('height', $(this).height()); - }); - } else { - imageHeight = view.find('.carousel-item').first().height(); - view.css('height', imageHeight); - } - - // Offset fixed items when indicators. - if (showIndicators) { - view.find('.carousel-fixed-item').addClass('with-indicators'); - } - } - - - view.addClass('initialized'); - pressed = false; - offset = target = 0; - images = []; - item_width = view.find('.carousel-item').first().innerWidth(); - item_height = view.find('.carousel-item').first().innerHeight(); - dim = item_width * 2 + options.padding; - - view.find('.carousel-item').each(function (i) { - images.push($(this)[0]); - if (showIndicators) { - var $indicator = $('
            • '); - - // Add active to first by default. - if (i === 0) { - $indicator.addClass('active'); - } - - // Handle clicks on indicators. - $indicator.click(function (e) { - e.stopPropagation(); - - var index = $(this).index(); - cycleTo(index); - }); - $indicators.append($indicator); - } - }); - - if (showIndicators) { - view.append($indicators); - } - count = images.length; - - - function setupEvents() { - if (typeof window.ontouchstart !== 'undefined') { - view[0].addEventListener('touchstart', tap); - view[0].addEventListener('touchmove', drag); - view[0].addEventListener('touchend', release); - } - view[0].addEventListener('mousedown', tap); - view[0].addEventListener('mousemove', drag); - view[0].addEventListener('mouseup', release); - view[0].addEventListener('mouseleave', release); - view[0].addEventListener('click', click); - } - - function xpos(e) { - // touch event - if (e.targetTouches && (e.targetTouches.length >= 1)) { - return e.targetTouches[0].clientX; - } - - // mouse event - return e.clientX; - } - - function ypos(e) { - // touch event - if (e.targetTouches && (e.targetTouches.length >= 1)) { - return e.targetTouches[0].clientY; - } - - // mouse event - return e.clientY; - } - - function wrap(x) { - return (x >= count) ? (x % count) : (x < 0) ? wrap(count + (x % count)) : x; - } - - function scroll(x) { - var i, half, delta, dir, tween, el, alignment, xTranslation; - var lastCenter = center; - - offset = (typeof x === 'number') ? x : offset; - center = Math.floor((offset + dim / 2) / dim); - delta = offset - center * dim; - dir = (delta < 0) ? 1 : -1; - tween = -dir * delta * 2 / dim; - half = count >> 1; - - if (!options.fullWidth) { - alignment = 'translateX(' + (view[0].clientWidth - item_width) / 2 + 'px) '; - alignment += 'translateY(' + (view[0].clientHeight - item_height) / 2 + 'px)'; - } else { - alignment = 'translateX(0)'; - } - - // Set indicator active - if (showIndicators) { - var diff = (center % count); - var activeIndicator = $indicators.find('.indicator-item.active'); - if (activeIndicator.index() !== diff) { - activeIndicator.removeClass('active'); - $indicators.find('.indicator-item').eq(diff).addClass('active'); - } - } - - // center - // Don't show wrapped items. - if (!options.noWrap || (center >= 0 && center < count)) { - el = images[wrap(center)]; - - // Add active class to center item. - if (!$(el).hasClass('active')) { - view.find('.carousel-item').removeClass('active'); - $(el).addClass('active'); - } - el.style[xform] = alignment + - ' translateX(' + (-delta / 2) + 'px)' + - ' translateX(' + (dir * options.shift * tween * i) + 'px)' + - ' translateZ(' + (options.dist * tween) + 'px)'; - el.style.zIndex = 0; - if (options.fullWidth) { tweenedOpacity = 1; } - else { tweenedOpacity = 1 - 0.2 * tween; } - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - - for (i = 1; i <= half; ++i) { - // right side - if (options.fullWidth) { - zTranslation = options.dist; - tweenedOpacity = (i === half && delta < 0) ? 1 - tween : 1; - } else { - zTranslation = options.dist * (i * 2 + tween * dir); - tweenedOpacity = 1 - 0.2 * (i * 2 + tween * dir); - } - // Don't show wrapped items. - if (!options.noWrap || center + i < count) { - el = images[wrap(center + i)]; - el.style[xform] = alignment + - ' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' + - ' translateZ(' + zTranslation + 'px)'; - el.style.zIndex = -i; - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - - - // left side - if (options.fullWidth) { - zTranslation = options.dist; - tweenedOpacity = (i === half && delta > 0) ? 1 - tween : 1; - } else { - zTranslation = options.dist * (i * 2 - tween * dir); - tweenedOpacity = 1 - 0.2 * (i * 2 - tween * dir); - } - // Don't show wrapped items. - if (!options.noWrap || center - i >= 0) { - el = images[wrap(center - i)]; - el.style[xform] = alignment + - ' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' + - ' translateZ(' + zTranslation + 'px)'; - el.style.zIndex = -i; - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - } - - // center - // Don't show wrapped items. - if (!options.noWrap || (center >= 0 && center < count)) { - el = images[wrap(center)]; - el.style[xform] = alignment + - ' translateX(' + (-delta / 2) + 'px)' + - ' translateX(' + (dir * options.shift * tween) + 'px)' + - ' translateZ(' + (options.dist * tween) + 'px)'; - el.style.zIndex = 0; - if (options.fullWidth) { tweenedOpacity = 1; } - else { tweenedOpacity = 1 - 0.2 * tween; } - el.style.opacity = tweenedOpacity; - el.style.display = 'block'; - } - - // onCycleTo callback - if (lastCenter !== center && - typeof(options.onCycleTo) === "function") { - var $curr_item = view.find('.carousel-item').eq(wrap(center)); - options.onCycleTo.call(this, $curr_item, dragged); - } - } - - function track() { - var now, elapsed, delta, v; - - now = Date.now(); - elapsed = now - timestamp; - timestamp = now; - delta = offset - frame; - frame = offset; - - v = 1000 * delta / (1 + elapsed); - velocity = 0.8 * v + 0.2 * velocity; - } - - function autoScroll() { - var elapsed, delta; - - if (amplitude) { - elapsed = Date.now() - timestamp; - delta = amplitude * Math.exp(-elapsed / options.duration); - if (delta > 2 || delta < -2) { - scroll(target - delta); - requestAnimationFrame(autoScroll); - } else { - scroll(target); - } - } - } - - function click(e) { - // Disable clicks if carousel was dragged. - if (dragged) { - e.preventDefault(); - e.stopPropagation(); - return false; - - } else if (!options.fullWidth) { - var clickedIndex = $(e.target).closest('.carousel-item').index(); - var diff = (center % count) - clickedIndex; - - // Disable clicks if carousel was shifted by click - if (diff !== 0) { - e.preventDefault(); - e.stopPropagation(); - } - cycleTo(clickedIndex); - } - } - - function cycleTo(n) { - var diff = (center % count) - n; - - // Account for wraparound. - if (!options.noWrap) { - if (diff < 0) { - if (Math.abs(diff + count) < Math.abs(diff)) { diff += count; } - - } else if (diff > 0) { - if (Math.abs(diff - count) < diff) { diff -= count; } - } - } - - // Call prev or next accordingly. - if (diff < 0) { - view.trigger('carouselNext', [Math.abs(diff)]); - - } else if (diff > 0) { - view.trigger('carouselPrev', [diff]); - } - } - - function tap(e) { - pressed = true; - dragged = false; - vertical_dragged = false; - reference = xpos(e); - referenceY = ypos(e); - - velocity = amplitude = 0; - frame = offset; - timestamp = Date.now(); - clearInterval(ticker); - ticker = setInterval(track, 100); - - } - - function drag(e) { - var x, delta, deltaY; - if (pressed) { - x = xpos(e); - y = ypos(e); - delta = reference - x; - deltaY = Math.abs(referenceY - y); - if (deltaY < 30 && !vertical_dragged) { - // If vertical scrolling don't allow dragging. - if (delta > 2 || delta < -2) { - dragged = true; - reference = x; - scroll(offset + delta); - } - - } else if (dragged) { - // If dragging don't allow vertical scroll. - e.preventDefault(); - e.stopPropagation(); - return false; - - } else { - // Vertical scrolling. - vertical_dragged = true; - } - } - - if (dragged) { - // If dragging don't allow vertical scroll. - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - - function release(e) { - if (pressed) { - pressed = false; - } else { - return; - } - - clearInterval(ticker); - target = offset; - if (velocity > 10 || velocity < -10) { - amplitude = 0.9 * velocity; - target = offset + amplitude; - } - target = Math.round(target / dim) * dim; - - // No wrap of items. - if (options.noWrap) { - if (target >= dim * (count - 1)) { - target = dim * (count - 1); - } else if (target < 0) { - target = 0; - } - } - amplitude = target - offset; - timestamp = Date.now(); - requestAnimationFrame(autoScroll); - - if (dragged) { - e.preventDefault(); - e.stopPropagation(); - } - return false; - } - - xform = 'transform'; - ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) { - var e = prefix + 'Transform'; - if (typeof document.body.style[e] !== 'undefined') { - xform = e; - return false; - } - return true; - }); - - - $(window).on('resize.carousel', function() { - if (options.fullWidth) { - item_width = view.find('.carousel-item').first().innerWidth(); - item_height = view.find('.carousel-item').first().innerHeight(); - dim = item_width * 2 + options.padding; - offset = center * 2 * item_width; - target = offset; - } else { - scroll(); - } - }); - - setupEvents(); - scroll(offset); - - $(this).on('carouselNext', function(e, n) { - if (n === undefined) { - n = 1; - } - target = (dim * Math.round(offset / dim)) + (dim * n); - if (offset !== target) { - amplitude = target - offset; - timestamp = Date.now(); - requestAnimationFrame(autoScroll); - } - }); - - $(this).on('carouselPrev', function(e, n) { - if (n === undefined) { - n = 1; - } - target = (dim * Math.round(offset / dim)) - (dim * n); - if (offset !== target) { - amplitude = target - offset; - timestamp = Date.now(); - requestAnimationFrame(autoScroll); - } - }); - - $(this).on('carouselSet', function(e, n) { - if (n === undefined) { - n = 0; - } - cycleTo(n); - }); - - }); - - - - }, - next : function(n) { - $(this).trigger('carouselNext', [n]); - }, - prev : function(n) { - $(this).trigger('carouselPrev', [n]); - }, - set : function(n) { - $(this).trigger('carouselSet', [n]); - } - }; - - - $.fn.carousel = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.carousel' ); - } - }; // Plugin end -}( jQuery )); \ No newline at end of file diff --git a/node_modules/materialize-css/js/character_counter.js b/node_modules/materialize-css/js/character_counter.js deleted file mode 100644 index f85bf91..0000000 --- a/node_modules/materialize-css/js/character_counter.js +++ /dev/null @@ -1,72 +0,0 @@ -(function ($) { - - $.fn.characterCounter = function(){ - return this.each(function(){ - var $input = $(this); - var $counterElement = $input.parent().find('span[class="character-counter"]'); - - // character counter has already been added appended to the parent container - if ($counterElement.length) { - return; - } - - var itHasLengthAttribute = $input.attr('data-length') !== undefined; - - if(itHasLengthAttribute){ - $input.on('input', updateCounter); - $input.on('focus', updateCounter); - $input.on('blur', removeCounterElement); - - addCounterElement($input); - } - - }); - }; - - function updateCounter(){ - var maxLength = +$(this).attr('data-length'), - actualLength = +$(this).val().length, - isValidLength = actualLength <= maxLength; - - $(this).parent().find('span[class="character-counter"]') - .html( actualLength + '/' + maxLength); - - addInputStyle(isValidLength, $(this)); - } - - function addCounterElement($input) { - var $counterElement = $input.parent().find('span[class="character-counter"]'); - - if ($counterElement.length) { - return; - } - - $counterElement = $('') - .addClass('character-counter') - .css('float','right') - .css('font-size','12px') - .css('height', 1); - - $input.parent().append($counterElement); - } - - function removeCounterElement(){ - $(this).parent().find('span[class="character-counter"]').html(''); - } - - function addInputStyle(isValidLength, $input){ - var inputHasInvalidClass = $input.hasClass('invalid'); - if (isValidLength && inputHasInvalidClass) { - $input.removeClass('invalid'); - } - else if(!isValidLength && !inputHasInvalidClass){ - $input.removeClass('valid'); - $input.addClass('invalid'); - } - } - - $(document).ready(function(){ - $('input, textarea').characterCounter(); - }); - -}( jQuery )); diff --git a/node_modules/materialize-css/js/chips.js b/node_modules/materialize-css/js/chips.js deleted file mode 100644 index 3238cd8..0000000 --- a/node_modules/materialize-css/js/chips.js +++ /dev/null @@ -1,318 +0,0 @@ -(function ($) { - var materialChipsDefaults = { - data: [], - placeholder: '', - secondaryPlaceholder: '', - autocompleteData: {}, - autocompleteLimit: Infinity, - }; - - $(document).ready(function() { - // Handle removal of static chips. - $(document).on('click', '.chip .close', function(e){ - var $chips = $(this).closest('.chips'); - if ($chips.attr('data-initialized')) { - return; - } - $(this).closest('.chip').remove(); - }); - }); - - $.fn.material_chip = function (options) { - var self = this; - this.$el = $(this); - this.$document = $(document); - this.SELS = { - CHIPS: '.chips', - CHIP: '.chip', - INPUT: 'input', - DELETE: '.material-icons', - SELECTED_CHIP: '.selected', - }; - - if ('data' === options) { - return this.$el.data('chips'); - } - - var curr_options = $.extend({}, materialChipsDefaults, options); - self.hasAutocomplete = !$.isEmptyObject(curr_options.autocompleteData); - - // Initialize - this.init = function() { - var i = 0; - var chips; - self.$el.each(function(){ - var $chips = $(this); - var chipId = Materialize.guid(); - self.chipId = chipId; - - if (!curr_options.data || !(curr_options.data instanceof Array)) { - curr_options.data = []; - } - $chips.data('chips', curr_options.data); - $chips.attr('data-index', i); - $chips.attr('data-initialized', true); - - if (!$chips.hasClass(self.SELS.CHIPS)) { - $chips.addClass('chips'); - } - - self.chips($chips, chipId); - i++; - }); - }; - - this.handleEvents = function() { - var SELS = self.SELS; - - self.$document.off('click.chips-focus', SELS.CHIPS).on('click.chips-focus', SELS.CHIPS, function(e){ - $(e.target).find(SELS.INPUT).focus(); - }); - - self.$document.off('click.chips-select', SELS.CHIP).on('click.chips-select', SELS.CHIP, function(e){ - var $chip = $(e.target); - if ($chip.length) { - var wasSelected = $chip.hasClass('selected'); - var $chips = $chip.closest(SELS.CHIPS); - $(SELS.CHIP).removeClass('selected'); - - if (!wasSelected) { - self.selectChip($chip.index(), $chips); - } - } - }); - - self.$document.off('keydown.chips').on('keydown.chips', function(e){ - if ($(e.target).is('input, textarea')) { - return; - } - - // delete - var $chip = self.$document.find(SELS.CHIP + SELS.SELECTED_CHIP); - var $chips = $chip.closest(SELS.CHIPS); - var length = $chip.siblings(SELS.CHIP).length; - var index; - - if (!$chip.length) { - return; - } - - if (e.which === 8 || e.which === 46) { - e.preventDefault(); - - index = $chip.index(); - self.deleteChip(index, $chips); - - var selectIndex = null; - if ((index + 1) < length) { - selectIndex = index; - } else if (index === length || (index + 1) === length) { - selectIndex = length - 1; - } - - if (selectIndex < 0) selectIndex = null; - - if (null !== selectIndex) { - self.selectChip(selectIndex, $chips); - } - if (!length) $chips.find('input').focus(); - - // left - } else if (e.which === 37) { - index = $chip.index() - 1; - if (index < 0) { - return; - } - $(SELS.CHIP).removeClass('selected'); - self.selectChip(index, $chips); - - // right - } else if (e.which === 39) { - index = $chip.index() + 1; - $(SELS.CHIP).removeClass('selected'); - if (index > length) { - $chips.find('input').focus(); - return; - } - self.selectChip(index, $chips); - } - }); - - self.$document.off('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ - var $currChips = $(e.target).closest(SELS.CHIPS); - $currChips.addClass('focus'); - $currChips.siblings('label, .prefix').addClass('active'); - $(SELS.CHIP).removeClass('selected'); - }); - - self.$document.off('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ - var $currChips = $(e.target).closest(SELS.CHIPS); - $currChips.removeClass('focus'); - - // Remove active if empty - if (!$currChips.data('chips').length) { - $currChips.siblings('label').removeClass('active'); - } - $currChips.siblings('.prefix').removeClass('active'); - }); - - self.$document.off('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT).on('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT, function(e){ - var $target = $(e.target); - var $chips = $target.closest(SELS.CHIPS); - var chipsLength = $chips.children(SELS.CHIP).length; - - // enter - if (13 === e.which) { - // Override enter if autocompleting. - if (self.hasAutocomplete && - $chips.find('.autocomplete-content.dropdown-content').length && - $chips.find('.autocomplete-content.dropdown-content').children().length) { - return; - } - - e.preventDefault(); - self.addChip({tag: $target.val()}, $chips); - $target.val(''); - return; - } - - // delete or left - if ((8 === e.keyCode || 37 === e.keyCode) && '' === $target.val() && chipsLength) { - e.preventDefault(); - self.selectChip(chipsLength - 1, $chips); - $target.blur(); - return; - } - }); - - // Click on delete icon in chip. - self.$document.off('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE).on('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE, function(e) { - var $target = $(e.target); - var $chips = $target.closest(SELS.CHIPS); - var $chip = $target.closest(SELS.CHIP); - e.stopPropagation(); - self.deleteChip($chip.index(), $chips); - $chips.find('input').focus(); - }); - }; - - this.chips = function($chips, chipId) { - var html = ''; - $chips.data('chips').forEach(function(elem){ - html += self.renderChip(elem); - }); - html += ''; - $chips.html(html); - self.setPlaceholder($chips); - - // Set for attribute for label - var label = $chips.next('label'); - if (label.length) { - label.attr('for', chipId); - - if ($chips.data('chips').length) { - label.addClass('active'); - } - } - - // Setup autocomplete if needed. - var input = $('#' + chipId); - if (self.hasAutocomplete) { - input.autocomplete({ - data: curr_options.autocompleteData, - limit: curr_options.autocompleteLimit, - onAutocomplete: function(val) { - self.addChip({tag: val}, $chips); - input.val(''); - input.focus(); - }, - }) - } - }; - - this.renderChip = function(elem) { - if (!elem.tag) return; - - var html = '
              ' + elem.tag; - if (elem.image) { - html += ' '; - } - html += 'close'; - html += '
              '; - return html; - }; - - this.setPlaceholder = function($chips) { - if ($chips.data('chips').length && curr_options.placeholder) { - $chips.find('input').prop('placeholder', curr_options.placeholder); - - } else if (!$chips.data('chips').length && curr_options.secondaryPlaceholder) { - $chips.find('input').prop('placeholder', curr_options.secondaryPlaceholder); - } - }; - - this.isValid = function($chips, elem) { - var chips = $chips.data('chips'); - var exists = false; - for (var i=0; i < chips.length; i++) { - if (chips[i].tag === elem.tag) { - exists = true; - return; - } - } - return '' !== elem.tag && !exists; - }; - - this.addChip = function(elem, $chips) { - if (!self.isValid($chips, elem)) { - return; - } - var chipHtml = self.renderChip(elem); - var newData = []; - var oldData = $chips.data('chips'); - for (var i = 0; i < oldData.length; i++) { - newData.push(oldData[i]); - } - newData.push(elem); - - $chips.data('chips', newData); - $(chipHtml).insertBefore($chips.find('input')); - $chips.trigger('chip.add', elem); - self.setPlaceholder($chips); - }; - - this.deleteChip = function(chipIndex, $chips) { - var chip = $chips.data('chips')[chipIndex]; - $chips.find('.chip').eq(chipIndex).remove(); - - var newData = []; - var oldData = $chips.data('chips'); - for (var i = 0; i < oldData.length; i++) { - if (i !== chipIndex) { - newData.push(oldData[i]); - } - } - - $chips.data('chips', newData); - $chips.trigger('chip.delete', chip); - self.setPlaceholder($chips); - }; - - this.selectChip = function(chipIndex, $chips) { - var $chip = $chips.find('.chip').eq(chipIndex); - if ($chip && false === $chip.hasClass('selected')) { - $chip.addClass('selected'); - $chips.trigger('chip.select', $chips.data('chips')[chipIndex]); - } - }; - - this.getChipsElement = function(index, $chips) { - return $chips.eq(index); - }; - - // init - this.init(); - - this.handleEvents(); - }; -}( jQuery )); diff --git a/node_modules/materialize-css/js/collapsible.js b/node_modules/materialize-css/js/collapsible.js deleted file mode 100644 index 650c702..0000000 --- a/node_modules/materialize-css/js/collapsible.js +++ /dev/null @@ -1,160 +0,0 @@ -(function ($) { - $.fn.collapsible = function(options) { - var defaults = { - accordion: undefined, - onOpen: undefined, - onClose: undefined - }; - - options = $.extend(defaults, options); - - - return this.each(function() { - - var $this = $(this); - - var $panel_headers = $(this).find('> li > .collapsible-header'); - - var collapsible_type = $this.data("collapsible"); - - // Turn off any existing event handlers - $this.off('click.collapse', '> li > .collapsible-header'); - $panel_headers.off('click.collapse'); - - - /**************** - Helper Functions - ****************/ - - // Accordion Open - function accordionOpen(object) { - $panel_headers = $this.find('> li > .collapsible-header'); - if (object.hasClass('active')) { - object.parent().addClass('active'); - } - else { - object.parent().removeClass('active'); - } - if (object.parent().hasClass('active')){ - object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - else{ - object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - - $panel_headers.not(object).removeClass('active').parent().removeClass('active'); - - // Close previously open accordion elements. - $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).each(function() { - if ($(this).is(':visible')) { - $(this).slideUp({ - duration: 350, - easing: "easeOutQuart", - queue: false, - complete: - function() { - $(this).css('height', ''); - execCallbacks($(this).siblings('.collapsible-header')); - } - }); - } - }); - } - - // Expandable Open - function expandableOpen(object) { - if (object.hasClass('active')) { - object.parent().addClass('active'); - } - else { - object.parent().removeClass('active'); - } - if (object.parent().hasClass('active')){ - object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - else { - object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); - } - } - - // Open collapsible. object: .collapsible-header - function collapsibleOpen(object) { - if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion - accordionOpen(object); - } else { // Handle Expandables - expandableOpen(object); - } - - execCallbacks(object); - } - - // Handle callbacks - function execCallbacks(object) { - if (object.hasClass('active')) { - if (typeof(options.onOpen) === "function") { - options.onOpen.call(this, object.parent()); - } - } else { - if (typeof(options.onClose) === "function") { - options.onClose.call(this, object.parent()); - } - } - } - - /** - * Check if object is children of panel header - * @param {Object} object Jquery object - * @return {Boolean} true if it is children - */ - function isChildrenOfPanelHeader(object) { - - var panelHeader = getPanelHeader(object); - - return panelHeader.length > 0; - } - - /** - * Get panel header from a children element - * @param {Object} object Jquery object - * @return {Object} panel header object - */ - function getPanelHeader(object) { - - return object.closest('li > .collapsible-header'); - } - - /***** End Helper Functions *****/ - - - - // Add click handler to only direct collapsible header children - $this.on('click.collapse', '> li > .collapsible-header', function(e) { - var element = $(e.target); - - if (isChildrenOfPanelHeader(element)) { - element = getPanelHeader(element); - } - - element.toggleClass('active'); - - collapsibleOpen(element); - }); - - - // Open first active - if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion - collapsibleOpen($panel_headers.filter('.active').first()); - - } else { // Handle Expandables - $panel_headers.filter('.active').each(function() { - collapsibleOpen($(this)); - }); - } - - }); - }; - - $(document).ready(function(){ - $('.collapsible').collapsible(); - }); -}( jQuery )); \ No newline at end of file diff --git a/node_modules/materialize-css/js/date_picker/picker.date.js b/node_modules/materialize-css/js/date_picker/picker.date.js deleted file mode 100644 index fb264d0..0000000 --- a/node_modules/materialize-css/js/date_picker/picker.date.js +++ /dev/null @@ -1,1430 +0,0 @@ -/*! - * Date picker for pickadate.js v3.5.0 - * http://amsul.github.io/pickadate.js/date.htm - */ - -(function ( factory ) { - - // AMD. - if ( typeof define == 'function' && define.amd ) - define( ['picker', 'jquery'], factory ) - - // Node.js/browserify. - else if ( typeof exports == 'object' ) - module.exports = factory( require('./picker.js'), require('jquery') ) - - // Browser globals. - else factory( Picker, jQuery ) - -}(function( Picker, $ ) { - - -/** - * Globals and constants - */ -var DAYS_IN_WEEK = 7, - WEEKS_IN_CALENDAR = 6, - _ = Picker._ - - - -/** - * The date picker constructor - */ -function DatePicker( picker, settings ) { - - var calendar = this, - element = picker.$node[ 0 ], - elementValue = element.value, - elementDataValue = picker.$node.data( 'value' ), - valueString = elementDataValue || elementValue, - formatString = elementDataValue ? settings.formatSubmit : settings.format, - isRTL = function() { - - return element.currentStyle ? - - // For IE. - element.currentStyle.direction == 'rtl' : - - // For normal browsers. - getComputedStyle( picker.$root[0] ).direction == 'rtl' - } - - calendar.settings = settings - calendar.$node = picker.$node - - // The queue of methods that will be used to build item objects. - calendar.queue = { - min: 'measure create', - max: 'measure create', - now: 'now create', - select: 'parse create validate', - highlight: 'parse navigate create validate', - view: 'parse create validate viewset', - disable: 'deactivate', - enable: 'activate' - } - - // The component's item object. - calendar.item = {} - - calendar.item.clear = null - calendar.item.disable = ( settings.disable || [] ).slice( 0 ) - calendar.item.enable = -(function( collectionDisabled ) { - return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1 - })( calendar.item.disable ) - - calendar. - set( 'min', settings.min ). - set( 'max', settings.max ). - set( 'now' ) - - // When there’s a value, set the `select`, which in turn - // also sets the `highlight` and `view`. - if ( valueString ) { - calendar.set( 'select', valueString, { format: formatString }) - } - - // If there’s no value, default to highlighting “today”. - else { - calendar. - set( 'select', null ). - set( 'highlight', calendar.item.now ) - } - - - // The keycode to movement mapping. - calendar.key = { - 40: 7, // Down - 38: -7, // Up - 39: function() { return isRTL() ? -1 : 1 }, // Right - 37: function() { return isRTL() ? 1 : -1 }, // Left - go: function( timeChange ) { - var highlightedObject = calendar.item.highlight, - targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange ) - calendar.set( - 'highlight', - targetDate, - { interval: timeChange } - ) - this.render() - } - } - - - // Bind some picker events. - picker. - on( 'render', function() { - picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() { - var value = this.value - if ( value ) { - picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] ) - picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' ) - } - }) - picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() { - var value = this.value - if ( value ) { - picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] ) - picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' ) - } - }) - }, 1 ). - on( 'open', function() { - var includeToday = '' - if ( calendar.disabled( calendar.get('now') ) ) { - includeToday = ':not(.' + settings.klass.buttonToday + ')' - } - picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false ) - }, 1 ). - on( 'close', function() { - picker.$root.find( 'button, select' ).attr( 'disabled', true ) - }, 1 ) - -} //DatePicker - - -/** - * Set a datepicker item object. - */ -DatePicker.prototype.set = function( type, value, options ) { - - var calendar = this, - calendarItem = calendar.item - - // If the value is `null` just set it immediately. - if ( value === null ) { - if ( type == 'clear' ) type = 'select' - calendarItem[ type ] = value - return calendar - } - - // Otherwise go through the queue of methods, and invoke the functions. - // Update this as the time unit, and set the final value as this item. - // * In the case of `enable`, keep the queue but set `disable` instead. - // And in the case of `flip`, keep the queue but set `enable` instead. - calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) { - value = calendar[ method ]( type, value, options ) - return value - }).pop() - - // Check if we need to cascade through more updates. - if ( type == 'select' ) { - calendar.set( 'highlight', calendarItem.select, options ) - } - else if ( type == 'highlight' ) { - calendar.set( 'view', calendarItem.highlight, options ) - } - else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) { - if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) { - calendar.set( 'select', calendarItem.select, options ) - } - if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) { - calendar.set( 'highlight', calendarItem.highlight, options ) - } - } - - return calendar -} //DatePicker.prototype.set - - -/** - * Get a datepicker item object. - */ -DatePicker.prototype.get = function( type ) { - return this.item[ type ] -} //DatePicker.prototype.get - - -/** - * Create a picker date object. - */ -DatePicker.prototype.create = function( type, value, options ) { - - var isInfiniteValue, - calendar = this - - // If there’s no value, use the type as the value. - value = value === undefined ? type : value - - - // If it’s infinity, update the value. - if ( value == -Infinity || value == Infinity ) { - isInfiniteValue = value - } - - // If it’s an object, use the native date object. - else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) { - value = value.obj - } - - // If it’s an array, convert it into a date and make sure - // that it’s a valid date – otherwise default to today. - else if ( $.isArray( value ) ) { - value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] ) - value = _.isDate( value ) ? value : calendar.create().obj - } - - // If it’s a number or date object, make a normalized date. - else if ( _.isInteger( value ) || _.isDate( value ) ) { - value = calendar.normalize( new Date( value ), options ) - } - - // If it’s a literal true or any other case, set it to now. - else /*if ( value === true )*/ { - value = calendar.now( type, value, options ) - } - - // Return the compiled object. - return { - year: isInfiniteValue || value.getFullYear(), - month: isInfiniteValue || value.getMonth(), - date: isInfiniteValue || value.getDate(), - day: isInfiniteValue || value.getDay(), - obj: isInfiniteValue || value, - pick: isInfiniteValue || value.getTime() - } -} //DatePicker.prototype.create - - -/** - * Create a range limit object using an array, date object, - * literal “true”, or integer relative to another time. - */ -DatePicker.prototype.createRange = function( from, to ) { - - var calendar = this, - createDate = function( date ) { - if ( date === true || $.isArray( date ) || _.isDate( date ) ) { - return calendar.create( date ) - } - return date - } - - // Create objects if possible. - if ( !_.isInteger( from ) ) { - from = createDate( from ) - } - if ( !_.isInteger( to ) ) { - to = createDate( to ) - } - - // Create relative dates. - if ( _.isInteger( from ) && $.isPlainObject( to ) ) { - from = [ to.year, to.month, to.date + from ]; - } - else if ( _.isInteger( to ) && $.isPlainObject( from ) ) { - to = [ from.year, from.month, from.date + to ]; - } - - return { - from: createDate( from ), - to: createDate( to ) - } -} //DatePicker.prototype.createRange - - -/** - * Check if a date unit falls within a date range object. - */ -DatePicker.prototype.withinRange = function( range, dateUnit ) { - range = this.createRange(range.from, range.to) - return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick -} - - -/** - * Check if two date range objects overlap. - */ -DatePicker.prototype.overlapRanges = function( one, two ) { - - var calendar = this - - // Convert the ranges into comparable dates. - one = calendar.createRange( one.from, one.to ) - two = calendar.createRange( two.from, two.to ) - - return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) || - calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to ) -} - - -/** - * Get the date today. - */ -DatePicker.prototype.now = function( type, value, options ) { - value = new Date() - if ( options && options.rel ) { - value.setDate( value.getDate() + options.rel ) - } - return this.normalize( value, options ) -} - - -/** - * Navigate to next/prev month. - */ -DatePicker.prototype.navigate = function( type, value, options ) { - - var targetDateObject, - targetYear, - targetMonth, - targetDate, - isTargetArray = $.isArray( value ), - isTargetObject = $.isPlainObject( value ), - viewsetObject = this.item.view/*, - safety = 100*/ - - - if ( isTargetArray || isTargetObject ) { - - if ( isTargetObject ) { - targetYear = value.year - targetMonth = value.month - targetDate = value.date - } - else { - targetYear = +value[0] - targetMonth = +value[1] - targetDate = +value[2] - } - - // If we’re navigating months but the view is in a different - // month, navigate to the view’s year and month. - if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) { - targetYear = viewsetObject.year - targetMonth = viewsetObject.month - } - - // Figure out the expected target year and month. - targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 ) - targetYear = targetDateObject.getFullYear() - targetMonth = targetDateObject.getMonth() - - // If the month we’re going to doesn’t have enough days, - // keep decreasing the date until we reach the month’s last date. - while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) { - targetDate -= 1 - /*safety -= 1 - if ( !safety ) { - throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.' - }*/ - } - - value = [ targetYear, targetMonth, targetDate ] - } - - return value -} //DatePicker.prototype.navigate - - -/** - * Normalize a date by setting the hours to midnight. - */ -DatePicker.prototype.normalize = function( value/*, options*/ ) { - value.setHours( 0, 0, 0, 0 ) - return value -} - - -/** - * Measure the range of dates. - */ -DatePicker.prototype.measure = function( type, value/*, options*/ ) { - - var calendar = this - - // If it’s anything false-y, remove the limits. - if ( !value ) { - value = type == 'min' ? -Infinity : Infinity - } - - // If it’s a string, parse it. - else if ( typeof value == 'string' ) { - value = calendar.parse( type, value ) - } - - // If it's an integer, get a date relative to today. - else if ( _.isInteger( value ) ) { - value = calendar.now( type, value, { rel: value } ) - } - - return value -} ///DatePicker.prototype.measure - - -/** - * Create a viewset object based on navigation. - */ -DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) { - return this.create([ dateObject.year, dateObject.month, 1 ]) -} - - -/** - * Validate a date as enabled and shift if needed. - */ -DatePicker.prototype.validate = function( type, dateObject, options ) { - - var calendar = this, - - // Keep a reference to the original date. - originalDateObject = dateObject, - - // Make sure we have an interval. - interval = options && options.interval ? options.interval : 1, - - // Check if the calendar enabled dates are inverted. - isFlippedBase = calendar.item.enable === -1, - - // Check if we have any enabled dates after/before now. - hasEnabledBeforeTarget, hasEnabledAfterTarget, - - // The min & max limits. - minLimitObject = calendar.item.min, - maxLimitObject = calendar.item.max, - - // Check if we’ve reached the limit during shifting. - reachedMin, reachedMax, - - // Check if the calendar is inverted and at least one weekday is enabled. - hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) { - - // If there’s a date, check where it is relative to the target. - if ( $.isArray( value ) ) { - var dateTime = calendar.create( value ).pick - if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true - else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true - } - - // Return only integers for enabled weekdays. - return _.isInteger( value ) - }).length/*, - - safety = 100*/ - - - - // Cases to validate for: - // [1] Not inverted and date disabled. - // [2] Inverted and some dates enabled. - // [3] Not inverted and out of range. - // - // Cases to **not** validate for: - // • Navigating months. - // • Not inverted and date enabled. - // • Inverted and all dates disabled. - // • ..and anything else. - if ( !options || !options.nav ) if ( - /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) || - /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) || - /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) ) - ) { - - - // When inverted, flip the direction if there aren’t any enabled weekdays - // and there are no enabled dates in the direction of the interval. - if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) { - interval *= -1 - } - - - // Keep looping until we reach an enabled date. - while ( /*safety &&*/ calendar.disabled( dateObject ) ) { - - /*safety -= 1 - if ( !safety ) { - throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.' - }*/ - - - // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval. - if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) { - dateObject = originalDateObject - interval = interval > 0 ? 1 : -1 - } - - - // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit. - if ( dateObject.pick <= minLimitObject.pick ) { - reachedMin = true - interval = 1 - dateObject = calendar.create([ - minLimitObject.year, - minLimitObject.month, - minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1) - ]) - } - else if ( dateObject.pick >= maxLimitObject.pick ) { - reachedMax = true - interval = -1 - dateObject = calendar.create([ - maxLimitObject.year, - maxLimitObject.month, - maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1) - ]) - } - - - // If we’ve reached both limits, just break out of the loop. - if ( reachedMin && reachedMax ) { - break - } - - - // Finally, create the shifted date using the interval and keep looping. - dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ]) - } - - } //endif - - - // Return the date object settled on. - return dateObject -} //DatePicker.prototype.validate - - -/** - * Check if a date is disabled. - */ -DatePicker.prototype.disabled = function( dateToVerify ) { - - var - calendar = this, - - // Filter through the disabled dates to check if this is one. - isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) { - - // If the date is a number, match the weekday with 0index and `firstDay` check. - if ( _.isInteger( dateToDisable ) ) { - return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7 - } - - // If it’s an array or a native JS date, create and match the exact date. - if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) { - return dateToVerify.pick === calendar.create( dateToDisable ).pick - } - - // If it’s an object, match a date within the “from” and “to” range. - if ( $.isPlainObject( dateToDisable ) ) { - return calendar.withinRange( dateToDisable, dateToVerify ) - } - }) - - // If this date matches a disabled date, confirm it’s not inverted. - isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) { - return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' || - $.isPlainObject( dateToDisable ) && dateToDisable.inverted - }).length - - // Check the calendar “enabled” flag and respectively flip the - // disabled state. Then also check if it’s beyond the min/max limits. - return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch || - dateToVerify.pick < calendar.item.min.pick || - dateToVerify.pick > calendar.item.max.pick - -} //DatePicker.prototype.disabled - - -/** - * Parse a string into a usable type. - */ -DatePicker.prototype.parse = function( type, value, options ) { - - var calendar = this, - parsingObject = {} - - // If it’s already parsed, we’re good. - if ( !value || typeof value != 'string' ) { - return value - } - - // We need a `.format` to parse the value with. - if ( !( options && options.format ) ) { - options = options || {} - options.format = calendar.settings.format - } - - // Convert the format into an array and then map through it. - calendar.formats.toArray( options.format ).map( function( label ) { - - var - // Grab the formatting label. - formattingLabel = calendar.formats[ label ], - - // The format length is from the formatting label function or the - // label length without the escaping exclamation (!) mark. - formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length - - // If there's a format label, split the value up to the format length. - // Then add it to the parsing object with appropriate label. - if ( formattingLabel ) { - parsingObject[ label ] = value.substr( 0, formatLength ) - } - - // Update the value as the substring from format length to end. - value = value.substr( formatLength ) - }) - - // Compensate for month 0index. - return [ - parsingObject.yyyy || parsingObject.yy, - +( parsingObject.mm || parsingObject.m ) - 1, - parsingObject.dd || parsingObject.d - ] -} //DatePicker.prototype.parse - - -/** - * Various formats to display the object in. - */ -DatePicker.prototype.formats = (function() { - - // Return the length of the first word in a collection. - function getWordLengthFromCollection( string, collection, dateObject ) { - - // Grab the first word from the string. - var word = string.match( /\w+/ )[ 0 ] - - // If there's no month index, add it to the date object - if ( !dateObject.mm && !dateObject.m ) { - dateObject.m = collection.indexOf( word ) + 1 - } - - // Return the length of the word. - return word.length - } - - // Get the length of the first word in a string. - function getFirstWordLength( string ) { - return string.match( /\w+/ )[ 0 ].length - } - - return { - - d: function( string, dateObject ) { - - // If there's string, then get the digits length. - // Otherwise return the selected date. - return string ? _.digits( string ) : dateObject.date - }, - dd: function( string, dateObject ) { - - // If there's a string, then the length is always 2. - // Otherwise return the selected date with a leading zero. - return string ? 2 : _.lead( dateObject.date ) - }, - ddd: function( string, dateObject ) { - - // If there's a string, then get the length of the first word. - // Otherwise return the short selected weekday. - return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ] - }, - dddd: function( string, dateObject ) { - - // If there's a string, then get the length of the first word. - // Otherwise return the full selected weekday. - return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ] - }, - m: function( string, dateObject ) { - - // If there's a string, then get the length of the digits - // Otherwise return the selected month with 0index compensation. - return string ? _.digits( string ) : dateObject.month + 1 - }, - mm: function( string, dateObject ) { - - // If there's a string, then the length is always 2. - // Otherwise return the selected month with 0index and leading zero. - return string ? 2 : _.lead( dateObject.month + 1 ) - }, - mmm: function( string, dateObject ) { - - var collection = this.settings.monthsShort - - // If there's a string, get length of the relevant month from the short - // months collection. Otherwise return the selected month from that collection. - return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] - }, - mmmm: function( string, dateObject ) { - - var collection = this.settings.monthsFull - - // If there's a string, get length of the relevant month from the full - // months collection. Otherwise return the selected month from that collection. - return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] - }, - yy: function( string, dateObject ) { - - // If there's a string, then the length is always 2. - // Otherwise return the selected year by slicing out the first 2 digits. - return string ? 2 : ( '' + dateObject.year ).slice( 2 ) - }, - yyyy: function( string, dateObject ) { - - // If there's a string, then the length is always 4. - // Otherwise return the selected year. - return string ? 4 : dateObject.year - }, - - // Create an array by splitting the formatting string passed. - toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) }, - - // Format an object into a string using the formatting options. - toString: function ( formatString, itemObject ) { - var calendar = this - return calendar.formats.toArray( formatString ).map( function( label ) { - return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' ) - }).join( '' ) - } - } -})() //DatePicker.prototype.formats - - - - -/** - * Check if two date units are the exact. - */ -DatePicker.prototype.isDateExact = function( one, two ) { - - var calendar = this - - // When we’re working with weekdays, do a direct comparison. - if ( - ( _.isInteger( one ) && _.isInteger( two ) ) || - ( typeof one == 'boolean' && typeof two == 'boolean' ) - ) { - return one === two - } - - // When we’re working with date representations, compare the “pick” value. - if ( - ( _.isDate( one ) || $.isArray( one ) ) && - ( _.isDate( two ) || $.isArray( two ) ) - ) { - return calendar.create( one ).pick === calendar.create( two ).pick - } - - // When we’re working with range objects, compare the “from” and “to”. - if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { - return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to ) - } - - return false -} - - -/** - * Check if two date units overlap. - */ -DatePicker.prototype.isDateOverlap = function( one, two ) { - - var calendar = this, - firstDay = calendar.settings.firstDay ? 1 : 0 - - // When we’re working with a weekday index, compare the days. - if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) { - one = one % 7 + firstDay - return one === calendar.create( two ).day + 1 - } - if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) { - two = two % 7 + firstDay - return two === calendar.create( one ).day + 1 - } - - // When we’re working with range objects, check if the ranges overlap. - if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { - return calendar.overlapRanges( one, two ) - } - - return false -} - - -/** - * Flip the “enabled” state. - */ -DatePicker.prototype.flipEnable = function(val) { - var itemObject = this.item - itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1) -} - - -/** - * Mark a collection of dates as “disabled”. - */ -DatePicker.prototype.deactivate = function( type, datesToDisable ) { - - var calendar = this, - disabledItems = calendar.item.disable.slice(0) - - - // If we’re flipping, that’s all we need to do. - if ( datesToDisable == 'flip' ) { - calendar.flipEnable() - } - - else if ( datesToDisable === false ) { - calendar.flipEnable(1) - disabledItems = [] - } - - else if ( datesToDisable === true ) { - calendar.flipEnable(-1) - disabledItems = [] - } - - // Otherwise go through the dates to disable. - else { - - datesToDisable.map(function( unitToDisable ) { - - var matchFound - - // When we have disabled items, check for matches. - // If something is matched, immediately break out. - for ( var index = 0; index < disabledItems.length; index += 1 ) { - if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) { - matchFound = true - break - } - } - - // If nothing was found, add the validated unit to the collection. - if ( !matchFound ) { - if ( - _.isInteger( unitToDisable ) || - _.isDate( unitToDisable ) || - $.isArray( unitToDisable ) || - ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to ) - ) { - disabledItems.push( unitToDisable ) - } - } - }) - } - - // Return the updated collection. - return disabledItems -} //DatePicker.prototype.deactivate - - -/** - * Mark a collection of dates as “enabled”. - */ -DatePicker.prototype.activate = function( type, datesToEnable ) { - - var calendar = this, - disabledItems = calendar.item.disable, - disabledItemsCount = disabledItems.length - - // If we’re flipping, that’s all we need to do. - if ( datesToEnable == 'flip' ) { - calendar.flipEnable() - } - - else if ( datesToEnable === true ) { - calendar.flipEnable(1) - disabledItems = [] - } - - else if ( datesToEnable === false ) { - calendar.flipEnable(-1) - disabledItems = [] - } - - // Otherwise go through the disabled dates. - else { - - datesToEnable.map(function( unitToEnable ) { - - var matchFound, - disabledUnit, - index, - isExactRange - - // Go through the disabled items and try to find a match. - for ( index = 0; index < disabledItemsCount; index += 1 ) { - - disabledUnit = disabledItems[index] - - // When an exact match is found, remove it from the collection. - if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) { - matchFound = disabledItems[index] = null - isExactRange = true - break - } - - // When an overlapped match is found, add the “inverted” state to it. - else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) { - if ( $.isPlainObject( unitToEnable ) ) { - unitToEnable.inverted = true - matchFound = unitToEnable - } - else if ( $.isArray( unitToEnable ) ) { - matchFound = unitToEnable - if ( !matchFound[3] ) matchFound.push( 'inverted' ) - } - else if ( _.isDate( unitToEnable ) ) { - matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] - } - break - } - } - - // If a match was found, remove a previous duplicate entry. - if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) { - if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) { - disabledItems[index] = null - break - } - } - - // In the event that we’re dealing with an exact range of dates, - // make sure there are no “inverted” dates because of it. - if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) { - if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) { - disabledItems[index] = null - break - } - } - - // If something is still matched, add it into the collection. - if ( matchFound ) { - disabledItems.push( matchFound ) - } - }) - } - - // Return the updated collection. - return disabledItems.filter(function( val ) { return val != null }) -} //DatePicker.prototype.activate - - -/** - * Create a string for the nodes in the picker. - */ -DatePicker.prototype.nodes = function( isOpen ) { - - var - calendar = this, - settings = calendar.settings, - calendarItem = calendar.item, - nowObject = calendarItem.now, - selectedObject = calendarItem.select, - highlightedObject = calendarItem.highlight, - viewsetObject = calendarItem.view, - disabledCollection = calendarItem.disable, - minLimitObject = calendarItem.min, - maxLimitObject = calendarItem.max, - - - // Create the calendar table head using a copy of weekday labels collection. - // * We do a copy so we don't mutate the original array. - tableHead = (function( collection, fullCollection ) { - - // If the first day should be Monday, move Sunday to the end. - if ( settings.firstDay ) { - collection.push( collection.shift() ) - fullCollection.push( fullCollection.shift() ) - } - - // Create and return the table head group. - return _.node( - 'thead', - _.node( - 'tr', - _.group({ - min: 0, - max: DAYS_IN_WEEK - 1, - i: 1, - node: 'th', - item: function( counter ) { - return [ - collection[ counter ], - settings.klass.weekdays, - 'scope=col title="' + fullCollection[ counter ] + '"' - ] - } - }) - ) - ) //endreturn - - // Materialize modified - })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead - - - // Create the nav for next/prev month. - createMonthNav = function( next ) { - - // Otherwise, return the created month tag. - return _.node( - 'div', - ' ', - settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + ( - - // If the focused month is outside the range, disabled the button. - ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) || - ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ? - ' ' + settings.klass.navDisabled : '' - ), - 'data-nav=' + ( next || -1 ) + ' ' + - _.ariaAttr({ - role: 'button', - controls: calendar.$node[0].id + '_table' - }) + ' ' + - 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"' - ) //endreturn - }, //createMonthNav - - - // Create the month label. - //Materialize modified - createMonthLabel = function(override) { - - var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull - - // Materialize modified - if (override == "short_months") { - monthsCollection = settings.monthsShort; - } - - // If there are months to select, add a dropdown menu. - if ( settings.selectMonths && override == undefined) { - - return _.node( 'select', - _.group({ - min: 0, - max: 11, - i: 1, - node: 'option', - item: function( loopedMonth ) { - - return [ - - // The looped month and no classes. - monthsCollection[ loopedMonth ], 0, - - // Set the value and selected index. - 'value=' + loopedMonth + - ( viewsetObject.month == loopedMonth ? ' selected' : '' ) + - ( - ( - ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) || - ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ) - ) ? - ' disabled' : '' - ) - ] - } - }), - settings.klass.selectMonth + ' browser-default', - ( isOpen ? '' : 'disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + - 'title="' + settings.labelMonthSelect + '"' - ) - } - - // Materialize modified - if (override == "short_months") - if (selectedObject != null) - return _.node( 'div', monthsCollection[ selectedObject.month ] ); - else return _.node( 'div', monthsCollection[ viewsetObject.month ] ); - - // If there's a need for a month selector - return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month ) - }, //createMonthLabel - - - // Create the year label. - // Materialize modified - createYearLabel = function(override) { - - var focusedYear = viewsetObject.year, - - // If years selector is set to a literal "true", set it to 5. Otherwise - // divide in half to get half before and half after focused year. - numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 ) - - // If there are years to select, add a dropdown menu. - if ( numberYears ) { - - var - minYear = minLimitObject.year, - maxYear = maxLimitObject.year, - lowestYear = focusedYear - numberYears, - highestYear = focusedYear + numberYears - - // If the min year is greater than the lowest year, increase the highest year - // by the difference and set the lowest year to the min year. - if ( minYear > lowestYear ) { - highestYear += minYear - lowestYear - lowestYear = minYear - } - - // If the max year is less than the highest year, decrease the lowest year - // by the lower of the two: available and needed years. Then set the - // highest year to the max year. - if ( maxYear < highestYear ) { - - var availableYears = lowestYear - minYear, - neededYears = highestYear - maxYear - - lowestYear -= availableYears > neededYears ? neededYears : availableYears - highestYear = maxYear - } - - if ( settings.selectYears && override == undefined ) { - return _.node( 'select', - _.group({ - min: lowestYear, - max: highestYear, - i: 1, - node: 'option', - item: function( loopedYear ) { - return [ - - // The looped year and no classes. - loopedYear, 0, - - // Set the value and selected index. - 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' ) - ] - } - }), - settings.klass.selectYear + ' browser-default', - ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + - 'title="' + settings.labelYearSelect + '"' - ) - } - } - - // Materialize modified - if (override == "raw") - return _.node( 'div', focusedYear ) - - // Otherwise just return the year focused - return _.node( 'div', focusedYear, settings.klass.year ) - } //createYearLabel - - - // Materialize modified - createDayLabel = function() { - if (selectedObject != null) - return _.node( 'div', selectedObject.date) - else return _.node( 'div', nowObject.date) - } - createWeekdayLabel = function() { - var display_day; - - if (selectedObject != null) - display_day = selectedObject.day; - else - display_day = nowObject.day; - var weekday = settings.weekdaysFull[ display_day ] - return weekday - } - - - // Create and return the entire calendar. -return _.node( - // Date presentation View - 'div', - _.node( - 'div', - createWeekdayLabel(), - "picker__weekday-display" - )+ - _.node( - // Div for short Month - 'div', - createMonthLabel("short_months"), - settings.klass.month_display - )+ - _.node( - // Div for Day - 'div', - createDayLabel() , - settings.klass.day_display - )+ - _.node( - // Div for Year - 'div', - createYearLabel("raw") , - settings.klass.year_display - ), - settings.klass.date_display - )+ - // Calendar container - _.node('div', - _.node('div', - ( settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) + - createMonthNav() + createMonthNav( 1 ), - settings.klass.header - ) + _.node( - 'table', - tableHead + - _.node( - 'tbody', - _.group({ - min: 0, - max: WEEKS_IN_CALENDAR - 1, - i: 1, - node: 'tr', - item: function( rowCounter ) { - - // If Monday is the first day and the month starts on Sunday, shift the date back a week. - var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0 - - return [ - _.group({ - min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index - max: function() { - return this.min + DAYS_IN_WEEK - 1 - }, - i: 1, - node: 'td', - item: function( targetDate ) { - - // Convert the time date from a relative date to a target date. - targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ]) - - var isSelected = selectedObject && selectedObject.pick == targetDate.pick, - isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, - isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, - formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] ) - - return [ - _.node( - 'div', - targetDate.date, - (function( klasses ) { - - // Add the `infocus` or `outfocus` classes based on month in view. - klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus ) - - // Add the `today` class if needed. - if ( nowObject.pick == targetDate.pick ) { - klasses.push( settings.klass.now ) - } - - // Add the `selected` class if something's selected and the time matches. - if ( isSelected ) { - klasses.push( settings.klass.selected ) - } - - // Add the `highlighted` class if something's highlighted and the time matches. - if ( isHighlighted ) { - klasses.push( settings.klass.highlighted ) - } - - // Add the `disabled` class if something's disabled and the object matches. - if ( isDisabled ) { - klasses.push( settings.klass.disabled ) - } - - return klasses.join( ' ' ) - })([ settings.klass.day ]), - 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ - role: 'gridcell', - label: formattedDate, - selected: isSelected && calendar.$node.val() === formattedDate ? true : null, - activedescendant: isHighlighted ? true : null, - disabled: isDisabled ? true : null - }) - ), - '', - _.ariaAttr({ role: 'presentation' }) - ] //endreturn - } - }) - ] //endreturn - } - }) - ), - settings.klass.table, - 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ - role: 'grid', - controls: calendar.$node[0].id, - readonly: true - }) - ) - , settings.klass.calendar_container) // end calendar - - + - - // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. - _.node( - 'div', - _.node( 'button', settings.today, "btn-flat picker__today", - 'type=button data-pick=' + nowObject.pick + - ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id }) ) + - _.node( 'button', settings.clear, "btn-flat picker__clear", - 'type=button data-clear=1' + - ( isOpen ? '' : ' disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id }) ) + - _.node('button', settings.close, "btn-flat picker__close", - 'type=button data-close=true ' + - ( isOpen ? '' : ' disabled' ) + ' ' + - _.ariaAttr({ controls: calendar.$node[0].id }) ), - settings.klass.footer - ) //endreturn -} //DatePicker.prototype.nodes - - - - -/** - * The date picker defaults. - */ -DatePicker.defaults = (function( prefix ) { - - return { - - // The title label to use for the month nav buttons - labelMonthNext: 'Next month', - labelMonthPrev: 'Previous month', - - // The title label to use for the dropdown selectors - labelMonthSelect: 'Select a month', - labelYearSelect: 'Select a year', - - // Months and weekdays - monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], - monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], - weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], - weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], - - // Materialize modified - weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ], - - // Today and clear - today: 'Today', - clear: 'Clear', - close: 'Close', - - // The format to show on the `input` element - format: 'd mmmm, yyyy', - - // Classes - klass: { - - table: prefix + 'table', - - header: prefix + 'header', - - - // Materialize Added klasses - date_display: prefix + 'date-display', - day_display: prefix + 'day-display', - month_display: prefix + 'month-display', - year_display: prefix + 'year-display', - calendar_container: prefix + 'calendar-container', - // end - - - - navPrev: prefix + 'nav--prev', - navNext: prefix + 'nav--next', - navDisabled: prefix + 'nav--disabled', - - month: prefix + 'month', - year: prefix + 'year', - - selectMonth: prefix + 'select--month', - selectYear: prefix + 'select--year', - - weekdays: prefix + 'weekday', - - day: prefix + 'day', - disabled: prefix + 'day--disabled', - selected: prefix + 'day--selected', - highlighted: prefix + 'day--highlighted', - now: prefix + 'day--today', - infocus: prefix + 'day--infocus', - outfocus: prefix + 'day--outfocus', - - footer: prefix + 'footer', - - buttonClear: prefix + 'button--clear', - buttonToday: prefix + 'button--today', - buttonClose: prefix + 'button--close' - } - } -})( Picker.klasses().picker + '__' ) - - - - - -/** - * Extend the picker to add the date picker. - */ -Picker.extend( 'pickadate', DatePicker ) - - -})); - - diff --git a/node_modules/materialize-css/js/date_picker/picker.js b/node_modules/materialize-css/js/date_picker/picker.js deleted file mode 100644 index 48fbbad..0000000 --- a/node_modules/materialize-css/js/date_picker/picker.js +++ /dev/null @@ -1,1123 +0,0 @@ -/*! - * pickadate.js v3.5.0, 2014/04/13 - * By Amsul, http://amsul.ca - * Hosted on http://amsul.github.io/pickadate.js - * Licensed under MIT - */ - -(function ( factory ) { - - // AMD. - if ( typeof define == 'function' && define.amd ) - define( 'picker', ['jquery'], factory ) - - // Node.js/browserify. - else if ( typeof exports == 'object' ) - module.exports = factory( require('jquery') ) - - // Browser globals. - else this.Picker = factory( jQuery ) - -}(function( $ ) { - -var $window = $( window ) -var $document = $( document ) -var $html = $( document.documentElement ) - - -/** - * The picker constructor that creates a blank picker. - */ -function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) { - - // If there’s no element, return the picker constructor. - if ( !ELEMENT ) return PickerConstructor - - - var - IS_DEFAULT_THEME = false, - - - // The state of the picker. - STATE = { - id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ) - }, - - - // Merge the defaults and options passed. - SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {}, - - - // Merge the default classes with the settings classes. - CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ), - - - // The element node wrapper into a jQuery object. - $ELEMENT = $( ELEMENT ), - - - // Pseudo picker constructor. - PickerInstance = function() { - return this.start() - }, - - - // The picker prototype. - P = PickerInstance.prototype = { - - constructor: PickerInstance, - - $node: $ELEMENT, - - - /** - * Initialize everything - */ - start: function() { - - // If it’s already started, do nothing. - if ( STATE && STATE.start ) return P - - - // Update the picker states. - STATE.methods = {} - STATE.start = true - STATE.open = false - STATE.type = ELEMENT.type - - - // Confirm focus state, convert into text input to remove UA stylings, - // and set as readonly to prevent keyboard popup. - ELEMENT.autofocus = ELEMENT == getActiveElement() - ELEMENT.readOnly = !SETTINGS.editable - ELEMENT.id = ELEMENT.id || STATE.id - if ( ELEMENT.type != 'text' ) { - ELEMENT.type = 'text' - } - - - // Create a new picker component with the settings. - P.component = new COMPONENT(P, SETTINGS) - - - // Create the picker root with a holder and then prepare it. - P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') ) - prepareElementRoot() - - - // If there’s a format for the hidden input element, create the element. - if ( SETTINGS.formatSubmit ) { - prepareElementHidden() - } - - - // Prepare the input element. - prepareElement() - - - // Insert the root as specified in the settings. - if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root ) - else $ELEMENT.after( P.$root ) - - - // Bind the default component and settings events. - P.on({ - start: P.component.onStart, - render: P.component.onRender, - stop: P.component.onStop, - open: P.component.onOpen, - close: P.component.onClose, - set: P.component.onSet - }).on({ - start: SETTINGS.onStart, - render: SETTINGS.onRender, - stop: SETTINGS.onStop, - open: SETTINGS.onOpen, - close: SETTINGS.onClose, - set: SETTINGS.onSet - }) - - - // Once we’re all set, check the theme in use. - IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] ) - - - // If the element has autofocus, open the picker. - if ( ELEMENT.autofocus ) { - P.open() - } - - - // Trigger queued the “start” and “render” events. - return P.trigger( 'start' ).trigger( 'render' ) - }, //start - - - /** - * Render a new picker - */ - render: function( entireComponent ) { - - // Insert a new component holder in the root or box. - if ( entireComponent ) P.$root.html( createWrappedComponent() ) - else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) ) - - // Trigger the queued “render” events. - return P.trigger( 'render' ) - }, //render - - - /** - * Destroy everything - */ - stop: function() { - - // If it’s already stopped, do nothing. - if ( !STATE.start ) return P - - // Then close the picker. - P.close() - - // Remove the hidden field. - if ( P._hidden ) { - P._hidden.parentNode.removeChild( P._hidden ) - } - - // Remove the root. - P.$root.remove() - - // Remove the input class, remove the stored data, and unbind - // the events (after a tick for IE - see `P.close`). - $ELEMENT.removeClass( CLASSES.input ).removeData( NAME ) - setTimeout( function() { - $ELEMENT.off( '.' + STATE.id ) - }, 0) - - // Restore the element state - ELEMENT.type = STATE.type - ELEMENT.readOnly = false - - // Trigger the queued “stop” events. - P.trigger( 'stop' ) - - // Reset the picker states. - STATE.methods = {} - STATE.start = false - - return P - }, //stop - - - /** - * Open up the picker - */ - open: function( dontGiveFocus ) { - - // If it’s already open, do nothing. - if ( STATE.open ) return P - - // Add the “active” class. - $ELEMENT.addClass( CLASSES.active ) - aria( ELEMENT, 'expanded', true ) - - // * A Firefox bug, when `html` has `overflow:hidden`, results in - // killing transitions :(. So add the “opened” state on the next tick. - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 - setTimeout( function() { - - // Add the “opened” class to the picker root. - P.$root.addClass( CLASSES.opened ) - aria( P.$root[0], 'hidden', false ) - - }, 0 ) - - // If we have to give focus, bind the element and doc events. - if ( dontGiveFocus !== false ) { - - // Set it as open. - STATE.open = true - - // Prevent the page from scrolling. - if ( IS_DEFAULT_THEME ) { - $html. - css( 'overflow', 'hidden' ). - css( 'padding-right', '+=' + getScrollbarWidth() ) - } - - // Pass focus to the root element’s jQuery object. - // * Workaround for iOS8 to bring the picker’s root into view. - P.$root.eq(0).focus() - - // Bind the document events. - $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) { - - var target = event.target - - // If the target of the event is not the element, close the picker picker. - // * Don’t worry about clicks or focusins on the root because those don’t bubble up. - // Also, for Firefox, a click on an `option` element bubbles up directly - // to the doc. So make sure the target wasn't the doc. - // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, - // which causes the picker to unexpectedly close when right-clicking it. So make - // sure the event wasn’t a right-click. - if ( target != ELEMENT && target != document && event.which != 3 ) { - - // If the target was the holder that covers the screen, - // keep the element focused to maintain tabindex. - P.close( target === P.$root.children()[0] ) - } - - }).on( 'keydown.' + STATE.id, function( event ) { - - var - // Get the keycode. - keycode = event.keyCode, - - // Translate that to a selection change. - keycodeToMove = P.component.key[ keycode ], - - // Grab the target. - target = event.target - - - // On escape, close the picker and give focus. - if ( keycode == 27 ) { - P.close( true ) - } - - - // Check if there is a key movement or “enter” keypress on the element. - else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) { - - // Prevent the default action to stop page movement. - event.preventDefault() - - // Trigger the key movement action. - if ( keycodeToMove ) { - PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] ) - } - - // On “enter”, if the highlighted item isn’t disabled, set the value and close. - else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) { - P.set( 'select', P.component.item.highlight ).close() - } - } - - - // If the target is within the root and “enter” is pressed, - // prevent the default action and trigger a click on the target instead. - else if ( $.contains( P.$root[0], target ) && keycode == 13 ) { - event.preventDefault() - target.click() - } - }) - } - - // Trigger the queued “open” events. - return P.trigger( 'open' ) - }, //open - - - /** - * Close the picker - */ - close: function( giveFocus ) { - - // If we need to give focus, do it before changing states. - if ( giveFocus ) { - // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| - // The focus is triggered *after* the close has completed - causing it - // to open again. So unbind and rebind the event at the next tick. - P.$root.off( 'focus.toOpen' ).eq(0).focus() - setTimeout( function() { - P.$root.on( 'focus.toOpen', handleFocusToOpenEvent ) - }, 0 ) - } - - // Remove the “active” class. - $ELEMENT.removeClass( CLASSES.active ) - aria( ELEMENT, 'expanded', false ) - - // * A Firefox bug, when `html` has `overflow:hidden`, results in - // killing transitions :(. So remove the “opened” state on the next tick. - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 - setTimeout( function() { - - // Remove the “opened” and “focused” class from the picker root. - P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused ) - aria( P.$root[0], 'hidden', true ) - - }, 0 ) - - // If it’s already closed, do nothing more. - if ( !STATE.open ) return P - - // Set it as closed. - STATE.open = false - - // Allow the page to scroll. - if ( IS_DEFAULT_THEME ) { - $html. - css( 'overflow', '' ). - css( 'padding-right', '-=' + getScrollbarWidth() ) - } - - // Unbind the document events. - $document.off( '.' + STATE.id ) - - // Trigger the queued “close” events. - return P.trigger( 'close' ) - }, //close - - - /** - * Clear the values - */ - clear: function( options ) { - return P.set( 'clear', null, options ) - }, //clear - - - /** - * Set something - */ - set: function( thing, value, options ) { - - var thingItem, thingValue, - thingIsObject = $.isPlainObject( thing ), - thingObject = thingIsObject ? thing : {} - - // Make sure we have usable options. - options = thingIsObject && $.isPlainObject( value ) ? value : options || {} - - if ( thing ) { - - // If the thing isn’t an object, make it one. - if ( !thingIsObject ) { - thingObject[ thing ] = value - } - - // Go through the things of items to set. - for ( thingItem in thingObject ) { - - // Grab the value of the thing. - thingValue = thingObject[ thingItem ] - - // First, if the item exists and there’s a value, set it. - if ( thingItem in P.component.item ) { - if ( thingValue === undefined ) thingValue = null - P.component.set( thingItem, thingValue, options ) - } - - // Then, check to update the element value and broadcast a change. - if ( thingItem == 'select' || thingItem == 'clear' ) { - $ELEMENT. - val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ). - trigger( 'change' ) - } - } - - // Render a new picker. - P.render() - } - - // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. - return options.muted ? P : P.trigger( 'set', thingObject ) - }, //set - - - /** - * Get something - */ - get: function( thing, format ) { - - // Make sure there’s something to get. - thing = thing || 'value' - - // If a picker state exists, return that. - if ( STATE[ thing ] != null ) { - return STATE[ thing ] - } - - // Return the submission value, if that. - if ( thing == 'valueSubmit' ) { - if ( P._hidden ) { - return P._hidden.value - } - thing = 'value' - } - - // Return the value, if that. - if ( thing == 'value' ) { - return ELEMENT.value - } - - // Check if a component item exists, return that. - if ( thing in P.component.item ) { - if ( typeof format == 'string' ) { - var thingValue = P.component.get( thing ) - return thingValue ? - PickerConstructor._.trigger( - P.component.formats.toString, - P.component, - [ format, thingValue ] - ) : '' - } - return P.component.get( thing ) - } - }, //get - - - - /** - * Bind events on the things. - */ - on: function( thing, method, internal ) { - - var thingName, thingMethod, - thingIsObject = $.isPlainObject( thing ), - thingObject = thingIsObject ? thing : {} - - if ( thing ) { - - // If the thing isn’t an object, make it one. - if ( !thingIsObject ) { - thingObject[ thing ] = method - } - - // Go through the things to bind to. - for ( thingName in thingObject ) { - - // Grab the method of the thing. - thingMethod = thingObject[ thingName ] - - // If it was an internal binding, prefix it. - if ( internal ) { - thingName = '_' + thingName - } - - // Make sure the thing methods collection exists. - STATE.methods[ thingName ] = STATE.methods[ thingName ] || [] - - // Add the method to the relative method collection. - STATE.methods[ thingName ].push( thingMethod ) - } - } - - return P - }, //on - - - - /** - * Unbind events on the things. - */ - off: function() { - var i, thingName, - names = arguments; - for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) { - thingName = names[i] - if ( thingName in STATE.methods ) { - delete STATE.methods[thingName] - } - } - return P - }, - - - /** - * Fire off method events. - */ - trigger: function( name, data ) { - var _trigger = function( name ) { - var methodList = STATE.methods[ name ] - if ( methodList ) { - methodList.map( function( method ) { - PickerConstructor._.trigger( method, P, [ data ] ) - }) - } - } - _trigger( '_' + name ) - _trigger( name ) - return P - } //trigger - } //PickerInstance.prototype - - - /** - * Wrap the picker holder components together. - */ - function createWrappedComponent() { - - // Create a picker wrapper holder - return PickerConstructor._.node( 'div', - - // Create a picker wrapper node - PickerConstructor._.node( 'div', - - // Create a picker frame - PickerConstructor._.node( 'div', - - // Create a picker box node - PickerConstructor._.node( 'div', - - // Create the components nodes. - P.component.nodes( STATE.open ), - - // The picker box class - CLASSES.box - ), - - // Picker wrap class - CLASSES.wrap - ), - - // Picker frame class - CLASSES.frame - ), - - // Picker holder class - CLASSES.holder - ) //endreturn - } //createWrappedComponent - - - - /** - * Prepare the input element with all bindings. - */ - function prepareElement() { - - $ELEMENT. - - // Store the picker data by component name. - data(NAME, P). - - // Add the “input” class name. - addClass(CLASSES.input). - - // Remove the tabindex. - attr('tabindex', -1). - - // If there’s a `data-value`, update the value of the element. - val( $ELEMENT.data('value') ? - P.get('select', SETTINGS.format) : - ELEMENT.value - ) - - - // Only bind keydown events if the element isn’t editable. - if ( !SETTINGS.editable ) { - - $ELEMENT. - - // On focus/click, focus onto the root to open it up. - on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) { - event.preventDefault() - P.$root.eq(0).focus() - }). - - // Handle keyboard event based on the picker being opened or not. - on( 'keydown.' + STATE.id, handleKeydownEvent ) - } - - - // Update the aria attributes. - aria(ELEMENT, { - haspopup: true, - expanded: false, - readonly: false, - owns: ELEMENT.id + '_root' - }) - } - - - /** - * Prepare the root picker element with all bindings. - */ - function prepareElementRoot() { - - P.$root. - - on({ - - // For iOS8. - keydown: handleKeydownEvent, - - // When something within the root is focused, stop from bubbling - // to the doc and remove the “focused” state from the root. - focusin: function( event ) { - P.$root.removeClass( CLASSES.focused ) - event.stopPropagation() - }, - - // When something within the root holder is clicked, stop it - // from bubbling to the doc. - 'mousedown click': function( event ) { - - var target = event.target - - // Make sure the target isn’t the root holder so it can bubble up. - if ( target != P.$root.children()[ 0 ] ) { - - event.stopPropagation() - - // * For mousedown events, cancel the default action in order to - // prevent cases where focus is shifted onto external elements - // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120). - // Also, for Firefox, don’t prevent action on the `option` element. - if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) { - - event.preventDefault() - - // Re-focus onto the root so that users can click away - // from elements focused within the picker. - P.$root.eq(0).focus() - } - } - } - }). - - // Add/remove the “target” class on focus and blur. - on({ - focus: function() { - $ELEMENT.addClass( CLASSES.target ) - }, - blur: function() { - $ELEMENT.removeClass( CLASSES.target ) - } - }). - - // Open the picker and adjust the root “focused” state - on( 'focus.toOpen', handleFocusToOpenEvent ). - - // If there’s a click on an actionable element, carry out the actions. - on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() { - - var $target = $( this ), - targetData = $target.data(), - targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ), - - // * For IE, non-focusable elements can be active elements as well - // (http://stackoverflow.com/a/2684561). - activeElement = getActiveElement() - activeElement = activeElement && ( activeElement.type || activeElement.href ) - - // If it’s disabled or nothing inside is actively focused, re-focus the element. - if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) { - P.$root.eq(0).focus() - } - - // If something is superficially changed, update the `highlight` based on the `nav`. - if ( !targetDisabled && targetData.nav ) { - P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } ) - } - - // If something is picked, set `select` then close with focus. - else if ( !targetDisabled && 'pick' in targetData ) { - P.set( 'select', targetData.pick ) - } - - // If a “clear” button is pressed, empty the values and close with focus. - else if ( targetData.clear ) { - P.clear().close( true ) - } - - else if ( targetData.close ) { - P.close( true ) - } - - }) //P.$root - - aria( P.$root[0], 'hidden', true ) - } - - - /** - * Prepare the hidden input element along with all bindings. - */ - function prepareElementHidden() { - - var name - - if ( SETTINGS.hiddenName === true ) { - name = ELEMENT.name - ELEMENT.name = '' - } - else { - name = [ - typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '', - typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit' - ] - name = name[0] + ELEMENT.name + name[1] - } - - P._hidden = $( - '' - )[0] - - $ELEMENT. - - // If the value changes, update the hidden input with the correct format. - on('change.' + STATE.id, function() { - P._hidden.value = ELEMENT.value ? - P.get('select', SETTINGS.formatSubmit) : - '' - }) - - - // Insert the hidden input as specified in the settings. - if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden ) - else $ELEMENT.after( P._hidden ) - } - - - // For iOS8. - function handleKeydownEvent( event ) { - - var keycode = event.keyCode, - - // Check if one of the delete keys was pressed. - isKeycodeDelete = /^(8|46)$/.test(keycode) - - // For some reason IE clears the input value on “escape”. - if ( keycode == 27 ) { - P.close() - return false - } - - // Check if `space` or `delete` was pressed or the picker is closed with a key movement. - if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) { - - // Prevent it from moving the page and bubbling to doc. - event.preventDefault() - event.stopPropagation() - - // If `delete` was pressed, clear the values and close the picker. - // Otherwise open the picker. - if ( isKeycodeDelete ) { P.clear().close() } - else { P.open() } - } - } - - - // Separated for IE - function handleFocusToOpenEvent( event ) { - - // Stop the event from propagating to the doc. - event.stopPropagation() - - // If it’s a focus event, add the “focused” class to the root. - if ( event.type == 'focus' ) { - P.$root.addClass( CLASSES.focused ) - } - - // And then finally open the picker. - P.open() - } - - - // Return a new picker instance. - return new PickerInstance() -} //PickerConstructor - - - -/** - * The default classes and prefix to use for the HTML classes. - */ -PickerConstructor.klasses = function( prefix ) { - prefix = prefix || 'picker' - return { - - picker: prefix, - opened: prefix + '--opened', - focused: prefix + '--focused', - - input: prefix + '__input', - active: prefix + '__input--active', - target: prefix + '__input--target', - - holder: prefix + '__holder', - - frame: prefix + '__frame', - wrap: prefix + '__wrap', - - box: prefix + '__box' - } -} //PickerConstructor.klasses - - - -/** - * Check if the default theme is being used. - */ -function isUsingDefaultTheme( element ) { - - var theme, - prop = 'position' - - // For IE. - if ( element.currentStyle ) { - theme = element.currentStyle[prop] - } - - // For normal browsers. - else if ( window.getComputedStyle ) { - theme = getComputedStyle( element )[prop] - } - - return theme == 'fixed' -} - - - -/** - * Get the width of the browser’s scrollbar. - * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js - */ -function getScrollbarWidth() { - - if ( $html.height() <= $window.height() ) { - return 0 - } - - var $outer = $( '
              ' ). - appendTo( 'body' ) - - // Get the width without scrollbars. - var widthWithoutScroll = $outer[0].offsetWidth - - // Force adding scrollbars. - $outer.css( 'overflow', 'scroll' ) - - // Add the inner div. - var $inner = $( '
              ' ).appendTo( $outer ) - - // Get the width with scrollbars. - var widthWithScroll = $inner[0].offsetWidth - - // Remove the divs. - $outer.remove() - - // Return the difference between the widths. - return widthWithoutScroll - widthWithScroll -} - - - -/** - * PickerConstructor helper methods. - */ -PickerConstructor._ = { - - /** - * Create a group of nodes. Expects: - * ` - { - min: {Integer}, - max: {Integer}, - i: {Integer}, - node: {String}, - item: {Function} - } - * ` - */ - group: function( groupObject ) { - - var - // Scope for the looped object - loopObjectScope, - - // Create the nodes list - nodesList = '', - - // The counter starts from the `min` - counter = PickerConstructor._.trigger( groupObject.min, groupObject ) - - - // Loop from the `min` to `max`, incrementing by `i` - for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) { - - // Trigger the `item` function within scope of the object - loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] ) - - // Splice the subgroup and create nodes out of the sub nodes - nodesList += PickerConstructor._.node( - groupObject.node, - loopObjectScope[ 0 ], // the node - loopObjectScope[ 1 ], // the classes - loopObjectScope[ 2 ] // the attributes - ) - } - - // Return the list of nodes - return nodesList - }, //group - - - /** - * Create a dom node string - */ - node: function( wrapper, item, klass, attribute ) { - - // If the item is false-y, just return an empty string - if ( !item ) return '' - - // If the item is an array, do a join - item = $.isArray( item ) ? item.join( '' ) : item - - // Check for the class - klass = klass ? ' class="' + klass + '"' : '' - - // Check for any attributes - attribute = attribute ? ' ' + attribute : '' - - // Return the wrapped item - return '<' + wrapper + klass + attribute + '>' + item + '' - }, //node - - - /** - * Lead numbers below 10 with a zero. - */ - lead: function( number ) { - return ( number < 10 ? '0': '' ) + number - }, - - - /** - * Trigger a function otherwise return the value. - */ - trigger: function( callback, scope, args ) { - return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback - }, - - - /** - * If the second character is a digit, length is 2 otherwise 1. - */ - digits: function( string ) { - return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1 - }, - - - /** - * Tell if something is a date object. - */ - isDate: function( value ) { - return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() ) - }, - - - /** - * Tell if something is an integer. - */ - isInteger: function( value ) { - return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0 - }, - - - /** - * Create ARIA attribute strings. - */ - ariaAttr: ariaAttr -} //PickerConstructor._ - - - -/** - * Extend the picker with a component and defaults. - */ -PickerConstructor.extend = function( name, Component ) { - - // Extend jQuery. - $.fn[ name ] = function( options, action ) { - - // Grab the component data. - var componentData = this.data( name ) - - // If the picker is requested, return the data object. - if ( options == 'picker' ) { - return componentData - } - - // If the component data exists and `options` is a string, carry out the action. - if ( componentData && typeof options == 'string' ) { - return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] ) - } - - // Otherwise go through each matched element and if the component - // doesn’t exist, create a new picker using `this` element - // and merging the defaults and options with a deep copy. - return this.each( function() { - var $this = $( this ) - if ( !$this.data( name ) ) { - new PickerConstructor( this, name, Component, options ) - } - }) - } - - // Set the defaults. - $.fn[ name ].defaults = Component.defaults -} //PickerConstructor.extend - - - -function aria(element, attribute, value) { - if ( $.isPlainObject(attribute) ) { - for ( var key in attribute ) { - ariaSet(element, key, attribute[key]) - } - } - else { - ariaSet(element, attribute, value) - } -} -function ariaSet(element, attribute, value) { - element.setAttribute( - (attribute == 'role' ? '' : 'aria-') + attribute, - value - ) -} -function ariaAttr(attribute, data) { - if ( !$.isPlainObject(attribute) ) { - attribute = { attribute: data } - } - data = '' - for ( var key in attribute ) { - var attr = (key == 'role' ? '' : 'aria-') + key, - attrVal = attribute[key] - data += attrVal == null ? '' : attr + '="' + attribute[key] + '"' - } - return data -} - -// IE8 bug throws an error for activeElements within iframes. -function getActiveElement() { - try { - return document.activeElement - } catch ( err ) { } -} - - - -// Expose the picker constructor. -return PickerConstructor - - -})); - - diff --git a/node_modules/materialize-css/js/dropdown.js b/node_modules/materialize-css/js/dropdown.js deleted file mode 100644 index ccbefc9..0000000 --- a/node_modules/materialize-css/js/dropdown.js +++ /dev/null @@ -1,265 +0,0 @@ -(function ($) { - - // Add posibility to scroll to selected option - // usefull for select for example - $.fn.scrollTo = function(elem) { - $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); - return this; - }; - - $.fn.dropdown = function (options) { - var defaults = { - inDuration: 300, - outDuration: 225, - constrainWidth: true, // Constrains width of dropdown to the activator - hover: false, - gutter: 0, // Spacing from edge - belowOrigin: false, - alignment: 'left', - stopPropagation: false - }; - - // Open dropdown. - if (options === "open") { - this.each(function() { - $(this).trigger('open'); - }); - return false; - } - - // Close dropdown. - if (options === "close") { - this.each(function() { - $(this).trigger('close'); - }); - return false; - } - - this.each(function(){ - var origin = $(this); - var curr_options = $.extend({}, defaults, options); - var isFocused = false; - - // Dropdown menu - var activates = $("#"+ origin.attr('data-activates')); - - function updateOptions() { - if (origin.data('induration') !== undefined) - curr_options.inDuration = origin.data('induration'); - if (origin.data('outduration') !== undefined) - curr_options.outDuration = origin.data('outduration'); - if (origin.data('constrainwidth') !== undefined) - curr_options.constrainWidth = origin.data('constrainwidth'); - if (origin.data('hover') !== undefined) - curr_options.hover = origin.data('hover'); - if (origin.data('gutter') !== undefined) - curr_options.gutter = origin.data('gutter'); - if (origin.data('beloworigin') !== undefined) - curr_options.belowOrigin = origin.data('beloworigin'); - if (origin.data('alignment') !== undefined) - curr_options.alignment = origin.data('alignment'); - if (origin.data('stoppropagation') !== undefined) - curr_options.stopPropagation = origin.data('stoppropagation'); - } - - updateOptions(); - - // Attach dropdown to its activator - origin.after(activates); - - /* - Helper function to position and resize dropdown. - Used in hover and click handler. - */ - function placeDropdown(eventType) { - // Check for simultaneous focus and click events. - if (eventType === 'focus') { - isFocused = true; - } - - // Check html data attributes - updateOptions(); - - // Set Dropdown state - activates.addClass('active'); - origin.addClass('active'); - - // Constrain width - if (curr_options.constrainWidth === true) { - activates.css('width', origin.outerWidth()); - - } else { - activates.css('white-space', 'nowrap'); - } - - // Offscreen detection - var windowHeight = window.innerHeight; - var originHeight = origin.innerHeight(); - var offsetLeft = origin.offset().left; - var offsetTop = origin.offset().top - $(window).scrollTop(); - var currAlignment = curr_options.alignment; - var gutterSpacing = 0; - var leftPosition = 0; - - // Below Origin - var verticalOffset = 0; - if (curr_options.belowOrigin === true) { - verticalOffset = originHeight; - } - - // Check for scrolling positioned container. - var scrollYOffset = 0; - var scrollXOffset = 0; - var wrapper = origin.parent(); - if (!wrapper.is('body')) { - if (wrapper[0].scrollHeight > wrapper[0].clientHeight) { - scrollYOffset = wrapper[0].scrollTop; - } - if (wrapper[0].scrollWidth > wrapper[0].clientWidth) { - scrollXOffset = wrapper[0].scrollLeft; - } - } - - - if (offsetLeft + activates.innerWidth() > $(window).width()) { - // Dropdown goes past screen on right, force right alignment - currAlignment = 'right'; - - } else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) { - // Dropdown goes past screen on left, force left alignment - currAlignment = 'left'; - } - // Vertical bottom offscreen detection - if (offsetTop + activates.innerHeight() > windowHeight) { - // If going upwards still goes offscreen, just crop height of dropdown. - if (offsetTop + originHeight - activates.innerHeight() < 0) { - var adjustedHeight = windowHeight - offsetTop - verticalOffset; - activates.css('max-height', adjustedHeight); - } else { - // Flow upwards. - if (!verticalOffset) { - verticalOffset += originHeight; - } - verticalOffset -= activates.innerHeight(); - } - } - - // Handle edge alignment - if (currAlignment === 'left') { - gutterSpacing = curr_options.gutter; - leftPosition = origin.position().left + gutterSpacing; - } - else if (currAlignment === 'right') { - var offsetRight = origin.position().left + origin.outerWidth() - activates.outerWidth(); - gutterSpacing = -curr_options.gutter; - leftPosition = offsetRight + gutterSpacing; - } - - // Position dropdown - activates.css({ - position: 'absolute', - top: origin.position().top + verticalOffset + scrollYOffset, - left: leftPosition + scrollXOffset - }); - - - // Show dropdown - activates.stop(true, true).css('opacity', 0) - .slideDown({ - queue: false, - duration: curr_options.inDuration, - easing: 'easeOutCubic', - complete: function() { - $(this).css('height', ''); - } - }) - .animate( {opacity: 1}, {queue: false, duration: curr_options.inDuration, easing: 'easeOutSine'}); - - // Add click close handler to document - $(document).bind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'), function (e) { - if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length) ) { - hideDropdown(); - $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); - } - }); - } - - function hideDropdown() { - // Check for simultaneous focus and click events. - isFocused = false; - activates.fadeOut(curr_options.outDuration); - activates.removeClass('active'); - origin.removeClass('active'); - $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); - setTimeout(function() { activates.css('max-height', ''); }, curr_options.outDuration); - } - - // Hover - if (curr_options.hover) { - var open = false; - origin.unbind('click.' + origin.attr('id')); - // Hover handler to show dropdown - origin.on('mouseenter', function(e){ // Mouse over - if (open === false) { - placeDropdown(); - open = true; - } - }); - origin.on('mouseleave', function(e){ - // If hover on origin then to something other than dropdown content, then close - var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element - if(!$(toEl).closest('.dropdown-content').is(activates)) { - activates.stop(true, true); - hideDropdown(); - open = false; - } - }); - - activates.on('mouseleave', function(e){ // Mouse out - var toEl = e.toElement || e.relatedTarget; - if(!$(toEl).closest('.dropdown-button').is(origin)) { - activates.stop(true, true); - hideDropdown(); - open = false; - } - }); - - // Click - } else { - // Click handler to show dropdown - origin.unbind('click.' + origin.attr('id')); - origin.bind('click.'+origin.attr('id'), function(e){ - if (!isFocused) { - if ( origin[0] == e.currentTarget && - !origin.hasClass('active') && - ($(e.target).closest('.dropdown-content').length === 0)) { - e.preventDefault(); // Prevents button click from moving window - if (curr_options.stopPropagation) { - e.stopPropagation(); - } - placeDropdown('click'); - } - // If origin is clicked and menu is open, close menu - else if (origin.hasClass('active')) { - hideDropdown(); - $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id')); - } - } - }); - - } // End else - - // Listen to open and close event - useful for select component - origin.on('open', function(e, eventType) { - placeDropdown(eventType); - }); - origin.on('close', hideDropdown); - - - }); - }; // End dropdown plugin - - $(document).ready(function(){ - $('.dropdown-button').dropdown(); - }); -}( jQuery )); diff --git a/node_modules/materialize-css/js/forms.js b/node_modules/materialize-css/js/forms.js deleted file mode 100644 index ce7a0fa..0000000 --- a/node_modules/materialize-css/js/forms.js +++ /dev/null @@ -1,778 +0,0 @@ -(function ($) { - $(document).ready(function() { - - // Function to update labels of text fields - Materialize.updateTextFields = function() { - var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; - $(input_selector).each(function(index, element) { - var $this = $(this); - if ($(element).val().length > 0 || element.autofocus || $this.attr('placeholder') !== undefined) { - $this.siblings('label').addClass('active'); - } else if ($(element)[0].validity) { - $this.siblings('label').toggleClass('active', $(element)[0].validity.badInput === true); - } else { - $this.siblings('label').removeClass('active'); - } - }); - }; - - // Text based inputs - var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; - - // Add active if form auto complete - $(document).on('change', input_selector, function () { - if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) { - $(this).siblings('label').addClass('active'); - } - validate_field($(this)); - }); - - // Add active if input element has been pre-populated on document ready - $(document).ready(function() { - Materialize.updateTextFields(); - }); - - // HTML DOM FORM RESET handling - $(document).on('reset', function(e) { - var formReset = $(e.target); - if (formReset.is('form')) { - formReset.find(input_selector).removeClass('valid').removeClass('invalid'); - formReset.find(input_selector).each(function () { - if ($(this).attr('value') === '') { - $(this).siblings('label').removeClass('active'); - } - }); - - // Reset select - formReset.find('select.initialized').each(function () { - var reset_text = formReset.find('option[selected]').text(); - formReset.siblings('input.select-dropdown').val(reset_text); - }); - } - }); - - // Add active when element has focus - $(document).on('focus', input_selector, function () { - $(this).siblings('label, .prefix').addClass('active'); - }); - - $(document).on('blur', input_selector, function () { - var $inputElement = $(this); - var selector = ".prefix"; - - if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) { - selector += ", label"; - } - - $inputElement.siblings(selector).removeClass('active'); - - validate_field($inputElement); - }); - - window.validate_field = function(object) { - var hasLength = object.attr('data-length') !== undefined; - var lenAttr = parseInt(object.attr('data-length')); - var len = object.val().length; - - if (object.val().length === 0 && object[0].validity.badInput === false) { - if (object.hasClass('validate')) { - object.removeClass('valid'); - object.removeClass('invalid'); - } - } - else { - if (object.hasClass('validate')) { - // Check for character counter attributes - if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) { - object.removeClass('invalid'); - object.addClass('valid'); - } - else { - object.removeClass('valid'); - object.addClass('invalid'); - } - } - } - }; - - // Radio and Checkbox focus class - var radio_checkbox = 'input[type=radio], input[type=checkbox]'; - $(document).on('keyup.radio', radio_checkbox, function(e) { - // TAB, check if tabbing to radio or checkbox. - if (e.which === 9) { - $(this).addClass('tabbed'); - var $this = $(this); - $this.one('blur', function(e) { - - $(this).removeClass('tabbed'); - }); - return; - } - }); - - // Textarea Auto Resize - var hiddenDiv = $('.hiddendiv').first(); - if (!hiddenDiv.length) { - hiddenDiv = $('
              '); - $('body').append(hiddenDiv); - } - var text_area_selector = '.materialize-textarea'; - - function textareaAutoResize($textarea) { - // Set font properties of hiddenDiv - - var fontFamily = $textarea.css('font-family'); - var fontSize = $textarea.css('font-size'); - var lineHeight = $textarea.css('line-height'); - - if (fontSize) { hiddenDiv.css('font-size', fontSize); } - if (fontFamily) { hiddenDiv.css('font-family', fontFamily); } - if (lineHeight) { hiddenDiv.css('line-height', lineHeight); } - - if ($textarea.attr('wrap') === "off") { - hiddenDiv.css('overflow-wrap', "normal") - .css('white-space', "pre"); - } - - hiddenDiv.text($textarea.val() + '\n'); - var content = hiddenDiv.html().replace(/\n/g, '
              '); - hiddenDiv.html(content); - - - // When textarea is hidden, width goes crazy. - // Approximate with half of window size - - if ($textarea.is(':visible')) { - hiddenDiv.css('width', $textarea.width()); - } - else { - hiddenDiv.css('width', $(window).width()/2); - } - - $textarea.css('height', hiddenDiv.height()); - } - - $(text_area_selector).each(function () { - var $textarea = $(this); - if ($textarea.val().length) { - textareaAutoResize($textarea); - } - }); - - $('body').on('keyup keydown autoresize', text_area_selector, function () { - textareaAutoResize($(this)); - }); - - // File Input Path - $(document).on('change', '.file-field input[type="file"]', function () { - var file_field = $(this).closest('.file-field'); - var path_input = file_field.find('input.file-path'); - var files = $(this)[0].files; - var file_names = []; - for (var i = 0; i < files.length; i++) { - file_names.push(files[i].name); - } - path_input.val(file_names.join(", ")); - path_input.trigger('change'); - }); - - /**************** - * Range Input * - ****************/ - - var range_type = 'input[type=range]'; - var range_mousedown = false; - var left; - - $(range_type).each(function () { - var thumb = $(''); - $(this).after(thumb); - }); - - var range_wrapper = '.range-field'; - $(document).on('change', range_type, function(e) { - var thumb = $(this).siblings('.thumb'); - thumb.find('.value').html($(this).val()); - }); - - $(document).on('input mousedown touchstart', range_type, function(e) { - var thumb = $(this).siblings('.thumb'); - var width = $(this).outerWidth(); - - // If thumb indicator does not exist yet, create it - if (thumb.length <= 0) { - thumb = $(''); - $(this).after(thumb); - } - - // Set indicator value - thumb.find('.value').html($(this).val()); - - range_mousedown = true; - $(this).addClass('active'); - - if (!thumb.hasClass('active')) { - thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); - } - - if (e.type !== 'input') { - if(e.pageX === undefined || e.pageX === null){//mobile - left = e.originalEvent.touches[0].pageX - $(this).offset().left; - } - else{ // desktop - left = e.pageX - $(this).offset().left; - } - if (left < 0) { - left = 0; - } - else if (left > width) { - left = width; - } - thumb.addClass('active').css('left', left); - } - - thumb.find('.value').html($(this).val()); - }); - - $(document).on('mouseup touchend', range_wrapper, function() { - range_mousedown = false; - $(this).removeClass('active'); - }); - - $(document).on('mousemove touchmove', range_wrapper, function(e) { - var thumb = $(this).children('.thumb'); - var left; - if (range_mousedown) { - if (!thumb.hasClass('active')) { - thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' }); - } - if (e.pageX === undefined || e.pageX === null) { //mobile - left = e.originalEvent.touches[0].pageX - $(this).offset().left; - } - else{ // desktop - left = e.pageX - $(this).offset().left; - } - var width = $(this).outerWidth(); - - if (left < 0) { - left = 0; - } - else if (left > width) { - left = width; - } - thumb.addClass('active').css('left', left); - thumb.find('.value').html(thumb.siblings(range_type).val()); - } - }); - - $(document).on('mouseout touchleave', range_wrapper, function() { - if (!range_mousedown) { - - var thumb = $(this).children('.thumb'); - - if (thumb.hasClass('active')) { - thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: '-6px'}, { duration: 100 }); - } - thumb.removeClass('active'); - } - }); - - /************************** - * Auto complete plugin * - *************************/ - $.fn.autocomplete = function (options) { - // Defaults - var defaults = { - data: {}, - limit: Infinity, - onAutocomplete: null - }; - - options = $.extend(defaults, options); - - return this.each(function() { - var $input = $(this); - var data = options.data, - count = 0, - activeIndex = 0, - oldVal, - $inputDiv = $input.closest('.input-field'); // Div to append on - - // Check if data isn't empty - if (!$.isEmptyObject(data)) { - var $autocomplete = $(''); - var $oldAutocomplete; - - // Append autocomplete element. - // Prevent double structure init. - if ($inputDiv.length) { - $oldAutocomplete = $inputDiv.children('.autocomplete-content.dropdown-content').first(); - if (!$oldAutocomplete.length) { - $inputDiv.append($autocomplete); // Set ul in body - } - } else { - $oldAutocomplete = $input.next('.autocomplete-content.dropdown-content'); - if (!$oldAutocomplete.length) { - $input.after($autocomplete); - } - } - if ($oldAutocomplete.length) { - $autocomplete = $oldAutocomplete; - } - - // Highlight partial match. - var highlight = function(string, $el) { - var img = $el.find('img'); - var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""), - matchEnd = matchStart + string.length - 1, - beforeMatch = $el.text().slice(0, matchStart), - matchText = $el.text().slice(matchStart, matchEnd + 1), - afterMatch = $el.text().slice(matchEnd + 1); - $el.html("" + beforeMatch + "" + matchText + "" + afterMatch + ""); - if (img.length) { - $el.prepend(img); - } - }; - - // Reset current element position - var resetCurrentElement = function() { - activeIndex = 0; - $autocomplete.find('.active').removeClass('active'); - } - - // Perform search - $input.off('keyup.autocomplete').on('keyup.autocomplete', function (e) { - // Reset count. - count = 0; - - // Don't capture enter or arrow key usage. - if (e.which === 13 || - e.which === 38 || - e.which === 40) { - return; - } - - var val = $input.val().toLowerCase(); - - // Check if the input isn't empty - if (oldVal !== val) { - $autocomplete.empty(); - resetCurrentElement(); - - if (val !== '') { - for(var key in data) { - if (data.hasOwnProperty(key) && - key.toLowerCase().indexOf(val) !== -1 && - key.toLowerCase() !== val) { - // Break if past limit - if (count >= options.limit) { - break; - } - - var autocompleteOption = $('
            • '); - if (!!data[key]) { - autocompleteOption.append(''+ key +''); - } else { - autocompleteOption.append(''+ key +''); - } - - $autocomplete.append(autocompleteOption); - highlight(val, autocompleteOption); - count++; - } - } - } - } - - // Update oldVal - oldVal = val; - }); - - $input.off('keydown.autocomplete').on('keydown.autocomplete', function (e) { - // Arrow keys and enter key usage - var keyCode = e.which, - liElement, - numItems = $autocomplete.children('li').length, - $active = $autocomplete.children('.active').first(); - - // select element on Enter - if (keyCode === 13) { - liElement = $autocomplete.children('li').eq(activeIndex); - if (liElement.length) { - liElement.click(); - e.preventDefault(); - } - return; - } - - // Capture up and down key - if ( keyCode === 38 || keyCode === 40 ) { - e.preventDefault(); - - if (keyCode === 38 && - activeIndex > 0) { - activeIndex--; - } - - if (keyCode === 40 && - activeIndex < (numItems - 1) && - $active.length) { - activeIndex++; - } - - $active.removeClass('active'); - $autocomplete.children('li').eq(activeIndex).addClass('active'); - } - }); - - // Set input value - $autocomplete.on('click', 'li', function () { - var text = $(this).text().trim(); - $input.val(text); - $input.trigger('change'); - $autocomplete.empty(); - resetCurrentElement(); - - // Handle onAutocomplete callback. - if (typeof(options.onAutocomplete) === "function") { - options.onAutocomplete.call(this, text); - } - }); - } - }); - }; - - }); // End of $(document).ready - - /******************* - * Select Plugin * - ******************/ - $.fn.material_select = function (callback) { - $(this).each(function(){ - var $select = $(this); - - if ($select.hasClass('browser-default')) { - return; // Continue to next (return false breaks out of entire loop) - } - - var multiple = $select.attr('multiple') ? true : false, - lastID = $select.data('select-id'); // Tear down structure if Select needs to be rebuilt - - if (lastID) { - $select.parent().find('span.caret').remove(); - $select.parent().find('input').remove(); - - $select.unwrap(); - $('ul#select-options-'+lastID).remove(); - } - - // If destroying the select, remove the selelct-id and reset it to it's uninitialized state. - if(callback === 'destroy') { - $select.data('select-id', null).removeClass('initialized'); - return; - } - - var uniqueID = Materialize.guid(); - $select.data('select-id', uniqueID); - var wrapper = $('
              '); - wrapper.addClass($select.attr('class')); - var options = $(''), - selectChildren = $select.children('option, optgroup'), - valuesSelected = [], - optionsHover = false; - - var label = $select.find('option:selected').html() || $select.find('option:first').html() || ""; - - // Function that renders and appends the option taking into - // account type and possible image icon. - var appendOptionWithIcon = function(select, option, type) { - // Add disabled attr if disabled - var disabledClass = (option.is(':disabled')) ? 'disabled ' : ''; - var optgroupClass = (type === 'optgroup-option') ? 'optgroup-option ' : ''; - - // add icons - var icon_url = option.data('icon'); - var classes = option.attr('class'); - if (!!icon_url) { - var classString = ''; - if (!!classes) classString = ' class="' + classes + '"'; - - // Check for multiple type. - if (type === 'multiple') { - options.append($('
            • ' + option.html() + '
            • ')); - } else { - options.append($('
            • ' + option.html() + '
            • ')); - } - return true; - } - - // Check for multiple type. - if (type === 'multiple') { - options.append($('
            • ' + option.html() + '
            • ')); - } else { - options.append($('
            • ' + option.html() + '
            • ')); - } - }; - - /* Create dropdown structure. */ - if (selectChildren.length) { - selectChildren.each(function() { - if ($(this).is('option')) { - // Direct descendant option. - if (multiple) { - appendOptionWithIcon($select, $(this), 'multiple'); - - } else { - appendOptionWithIcon($select, $(this)); - } - } else if ($(this).is('optgroup')) { - // Optgroup. - var selectOptions = $(this).children('option'); - options.append($('
            • ' + $(this).attr('label') + '
            • ')); - - selectOptions.each(function() { - appendOptionWithIcon($select, $(this), 'optgroup-option'); - }); - } - }); - } - - options.find('li:not(.optgroup)').each(function (i) { - $(this).click(function (e) { - // Check if option element is disabled - if (!$(this).hasClass('disabled') && !$(this).hasClass('optgroup')) { - var selected = true; - - if (multiple) { - $('input[type="checkbox"]', this).prop('checked', function(i, v) { return !v; }); - selected = toggleEntryFromArray(valuesSelected, $(this).index(), $select); - $newSelect.trigger('focus'); - } else { - options.find('li').removeClass('active'); - $(this).toggleClass('active'); - $newSelect.val($(this).text()); - } - - activateOption(options, $(this)); - $select.find('option').eq(i).prop('selected', selected); - // Trigger onchange() event - $select.trigger('change'); - if (typeof callback !== 'undefined') callback(); - } - - e.stopPropagation(); - }); - }); - - // Wrap Elements - $select.wrap(wrapper); - // Add Select Display Element - var dropdownIcon = $(''); - if ($select.is(':disabled')) - dropdownIcon.addClass('disabled'); - - // escape double quotes - var sanitizedLabelHtml = label.replace(/"/g, '"'); - - var $newSelect = $(''); - $select.before($newSelect); - $newSelect.before(dropdownIcon); - - $newSelect.after(options); - // Check if section element is disabled - if (!$select.is(':disabled')) { - $newSelect.dropdown({'hover': false, 'closeOnClick': false}); - } - - // Copy tabindex - if ($select.attr('tabindex')) { - $($newSelect[0]).attr('tabindex', $select.attr('tabindex')); - } - - $select.addClass('initialized'); - - $newSelect.on({ - 'focus': function (){ - if ($('ul.select-dropdown').not(options[0]).is(':visible')) { - $('input.select-dropdown').trigger('close'); - } - if (!options.is(':visible')) { - $(this).trigger('open', ['focus']); - var label = $(this).val(); - if (multiple && label.indexOf(',') >= 0) { - label = label.split(',')[0]; - } - - var selectedOption = options.find('li').filter(function() { - return $(this).text().toLowerCase() === label.toLowerCase(); - })[0]; - activateOption(options, selectedOption, true); - } - }, - 'click': function (e){ - e.stopPropagation(); - } - }); - - $newSelect.on('blur', function() { - if (!multiple) { - $(this).trigger('close'); - } - options.find('li.selected').removeClass('selected'); - }); - - options.hover(function() { - optionsHover = true; - }, function () { - optionsHover = false; - }); - - $(window).on({ - 'click': function () { - multiple && (optionsHover || $newSelect.trigger('close')); - } - }); - - // Add initial multiple selections. - if (multiple) { - $select.find("option:selected:not(:disabled)").each(function () { - var index = $(this).index(); - - toggleEntryFromArray(valuesSelected, index, $select); - options.find("li").eq(index).find(":checkbox").prop("checked", true); - }); - } - - /** - * Make option as selected and scroll to selected position - * @param {jQuery} collection Select options jQuery element - * @param {Element} newOption element of the new option - * @param {Boolean} firstActivation If on first activation of select - */ - var activateOption = function(collection, newOption, firstActivation) { - if (newOption) { - collection.find('li.selected').removeClass('selected'); - var option = $(newOption); - option.addClass('selected'); - if (!multiple || !!firstActivation) { - options.scrollTo(option); - } - } - }; - - // Allow user to search by typing - // this array is cleared after 1 second - var filterQuery = [], - onKeyDown = function(e){ - // TAB - switch to another input - if(e.which == 9){ - $newSelect.trigger('close'); - return; - } - - // ARROW DOWN WHEN SELECT IS CLOSED - open select options - if(e.which == 40 && !options.is(':visible')){ - $newSelect.trigger('open'); - return; - } - - // ENTER WHEN SELECT IS CLOSED - submit form - if(e.which == 13 && !options.is(':visible')){ - return; - } - - e.preventDefault(); - - // CASE WHEN USER TYPE LETTERS - var letter = String.fromCharCode(e.which).toLowerCase(), - nonLetters = [9,13,27,38,40]; - if (letter && (nonLetters.indexOf(e.which) === -1)) { - filterQuery.push(letter); - - var string = filterQuery.join(''), - newOption = options.find('li').filter(function() { - return $(this).text().toLowerCase().indexOf(string) === 0; - })[0]; - - if (newOption) { - activateOption(options, newOption); - } - } - - // ENTER - select option and close when select options are opened - if (e.which == 13) { - var activeOption = options.find('li.selected:not(.disabled)')[0]; - if(activeOption){ - $(activeOption).trigger('click'); - if (!multiple) { - $newSelect.trigger('close'); - } - } - } - - // ARROW DOWN - move to next not disabled option - if (e.which == 40) { - if (options.find('li.selected').length) { - newOption = options.find('li.selected').next('li:not(.disabled)')[0]; - } else { - newOption = options.find('li:not(.disabled)')[0]; - } - activateOption(options, newOption); - } - - // ESC - close options - if (e.which == 27) { - $newSelect.trigger('close'); - } - - // ARROW UP - move to previous not disabled option - if (e.which == 38) { - newOption = options.find('li.selected').prev('li:not(.disabled)')[0]; - if(newOption) - activateOption(options, newOption); - } - - // Automaticaly clean filter query so user can search again by starting letters - setTimeout(function(){ filterQuery = []; }, 1000); - }; - - $newSelect.on('keydown', onKeyDown); - }); - - function toggleEntryFromArray(entriesArray, entryIndex, select) { - var index = entriesArray.indexOf(entryIndex), - notAdded = index === -1; - - if (notAdded) { - entriesArray.push(entryIndex); - } else { - entriesArray.splice(index, 1); - } - - select.siblings('ul.dropdown-content').find('li').eq(entryIndex).toggleClass('active'); - - // use notAdded instead of true (to detect if the option is selected or not) - select.find('option').eq(entryIndex).prop('selected', notAdded); - setValueToInput(entriesArray, select); - - return notAdded; - } - - function setValueToInput(entriesArray, select) { - var value = ''; - - for (var i = 0, count = entriesArray.length; i < count; i++) { - var text = select.find('option').eq(entriesArray[i]).text(); - - i === 0 ? value += text : value += ', ' + text; - } - - if (value === '') { - value = select.find('option:disabled').eq(0).text(); - } - - select.siblings('input.select-dropdown').val(value); - } - }; - -}( jQuery )); diff --git a/node_modules/materialize-css/js/global.js b/node_modules/materialize-css/js/global.js deleted file mode 100644 index ec83d39..0000000 --- a/node_modules/materialize-css/js/global.js +++ /dev/null @@ -1,153 +0,0 @@ -// Required for Meteor package, the use of window prevents export by Meteor -(function(window){ - if(window.Package){ - Materialize = {}; - } else { - window.Materialize = {}; - } -})(window); - - -/* - * raf.js - * https://github.com/ngryman/raf.js - * - * original requestAnimationFrame polyfill by Erik Möller - * inspired from paul_irish gist and post - * - * Copyright (c) 2013 ngryman - * Licensed under the MIT license. - */ -(function(window) { - var lastTime = 0, - vendors = ['webkit', 'moz'], - requestAnimationFrame = window.requestAnimationFrame, - cancelAnimationFrame = window.cancelAnimationFrame, - i = vendors.length; - - // try to un-prefix existing raf - while (--i >= 0 && !requestAnimationFrame) { - requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame']; - cancelAnimationFrame = window[vendors[i] + 'CancelRequestAnimationFrame']; - } - - // polyfill with setTimeout fallback - // heavily inspired from @darius gist mod: https://gist.github.com/paulirish/1579671#comment-837945 - if (!requestAnimationFrame || !cancelAnimationFrame) { - requestAnimationFrame = function(callback) { - var now = +Date.now(), - nextTime = Math.max(lastTime + 16, now); - return setTimeout(function() { - callback(lastTime = nextTime); - }, nextTime - now); - }; - - cancelAnimationFrame = clearTimeout; - } - - // export to window - window.requestAnimationFrame = requestAnimationFrame; - window.cancelAnimationFrame = cancelAnimationFrame; -}(window)); - - -// Unique ID -Materialize.guid = (function() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - return function() { - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + - s4() + '-' + s4() + s4() + s4(); - }; -})(); - -/** - * Escapes hash from special characters - * @param {string} hash String returned from this.hash - * @returns {string} - */ -Materialize.escapeHash = function(hash) { - return hash.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" ); -}; - -Materialize.elementOrParentIsFixed = function(element) { - var $element = $(element); - var $checkElements = $element.add($element.parents()); - var isFixed = false; - $checkElements.each(function(){ - if ($(this).css("position") === "fixed") { - isFixed = true; - return false; - } - }); - return isFixed; -}; - - -/** - * Get time in ms - * @license https://raw.github.com/jashkenas/underscore/master/LICENSE - * @type {function} - * @return {number} - */ -var getTime = (Date.now || function () { - return new Date().getTime(); -}); - - -/** - * Returns a function, that, when invoked, will only be triggered at most once - * during a given window of time. Normally, the throttled function will run - * as much as it can, without ever going more than once per `wait` duration; - * but if you'd like to disable the execution on the leading edge, pass - * `{leading: false}`. To disable execution on the trailing edge, ditto. - * @license https://raw.github.com/jashkenas/underscore/master/LICENSE - * @param {function} func - * @param {number} wait - * @param {Object=} options - * @returns {Function} - */ -Materialize.throttle = function(func, wait, options) { - var context, args, result; - var timeout = null; - var previous = 0; - options || (options = {}); - var later = function () { - previous = options.leading === false ? 0 : getTime(); - timeout = null; - result = func.apply(context, args); - context = args = null; - }; - return function () { - var now = getTime(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; -}; - - -// Velocity has conflicts when loaded with jQuery, this will check for it -// First, check if in noConflict mode -var Vel; -if (jQuery) { - Vel = jQuery.Velocity; -} else if ($) { - Vel = $.Velocity; -} else { - Vel = Velocity; -} diff --git a/node_modules/materialize-css/js/hammer.min.js b/node_modules/materialize-css/js/hammer.min.js deleted file mode 100644 index 6c232c8..0000000 --- a/node_modules/materialize-css/js/hammer.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;af?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance= 0 || $(this).hasClass('black')) { - $(this).css('color', 'rgba(255,255,255,.9'); - } - }); - }); - - // Floating-Fixed table of contents - setTimeout(function() { - var tocWrapperHeight = 260; // Max height of ads. - var tocHeight = $('.toc-wrapper .table-of-contents').length ? $('.toc-wrapper .table-of-contents').height() : 0; - var socialHeight = 95; // Height of unloaded social media in footer. - var footerOffset = $('body > footer').first().length ? $('body > footer').first().offset().top : 0; - var bottomOffset = footerOffset - socialHeight - tocHeight - tocWrapperHeight; - - if ($('nav').length) { - $('.toc-wrapper').pushpin({ - top: $('nav').height(), - bottom: bottomOffset - }); - } - else if ($('#index-banner').length) { - $('.toc-wrapper').pushpin({ - top: $('#index-banner').height(), - bottom: bottomOffset - }); - } - else { - $('.toc-wrapper').pushpin({ - top: 0, - bottom: bottomOffset - }); - } - }, 100); - - - // BuySellAds Detection - var $bsa = $(".buysellads"), - $timesToCheck = 3; - function checkForChanges() { - if (!$bsa.find('#carbonads').length) { - $timesToCheck -= 1; - if ($timesToCheck >= 0) { - setTimeout(checkForChanges, 500); - } - else { - var donateAd = $(''); - - $bsa.append(donateAd); - } - } - - } - checkForChanges(); - - - // BuySellAds Demos close button. - $('.buysellads.buysellads-demo .close').on('click', function() { - $(this).parent().remove(); - }); - - - // Github Latest Commit - if ($('.github-commit').length) { // Checks if widget div exists (Index only) - $.ajax({ - url: "https://api.github.com/repos/dogfalo/materialize/commits/master", - dataType: "json", - success: function (data) { - var sha = data.sha, - date = jQuery.timeago(data.commit.author.date); - if (window_width < 1120) { - sha = sha.substring(0,7); - } - $('.github-commit').find('.date').html(date); - $('.github-commit').find('.sha').html(sha).attr('href', data.html_url); - } - }); - } - - // Toggle Flow Text - var toggleFlowTextButton = $('#flow-toggle'); - toggleFlowTextButton.click( function(){ - $('#flow-text-demo').children('p').each(function(){ - $(this).toggleClass('flow-text'); - }); - }); - -// Toggle Containers on page - var toggleContainersButton = $('#container-toggle-button'); - toggleContainersButton.click(function(){ - $('body .browser-window .container, .had-container').each(function(){ - $(this).toggleClass('had-container'); - $(this).toggleClass('container'); - if ($(this).hasClass('container')) { - toggleContainersButton.text("Turn off Containers"); - } - else { - toggleContainersButton.text("Turn on Containers"); - } - }); - }); - - // Detect touch screen and enable scrollbar if necessary - function is_touch_device() { - try { - document.createEvent("TouchEvent"); - return true; - } catch (e) { - return false; - } - } - if (is_touch_device()) { - $('#nav-mobile').css({ overflow: 'auto'}); - } - - // Set checkbox on forms.html to indeterminate - var indeterminateCheckbox = document.getElementById('indeterminate-checkbox'); - if (indeterminateCheckbox !== null) - indeterminateCheckbox.indeterminate = true; - - - // Pushpin Demo Init - if ($('.pushpin-demo-nav').length) { - $('.pushpin-demo-nav').each(function() { - var $this = $(this); - var $target = $('#' + $(this).attr('data-target')); - $this.pushpin({ - top: $target.offset().top, - bottom: $target.offset().top + $target.outerHeight() - $this.height() - }); - }); - } - - // CSS Transitions Demo Init - if ($('#scale-demo').length && - $('#scale-demo-trigger').length) { - $('#scale-demo-trigger').click(function() { - $('#scale-demo').toggleClass('scale-out'); - }); - } - - // Swipeable Tabs Demo Init - if ($('#tabs-swipe-demo').length) { - $('#tabs-swipe-demo').tabs({ 'swipeable': true }); - } - - // Plugin initialization - $('.carousel.carousel-slider').carousel({fullWidth: true}); - $('.carousel').carousel(); - $('.slider').slider(); - $('.parallax').parallax(); - $('.modal').modal(); - $('.scrollspy').scrollSpy(); - $('.button-collapse').sideNav({'edge': 'left'}); - $('.datepicker').pickadate({selectYears: 20}); - $('select').not('.disabled').material_select(); - $('input.autocomplete').autocomplete({ - data: {"Apple": null, "Microsoft": null, "Google": 'http://placehold.it/250x250'} - }); - - // Chips - $('.chips').material_chip(); - $('.chips-initial').material_chip({ - readOnly: true, - data: [{ - tag: 'Apple', - }, { - tag: 'Microsoft', - }, { - tag: 'Google', - }] - }); - $('.chips-placeholder').material_chip({ - placeholder: 'Enter a tag', - secondaryPlaceholder: '+Tag', - }); - $('.chips-autocomplete').material_chip({ - autocompleteData: { - 'Apple': null, - 'Microsoft': null, - 'Google': null - } - }); - - - }); // end of document ready -})(jQuery); // end of jQuery name space diff --git a/node_modules/materialize-css/js/initial.js b/node_modules/materialize-css/js/initial.js deleted file mode 100644 index 13f317d..0000000 --- a/node_modules/materialize-css/js/initial.js +++ /dev/null @@ -1,11 +0,0 @@ -// Check for jQuery. -if (typeof(jQuery) === 'undefined') { - var jQuery; - // Check if require is a defined function. - if (typeof(require) === 'function') { - jQuery = $ = require('jquery'); - // Else use the dollar sign alias. - } else { - jQuery = $; - } -} diff --git a/node_modules/materialize-css/js/jquery.easing.1.3.js b/node_modules/materialize-css/js/jquery.easing.1.3.js deleted file mode 100644 index 2e67998..0000000 --- a/node_modules/materialize-css/js/jquery.easing.1.3.js +++ /dev/null @@ -1,205 +0,0 @@ -/* - * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ - * - * Uses the built in easing capabilities added In jQuery 1.1 - * to offer multiple easing options - * - * TERMS OF USE - jQuery Easing - * - * Open source under the BSD License. - * - * Copyright © 2008 George McGinley Smith - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * -*/ - -// t: current time, b: begInnIng value, c: change In value, d: duration -jQuery.easing['jswing'] = jQuery.easing['swing']; - -jQuery.extend( jQuery.easing, -{ - def: 'easeOutQuad', - swing: function (x, t, b, c, d) { - //alert(jQuery.easing.default); - return jQuery.easing[jQuery.easing.def](x, t, b, c, d); - }, - easeInQuad: function (x, t, b, c, d) { - return c*(t/=d)*t + b; - }, - easeOutQuad: function (x, t, b, c, d) { - return -c *(t/=d)*(t-2) + b; - }, - easeInOutQuad: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t + b; - return -c/2 * ((--t)*(t-2) - 1) + b; - }, - easeInCubic: function (x, t, b, c, d) { - return c*(t/=d)*t*t + b; - }, - easeOutCubic: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t + 1) + b; - }, - easeInOutCubic: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t + b; - return c/2*((t-=2)*t*t + 2) + b; - }, - easeInQuart: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t + b; - }, - easeOutQuart: function (x, t, b, c, d) { - return -c * ((t=t/d-1)*t*t*t - 1) + b; - }, - easeInOutQuart: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t + b; - return -c/2 * ((t-=2)*t*t*t - 2) + b; - }, - easeInQuint: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t*t + b; - }, - easeOutQuint: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t*t*t + 1) + b; - }, - easeInOutQuint: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; - return c/2*((t-=2)*t*t*t*t + 2) + b; - }, - easeInSine: function (x, t, b, c, d) { - return -c * Math.cos(t/d * (Math.PI/2)) + c + b; - }, - easeOutSine: function (x, t, b, c, d) { - return c * Math.sin(t/d * (Math.PI/2)) + b; - }, - easeInOutSine: function (x, t, b, c, d) { - return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; - }, - easeInExpo: function (x, t, b, c, d) { - return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; - }, - easeOutExpo: function (x, t, b, c, d) { - return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; - }, - easeInOutExpo: function (x, t, b, c, d) { - if (t==0) return b; - if (t==d) return b+c; - if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; - return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; - }, - easeInCirc: function (x, t, b, c, d) { - return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; - }, - easeOutCirc: function (x, t, b, c, d) { - return c * Math.sqrt(1 - (t=t/d-1)*t) + b; - }, - easeInOutCirc: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; - return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; - }, - easeInElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - }, - easeOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; - }, - easeInOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; - }, - easeInBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*(t/=d)*t*((s+1)*t - s) + b; - }, - easeOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; - }, - easeInOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; - return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; - }, - easeInBounce: function (x, t, b, c, d) { - return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; - }, - easeOutBounce: function (x, t, b, c, d) { - if ((t/=d) < (1/2.75)) { - return c*(7.5625*t*t) + b; - } else if (t < (2/2.75)) { - return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; - } else if (t < (2.5/2.75)) { - return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; - } else { - return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; - } - }, - easeInOutBounce: function (x, t, b, c, d) { - if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; - return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; - } -}); - -/* - * - * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * - * Copyright © 2001 Robert Penner - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ \ No newline at end of file diff --git a/node_modules/materialize-css/js/jquery.hammer.js b/node_modules/materialize-css/js/jquery.hammer.js deleted file mode 100644 index e444b5c..0000000 --- a/node_modules/materialize-css/js/jquery.hammer.js +++ /dev/null @@ -1,33 +0,0 @@ -(function(factory) { - if (typeof define === 'function' && define.amd) { - define(['jquery', 'hammerjs'], factory); - } else if (typeof exports === 'object') { - factory(require('jquery'), require('hammerjs')); - } else { - factory(jQuery, Hammer); - } -}(function($, Hammer) { - function hammerify(el, options) { - var $el = $(el); - if(!$el.data("hammer")) { - $el.data("hammer", new Hammer($el[0], options)); - } - } - - $.fn.hammer = function(options) { - return this.each(function() { - hammerify(this, options); - }); - }; - - // extend the emit method to also trigger jQuery events - Hammer.Manager.prototype.emit = (function(originalEmit) { - return function(type, data) { - originalEmit.call(this, type, data); - $(this.element).trigger({ - type: type, - gesture: data - }); - }; - })(Hammer.Manager.prototype.emit); -})); diff --git a/node_modules/materialize-css/js/jquery.timeago.min.js b/node_modules/materialize-css/js/jquery.timeago.min.js deleted file mode 100644 index 102a56c..0000000 --- a/node_modules/materialize-css/js/jquery.timeago.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){function e(){var e=a(this),o=r.settings;return isNaN(e.datetime)||(0==o.cutoff||Math.abs(n(e.datetime))0)||r.isTime(e)&&e.attr("title")||e.attr("title",a)}return e.data("timeago")}function i(t){return r.inWords(n(t))}function n(t){return(new Date).getTime()-t.getTime()}t.timeago=function(e){return i(e instanceof Date?e:"string"==typeof e?t.timeago.parse(e):"number"==typeof e?new Date(e):t.timeago.datetime(e))};var r=t.timeago;t.extend(t.timeago,{settings:{refreshMillis:6e4,allowPast:!0,allowFuture:!1,localeTitle:!1,cutoff:0,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",inPast:"any moment now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",wordSeparator:" ",numbers:[]}},inWords:function(e){function a(a,n){var r=t.isFunction(a)?a(n,e):a,o=i.numbers&&i.numbers[n]||n;return r.replace(/%d/i,o)}if(!this.settings.allowPast&&!this.settings.allowFuture)throw"timeago allowPast and allowFuture settings can not both be set to false.";var i=this.settings.strings,n=i.prefixAgo,r=i.suffixAgo;if(this.settings.allowFuture&&0>e&&(n=i.prefixFromNow,r=i.suffixFromNow),!this.settings.allowPast&&e>=0)return this.settings.strings.inPast;var o=Math.abs(e)/1e3,s=o/60,u=s/60,m=u/24,l=m/365,d=45>o&&a(i.seconds,Math.round(o))||90>o&&a(i.minute,1)||45>s&&a(i.minutes,Math.round(s))||90>s&&a(i.hour,1)||24>u&&a(i.hours,Math.round(u))||42>u&&a(i.day,1)||30>m&&a(i.days,Math.round(m))||45>m&&a(i.month,1)||365>m&&a(i.months,Math.round(m/30))||1.5>l&&a(i.year,1)||a(i.years,Math.round(l)),f=i.wordSeparator||"";return void 0===i.wordSeparator&&(f=" "),t.trim([n,d,r].join(f))},parse:function(e){var a=t.trim(e);return a=a.replace(/\.\d+/,""),a=a.replace(/-/,"/").replace(/-/,"/"),a=a.replace(/T/," ").replace(/Z/," UTC"),a=a.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"),a=a.replace(/([\+\-]\d\d)$/," $100"),new Date(a)},datetime:function(e){var a=t(e).attr(r.isTime(e)?"datetime":"title");return r.parse(a)},isTime:function(e){return"time"===t(e).get(0).tagName.toLowerCase()}});var o={init:function(){var a=t.proxy(e,this);a();var i=r.settings;i.refreshMillis>0&&(this._timeagoInterval=setInterval(a,i.refreshMillis))},update:function(a){var i=r.parse(a);t(this).data("timeago",{datetime:i}),r.settings.localeTitle&&t(this).attr("title",i.toLocaleString()),e.apply(this)},updateFromDOM:function(){t(this).data("timeago",{datetime:r.parse(t(this).attr(r.isTime(this)?"datetime":"title"))}),e.apply(this)},dispose:function(){this._timeagoInterval&&(window.clearInterval(this._timeagoInterval),this._timeagoInterval=null)}};t.fn.timeago=function(t,e){var a=t?o[t]:o.init;if(!a)throw new Error("Unknown function name '"+t+"' for timeago");return this.each(function(){a.call(this,e)}),this},document.createElement("abbr"),document.createElement("time")}); \ No newline at end of file diff --git a/node_modules/materialize-css/js/materialbox.js b/node_modules/materialize-css/js/materialbox.js deleted file mode 100644 index 64e77a7..0000000 --- a/node_modules/materialize-css/js/materialbox.js +++ /dev/null @@ -1,285 +0,0 @@ -(function ($) { - - $.fn.materialbox = function () { - - return this.each(function() { - - if ($(this).hasClass('initialized')) { - return; - } - - $(this).addClass('initialized'); - - var overlayActive = false; - var doneAnimating = true; - var inDuration = 275; - var outDuration = 200; - var origin = $(this); - var placeholder = $('
              ').addClass('material-placeholder'); - var originalWidth = 0; - var originalHeight = 0; - var ancestorsChanged; - var ancestor; - origin.wrap(placeholder); - - - origin.on('click', function(){ - var placeholder = origin.parent('.material-placeholder'); - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var originalWidth = origin.width(); - var originalHeight = origin.height(); - - - // If already modal, return to original - if (doneAnimating === false) { - returnToOriginal(); - return false; - } - else if (overlayActive && doneAnimating===true) { - returnToOriginal(); - return false; - } - - - // Set states - doneAnimating = false; - origin.addClass('active'); - overlayActive = true; - - // Set positioning for placeholder - placeholder.css({ - width: placeholder[0].getBoundingClientRect().width, - height: placeholder[0].getBoundingClientRect().height, - position: 'relative', - top: 0, - left: 0 - }); - - // Find ancestor with overflow: hidden; and remove it - ancestorsChanged = undefined; - ancestor = placeholder[0].parentNode; - var count = 0; - while (ancestor !== null && !$(ancestor).is(document)) { - var curr = $(ancestor); - if (curr.css('overflow') !== 'visible') { - curr.css('overflow', 'visible'); - if (ancestorsChanged === undefined) { - ancestorsChanged = curr; - } - else { - ancestorsChanged = ancestorsChanged.add(curr); - } - } - ancestor = ancestor.parentNode; - } - - // Set css on origin - origin.css({ - position: 'absolute', - 'z-index': 1000, - 'will-change': 'left, top, width, height' - }) - .data('width', originalWidth) - .data('height', originalHeight); - - // Add overlay - var overlay = $('
              ') - .css({ - opacity: 0 - }) - .click(function(){ - if (doneAnimating === true) - returnToOriginal(); - }); - - // Put before in origin image to preserve z-index layering. - origin.before(overlay); - - // Set dimensions if needed - var overlayOffset = overlay[0].getBoundingClientRect(); - overlay.css({ - width: windowWidth, - height: windowHeight, - left: -1 * overlayOffset.left, - top: -1 * overlayOffset.top - }) - - // Animate Overlay - overlay.velocity({opacity: 1}, - {duration: inDuration, queue: false, easing: 'easeOutQuad'} ); - - // Add and animate caption if it exists - if (origin.data('caption') !== "") { - var $photo_caption = $('
              '); - $photo_caption.text(origin.data('caption')); - $('body').append($photo_caption); - $photo_caption.css({ "display": "inline" }); - $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'}); - } - - // Resize Image - var ratio = 0; - var widthPercent = originalWidth / windowWidth; - var heightPercent = originalHeight / windowHeight; - var newWidth = 0; - var newHeight = 0; - - if (widthPercent > heightPercent) { - ratio = originalHeight / originalWidth; - newWidth = windowWidth * 0.9; - newHeight = windowWidth * 0.9 * ratio; - } - else { - ratio = originalWidth / originalHeight; - newWidth = (windowHeight * 0.9) * ratio; - newHeight = windowHeight * 0.9; - } - - // Animate image + set z-index - if(origin.hasClass('responsive-img')) { - origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false, - complete: function(){ - origin.css({left: 0, top: 0}) - .velocity( - { - height: newHeight, - width: newWidth, - left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, - top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 - }, - { - duration: inDuration, - queue: false, - easing: 'easeOutQuad', - complete: function(){doneAnimating = true;} - } - ); - } // End Complete - }); // End Velocity - } - else { - origin.css('left', 0) - .css('top', 0) - .velocity( - { - height: newHeight, - width: newWidth, - left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, - top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 - }, - { - duration: inDuration, - queue: false, - easing: 'easeOutQuad', - complete: function(){doneAnimating = true;} - } - ); // End Velocity - } - - }); // End origin on click - - - // Return on scroll - $(window).scroll(function() { - if (overlayActive) { - returnToOriginal(); - } - }); - - // Return on ESC - $(document).keyup(function(e) { - - if (e.keyCode === 27 && doneAnimating === true) { // ESC key - if (overlayActive) { - returnToOriginal(); - } - } - }); - - - // This function returns the modaled image to the original spot - function returnToOriginal() { - - doneAnimating = false; - - var placeholder = origin.parent('.material-placeholder'); - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var originalWidth = origin.data('width'); - var originalHeight = origin.data('height'); - - origin.velocity("stop", true); - $('#materialbox-overlay').velocity("stop", true); - $('.materialbox-caption').velocity("stop", true); - - - $('#materialbox-overlay').velocity({opacity: 0}, { - duration: outDuration, // Delay prevents animation overlapping - queue: false, easing: 'easeOutQuad', - complete: function(){ - // Remove Overlay - overlayActive = false; - $(this).remove(); - } - }); - - // Resize Image - origin.velocity( - { - width: originalWidth, - height: originalHeight, - left: 0, - top: 0 - }, - { - duration: outDuration, - queue: false, easing: 'easeOutQuad' - } - ); - - // Remove Caption + reset css settings on image - $('.materialbox-caption').velocity({opacity: 0}, { - duration: outDuration, // Delay prevents animation overlapping - queue: false, easing: 'easeOutQuad', - complete: function(){ - placeholder.css({ - height: '', - width: '', - position: '', - top: '', - left: '' - }); - - origin.css({ - height: '', - top: '', - left: '', - width: '', - 'max-width': '', - position: '', - 'z-index': '', - 'will-change': '' - }); - - // Remove class - origin.removeClass('active'); - doneAnimating = true; - $(this).remove(); - - // Remove overflow overrides on ancestors - if (ancestorsChanged) { - ancestorsChanged.css('overflow', ''); - } - } - }); - - } - }); - }; - - $(document).ready(function(){ - $('.materialboxed').materialbox(); - }); - -}( jQuery )); diff --git a/node_modules/materialize-css/js/materialize.js b/node_modules/materialize-css/js/materialize.js deleted file mode 100644 index f3d4137..0000000 --- a/node_modules/materialize-css/js/materialize.js +++ /dev/null @@ -1,18 +0,0 @@ -//@prepros-append "jquery.easing.1.3.js" -//@prepros-append "velocity.min.js" -//@prepros-append "hammer.min.js"; -//@prepros-append "jquery.hammer.js"; -//@prepros-append "collapsible.js" -//@prepros-append "dropdown.js" -//@prepros-append "leanModal.js" -//@prepros-append "materialbox.js" -//@prepros-append "parallax.js" -//@prepros-append "tabs.js" -//@prepros-append "tooltip.js" -//@prepros-append "waves.js" -//@prepros-append "toasts.js" -//@prepros-append "sideNav.js" -//@prepros-append "scrollspy.js" -//@prepros-append "forms.js" -//@prepros-append "date_picker/picker.js" -//@prepros-append "date_picker/picker.date.js" \ No newline at end of file diff --git a/node_modules/materialize-css/js/modal.js b/node_modules/materialize-css/js/modal.js deleted file mode 100644 index aa788a7..0000000 --- a/node_modules/materialize-css/js/modal.js +++ /dev/null @@ -1,184 +0,0 @@ -(function($) { - var _stack = 0, - _lastID = 0, - _generateID = function() { - _lastID++; - return 'materialize-modal-overlay-' + _lastID; - }; - - var methods = { - init : function(options) { - var defaults = { - opacity: 0.5, - inDuration: 350, - outDuration: 250, - ready: undefined, - complete: undefined, - dismissible: true, - startingTop: '4%', - endingTop: '10%' - }; - - // Override defaults - options = $.extend(defaults, options); - - return this.each(function() { - var $modal = $(this); - var modal_id = $(this).attr("id") || '#' + $(this).data('target'); - - var closeModal = function() { - var overlayID = $modal.data('overlay-id'); - var $overlay = $('#' + overlayID); - $modal.removeClass('open'); - - // Enable scrolling - $('body').css({ - overflow: '', - width: '' - }); - - $modal.find('.modal-close').off('click.close'); - $(document).off('keyup.modal' + overlayID); - - $overlay.velocity( { opacity: 0}, {duration: options.outDuration, queue: false, ease: "easeOutQuart"}); - - - // Define Bottom Sheet animation - var exitVelocityOptions = { - duration: options.outDuration, - queue: false, - ease: "easeOutCubic", - // Handle modal ready callback - complete: function() { - $(this).css({display:"none"}); - - // Call complete callback - if (typeof(options.complete) === "function") { - options.complete.call(this, $modal); - } - $overlay.remove(); - _stack--; - } - }; - if ($modal.hasClass('bottom-sheet')) { - $modal.velocity({bottom: "-100%", opacity: 0}, exitVelocityOptions); - } - else { - $modal.velocity( - { top: options.startingTop, opacity: 0, scaleX: 0.7}, - exitVelocityOptions - ); - } - }; - - var openModal = function($trigger) { - var $body = $('body'); - var oldWidth = $body.innerWidth(); - $body.css('overflow', 'hidden'); - $body.width(oldWidth); - - if ($modal.hasClass('open')) { - return; - } - - var overlayID = _generateID(); - var $overlay = $(''); - lStack = (++_stack); - - // Store a reference of the overlay - $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2); - $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1); - $modal.addClass('open'); - - $("body").append($overlay); - - if (options.dismissible) { - $overlay.click(function() { - closeModal(); - }); - // Return on ESC - $(document).on('keyup.modal' + overlayID, function(e) { - if (e.keyCode === 27) { // ESC key - closeModal(); - } - }); - } - - $modal.find(".modal-close").on('click.close', function(e) { - closeModal(); - }); - - $overlay.css({ display : "block", opacity : 0 }); - - $modal.css({ - display : "block", - opacity: 0 - }); - - $overlay.velocity({opacity: options.opacity}, {duration: options.inDuration, queue: false, ease: "easeOutCubic"}); - $modal.data('associated-overlay', $overlay[0]); - - // Define Bottom Sheet animation - var enterVelocityOptions = { - duration: options.inDuration, - queue: false, - ease: "easeOutCubic", - // Handle modal ready callback - complete: function() { - if (typeof(options.ready) === "function") { - options.ready.call(this, $modal, $trigger); - } - } - }; - if ($modal.hasClass('bottom-sheet')) { - $modal.velocity({bottom: "0", opacity: 1}, enterVelocityOptions); - } - else { - $.Velocity.hook($modal, "scaleX", 0.7); - $modal.css({ top: options.startingTop }); - $modal.velocity({top: options.endingTop, opacity: 1, scaleX: '1'}, enterVelocityOptions); - } - - }; - - // Reset handlers - $(document).off('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]'); - $(this).off('openModal'); - $(this).off('closeModal'); - - // Close Handlers - $(document).on('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]', function(e) { - options.startingTop = ($(this).offset().top - $(window).scrollTop()) /1.15; - openModal($(this)); - e.preventDefault(); - }); // done set on click - - $(this).on('openModal', function() { - var modal_id = $(this).attr("href") || '#' + $(this).data('target'); - openModal(); - }); - - $(this).on('closeModal', function() { - closeModal(); - }); - }); // done return - }, - open : function() { - $(this).trigger('openModal'); - }, - close : function() { - $(this).trigger('closeModal'); - } - }; - - $.fn.modal = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.modal' ); - } - }; -})(jQuery); diff --git a/node_modules/materialize-css/js/parallax.js b/node_modules/materialize-css/js/parallax.js deleted file mode 100644 index 8c82a37..0000000 --- a/node_modules/materialize-css/js/parallax.js +++ /dev/null @@ -1,58 +0,0 @@ -(function ($) { - - $.fn.parallax = function () { - var window_width = $(window).width(); - // Parallax Scripts - return this.each(function(i) { - var $this = $(this); - $this.addClass('parallax'); - - function updateParallax(initial) { - var container_height; - if (window_width < 601) { - container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); - } - else { - container_height = ($this.height() > 0) ? $this.height() : 500; - } - var $img = $this.children("img").first(); - var img_height = $img.height(); - var parallax_dist = img_height - container_height; - var bottom = $this.offset().top + container_height; - var top = $this.offset().top; - var scrollTop = $(window).scrollTop(); - var windowHeight = window.innerHeight; - var windowBottom = scrollTop + windowHeight; - var percentScrolled = (windowBottom - top) / (container_height + windowHeight); - var parallax = Math.round((parallax_dist * percentScrolled)); - - if (initial) { - $img.css('display', 'block'); - } - if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { - $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); - } - - } - - // Wait for image load - $this.children("img").one("load", function() { - updateParallax(true); - }).each(function() { - if (this.complete) $(this).trigger("load"); - }); - - $(window).scroll(function() { - window_width = $(window).width(); - updateParallax(false); - }); - - $(window).resize(function() { - window_width = $(window).width(); - updateParallax(false); - }); - - }); - - }; -}( jQuery )); diff --git a/node_modules/materialize-css/js/prism.js b/node_modules/materialize-css/js/prism.js deleted file mode 100644 index da77df9..0000000 --- a/node_modules/materialize-css/js/prism.js +++ /dev/null @@ -1,8 +0,0 @@ -/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+scss+bash */ -self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof a)){g.lastIndex=0;var m=g.exec(d);if(m){c&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),O=[p,1];b&&O.push(b);var N=new a(l,u?t.tokenize(m,u):m,h);O.push(N),w&&O.push(w),Array.prototype.splice.apply(r,O)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var s="";for(var o in i.attributes)s+=o+'="'+(i.attributes[o]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+s+">"+i.content+""},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);; -Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});; -Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/gi,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/gi},Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/gi,inside:{tag:{pattern:/|<\/style>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css},alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').+?\1/gi,inside:{"attr-name":{pattern:/^\s*style/gi,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/gi,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));; -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//g,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*?(\r?\n|$)/g,lookbehind:!0}],string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/gi,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/gi,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};; -Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|-?Infinity)\b/g,"function":/(?!\d)[a-z0-9_$]+(?=\()/gi}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/gi,inside:{tag:{pattern:/|<\/script>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript},alias:"language-javascript"}});; -Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},atrule:/@[\w-]+(?=\s+(\(|\{|;))/gi,url:/([-a-z]+-)*url(?=\()/gi,selector:/([^@;\{\}\(\)]?([^@;\{\}\(\)]|&|\#\{\$[-_\w]+\})+)(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/gm}),Prism.languages.insertBefore("scss","atrule",{keyword:/@(if|else if|else|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)|(?=@for\s+\$[-_\w]+\s)+from/i}),Prism.languages.insertBefore("scss","property",{variable:/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i}),Prism.languages.insertBefore("scss","ignore",{placeholder:/%[-_\w]+/i,statement:/\B!(default|optional)\b/gi,"boolean":/\b(true|false)\b/g,"null":/\b(null)\b/g,operator:/\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|\%)\s+/g});; -Prism.languages.bash=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])(#.*?(\r?\n|$))/g,lookbehind:!0},string:{pattern:/("|')(\\?[\s\S])*?\1/g,inside:{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/g}},keyword:/\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/g}),Prism.languages.insertBefore("bash","keyword",{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/g}),Prism.languages.insertBefore("bash","comment",{important:/(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/g});; diff --git a/node_modules/materialize-css/js/pushpin.js b/node_modules/materialize-css/js/pushpin.js deleted file mode 100644 index 5f42246..0000000 --- a/node_modules/materialize-css/js/pushpin.js +++ /dev/null @@ -1,71 +0,0 @@ -(function ($) { - $.fn.pushpin = function (options) { - // Defaults - var defaults = { - top: 0, - bottom: Infinity, - offset: 0 - }; - - // Remove pushpin event and classes - if (options === "remove") { - this.each(function () { - if (id = $(this).data('pushpin-id')) { - $(window).off('scroll.' + id); - $(this).removeData('pushpin-id').removeClass('pin-top pinned pin-bottom').removeAttr('style'); - } - }); - return false; - } - - options = $.extend(defaults, options); - - - $index = 0; - return this.each(function() { - var $uniqueId = Materialize.guid(), - $this = $(this), - $original_offset = $(this).offset().top; - - function removePinClasses(object) { - object.removeClass('pin-top'); - object.removeClass('pinned'); - object.removeClass('pin-bottom'); - } - - function updateElements(objects, scrolled) { - objects.each(function () { - // Add position fixed (because its between top and bottom) - if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { - removePinClasses($(this)); - $(this).css('top', options.offset); - $(this).addClass('pinned'); - } - - // Add pin-top (when scrolled position is above top) - if (scrolled < options.top && !$(this).hasClass('pin-top')) { - removePinClasses($(this)); - $(this).css('top', 0); - $(this).addClass('pin-top'); - } - - // Add pin-bottom (when scrolled position is below bottom) - if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { - removePinClasses($(this)); - $(this).addClass('pin-bottom'); - $(this).css('top', options.bottom - $original_offset); - } - }); - } - - $(this).data('pushpin-id', $uniqueId); - updateElements($this, $(window).scrollTop()); - $(window).on('scroll.' + $uniqueId, function () { - var $scrolled = $(window).scrollTop() + options.offset; - updateElements($this, $scrolled); - }); - - }); - - }; -}( jQuery )); \ No newline at end of file diff --git a/node_modules/materialize-css/js/scrollFire.js b/node_modules/materialize-css/js/scrollFire.js deleted file mode 100644 index 96d1230..0000000 --- a/node_modules/materialize-css/js/scrollFire.js +++ /dev/null @@ -1,51 +0,0 @@ -(function($) { - - var scrollFireEventsHandled = false; - - // Input: Array of JSON objects {selector, offset, callback} - Materialize.scrollFire = function(options) { - var onScroll = function() { - var windowScroll = window.pageYOffset + window.innerHeight; - - for (var i = 0 ; i < options.length; i++) { - // Get options from each line - var value = options[i]; - var selector = value.selector, - offset = value.offset, - callback = value.callback; - - var currentElement = document.querySelector(selector); - if ( currentElement !== null) { - var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset; - - if (windowScroll > (elementOffset + offset)) { - if (value.done !== true) { - if (typeof(callback) === 'function') { - callback.call(this, currentElement); - } else if (typeof(callback) === 'string') { - var callbackFunc = new Function(callback); - callbackFunc(currentElement); - } - value.done = true; - } - } - } - } - }; - - - var throttledScroll = Materialize.throttle(function() { - onScroll(); - }, options.throttle || 100); - - if (!scrollFireEventsHandled) { - window.addEventListener("scroll", throttledScroll); - window.addEventListener("resize", throttledScroll); - scrollFireEventsHandled = true; - } - - // perform a scan once, after current execution context, and after dom is ready - setTimeout(throttledScroll, 0); - }; - -})(jQuery); diff --git a/node_modules/materialize-css/js/scrollspy.js b/node_modules/materialize-css/js/scrollspy.js deleted file mode 100644 index 9171cb7..0000000 --- a/node_modules/materialize-css/js/scrollspy.js +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Extend jquery with a scrollspy plugin. - * This watches the window scroll and fires events when elements are scrolled into viewport. - * - * throttle() and getTime() taken from Underscore.js - * https://github.com/jashkenas/underscore - * - * @author Copyright 2013 John Smart - * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE - * @see https://github.com/thesmart - * @version 0.1.2 - */ -(function($) { - - var jWindow = $(window); - var elements = []; - var elementsInView = []; - var isSpying = false; - var ticks = 0; - var unique_id = 1; - var offset = { - top : 0, - right : 0, - bottom : 0, - left : 0, - } - - /** - * Find elements that are within the boundary - * @param {number} top - * @param {number} right - * @param {number} bottom - * @param {number} left - * @return {jQuery} A collection of elements - */ - function findElements(top, right, bottom, left) { - var hits = $(); - $.each(elements, function(i, element) { - if (element.height() > 0) { - var elTop = element.offset().top, - elLeft = element.offset().left, - elRight = elLeft + element.width(), - elBottom = elTop + element.height(); - - var isIntersect = !(elLeft > right || - elRight < left || - elTop > bottom || - elBottom < top); - - if (isIntersect) { - hits.push(element); - } - } - }); - - return hits; - } - - - /** - * Called when the user scrolls the window - */ - function onScroll(scrollOffset) { - // unique tick id - ++ticks; - - // viewport rectangle - var top = jWindow.scrollTop(), - left = jWindow.scrollLeft(), - right = left + jWindow.width(), - bottom = top + jWindow.height(); - - // determine which elements are in view - var intersections = findElements(top+offset.top + scrollOffset || 200, right+offset.right, bottom+offset.bottom, left+offset.left); - $.each(intersections, function(i, element) { - - var lastTick = element.data('scrollSpy:ticks'); - if (typeof lastTick != 'number') { - // entered into view - element.triggerHandler('scrollSpy:enter'); - } - - // update tick id - element.data('scrollSpy:ticks', ticks); - }); - - // determine which elements are no longer in view - $.each(elementsInView, function(i, element) { - var lastTick = element.data('scrollSpy:ticks'); - if (typeof lastTick == 'number' && lastTick !== ticks) { - // exited from view - element.triggerHandler('scrollSpy:exit'); - element.data('scrollSpy:ticks', null); - } - }); - - // remember elements in view for next tick - elementsInView = intersections; - } - - /** - * Called when window is resized - */ - function onWinSize() { - jWindow.trigger('scrollSpy:winSize'); - } - - - /** - * Enables ScrollSpy using a selector - * @param {jQuery|string} selector The elements collection, or a selector - * @param {Object=} options Optional. - throttle : number -> scrollspy throttling. Default: 100 ms - offsetTop : number -> offset from top. Default: 0 - offsetRight : number -> offset from right. Default: 0 - offsetBottom : number -> offset from bottom. Default: 0 - offsetLeft : number -> offset from left. Default: 0 - * @returns {jQuery} - */ - $.scrollSpy = function(selector, options) { - var defaults = { - throttle: 100, - scrollOffset: 200 // offset - 200 allows elements near bottom of page to scroll - }; - options = $.extend(defaults, options); - - var visible = []; - selector = $(selector); - selector.each(function(i, element) { - elements.push($(element)); - $(element).data("scrollSpy:id", i); - // Smooth scroll to section - $('a[href="#' + $(element).attr('id') + '"]').click(function(e) { - e.preventDefault(); - var offset = $(Materialize.escapeHash(this.hash)).offset().top + 1; - $('html, body').animate({ scrollTop: offset - options.scrollOffset }, {duration: 400, queue: false, easing: 'easeOutCubic'}); - }); - }); - - offset.top = options.offsetTop || 0; - offset.right = options.offsetRight || 0; - offset.bottom = options.offsetBottom || 0; - offset.left = options.offsetLeft || 0; - - var throttledScroll = Materialize.throttle(function() { - onScroll(options.scrollOffset); - }, options.throttle || 100); - var readyScroll = function(){ - $(document).ready(throttledScroll); - }; - - if (!isSpying) { - jWindow.on('scroll', readyScroll); - jWindow.on('resize', readyScroll); - isSpying = true; - } - - // perform a scan once, after current execution context, and after dom is ready - setTimeout(readyScroll, 0); - - - selector.on('scrollSpy:enter', function() { - visible = $.grep(visible, function(value) { - return value.height() != 0; - }); - - var $this = $(this); - - if (visible[0]) { - $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active'); - if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) { - visible.unshift($(this)); - } - else { - visible.push($(this)); - } - } - else { - visible.push($(this)); - } - - - $('a[href="#' + visible[0].attr('id') + '"]').addClass('active'); - }); - selector.on('scrollSpy:exit', function() { - visible = $.grep(visible, function(value) { - return value.height() != 0; - }); - - if (visible[0]) { - $('a[href="#' + visible[0].attr('id') + '"]').removeClass('active'); - var $this = $(this); - visible = $.grep(visible, function(value) { - return value.attr('id') != $this.attr('id'); - }); - if (visible[0]) { // Check if empty - $('a[href="#' + visible[0].attr('id') + '"]').addClass('active'); - } - } - }); - - return selector; - }; - - /** - * Listen for window resize events - * @param {Object=} options Optional. Set { throttle: number } to change throttling. Default: 100 ms - * @returns {jQuery} $(window) - */ - $.winSizeSpy = function(options) { - $.winSizeSpy = function() { return jWindow; }; // lock from multiple calls - options = options || { - throttle: 100 - }; - return jWindow.on('resize', Materialize.throttle(onWinSize, options.throttle || 100)); - }; - - /** - * Enables ScrollSpy on a collection of elements - * e.g. $('.scrollSpy').scrollSpy() - * @param {Object=} options Optional. - throttle : number -> scrollspy throttling. Default: 100 ms - offsetTop : number -> offset from top. Default: 0 - offsetRight : number -> offset from right. Default: 0 - offsetBottom : number -> offset from bottom. Default: 0 - offsetLeft : number -> offset from left. Default: 0 - * @returns {jQuery} - */ - $.fn.scrollSpy = function(options) { - return $.scrollSpy($(this), options); - }; - -})(jQuery); diff --git a/node_modules/materialize-css/js/sideNav.js b/node_modules/materialize-css/js/sideNav.js deleted file mode 100644 index 3ae7554..0000000 --- a/node_modules/materialize-css/js/sideNav.js +++ /dev/null @@ -1,376 +0,0 @@ -(function ($) { - - var methods = { - init : function(options) { - var defaults = { - menuWidth: 300, - edge: 'left', - closeOnClick: false, - draggable: true - }; - options = $.extend(defaults, options); - - $(this).each(function(){ - var $this = $(this); - var menuId = $this.attr('data-activates'); - var menu = $("#"+ menuId); - - // Set to width - if (options.menuWidth != 300) { - menu.css('width', options.menuWidth); - } - - // Add Touch Area - var $dragTarget = $('.drag-target[data-sidenav="' + menuId + '"]'); - if (options.draggable) { - // Regenerate dragTarget - if ($dragTarget.length) { - $dragTarget.remove(); - } - - $dragTarget = $('
              ').attr('data-sidenav', menuId); - $('body').append($dragTarget); - } else { - $dragTarget = $(); - } - - if (options.edge == 'left') { - menu.css('transform', 'translateX(-100%)'); - $dragTarget.css({'left': 0}); // Add Touch Area - } - else { - menu.addClass('right-aligned') // Change text-alignment to right - .css('transform', 'translateX(100%)'); - $dragTarget.css({'right': 0}); // Add Touch Area - } - - // If fixed sidenav, bring menu out - if (menu.hasClass('fixed')) { - if (window.innerWidth > 992) { - menu.css('transform', 'translateX(0)'); - } - } - - // Window resize to reset on large screens fixed - if (menu.hasClass('fixed')) { - $(window).resize( function() { - if (window.innerWidth > 992) { - // Close menu if window is resized bigger than 992 and user has fixed sidenav - if ($('#sidenav-overlay').length !== 0 && menuOut) { - removeMenu(true); - } - else { - // menu.removeAttr('style'); - menu.css('transform', 'translateX(0%)'); - // menu.css('width', options.menuWidth); - } - } - else if (menuOut === false){ - if (options.edge === 'left') { - menu.css('transform', 'translateX(-100%)'); - } else { - menu.css('transform', 'translateX(100%)'); - } - - } - - }); - } - - // if closeOnClick, then add close event for all a tags in side sideNav - if (options.closeOnClick === true) { - menu.on("click.itemclick", "a:not(.collapsible-header)", function(){ - removeMenu(); - }); - } - - var removeMenu = function(restoreNav) { - panning = false; - menuOut = false; - // Reenable scrolling - $('body').css({ - overflow: '', - width: '' - }); - - $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, - queue: false, easing: 'easeOutQuad', - complete: function() { - $(this).remove(); - } }); - if (options.edge === 'left') { - // Reset phantom div - $dragTarget.css({width: '', right: '', left: '0'}); - menu.velocity( - {'translateX': '-100%'}, - { duration: 200, - queue: false, - easing: 'easeOutCubic', - complete: function() { - if (restoreNav === true) { - // Restore Fixed sidenav - menu.removeAttr('style'); - menu.css('width', options.menuWidth); - } - } - - }); - } - else { - // Reset phantom div - $dragTarget.css({width: '', right: '0', left: ''}); - menu.velocity( - {'translateX': '100%'}, - { duration: 200, - queue: false, - easing: 'easeOutCubic', - complete: function() { - if (restoreNav === true) { - // Restore Fixed sidenav - menu.removeAttr('style'); - menu.css('width', options.menuWidth); - } - } - }); - } - }; - - - - // Touch Event - var panning = false; - var menuOut = false; - - if (options.draggable) { - $dragTarget.on('click', function(){ - if (menuOut) { - removeMenu(); - } - }); - - $dragTarget.hammer({ - prevent_default: false - }).bind('pan', function(e) { - - if (e.gesture.pointerType == "touch") { - - var direction = e.gesture.direction; - var x = e.gesture.center.x; - var y = e.gesture.center.y; - var velocityX = e.gesture.velocityX; - - // Disable Scrolling - var $body = $('body'); - var $overlay = $('#sidenav-overlay'); - var oldWidth = $body.innerWidth(); - $body.css('overflow', 'hidden'); - $body.width(oldWidth); - - // If overlay does not exist, create one and if it is clicked, close menu - if ($overlay.length === 0) { - $overlay = $('
              '); - $overlay.css('opacity', 0).click( function(){ - removeMenu(); - }); - $('body').append($overlay); - } - - // Keep within boundaries - if (options.edge === 'left') { - if (x > options.menuWidth) { x = options.menuWidth; } - else if (x < 0) { x = 0; } - } - - if (options.edge === 'left') { - // Left Direction - if (x < (options.menuWidth / 2)) { menuOut = false; } - // Right Direction - else if (x >= (options.menuWidth / 2)) { menuOut = true; } - menu.css('transform', 'translateX(' + (x - options.menuWidth) + 'px)'); - } - else { - // Left Direction - if (x < (window.innerWidth - options.menuWidth / 2)) { - menuOut = true; - } - // Right Direction - else if (x >= (window.innerWidth - options.menuWidth / 2)) { - menuOut = false; - } - var rightPos = (x - options.menuWidth / 2); - if (rightPos < 0) { - rightPos = 0; - } - - menu.css('transform', 'translateX(' + rightPos + 'px)'); - } - - - // Percentage overlay - var overlayPerc; - if (options.edge === 'left') { - overlayPerc = x / options.menuWidth; - $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'}); - } - else { - overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth); - $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'}); - } - } - - }).bind('panend', function(e) { - - if (e.gesture.pointerType == "touch") { - var $overlay = $('
              '); - var velocityX = e.gesture.velocityX; - var x = e.gesture.center.x; - var leftPos = x - options.menuWidth; - var rightPos = x - options.menuWidth / 2; - if (leftPos > 0 ) { - leftPos = 0; - } - if (rightPos < 0) { - rightPos = 0; - } - panning = false; - - if (options.edge === 'left') { - // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut - if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) { - // Return menu to open - if (leftPos !== 0) { - menu.velocity({'translateX': [0, leftPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - $dragTarget.css({width: '50%', right: 0, left: ''}); - menuOut = true; - } - else if (!menuOut || velocityX > 0.3) { - // Enable Scrolling - $('body').css({ - overflow: '', - width: '' - }); - // Slide menu closed - menu.velocity({'translateX': [-1 * options.menuWidth - 10, leftPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'}); - $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', - complete: function () { - $(this).remove(); - }}); - $dragTarget.css({width: '10px', right: '', left: 0}); - } - } - else { - if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) { - // Return menu to open - if (rightPos !== 0) { - menu.velocity({'translateX': [0, rightPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - $dragTarget.css({width: '50%', right: '', left: 0}); - menuOut = true; - } - else if (!menuOut || velocityX < -0.3) { - // Enable Scrolling - $('body').css({ - overflow: '', - width: '' - }); - - // Slide menu closed - menu.velocity({'translateX': [options.menuWidth + 10, rightPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'}); - $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', - complete: function () { - $(this).remove(); - }}); - $dragTarget.css({width: '10px', right: 0, left: ''}); - } - } - - } - }); - } - - $this.off('click.sidenav').on('click.sidenav', function() { - if (menuOut === true) { - menuOut = false; - panning = false; - removeMenu(); - } - else { - - // Disable Scrolling - var $body = $('body'); - var $overlay = $('
              '); - var oldWidth = $body.innerWidth(); - $body.css('overflow', 'hidden'); - $body.width(oldWidth); - - // Push current drag target on top of DOM tree - $('body').append($dragTarget); - - if (options.edge === 'left') { - $dragTarget.css({width: '50%', right: 0, left: ''}); - menu.velocity({'translateX': [0, -1 * options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - else { - $dragTarget.css({width: '50%', right: '', left: 0}); - menu.velocity({'translateX': [0, options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - $overlay.css('opacity', 0) - .click(function(){ - menuOut = false; - panning = false; - removeMenu(); - $overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function() { - $(this).remove(); - } }); - - }); - $('body').append($overlay); - $overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function () { - menuOut = true; - panning = false; - } - }); - } - - return false; - }); - }); - - - }, - destroy: function () { - var $overlay = $('#sidenav-overlay'); - var $dragTarget = $('.drag-target[data-sidenav="' + $(this).attr('data-activates') + '"]'); - $overlay.trigger('click'); - $dragTarget.remove(); - $(this).off('click'); - $overlay.remove(); - }, - show : function() { - this.trigger('click'); - }, - hide : function() { - $('#sidenav-overlay').trigger('click'); - } - }; - - - $.fn.sideNav = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' ); - } - }; // Plugin end -}( jQuery )); diff --git a/node_modules/materialize-css/js/slider.js b/node_modules/materialize-css/js/slider.js deleted file mode 100644 index 4995cf9..0000000 --- a/node_modules/materialize-css/js/slider.js +++ /dev/null @@ -1,324 +0,0 @@ -(function ($) { - - var methods = { - - init : function(options) { - var defaults = { - indicators: true, - height: 400, - transition: 500, - interval: 6000 - }; - options = $.extend(defaults, options); - - return this.each(function() { - - // For each slider, we want to keep track of - // which slide is active and its associated content - var $this = $(this); - var $slider = $this.find('ul.slides').first(); - var $slides = $slider.find('> li'); - var $active_index = $slider.find('.active').index(); - var $active, $indicators, $interval; - if ($active_index != -1) { $active = $slides.eq($active_index); } - - // Transitions the caption depending on alignment - function captionTransition(caption, duration) { - if (caption.hasClass("center-align")) { - caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false}); - } - else if (caption.hasClass("right-align")) { - caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false}); - } - else if (caption.hasClass("left-align")) { - caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false}); - } - } - - // This function will transition the slide to any index of the next slide - function moveToSlide(index) { - // Wrap around indices. - if (index >= $slides.length) index = 0; - else if (index < 0) index = $slides.length -1; - - $active_index = $slider.find('.active').index(); - - // Only do if index changes - if ($active_index != index) { - $active = $slides.eq($active_index); - $caption = $active.find('.caption'); - - $active.removeClass('active'); - $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad', - complete: function() { - $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false}); - } }); - captionTransition($caption, options.transition); - - - // Update indicators - if (options.indicators) { - $indicators.eq($active_index).removeClass('active'); - } - - $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); - $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'}); - $slides.eq(index).addClass('active'); - - - // Update indicators - if (options.indicators) { - $indicators.eq(index).addClass('active'); - } - } - } - - // Set height of slider - // If fullscreen, do nothing - if (!$this.hasClass('fullscreen')) { - if (options.indicators) { - // Add height if indicators are present - $this.height(options.height + 40); - } - else { - $this.height(options.height); - } - $slider.height(options.height); - } - - - // Set initial positions of captions - $slides.find('.caption').each(function () { - captionTransition($(this), 0); - }); - - // Move img src into background-image - $slides.find('img').each(function () { - var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; - if ($(this).attr('src') !== placeholderBase64) { - $(this).css('background-image', 'url(' + $(this).attr('src') + ')' ); - $(this).attr('src', placeholderBase64); - } - }); - - // dynamically add indicators - if (options.indicators) { - $indicators = $('
                '); - $slides.each(function( index ) { - var $indicator = $('
              • '); - - // Handle clicks on indicators - $indicator.click(function () { - var $parent = $slider.parent(); - var curr_index = $parent.find($(this)).index(); - moveToSlide(curr_index); - - // reset interval - clearInterval($interval); - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - if ($slides.length == $active_index + 1) $active_index = 0; // loop to start - else $active_index += 1; - - moveToSlide($active_index); - - }, options.transition + options.interval - ); - }); - $indicators.append($indicator); - }); - $this.append($indicators); - $indicators = $this.find('ul.indicators').find('li.indicator-item'); - } - - if ($active) { - $active.show(); - } - else { - $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); - - $active_index = 0; - $active = $slides.eq($active_index); - - // Update indicators - if (options.indicators) { - $indicators.eq($active_index).addClass('active'); - } - } - - // Adjust height to current slide - $active.find('img').each(function() { - $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); - }); - - // auto scroll - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - moveToSlide($active_index + 1); - - }, options.transition + options.interval - ); - - - // HammerJS, Swipe navigation - - // Touch Event - var panning = false; - var swipeLeft = false; - var swipeRight = false; - - $this.hammer({ - prevent_default: false - }).bind('pan', function(e) { - if (e.gesture.pointerType === "touch") { - - // reset interval - clearInterval($interval); - - var direction = e.gesture.direction; - var x = e.gesture.deltaX; - var velocityX = e.gesture.velocityX; - var velocityY = e.gesture.velocityY; - - $curr_slide = $slider.find('.active'); - if (Math.abs(velocityX) > Math.abs(velocityY)) { - $curr_slide.velocity({ translateX: x - }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - } - - // Swipe Left - if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) { - swipeRight = true; - } - // Swipe Right - else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) { - swipeLeft = true; - } - - // Make Slide Behind active slide visible - var next_slide; - if (swipeLeft) { - next_slide = $curr_slide.next(); - if (next_slide.length === 0) { - next_slide = $slides.first(); - } - next_slide.velocity({ opacity: 1 - }, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - if (swipeRight) { - next_slide = $curr_slide.prev(); - if (next_slide.length === 0) { - next_slide = $slides.last(); - } - next_slide.velocity({ opacity: 1 - }, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - - - } - - }).bind('panend', function(e) { - if (e.gesture.pointerType === "touch") { - - $curr_slide = $slider.find('.active'); - panning = false; - curr_index = $slider.find('.active').index(); - - if (!swipeRight && !swipeLeft || $slides.length <=1) { - // Return to original spot - $curr_slide.velocity({ translateX: 0 - }, {duration: 300, queue: false, easing: 'easeOutQuad'}); - } - else if (swipeLeft) { - moveToSlide(curr_index + 1); - $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function() { - $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); - } }); - } - else if (swipeRight) { - moveToSlide(curr_index - 1); - $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', - complete: function() { - $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); - } }); - } - swipeLeft = false; - swipeRight = false; - - // Restart interval - clearInterval($interval); - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - if ($slides.length == $active_index + 1) $active_index = 0; // loop to start - else $active_index += 1; - - moveToSlide($active_index); - - }, options.transition + options.interval - ); - } - }); - - $this.on('sliderPause', function() { - clearInterval($interval); - }); - - $this.on('sliderStart', function() { - clearInterval($interval); - $interval = setInterval( - function(){ - $active_index = $slider.find('.active').index(); - if ($slides.length == $active_index + 1) $active_index = 0; // loop to start - else $active_index += 1; - - moveToSlide($active_index); - - }, options.transition + options.interval - ); - }); - - $this.on('sliderNext', function() { - $active_index = $slider.find('.active').index(); - moveToSlide($active_index + 1); - }); - - $this.on('sliderPrev', function() { - $active_index = $slider.find('.active').index(); - moveToSlide($active_index - 1); - }); - - }); - - - - }, - pause : function() { - $(this).trigger('sliderPause'); - }, - start : function() { - $(this).trigger('sliderStart'); - }, - next : function() { - $(this).trigger('sliderNext'); - }, - prev : function() { - $(this).trigger('sliderPrev'); - } - }; - - - $.fn.slider = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); - } - }; // Plugin end -}( jQuery )); diff --git a/node_modules/materialize-css/js/tabs.js b/node_modules/materialize-css/js/tabs.js deleted file mode 100644 index 422c400..0000000 --- a/node_modules/materialize-css/js/tabs.js +++ /dev/null @@ -1,233 +0,0 @@ -(function ($) { - - var methods = { - init : function(options) { - var defaults = { - onShow: null, - swipeable: false, - responsiveThreshold: Infinity, // breakpoint for swipeable - }; - options = $.extend(defaults, options); - - return this.each(function() { - - // For each set of tabs, we want to keep track of - // which tab is active and its associated content - var $this = $(this), - window_width = $(window).width(); - - var $active, $content, $links = $this.find('li.tab a'), - $tabs_width = $this.width(), - $tabs_content = $(), - $tabs_wrapper, - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length, - $indicator, - index = prev_index = 0, - clicked = false, - clickedTimeout, - transition = 300; - - - // Finds right attribute for indicator based on active tab. - // el: jQuery Object - var calcRightPos = function(el) { - return $tabs_width - el.position().left - el.outerWidth() - $this.scrollLeft(); - }; - - // Finds left attribute for indicator based on active tab. - // el: jQuery Object - var calcLeftPos = function(el) { - return el.position().left + $this.scrollLeft(); - }; - - // Animates Indicator to active tab. - // prev_index: Number - var animateIndicator = function(prev_index) { - if ((index - prev_index) >= 0) { - $indicator.velocity({"right": calcRightPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'}); - $indicator.velocity({"left": calcLeftPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90}); - - } else { - $indicator.velocity({"left": calcLeftPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'}); - $indicator.velocity({"right": calcRightPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90}); - } - }; - - // Change swipeable according to responsive threshold - if (options.swipeable) { - if (window_width > options.responsiveThreshold) { - options.swipeable = false; - } - } - - - // If the location.hash matches one of the links, use that as the active tab. - $active = $($links.filter('[href="'+location.hash+'"]')); - - // If no match is found, use the first link or any with class 'active' as the initial active tab. - if ($active.length === 0) { - $active = $(this).find('li.tab a.active').first(); - } - if ($active.length === 0) { - $active = $(this).find('li.tab a').first(); - } - - $active.addClass('active'); - index = $links.index($active); - if (index < 0) { - index = 0; - } - - if ($active[0] !== undefined) { - $content = $($active[0].hash); - $content.addClass('active'); - } - - // append indicator then set indicator width to tab width - if (!$this.find('.indicator').length) { - $this.append('
                '); - } - $indicator = $this.find('.indicator'); - - // we make sure that the indicator is at the end of the tabs - $this.append($indicator); - - if ($this.is(":visible")) { - // $indicator.css({"right": $tabs_width - ((index + 1) * $tab_width)}); - // $indicator.css({"left": index * $tab_width}); - setTimeout(function() { - $indicator.css({"right": calcRightPos($active) }); - $indicator.css({"left": calcLeftPos($active) }); - }, 0); - } - $(window).resize(function () { - $tabs_width = $this.width(); - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length; - if (index < 0) { - index = 0; - } - if ($tab_width !== 0 && $tabs_width !== 0) { - $indicator.css({"right": calcRightPos($active) }); - $indicator.css({"left": calcLeftPos($active) }); - } - }); - - // Initialize Tabs Content. - if (options.swipeable) { - // TODO: Duplicate calls with swipeable? handle multiple div wrapping. - $links.each(function () { - var $curr_content = $(Materialize.escapeHash(this.hash)); - $curr_content.addClass('carousel-item'); - $tabs_content = $tabs_content.add($curr_content); - }); - $tabs_wrapper = $tabs_content.wrapAll(''); - $tabs_content.css('display', ''); - $('.tabs-content.carousel').carousel({ - fullWidth: true, - noWrap: true, - onCycleTo: function(item) { - if (!clicked) { - var prev_index = index; - index = $tabs_wrapper.index(item); - $active = $links.eq(index); - animateIndicator(prev_index); - } - }, - }); - } else { - // Hide the remaining content - $links.not($active).each(function () { - $(Materialize.escapeHash(this.hash)).hide(); - }); - } - - - // Bind the click event handler - $this.on('click', 'a', function(e) { - if ($(this).parent().hasClass('disabled')) { - e.preventDefault(); - return; - } - - // Act as regular link if target attribute is specified. - if (!!$(this).attr("target")) { - return; - } - - clicked = true; - $tabs_width = $this.width(); - $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length; - - // Make the old tab inactive. - $active.removeClass('active'); - var $oldContent = $content - - // Update the variables with the new link and content - $active = $(this); - $content = $(Materialize.escapeHash(this.hash)); - $links = $this.find('li.tab a'); - var activeRect = $active.position(); - - // Make the tab active. - $active.addClass('active'); - prev_index = index; - index = $links.index($(this)); - if (index < 0) { - index = 0; - } - // Change url to current tab - // window.location.hash = $active.attr('href'); - - // Swap content - if (options.swipeable) { - if ($tabs_content.length) { - $tabs_content.carousel('set', index); - } - } else { - if ($content !== undefined) { - $content.show(); - $content.addClass('active'); - if (typeof(options.onShow) === "function") { - options.onShow.call(this, $content); - } - } - - if ($oldContent !== undefined && - !$oldContent.is($content)) { - $oldContent.hide(); - $oldContent.removeClass('active'); - } - } - - // Reset clicked state - clickedTimeout = setTimeout(function(){ clicked = false; }, transition); - - // Update indicator - animateIndicator(prev_index); - - // Prevent the anchor's default click action - e.preventDefault(); - }); - }); - - }, - select_tab : function( id ) { - this.find('a[href="#' + id + '"]').trigger('click'); - } - }; - - $.fn.tabs = function(methodOrOptions) { - if ( methods[methodOrOptions] ) { - return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { - // Default to "init" - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tabs' ); - } - }; - - $(document).ready(function(){ - $('ul.tabs').tabs(); - }); -}( jQuery )); diff --git a/node_modules/materialize-css/js/toasts.js b/node_modules/materialize-css/js/toasts.js deleted file mode 100644 index 78021ce..0000000 --- a/node_modules/materialize-css/js/toasts.js +++ /dev/null @@ -1,136 +0,0 @@ -Materialize.toast = function (message, displayLength, className, completeCallback) { - className = className || ""; - - var container = document.getElementById('toast-container'); - - // Create toast container if it does not exist - if (container === null) { - // create notification container - container = document.createElement('div'); - container.id = 'toast-container'; - document.body.appendChild(container); - } - - // Select and append toast - var newToast = createToast(message); - - // only append toast if message is not undefined - if(message){ - container.appendChild(newToast); - } - - newToast.style.opacity = 0; - - // Animate toast in - Vel(newToast, {translateY: '-35px', opacity: 1 }, {duration: 300, - easing: 'easeOutCubic', - queue: false}); - - // Allows timer to be pause while being panned - var timeLeft = displayLength; - var counterInterval; - if (timeLeft != null) { - counterInterval = setInterval (function(){ - if (newToast.parentNode === null) - window.clearInterval(counterInterval); - - // If toast is not being dragged, decrease its time remaining - if (!newToast.classList.contains('panning')) { - timeLeft -= 20; - } - - if (timeLeft <= 0) { - // Animate toast out - Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375, - easing: 'easeOutExpo', - queue: false, - complete: function(){ - // Call the optional callback - if(typeof(completeCallback) === "function") - completeCallback(); - // Remove toast after it times out - this[0].parentNode.removeChild(this[0]); - } - }); - window.clearInterval(counterInterval); - } - }, 20); - } - - - - function createToast(html) { - - // Create toast - var toast = document.createElement('div'); - toast.classList.add('toast'); - if (className) { - var classes = className.split(' '); - - for (var i = 0, count = classes.length; i < count; i++) { - toast.classList.add(classes[i]); - } - } - // If type of parameter is HTML Element - if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string" -) { - toast.appendChild(html); - } - else if (html instanceof jQuery) { - // Check if it is jQuery object - toast.appendChild(html[0]); - } - else { - // Insert as text; - toast.innerHTML = html; - } - // Bind hammer - var hammerHandler = new Hammer(toast, {prevent_default: false}); - hammerHandler.on('pan', function(e) { - var deltaX = e.deltaX; - var activationDistance = 80; - - // Change toast state - if (!toast.classList.contains('panning')){ - toast.classList.add('panning'); - } - - var opacityPercent = 1-Math.abs(deltaX / activationDistance); - if (opacityPercent < 0) - opacityPercent = 0; - - Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - - }); - - hammerHandler.on('panend', function(e) { - var deltaX = e.deltaX; - var activationDistance = 80; - - // If toast dragged past activation point - if (Math.abs(deltaX) > activationDistance) { - Vel(toast, {marginTop: '-40px'}, { duration: 375, - easing: 'easeOutExpo', - queue: false, - complete: function(){ - if(typeof(completeCallback) === "function") { - completeCallback(); - } - toast.parentNode.removeChild(toast); - } - }); - - } else { - toast.classList.remove('panning'); - // Put toast back into original position - Vel(toast, { left: 0, opacity: 1 }, { duration: 300, - easing: 'easeOutExpo', - queue: false - }); - - } - }); - - return toast; - } -}; diff --git a/node_modules/materialize-css/js/tooltip.js b/node_modules/materialize-css/js/tooltip.js deleted file mode 100644 index 4f6c66c..0000000 --- a/node_modules/materialize-css/js/tooltip.js +++ /dev/null @@ -1,238 +0,0 @@ -(function ($) { - $.fn.tooltip = function (options) { - var timeout = null, - margin = 5; - - // Defaults - var defaults = { - delay: 350, - tooltip: '', - position: 'bottom', - html: false - }; - - // Remove tooltip from the activator - if (options === "remove") { - this.each(function() { - $('#' + $(this).attr('data-tooltip-id')).remove(); - $(this).off('mouseenter.tooltip mouseleave.tooltip'); - }); - return false; - } - - options = $.extend(defaults, options); - - return this.each(function() { - var tooltipId = Materialize.guid(); - var origin = $(this); - - // Destroy old tooltip - if (origin.attr('data-tooltip-id')) { - $('#' + origin.attr('data-tooltip-id')).remove(); - } - - origin.attr('data-tooltip-id', tooltipId); - - // Get attributes. - var allowHtml, - tooltipDelay, - tooltipPosition, - tooltipText, - tooltipEl, - backdrop; - var setAttributes = function() { - allowHtml = origin.attr('data-html') ? origin.attr('data-html') === 'true' : options.html; - tooltipDelay = origin.attr('data-delay'); - tooltipDelay = (tooltipDelay === undefined || tooltipDelay === '') ? - options.delay : tooltipDelay; - tooltipPosition = origin.attr('data-position'); - tooltipPosition = (tooltipPosition === undefined || tooltipPosition === '') ? - options.position : tooltipPosition; - tooltipText = origin.attr('data-tooltip'); - tooltipText = (tooltipText === undefined || tooltipText === '') ? - options.tooltip : tooltipText; - }; - setAttributes(); - - var renderTooltipEl = function() { - var tooltip = $('
                '); - - // Create Text span - if (allowHtml) { - tooltipText = $('').html(tooltipText); - } else{ - tooltipText = $('').text(tooltipText); - } - - // Create tooltip - tooltip.append(tooltipText) - .appendTo($('body')) - .attr('id', tooltipId); - - // Create backdrop - backdrop = $('
                '); - backdrop.appendTo(tooltip); - return tooltip; - }; - tooltipEl = renderTooltipEl(); - - // Destroy previously binded events - origin.off('mouseenter.tooltip mouseleave.tooltip'); - // Mouse In - var started = false, timeoutRef; - origin.on({'mouseenter.tooltip': function(e) { - var showTooltip = function() { - setAttributes(); - started = true; - tooltipEl.velocity('stop'); - backdrop.velocity('stop'); - tooltipEl.css({ visibility: 'visible', left: '0px', top: '0px' }); - - // Tooltip positioning - var originWidth = origin.outerWidth(); - var originHeight = origin.outerHeight(); - var tooltipHeight = tooltipEl.outerHeight(); - var tooltipWidth = tooltipEl.outerWidth(); - var tooltipVerticalMovement = '0px'; - var tooltipHorizontalMovement = '0px'; - var backdropOffsetWidth = backdrop[0].offsetWidth; - var backdropOffsetHeight = backdrop[0].offsetHeight; - var scaleXFactor = 8; - var scaleYFactor = 8; - var scaleFactor = 0; - var targetTop, targetLeft, newCoordinates; - - if (tooltipPosition === "top") { - // Top Position - targetTop = origin.offset().top - tooltipHeight - margin; - targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipVerticalMovement = '-10px'; - backdrop.css({ - bottom: 0, - left: 0, - borderRadius: '14px 14px 0 0', - transformOrigin: '50% 100%', - marginTop: tooltipHeight, - marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2) - }); - } - // Left Position - else if (tooltipPosition === "left") { - targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2; - targetLeft = origin.offset().left - tooltipWidth - margin; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - - tooltipHorizontalMovement = '-10px'; - backdrop.css({ - top: '-7px', - right: 0, - width: '14px', - height: '14px', - borderRadius: '14px 0 0 14px', - transformOrigin: '95% 50%', - marginTop: tooltipHeight/2, - marginLeft: tooltipWidth - }); - } - // Right Position - else if (tooltipPosition === "right") { - targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2; - targetLeft = origin.offset().left + originWidth + margin; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - - tooltipHorizontalMovement = '+10px'; - backdrop.css({ - top: '-7px', - left: 0, - width: '14px', - height: '14px', - borderRadius: '0 14px 14px 0', - transformOrigin: '5% 50%', - marginTop: tooltipHeight/2, - marginLeft: '0px' - }); - } - else { - // Bottom Position - targetTop = origin.offset().top + origin.outerHeight() + margin; - targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2; - newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight); - tooltipVerticalMovement = '+10px'; - backdrop.css({ - top: 0, - left: 0, - marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2) - }); - } - - // Set tooptip css placement - tooltipEl.css({ - top: newCoordinates.y, - left: newCoordinates.x - }); - - // Calculate Scale to fill - scaleXFactor = Math.SQRT2 * tooltipWidth / parseInt(backdropOffsetWidth); - scaleYFactor = Math.SQRT2 * tooltipHeight / parseInt(backdropOffsetHeight); - scaleFactor = Math.max(scaleXFactor, scaleYFactor); - - tooltipEl.velocity({ translateY: tooltipVerticalMovement, translateX: tooltipHorizontalMovement}, { duration: 350, queue: false }) - .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false}); - backdrop.css({ visibility: 'visible' }) - .velocity({opacity:1},{duration: 55, delay: 0, queue: false}) - .velocity({scaleX: scaleFactor, scaleY: scaleFactor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'}); - }; - - timeoutRef = setTimeout(showTooltip, tooltipDelay); // End Interval - - // Mouse Out - }, - 'mouseleave.tooltip': function(){ - // Reset State - started = false; - clearTimeout(timeoutRef); - - // Animate back - setTimeout(function() { - if (started !== true) { - tooltipEl.velocity({ - opacity: 0, translateY: 0, translateX: 0}, { duration: 225, queue: false}); - backdrop.velocity({opacity: 0, scaleX: 1, scaleY: 1}, { - duration:225, - queue: false, - complete: function(){ - backdrop.css({ visibility: 'hidden' }); - tooltipEl.css({ visibility: 'hidden' }); - started = false;} - }); - } - },225); - } - }); - }); - }; - - var repositionWithinScreen = function(x, y, width, height) { - var newX = x; - var newY = y; - - if (newX < 0) { - newX = 4; - } else if (newX + width > window.innerWidth) { - newX -= newX + width - window.innerWidth; - } - - if (newY < 0) { - newY = 4; - } else if (newY + height > window.innerHeight + $(window).scrollTop) { - newY -= newY + height - window.innerHeight; - } - - return {x: newX, y: newY}; - }; - - $(document).ready(function(){ - $('.tooltipped').tooltip(); - }); -}( jQuery )); diff --git a/node_modules/materialize-css/js/transitions.js b/node_modules/materialize-css/js/transitions.js deleted file mode 100644 index d3d91b5..0000000 --- a/node_modules/materialize-css/js/transitions.js +++ /dev/null @@ -1,169 +0,0 @@ -(function ($) { - // Image transition function - Materialize.fadeInImage = function(selectorOrEl) { - var element; - if (typeof(selectorOrEl) === 'string') { - element = $(selectorOrEl); - } else if (typeof(selectorOrEl) === 'object') { - element = selectorOrEl; - } else { - return; - } - element.css({opacity: 0}); - $(element).velocity({opacity: 1}, { - duration: 650, - queue: false, - easing: 'easeOutSine' - }); - $(element).velocity({opacity: 1}, { - duration: 1300, - queue: false, - easing: 'swing', - step: function(now, fx) { - fx.start = 100; - var grayscale_setting = now/100; - var brightness_setting = 150 - (100 - now)/1.75; - - if (brightness_setting < 100) { - brightness_setting = 100; - } - if (now >= 0) { - $(this).css({ - "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)", - "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)" - }); - } - } - }); - }; - - // Horizontal staggered list - Materialize.showStaggeredList = function(selectorOrEl) { - var element; - if (typeof(selectorOrEl) === 'string') { - element = $(selectorOrEl); - } else if (typeof(selectorOrEl) === 'object') { - element = selectorOrEl; - } else { - return; - } - var time = 0; - element.find('li').velocity( - { translateX: "-100px"}, - { duration: 0 }); - - element.find('li').each(function() { - $(this).velocity( - { opacity: "1", translateX: "0"}, - { duration: 800, delay: time, easing: [60, 10] }); - time += 120; - }); - }; - - - $(document).ready(function() { - // Hardcoded .staggered-list scrollFire - // var staggeredListOptions = []; - // $('ul.staggered-list').each(function (i) { - - // var label = 'scrollFire-' + i; - // $(this).addClass(label); - // staggeredListOptions.push( - // {selector: 'ul.staggered-list.' + label, - // offset: 200, - // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'}); - // }); - // scrollFire(staggeredListOptions); - - // HammerJS, Swipe navigation - - // Touch Event - var swipeLeft = false; - var swipeRight = false; - - - // Dismissible Collections - $('.dismissable').each(function() { - $(this).hammer({ - prevent_default: false - }).bind('pan', function(e) { - if (e.gesture.pointerType === "touch") { - var $this = $(this); - var direction = e.gesture.direction; - var x = e.gesture.deltaX; - var velocityX = e.gesture.velocityX; - - $this.velocity({ translateX: x - }, {duration: 50, queue: false, easing: 'easeOutQuad'}); - - // Swipe Left - if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) { - swipeLeft = true; - } - - // Swipe Right - if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) { - swipeRight = true; - } - } - }).bind('panend', function(e) { - // Reset if collection is moved back into original position - if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) { - swipeRight = false; - swipeLeft = false; - } - - if (e.gesture.pointerType === "touch") { - var $this = $(this); - if (swipeLeft || swipeRight) { - var fullWidth; - if (swipeLeft) { fullWidth = $this.innerWidth(); } - else { fullWidth = -1 * $this.innerWidth(); } - - $this.velocity({ translateX: fullWidth, - }, {duration: 100, queue: false, easing: 'easeOutQuad', complete: - function() { - $this.css('border', 'none'); - $this.velocity({ height: 0, padding: 0, - }, {duration: 200, queue: false, easing: 'easeOutQuad', complete: - function() { $this.remove(); } - }); - } - }); - } - else { - $this.velocity({ translateX: 0, - }, {duration: 100, queue: false, easing: 'easeOutQuad'}); - } - swipeLeft = false; - swipeRight = false; - } - }); - - }); - - - // time = 0 - // // Vertical Staggered list - // $('ul.staggered-list.vertical li').velocity( - // { translateY: "100px"}, - // { duration: 0 }); - - // $('ul.staggered-list.vertical li').each(function() { - // $(this).velocity( - // { opacity: "1", translateY: "0"}, - // { duration: 800, delay: time, easing: [60, 25] }); - // time += 120; - // }); - - // // Fade in and Scale - // $('.fade-in.scale').velocity( - // { scaleX: .4, scaleY: .4, translateX: -600}, - // { duration: 0}); - // $('.fade-in').each(function() { - // $(this).velocity( - // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0}, - // { duration: 800, easing: [60, 10] }); - // }); - }); -}( jQuery )); diff --git a/node_modules/materialize-css/js/velocity.min.js b/node_modules/materialize-css/js/velocity.min.js deleted file mode 100644 index ea21aad..0000000 --- a/node_modules/materialize-css/js/velocity.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ -/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ -/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */ -jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(e){function t(e){var t=e.length,a=r.type(e);return"function"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===a||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e},r.isArray=Array.isArray||function(e){return"array"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||"object"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,"constructor")&&!o.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[l]||{},l++),"object"!=typeof s&&"function"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||"fx")+"queue";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||"fx";var n=r.queue(a,t),o=n.shift();"inprogress"===o&&(o=n.shift()),o&&("fx"===t&&n.unshift("inprogress"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando="velocity"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s="Boolean Number String Function Array Date RegExp Object Error".split(" "),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var T=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];f.each(T,function(e,t){S.setPropertyValue(V,"display",t)})}S.setPropertyValue(V,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&S.setPropertyValue(V,"visibility",u.visibility);for(var k in P)if("element"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,"tween"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?"":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H]("extract",null,L[1]):L[1]),"transform"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d="(0px, 0px, 0px)",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&"none"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&S.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&S.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="",t.getElementsByTagName("span").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v="swing",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,"velocity",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft="pageXOffset",b.State.scrollPropertyTop="pageYOffset"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft="scrollLeft",b.State.scrollPropertyTop="scrollTop");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=d?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=d?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,"display","none")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,"display")&&(u=!0,S.setPropertyValue(e,"display",S.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(S.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(S.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===d&&"filter"===r?g.getPropertyValue(r):g[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,"position");("fixed"===m||"absolute"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+"px")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c]("extract",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r]("name",e),"transform"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r]("extract",e,g)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&"transform"===S.Normalizations.registered[r]("name",e))S.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r]("inject",e,a),r=S.Normalizations.registered[r]("name",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r="";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===d&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}S.setPropertyValue(e,"transform",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,"position"),fontSize:S.getPropertyValue(o,"fontSize")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");b.init(u),e.myParent.appendChild(u),f.each(["overflow","overflowX","overflowY"],function(e,t){b.CSS.setPropertyValue(u,t,"hidden")}),b.CSS.setPropertyValue(u,"position",e.position),b.CSS.setPropertyValue(u,"fontSize",e.fontSize),b.CSS.setPropertyValue(u,"boxSizing","content-box"),f.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){b.CSS.setPropertyValue(u,t,s+"%")}),b.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,"fontSize"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if("scroll"===A){var P,C,T,F=/^x$/i.test(s.axis)?"Left":"Top",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container["scroll"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State["scrollProperty"+F]],C=b.State.scrollAnchor[b.State["scrollProperty"+("Left"===F?"Top":"Left")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:"",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log("tweensContainer (scroll): ",l.scroll,o)}else if("reverse"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);"none"===i(o).opts.display&&(i(o).opts.display="auto"),"hidden"===i(o).opts.visibility&&(i(o).opts.visibility="visible"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if("element"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log("reverse tweensContainer ("+H+"): "+JSON.stringify(E[H]),o)}l=E}else if("start"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp("^"+S.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,"reverse",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each(["Down","Up"],function(e,t){b.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},d={};l.display===a&&(l.display="Down"===t?"inline"===b.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each(["In","Out"],function(e,t){b.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)})); diff --git a/node_modules/materialize-css/js/waves.js b/node_modules/materialize-css/js/waves.js deleted file mode 100644 index c76d463..0000000 --- a/node_modules/materialize-css/js/waves.js +++ /dev/null @@ -1,338 +0,0 @@ -/*! - * Waves v0.6.4 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */ - -;(function(window) { - 'use strict'; - - var Waves = Waves || {}; - var $$ = document.querySelectorAll.bind(document); - - // Find exact position of element - function isWindow(obj) { - return obj !== null && obj === obj.window; - } - - function getWindow(elem) { - return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; - } - - function offset(elem) { - var docElem, win, - box = {top: 0, left: 0}, - doc = elem && elem.ownerDocument; - - docElem = doc.documentElement; - - if (typeof elem.getBoundingClientRect !== typeof undefined) { - box = elem.getBoundingClientRect(); - } - win = getWindow(doc); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - } - - function convertStyle(obj) { - var style = ''; - - for (var a in obj) { - if (obj.hasOwnProperty(a)) { - style += (a + ':' + obj[a] + ';'); - } - } - - return style; - } - - var Effect = { - - // Effect delay - duration: 750, - - show: function(e, element) { - - // Disable right click - if (e.button === 2) { - return false; - } - - var el = element || this; - - // Create ripple - var ripple = document.createElement('div'); - ripple.className = 'waves-ripple'; - el.appendChild(ripple); - - // Get click coordinate and element witdh - var pos = offset(el); - var relativeY = (e.pageY - pos.top); - var relativeX = (e.pageX - pos.left); - var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; - - // Support for touch devices - if ('touches' in e) { - relativeY = (e.touches[0].pageY - pos.top); - relativeX = (e.touches[0].pageX - pos.left); - } - - // Attach data to element - ripple.setAttribute('data-hold', Date.now()); - ripple.setAttribute('data-scale', scale); - ripple.setAttribute('data-x', relativeX); - ripple.setAttribute('data-y', relativeY); - - // Set ripple position - var rippleStyle = { - 'top': relativeY+'px', - 'left': relativeX+'px' - }; - - ripple.className = ripple.className + ' waves-notransition'; - ripple.setAttribute('style', convertStyle(rippleStyle)); - ripple.className = ripple.className.replace('waves-notransition', ''); - - // Scale the ripple - rippleStyle['-webkit-transform'] = scale; - rippleStyle['-moz-transform'] = scale; - rippleStyle['-ms-transform'] = scale; - rippleStyle['-o-transform'] = scale; - rippleStyle.transform = scale; - rippleStyle.opacity = '1'; - - rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; - rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; - rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; - rippleStyle['transition-duration'] = Effect.duration + 'ms'; - - rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; - - ripple.setAttribute('style', convertStyle(rippleStyle)); - }, - - hide: function(e) { - TouchHandler.touchup(e); - - var el = this; - var width = el.clientWidth * 1.4; - - // Get first ripple - var ripple = null; - var ripples = el.getElementsByClassName('waves-ripple'); - if (ripples.length > 0) { - ripple = ripples[ripples.length - 1]; - } else { - return false; - } - - var relativeX = ripple.getAttribute('data-x'); - var relativeY = ripple.getAttribute('data-y'); - var scale = ripple.getAttribute('data-scale'); - - // Get delay beetween mousedown and mouse leave - var diff = Date.now() - Number(ripple.getAttribute('data-hold')); - var delay = 350 - diff; - - if (delay < 0) { - delay = 0; - } - - // Fade out ripple after delay - setTimeout(function() { - var style = { - 'top': relativeY+'px', - 'left': relativeX+'px', - 'opacity': '0', - - // Duration - '-webkit-transition-duration': Effect.duration + 'ms', - '-moz-transition-duration': Effect.duration + 'ms', - '-o-transition-duration': Effect.duration + 'ms', - 'transition-duration': Effect.duration + 'ms', - '-webkit-transform': scale, - '-moz-transform': scale, - '-ms-transform': scale, - '-o-transform': scale, - 'transform': scale, - }; - - ripple.setAttribute('style', convertStyle(style)); - - setTimeout(function() { - try { - el.removeChild(ripple); - } catch(e) { - return false; - } - }, Effect.duration); - }, delay); - }, - - // Little hack to make can perform waves effect - wrapInput: function(elements) { - for (var a = 0; a < elements.length; a++) { - var el = elements[a]; - - if (el.tagName.toLowerCase() === 'input') { - var parent = el.parentNode; - - // If input already have parent just pass through - if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { - continue; - } - - // Put element class and style to the specified parent - var wrapper = document.createElement('i'); - wrapper.className = el.className + ' waves-input-wrapper'; - - var elementStyle = el.getAttribute('style'); - - if (!elementStyle) { - elementStyle = ''; - } - - wrapper.setAttribute('style', elementStyle); - - el.className = 'waves-button-input'; - el.removeAttribute('style'); - - // Put element as child - parent.replaceChild(wrapper, el); - wrapper.appendChild(el); - } - } - } - }; - - - /** - * Disable mousedown event for 500ms during and after touch - */ - var TouchHandler = { - /* uses an integer rather than bool so there's no issues with - * needing to clear timeouts if another touch event occurred - * within the 500ms. Cannot mouseup between touchstart and - * touchend, nor in the 500ms after touchend. */ - touches: 0, - allowEvent: function(e) { - var allow = true; - - if (e.type === 'touchstart') { - TouchHandler.touches += 1; //push - } else if (e.type === 'touchend' || e.type === 'touchcancel') { - setTimeout(function() { - if (TouchHandler.touches > 0) { - TouchHandler.touches -= 1; //pop after 500ms - } - }, 500); - } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { - allow = false; - } - - return allow; - }, - touchup: function(e) { - TouchHandler.allowEvent(e); - } - }; - - - /** - * Delegated click handler for .waves-effect element. - * returns null when .waves-effect element not in "click tree" - */ - function getWavesEffectElement(e) { - if (TouchHandler.allowEvent(e) === false) { - return null; - } - - var element = null; - var target = e.target || e.srcElement; - - while (target.parentElement !== null) { - if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { - element = target; - break; - } else if (target.classList.contains('waves-effect')) { - element = target; - break; - } - target = target.parentElement; - } - - return element; - } - - /** - * Bubble the click and show effect if .waves-effect elem was found - */ - function showEffect(e) { - var element = getWavesEffectElement(e); - - if (element !== null) { - Effect.show(e, element); - - if ('ontouchstart' in window) { - element.addEventListener('touchend', Effect.hide, false); - element.addEventListener('touchcancel', Effect.hide, false); - } - - element.addEventListener('mouseup', Effect.hide, false); - element.addEventListener('mouseleave', Effect.hide, false); - } - } - - Waves.displayEffect = function(options) { - options = options || {}; - - if ('duration' in options) { - Effect.duration = options.duration; - } - - //Wrap input inside tag - Effect.wrapInput($$('.waves-effect')); - - if ('ontouchstart' in window) { - document.body.addEventListener('touchstart', showEffect, false); - } - - document.body.addEventListener('mousedown', showEffect, false); - }; - - /** - * Attach Waves to an input element (or any element which doesn't - * bubble mouseup/mousedown events). - * Intended to be used with dynamically loaded forms/inputs, or - * where the user doesn't want a delegated click handler. - */ - Waves.attach = function(element) { - //FUTURE: automatically add waves classes and allow users - // to specify them with an options param? Eg. light/classic/button - if (element.tagName.toLowerCase() === 'input') { - Effect.wrapInput([element]); - element = element.parentElement; - } - - if ('ontouchstart' in window) { - element.addEventListener('touchstart', showEffect, false); - } - - element.addEventListener('mousedown', showEffect, false); - }; - - window.Waves = Waves; - - document.addEventListener('DOMContentLoaded', function() { - Waves.displayEffect(); - }, false); - -})(window); diff --git a/node_modules/materialize-css/media-css.html b/node_modules/materialize-css/media-css.html deleted file mode 100644 index 9f69f52..0000000 --- a/node_modules/materialize-css/media-css.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - - - Media CSS - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - - -
                -

                Images

                -

                Images can be styled in different ways using Materialize

                - -

                Responsive Images

                -

                To make images resize responsively to page width, you can add the class responsive-img to your image tag. It will now have a max-width: 100% and height:auto.

                -
                
                -    <img class="responsive-img" src="cool_pic.jpg">
                -        
                -

                Circular images

                -
                -
                -
                -
                - -
                -
                - - This is a square image. Add the "circle" class to it to make it appear circular. - -
                -
                -
                -
                - -
                -
                -

                To make images appear circular, simply add class="circle" to them

                -
                
                -      <div class="col s12 m8 offset-m2 l6 offset-l3">
                -        <div class="card-panel grey lighten-5 z-depth-1">
                -          <div class="row valign-wrapper">
                -            <div class="col s2">
                -              <img src="images/yuna.jpg" alt="" class="circle responsive-img"> <!-- notice the "circle" class -->
                -            </div>
                -            <div class="col s10">
                -              <span class="black-text">
                -                This is a square image. Add the "circle" class to it to make it appear circular.
                -              </span>
                -            </div>
                -          </div>
                -        </div>
                -      </div>
                -            
                -
                -
                -
                - - -
                -

                Videos

                -

                We provide a container for Embedded Videos that resizes them responsively.

                -

                Responsive Embeds

                -

                To make your embeds responsive, merely wrap them with a containing div which has the class video-container

                -
                - -
                -
                
                -      <div class="video-container">
                -        <iframe width="853" height="480" src="//www.youtube.com/embed/Q8TXgCzxEnw?rel=0" frameborder="0" allowfullscreen></iframe>
                -      </div>
                -        
                -

                Responsive Videos

                -

                To make your HTML5 Videos responsive just add the class responsive-video to the video tag.

                - - -
                
                -  <video class="responsive-video" controls>
                -    <source src="movie.mp4" type="video/mp4">
                -  </video>
                -        
                - -
                - - -
                - -
                -
                -
                - - -
                -
                - -
                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/media.html b/node_modules/materialize-css/media.html deleted file mode 100644 index baada2e..0000000 --- a/node_modules/materialize-css/media.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - - - - Media - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                -
                -

                Media components include things that have to do with large media objects like Images, Video, Audio, etc.

                - -
                -

                Material Box

                -

                Material box is a material design implementation of the Lightbox plugin. When a user clicks on an image that can be enlarged. Material box centers the image and enlarges it in a smooth, non-jarring manner. To dismiss the image, the user can either click on the image again, scroll away, or press the ESC key.

                - - -

                Creating the above image with the effect is as simple as adding a materialboxed class to the image tag.

                -
                
                -    <img class="materialboxed" width="650" src="images/sample-1.jpg">
                -      
                - - -

                Initialization

                -

                Materialbox is intialized automatically. However, if you add images dynamically, you will have to add this initialization code.

                -
                
                -  $(document).ready(function(){
                -    $('.materialboxed').materialbox();
                -  });
                -        
                - -

                Captions

                -

                It is very easy to add a short caption to your photo. Just add the caption as a data-caption attribute.

                - -
                
                -  <img class="materialboxed" data-caption="A picture of some deer and tons of trees" width="250" src="http://th01.deviantart.net/fs70/PRE/i/2013/126/1/e/nature_portrait_by_pw_fotografie-d63tx0n.jpg">
                -          
                -
                - -
                - - - -
                -

                Slider

                -

                Our slider is a simple and elegant image carousel. You can also have captions that will be transitioned on their own depending on their alignment. You can also have indicators that show up on the bottom of the slider.

                -

                Note: This is also Hammer.js compatible! Try swiping with your finger to scroll through the slider.


                - -
                -
                  -
                • - -
                  -

                  This is our big Tagline!

                  -
                  Here's our small slogan.
                  -
                  -
                • -
                • - -
                  -

                  Left Aligned Caption

                  -
                  Here's our small slogan.
                  -
                  -
                • -
                • - -
                  -

                  Right Aligned Caption

                  -
                  Here's our small slogan.
                  -
                  -
                • -
                • - -
                  -

                  This is our big Tagline!

                  -
                  Here's our small slogan.
                  -
                  -
                • -
                -

                - -
                
                -  <div class="slider">
                -    <ul class="slides">
                -      <li>
                -        <img src="http://lorempixel.com/580/250/nature/1"> <!-- random image -->
                -        <div class="caption center-align">
                -          <h3>This is our big Tagline!</h3>
                -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
                -        </div>
                -      </li>
                -      <li>
                -        <img src="http://lorempixel.com/580/250/nature/2"> <!-- random image -->
                -        <div class="caption left-align">
                -          <h3>Left Aligned Caption</h3>
                -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
                -        </div>
                -      </li>
                -      <li>
                -        <img src="http://lorempixel.com/580/250/nature/3"> <!-- random image -->
                -        <div class="caption right-align">
                -          <h3>Right Aligned Caption</h3>
                -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
                -        </div>
                -      </li>
                -      <li>
                -        <img src="http://lorempixel.com/580/250/nature/4"> <!-- random image -->
                -        <div class="caption center-align">
                -          <h3>This is our big Tagline!</h3>
                -          <h5 class="light grey-text text-lighten-3">Here's our small slogan.</h5>
                -        </div>
                -      </li>
                -    </ul>
                -  </div>
                -      
                - -
                -

                Fullscreen Slider

                -

                You can easliy make this slider a fullscreen slider by adding the class fullscreen to the slider div. Here's a quick demo.

                - Open Demo - -
                -

                jQuery Initialization

                -
                
                -    $(document).ready(function(){
                -      $('.slider').slider();
                -    });
                -        
                -
                - -

                jQuery Plugin Options

                - - - - - - - - - - - - - - - - - - - - - - - - - - -
                Option NameDescription
                indicatorsSet to false to hide slide indicators. (Default: True)
                heightSet height of slider. (Default: 400)
                transitionSet the duration of the transition animation in ms. (Default: 500)
                intervalSet the duration between transitions in ms. (Default: 6000)
                -
                - -

                jQuery Plugin Methods

                -

                We have methods to pause, start, move to next and move to previous slide.

                -
                
                -// Pause slider
                -$('.slider').slider('pause');
                -// Start slider
                -$('.slider').slider('start');
                -// Next slide
                -$('.slider').slider('next');
                -// Previous slide
                -$('.slider').slider('prev');
                -      
                -
                - -
                - - - -
                -
                -
                - - -
                -
                - -
                -
                -
                - -
                -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/mobile.html b/node_modules/materialize-css/mobile.html deleted file mode 100644 index 488014c..0000000 --- a/node_modules/materialize-css/mobile.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - Mobile - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                -
                - - - - - -
                -

                Toast

                -

                Swipe to Dismiss

                -

                On all devices, you can swipe to dismiss toasts.

                - - -
                -
                -
                -
                -
                - - -
                -
                - -
                -
                -
                -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/modals.html b/node_modules/materialize-css/modals.html deleted file mode 100644 index 2a243a2..0000000 --- a/node_modules/materialize-css/modals.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - - - Modals - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                -
                - -
                -

                Introduction

                -

                Use a modal for dialog boxes, confirmation messages, or other content that can be called up. In order for the modal to work you have to add the Modal ID to the link of the trigger. To add a close button, just add the class .modal-close to your button.

                - Modal    Modal With Fixed Footer    Modal Bottom Sheet Style - - - -
                - - - -
                -

                Modals HTML Structure

                -
                
                -  <!-- Modal Trigger -->
                -  <a class="waves-effect waves-light btn" href="#modal1">Modal</a>
                -
                -  <!-- Modal Structure -->
                -  <div id="modal1" class="modal">
                -    <div class="modal-content">
                -      <h4>Modal Header</h4>
                -      <p>A bunch of text</p>
                -    </div>
                -    <div class="modal-footer">
                -      <a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">Agree</a>
                -    </div>
                -  </div>
                -          
                -
                - - - - -
                -

                Bottom Sheet Modals

                -

                Bottom Sheet Modals are good for displaying actions to the user on the bottom of a screen. They still act the same as regular modals.

                -
                
                -  <!-- Modal Trigger -->
                -  <a class="waves-effect waves-light btn" href="#modal1">Modal</a>
                -
                -  <!-- Modal Structure -->
                -  <div id="modal1" class="modal bottom-sheet">
                -    <div class="modal-content">
                -      <h4>Modal Header</h4>
                -      <p>A bunch of text</p>
                -    </div>
                -    <div class="modal-footer">
                -      <a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">Agree</a>
                -    </div>
                -  </div>
                -          
                -
                - -
                -

                Modals with Button trigger

                -

                If you prefer to use a button to open a modal specify the Modal ID in data-target rather than the href attribute.

                - -
                
                -  <!-- Modal Trigger -->
                -  <button data-target="modal1" class="btn">Modal</button>
                -          
                -
                - - - -
                -

                jQuery Plugin Initialization

                -

                To open a modal using a trigger:

                -
                
                -  $(document).ready(function(){
                -    // the "href" attribute of .modal-trigger must specify the modal ID that wants to be triggered
                -    $('.modal').modal();
                -  });
                -          
                -

                You can also open modals programatically, the below code will make your modal open on document ready:

                -
                
                -  $('#modal1').modal('open');
                -          
                -

                You can also close them programatically:

                -
                
                -  $('#modal1').modal('close');
                -        
                -
                - - - -
                -

                Options

                -

                You can customize the behavior of each modal using these options. For example, you can call a custom function to run when a modal is dismissed. To do this, just place your function in the intialization code as shown below.

                -
                
                -  $('.modal').modal({
                -      dismissible: true, // Modal can be dismissed by clicking outside of the modal
                -      opacity: .5, // Opacity of modal background
                -      inDuration: 300, // Transition in duration
                -      outDuration: 200, // Transition out duration
                -      startingTop: '4%', // Starting top style attribute
                -      endingTop: '10%', // Ending top style attribute
                -      ready: function(modal, trigger) { // Callback for Modal open. Modal and trigger parameters available.
                -        alert("Ready");
                -        console.log(modal, trigger);
                -      },
                -      complete: function() { alert('Closed'); } // Callback for Modal close
                -    }
                -  );
                -      
                -
                - -
                - - - - -
                -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/navbar.html b/node_modules/materialize-css/navbar.html deleted file mode 100644 index aa2f943..0000000 --- a/node_modules/materialize-css/navbar.html +++ /dev/null @@ -1,701 +0,0 @@ - - - - - - - - - Navbar - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - - - -
                -

                Left Aligned Links

                -

                To left align your navbar links, just add a left class to your <ul> that contains them.

                -
                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#" class="brand-logo right">Logo</a>
                -      <ul id="nav-mobile" class="left hide-on-med-and-down">
                -        <li><a href="sass.html">Sass</a></li>
                -        <li><a href="badges.html">Components</a></li>
                -        <li><a href="collapsible.html">JavaScript</a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -        
                -
                - -
                -

                Centering the logo

                -

                The logo will center itself on medium and down screens, but if you want the logo to always be centered, add the center class to your <a class="brand-logo">. You will have to make sure yourself that links do not overlap if you use this.

                -
                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#" class="brand-logo center">Logo</a>
                -      <ul id="nav-mobile" class="left hide-on-med-and-down">
                -        <li><a href="sass.html">Sass</a></li>
                -        <li><a href="badges.html">Components</a></li>
                -        <li><a href="collapsible.html">JavaScript</a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -        
                -
                - -
                - -

                Active Items

                -

                - Add active class to your li tags to denote the current page. -

                - -
                - -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#!" class="brand-logo center">Logo</a>
                -      <ul class="left hide-on-med-and-down">
                -        <li><a href="sass.html">Sass</a></li>
                -        <li><a href="badges.html">Components</a></li>
                -        <li class="active"><a href="collapsible.html">JavaScript</a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -        
                -
                - - - - - -
                - -
                -

                Icon Links

                - - - -
                - -

                You can add icons into links. For icon only links you don't need any additional class. Just pop the i tag in and it will work.

                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#!" class="brand-logo"><i class="material-icons">cloud</i>Logo</a>
                -      <ul class="right hide-on-med-and-down">
                -        <li><a href="sass.html"><i class="material-icons">search</i></a></li>
                -        <li><a href="badges.html"><i class="material-icons">view_module</i></a></li>
                -        <li><a href="collapsible.html"><i class="material-icons">refresh</i></a></li>
                -        <li><a href="mobile.html"><i class="material-icons">more_vert</i></a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -
                - - - -
                - -

                For adding an icon to a text link you need to add either a left or right class to the icon depending on where you want the icon to be.

                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#!" class="brand-logo">Logo</a>
                -      <ul class="right hide-on-med-and-down">
                -        <li><a href="sass.html"><i class="material-icons left">search</i>Link with Left Icon</a></li>
                -        <li><a href="badges.html"><i class="material-icons right">view_module</i>Link with Right Icon</a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -
                -
                - -
                -

                Buttons

                - - - -
                - -

                You can add buttons into links. For buttons you don't need any additional class. Just pop the .btn class on the a tag.

                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#!" class="brand-logo">Logo</a>
                -      <ul class="right hide-on-med-and-down">
                -        <li><a class="waves-effect waves-light btn">Button</a></li>
                -        <li><a class="waves-effect waves-light btn">Button <i class="material-icons right">cloud</i></a></li>
                -        <li><a class="waves-effect waves-light btn-large">Large Button</a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -
                - -
                Halfway FAB in Extended Navbar
                -

                Add a halfway FAB to your extended navbar.

                - - -

                -
                
                -  <nav class="nav-extended">
                -    <div class="nav-wrapper">
                -      <a href="#!" class="brand-logo">Logo</a>
                -      <ul class="right hide-on-med-and-down">
                -        <li><a>A link</a></li>
                -        <li><a>A second link</a></li>
                -        <li><a>A third link</a></li>
                -      </ul>
                -    </div>
                -    <div class="nav-content">
                -      <span class="nav-title">Title</span>
                -      <a class="btn-floating btn-large halfway-fab waves-effect waves-light teal">
                -        <i class="material-icons">add</i>
                -      </a>
                -    </div>
                -  </nav>
                -
                -
                - -
                -

                Search Bar

                - - - -
                - -

                You can add a search form in the navbar.

                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <form>
                -        <div class="input-field">
                -          <input id="search" type="search" required>
                -          <label class="label-icon" for="search"><i class="material-icons">search</i></label>
                -          <i class="material-icons">close</i>
                -        </div>
                -      </form>
                -    </div>
                -  </nav>
                -
                - -
                - -
                -

                Mobile Collapse Button

                - - - -
                - -

                When your nav bar is resized, you will see that the links on the right turn into a hamburger icon menu. Take a look at the example below to get this functionality. Add the entire button-collapse line to your nav.

                -
                
                -  <nav>
                -    <div class="nav-wrapper">
                -      <a href="#!" class="brand-logo">Logo</a>
                -      <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
                -      <ul class="right hide-on-med-and-down">
                -        <li><a href="sass.html">Sass</a></li>
                -        <li><a href="badges.html">Components</a></li>
                -        <li><a href="collapsible.html">Javascript</a></li>
                -        <li><a href="mobile.html">Mobile</a></li>
                -      </ul>
                -      <ul class="side-nav" id="mobile-demo">
                -        <li><a href="sass.html">Sass</a></li>
                -        <li><a href="badges.html">Components</a></li>
                -        <li><a href="collapsible.html">Javascript</a></li>
                -        <li><a href="mobile.html">Mobile</a></li>
                -      </ul>
                -    </div>
                -  </nav>
                -          
                - -
                -

                Initialization

                -

                After including the button-collapse line into your navbar, all you have to do now is place this code in your page's $( document ).ready(function(){}) code. This example below assumes you have not modified the classes in the above example. In the case that you have, just change the jQuery selector in the line below to match it.

                -
                
                -    $(".button-collapse").sideNav();
                -        
                -
                - -
                - - - -
                -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/package.js b/node_modules/materialize-css/package.js deleted file mode 100644 index 289da05..0000000 --- a/node_modules/materialize-css/package.js +++ /dev/null @@ -1,99 +0,0 @@ -// package metadata file for Meteor.js - -Package.describe({ - name: 'materialize:materialize', // http://atmospherejs.com/materialize/materialize - summary: 'Materialize (official): A modern responsive front-end framework based on Material Design', - version: '0.98.0', - git: 'https://github.com/Dogfalo/materialize.git' -}); - - -Package.onUse(function (api) { - api.versionsFrom('METEOR@1.0'); - - api.use('fourseven:scss@3.10.0'); - api.use('jquery', 'client'); - api.imply('jquery', 'client'); - - var assets = [ - 'fonts/roboto/Roboto-Bold.ttf', - 'fonts/roboto/Roboto-Bold.woff', - 'fonts/roboto/Roboto-Bold.woff2', - 'fonts/roboto/Roboto-Light.ttf', - 'fonts/roboto/Roboto-Light.woff', - 'fonts/roboto/Roboto-Light.woff2', - 'fonts/roboto/Roboto-Medium.ttf', - 'fonts/roboto/Roboto-Medium.woff', - 'fonts/roboto/Roboto-Medium.woff2', - 'fonts/roboto/Roboto-Regular.ttf', - 'fonts/roboto/Roboto-Regular.woff', - 'fonts/roboto/Roboto-Regular.woff2', - 'fonts/roboto/Roboto-Thin.ttf', - 'fonts/roboto/Roboto-Thin.woff', - 'fonts/roboto/Roboto-Thin.woff2', - ]; - - addAssets(api, assets); - - api.addFiles([ - 'dist/js/materialize.js' - ], 'client'); - - var scssFiles = [ - 'sass/components/date_picker/_default.date.scss', - 'sass/components/date_picker/_default.scss', - 'sass/components/date_picker/_default.time.scss', - 'sass/components/forms/_checkboxes.scss', - 'sass/components/forms/_file-input.scss', - 'sass/components/forms/_forms.scss', - 'sass/components/forms/_input-fields.scss', - 'sass/components/forms/_radio-buttons.scss', - 'sass/components/forms/_range.scss', - 'sass/components/forms/_select.scss', - 'sass/components/forms/_switches.scss', - 'sass/components/_badges.scss', - 'sass/components/_buttons.scss', - 'sass/components/_cards.scss', - 'sass/components/_carousel.scss', - 'sass/components/_chips.scss', - 'sass/components/_collapsible.scss', - 'sass/components/_color.scss', - 'sass/components/_dropdown.scss', - 'sass/components/_global.scss', - 'sass/components/_grid.scss', - 'sass/components/_icons-material-design.scss', - 'sass/components/_materialbox.scss', - 'sass/components/_mixins.scss', - 'sass/components/_modal.scss', - 'sass/components/_navbar.scss', - 'sass/components/_normalize.scss', - 'sass/components/_prefixer.scss', - 'sass/components/_preloader.scss', - 'sass/components/_roboto.scss', - 'sass/components/_sideNav.scss', - 'sass/components/_slider.scss', - 'sass/components/_table_of_contents.scss', - 'sass/components/_tabs.scss', - 'sass/components/_toast.scss', - 'sass/components/_tooltip.scss', - 'sass/components/_transitions.scss', - 'sass/components/_typography.scss', - 'sass/components/_variables.scss', - 'sass/components/_waves.scss', - 'sass/materialize.scss' - ]; - - api.addFiles(scssFiles, 'client'); - - - api.export('Materialize', 'client'); -}); - - -function addAssets(api, assets){ - if(api.addAssets){ - api.addAssets(assets, 'client'); - } else { - api.addFiles(assets, 'client', {isAsset: true}); - } -} diff --git a/node_modules/materialize-css/package.json b/node_modules/materialize-css/package.json deleted file mode 100644 index 7e866af..0000000 --- a/node_modules/materialize-css/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "_args": [ - [ - { - "raw": "materialize-css@^0.98.0", - "scope": null, - "escapedName": "materialize-css", - "name": "materialize-css", - "rawSpec": "^0.98.0", - "spec": ">=0.98.0 <0.99.0", - "type": "range" - }, - "/Users/odella/dev/react-materialize/docs" - ] - ], - "_from": "materialize-css@>=0.98.0 <0.99.0", - "_id": "materialize-css@0.98.0", - "_inCache": true, - "_location": "/materialize-css", - "_nodeVersion": "7.2.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/materialize-css-0.98.0.tgz_1485461368337_0.723597272997722" - }, - "_npmUser": { - "name": "materialize", - "email": "materializeframework@gmail.com" - }, - "_npmVersion": "3.10.10", - "_phantomChildren": {}, - "_requested": { - "raw": "materialize-css@^0.98.0", - "scope": null, - "escapedName": "materialize-css", - "name": "materialize-css", - "rawSpec": "^0.98.0", - "spec": ">=0.98.0 <0.99.0", - "type": "range" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/materialize-css/-/materialize-css-0.98.0.tgz", - "_shasum": "aa612c031c0b22d6e7faa8fcdd405e54ad44d278", - "_shrinkwrap": null, - "_spec": "materialize-css@^0.98.0", - "_where": "/Users/odella/dev/react-materialize/docs", - "author": { - "name": "Alvin Wang, Alan Chang" - }, - "bugs": { - "url": "https://github.com/Dogfalo/materialize/issues" - }, - "dependencies": { - "hammerjs": "^2.0.4", - "jquery": "^2.1.4", - "node-archiver": "^0.3.0" - }, - "description": "Builds Materialize distribution packages", - "devDependencies": { - "autoprefixer": "^6.1.0", - "grunt": "^0.4.5", - "grunt-banner": "^0.6.0", - "grunt-browser-sync": "^2.2.0", - "grunt-concurrent": "^2.0.0", - "grunt-contrib-clean": "^0.7.0", - "grunt-contrib-compress": "^0.14.0", - "grunt-contrib-concat": "^0.5.0", - "grunt-contrib-copy": "^0.8.0", - "grunt-contrib-cssmin": "^0.14.0", - "grunt-contrib-jade": "^0.15.0", - "grunt-contrib-jasmine": "^0.9.2", - "grunt-contrib-uglify": "^0.11.0", - "grunt-contrib-watch": "^0.6.0", - "grunt-notify": "^0.4.1", - "grunt-postcss": "^0.7.1", - "grunt-remove-logging": "^0.2.0", - "grunt-rename": "^0.1.4", - "grunt-sass": "^1.1.0", - "grunt-text-replace": "^0.4.0", - "jasmine": "^2.3.2", - "jasmine-jquery": "^2.1.1", - "jquery": "^2.1.4", - "node-sass": "^3.4.2", - "phantomjs": "^1.9.18" - }, - "directories": {}, - "dist": { - "shasum": "aa612c031c0b22d6e7faa8fcdd405e54ad44d278", - "tarball": "https://registry.npmjs.org/materialize-css/-/materialize-css-0.98.0.tgz" - }, - "engine": "node >= 0.10", - "gitHead": "4d12e0660265ca556064cba6cb1a67bb81eaa53b", - "homepage": "https://github.com/Dogfalo/materialize#readme", - "license": "MIT", - "main": "bin/materialize.js", - "maintainers": [ - { - "name": "materialize", - "email": "materializeframework@gmail.com" - } - ], - "name": "materialize-css", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/Dogfalo/materialize.git" - }, - "scripts": { - "test": "grunt travis --verbose" - }, - "url": "http://materializecss.com/", - "version": "0.98.0" -} diff --git a/node_modules/materialize-css/pagination.html b/node_modules/materialize-css/pagination.html deleted file mode 100644 index ad0805b..0000000 --- a/node_modules/materialize-css/pagination.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - Pagination - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - - -
                - -
                -
                -

                Add pagination links to help split up your long content into shorter, easier to understand blocks.

                -

                Basic

                - -

                -
                
                -  <ul class="pagination">
                -    <li class="disabled"><a href="#!"><i class="material-icons">chevron_left</i></a></li>
                -    <li class="active"><a href="#!">1</a></li>
                -    <li class="waves-effect"><a href="#!">2</a></li>
                -    <li class="waves-effect"><a href="#!">3</a></li>
                -    <li class="waves-effect"><a href="#!">4</a></li>
                -    <li class="waves-effect"><a href="#!">5</a></li>
                -    <li class="waves-effect"><a href="#!"><i class="material-icons">chevron_right</i></a></li>
                -  </ul>
                -            
                -
                -
                -
                -
                - - - -
                - -
                -
                -
                - - -
                -
                - -
                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/parallax-demo.html b/node_modules/materialize-css/parallax-demo.html deleted file mode 100644 index e25df1c..0000000 --- a/node_modules/materialize-css/parallax-demo.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - Parallax - Materialize - - - - - - - - - - - - - -
                - -
                - -
                - -
                -
                -
                -
                -
                -

                Parallax

                -

                Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

                -
                -
                -

                Parallax Demo HTML

                -
                
                -  <div class="parallax-container">
                -    <div class="parallax"><img src="images/parallax1.jpg"></div>
                -  </div>
                -  <div class="section white">
                -    <div class="row container">
                -      <h2 class="header">Parallax</h2>
                -      <p class="grey-text text-darken-3 lighten-3">Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.</p>
                -    </div>
                -  </div>
                -  <div class="parallax-container">
                -    <div class="parallax"><img src="images/parallax2.jpg"></div>
                -  </div>
                -      
                -
                -
                -
                -
                -
                - -
                - close - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/parallax.html b/node_modules/materialize-css/parallax.html deleted file mode 100644 index 1797bcf..0000000 --- a/node_modules/materialize-css/parallax.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - - - Parallax - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - - -
                -

                Introduction

                -

                Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling. Check out the demo to get a better idea of it.

                - Open Demo -
                - - - -
                -

                Parallax HTML Structure

                -
                
                -    <div class="parallax-container">
                -      <div class="parallax"><img src="images/parallax1.jpg"></div>
                -    </div>
                -        
                -
                - - - -
                -

                Initialization

                -
                
                -    $(document).ready(function(){
                -      $('.parallax').parallax();
                -    });
                -        
                -
                - - - -
                -

                Parallax Customization

                -

                The parallax container height is what defines how much of the image can be seen. This is set to a default of 500px. You can add your own style to override this.

                -
                
                -    .parallax-container {
                -      height: "your height here";
                -    }
                -        
                -
                - -
                - - - -
                - -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/preloader.html b/node_modules/materialize-css/preloader.html deleted file mode 100644 index 01528c2..0000000 --- a/node_modules/materialize-css/preloader.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - - - Preloader - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                -

                If you have content that will take a long time to load, you should give the user feedback. For this reason we provide a number activity + progress indicators.

                -
                -

                Linear

                -

                There are a couple different types of linear progress bars.

                -

                Determinate

                -
                -
                -
                -
                -
                -
                -
                -
                
                -  <div class="progress">
                -      <div class="determinate" style="width: 70%"></div>
                -  </div>
                -        
                - -

                Indeterminate

                -
                -
                -
                -
                -
                -
                -
                -
                
                -  <div class="progress">
                -      <div class="indeterminate"></div>
                -  </div>
                -        
                - -
                - - -
                -

                Circular

                -

                There are 4 colors and 3 sizes of circular spinners. The spinner should be nested in a preloader-wrapper div. The default size is medium, but you can add the classes big or small to adjust the size accordingly. You can add the classes spinner-red-only, spinner-blue-only, spinner-yellow-only and spinner-green-only. You can also leave this class as just spinner-layer and it will be set to the $spinner-default-color variable in our variables.scss file.

                -

                Colors

                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                
                -  <div class="preloader-wrapper big active">
                -    <div class="spinner-layer spinner-blue-only">
                -      <div class="circle-clipper left">
                -        <div class="circle"></div>
                -      </div><div class="gap-patch">
                -        <div class="circle"></div>
                -      </div><div class="circle-clipper right">
                -        <div class="circle"></div>
                -      </div>
                -    </div>
                -  </div>
                -
                -  <div class="preloader-wrapper active">
                -    <div class="spinner-layer spinner-red-only">
                -      <div class="circle-clipper left">
                -        <div class="circle"></div>
                -      </div><div class="gap-patch">
                -        <div class="circle"></div>
                -      </div><div class="circle-clipper right">
                -        <div class="circle"></div>
                -      </div>
                -    </div>
                -  </div>
                -
                -  <div class="preloader-wrapper small active">
                -    <div class="spinner-layer spinner-green-only">
                -      <div class="circle-clipper left">
                -        <div class="circle"></div>
                -      </div><div class="gap-patch">
                -        <div class="circle"></div>
                -      </div><div class="circle-clipper right">
                -        <div class="circle"></div>
                -      </div>
                -    </div>
                -  </div>
                -        
                -
                - -
                -

                Circular Flashing Colors

                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - -
                -
                -
                
                -    <div class="preloader-wrapper big active">
                -      <div class="spinner-layer spinner-blue">
                -        <div class="circle-clipper left">
                -          <div class="circle"></div>
                -        </div><div class="gap-patch">
                -          <div class="circle"></div>
                -        </div><div class="circle-clipper right">
                -          <div class="circle"></div>
                -        </div>
                -      </div>
                -
                -      <div class="spinner-layer spinner-red">
                -        <div class="circle-clipper left">
                -          <div class="circle"></div>
                -        </div><div class="gap-patch">
                -          <div class="circle"></div>
                -        </div><div class="circle-clipper right">
                -          <div class="circle"></div>
                -        </div>
                -      </div>
                -
                -      <div class="spinner-layer spinner-yellow">
                -        <div class="circle-clipper left">
                -          <div class="circle"></div>
                -        </div><div class="gap-patch">
                -          <div class="circle"></div>
                -        </div><div class="circle-clipper right">
                -          <div class="circle"></div>
                -        </div>
                -      </div>
                -
                -      <div class="spinner-layer spinner-green">
                -        <div class="circle-clipper left">
                -          <div class="circle"></div>
                -        </div><div class="gap-patch">
                -          <div class="circle"></div>
                -        </div><div class="circle-clipper right">
                -          <div class="circle"></div>
                -        </div>
                -      </div>
                -    </div>
                -        
                -
                - - -
                - - -
                -
                -
                - - -
                - -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/pushpin-demo.html b/node_modules/materialize-css/pushpin-demo.html deleted file mode 100644 index 794c560..0000000 --- a/node_modules/materialize-css/pushpin-demo.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - Pushpin Demo - Materialize - - - - - - - - - - - - - - -
                - -
                - -
                - -
                - -
                - -
                - -
                - close - - -
                -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/pushpin.html b/node_modules/materialize-css/pushpin.html deleted file mode 100644 index f84a670..0000000 --- a/node_modules/materialize-css/pushpin.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - Pushpin - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                Introduction

                -

                Pushpin is our fixed positioning plugin. Use this to pin elements to your page during specific scroll ranges. You can check out our live example: the fixed table of contents on the right.

                - - Open Demo - -

                -
                Demo Code
                -
                
                -  $('.pushpin-demo-nav').each(function() {
                -    var $this = $(this);
                -    var $target = $('#' + $(this).attr('data-target'));
                -    $this.pushpin({
                -      top: $target.offset().top,
                -      bottom: $target.offset().top + $target.outerHeight() - $this.height()
                -    });
                -  });
                -        
                -
                
                -  // Only necessary for window height sized blocks.
                -  html, body, .block {
                -    height: 100%;
                -  }
                -        
                - -
                - -
                -

                jQuery Plugin Initialization

                -

                Here is a sample initialization of pushpin. Take a look at what the options are and customize them to your needs.

                -
                
                -  $(document).ready(function(){
                -    $('.target').pushpin({
                -      top: 0,
                -      bottom: 1000,
                -      offset: 0
                -    });
                -  });
                -        
                -
                - -
                -

                CSS Classes

                -

                A pushpinned element has 3 states. One above and below the scrolling threshold, and the pinned state where the element becomes fixed. Because pushpin changes positioning, chances are your element will look different when the states change. Use these css classes to correctly style your 3 states.

                -
                
                -  // Class for when element is above threshold
                -  .pin-top {
                -    position: relative;
                -  }
                -
                -  // Class for when element is below threshold
                -  .pin-bottom {
                -    position: relative;
                -  }
                -
                -  // Class for when element is pinned
                -  .pinned {
                -    position: fixed !important;
                -  }
                -        
                -
                - - -
                -

                jQuery Plugin Options

                - - - - - - - - - - - - - - - - - - - - - - -
                Option NameDescription
                topThe distance in pixels from the top of the page where the element becomes fixed. (Default: 0)
                bottomThe distance in pixels from the top of the page where the elements stops being fixed. (Default: Infinity)
                offsetThe offset from the top the element will be fixed at. (Default: 0)
                - -
                -

                Removal

                -

                To remove the pushpin from an element, pass in 'remove' as the option to the pushpin function

                -
                
                -  //Removes pushpin and pushpin classes
                -  $('.tabs-wrapper .row').pushpin('remove');
                -        
                - -
                -
                - - - -
                -
                -
                - - -
                - -
                -
                - -
                -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/res/MaterializeLogo-3.ai b/node_modules/materialize-css/res/MaterializeLogo-3.ai deleted file mode 100644 index 755b2e2..0000000 --- a/node_modules/materialize-css/res/MaterializeLogo-3.ai +++ /dev/null @@ -1,4854 +0,0 @@ -%PDF-1.5 % -1 0 obj <>/OCGs[5 0 R 41 0 R 76 0 R 111 0 R 146 0 R 181 0 R 182 0 R 220 0 R 221 0 R 259 0 R 260 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - MaterializeLogo-3 - - - - - 2014-10-29T19:17:33-04:00 - 2014-10-29T19:17:33-04:00 - 2014-10-29T18:50:04-04:00 - Adobe Illustrator CS6 (Macintosh) - - - - 256 - 44 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgALAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FUt1nzFo+jLEdRn 9H1+XpAI7luFOX2QafaHXIymI83J0+kyZr4BdJFN+aPliOvAXEv+pGB/xNlyrx4udHsXOf5o+KBm /NzTR/c2Ez+HNlT9XPAdQO5uj2FPrIIGb83bk/3Omon+vKX/AFKmROoPc3x7Bj1n9iBm/NXzG9RH DbRDsQjk/wDDOR+GROeTfHsTCOZkfx7kDN+Yvm6SoF4IweyRRj8SpOR8aXe3x7J04/hv4lBt5p82 XTELqF0zHtEzL1P+RTI+JLvbhotPH+GPx/a0LHzde7+jf3Ff2iszDx6nGpFfE08OsB8npn5dadfa foDQXsLQTGd3COKHiVWh/DMrCCBu812tmjky3E2KZRlzrHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXAggEdDirsVYx518o3PmFrL0Z0gW29XmXBJPqcKUA/wBTKsuMyp2fZ2vj p+KxfFX2WkUP5QpsZtTJ8VSGn4lz+rK/y/m50u3u6H2/sR0P5T6Ev99dXMh/ySij/iLH8cI04aJd uZegj9v60bD+WvlOP7dvJN/ryuP+IFckMEWmXbGoPUD4I+HyV5Vi+zpsR/16v/xInJeFHuaJdo5z /GVT0PKln/uuwtqe0Mf9MfQO5jxZ59Zn5rZPNnla3Xj+krYKOgjcOPH9iuPiRHVI0OeX8Evx70FN +YvlKLpeGUjskUn6yoGA5ot0eydQf4a+ITXQ9csdas2u7Pn6KuY/jHE1UA9KnxycJiQsOLqdNLDL hlzTDJOO7FXYqktt5y8tXV6LK3vRJcFuAURyUrWn2ivHr3rkBkiTTmz7OzxjxGO3vH611/5u8u2F 8bG6u+F2vENEI5HILAEborDocTkiDSMWgzZI8cY+n3hNo5EkjWRDyRwGVh3BFQcm4hBBorsUOxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrYv7pP9UfqxVdirFvPHm288vCy+rQxzG69TkZOW3p8OnE jrzynLkMap2nZugjqOLiJHDX22wub80vM8n2Bbw/6kZP/E2bKDnk7mPYuAfzj8UDN+YHm6WoN+UH gkca/iFrgOWXe3x7K04/h+0ob9Oebb3Zby9lDfsxvJQ7+C7ZHjkerZ+W08P4Yj5O/QXmy83ayvZQ f2pEkofpfHgkei/mdPD+KI+SJh/L/wA3S0IsCg8XkjX8C1ckMUu5rl2rpx/F9hR0P5W+ZpPtm3h/ 15Cf+IK2EYJNEu2sA5cR+CPh/KPUD/fahCnjwRn/AF8MkNOe9ol29DpEs38reXhoOmGxE/1isjSm Tjw+0AKUq38vjmRjhwinS63V+PPiqtk3ybhuxVJ9e1+xstPvgJwt3FDIY4zUNz4Er28chOQALmaX SznOO3pJDyjy3E6epdAEUYLG/uvxH7qjMTG9ZqyD6W/Wk1PzNd3pU8TJJMR14ry4r93IDEbytAiM WGMfIB6ToXmbSIdPtLO5u0S8pwWHcufiIQAAHqKZkxyACi83qtFkM5SjH097JctdY7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq1GCEUHqABireKpfq3l/SNXMJ1G3Fwbfl6VWdQOdOWyla/ZHXIygJ c3IwarJivgNWh4/Kfla3Xl+jbYKOpkRXHh+3XI+HEdGw67PL+OS/6x5Vsj/e2NsR/lQx9/ow3Edz Hgzz6TPzUZvO3lWL7WpRH/U5P/xEHB4se9nHs7Of4CgZvzL8px14TyTU/kicV/4MLkTni3x7H1B6 AfFAzfmzoa/3NrcyH/KCIP8AiTfqyJ1Ab49hZepj9v6kDN+by7iHSyfBnmp+AT+OA6jybo9g98/s /agZfza1k/3NnbJ/r+o/6mXI/mC3x7Cx9ZS+xmfkjXL3WtGa8vOAlEzRj0xxHFVUjYk+OXYpmQsu n7S00cOThjypP6fETU7gCnbbLXXt4qw7z55e1XUQr6bB60joI5ByRKUatfjK9QaZTlgTydz2Xq8e PaZr5oKx8napa+U44BADqfrvM8HJOjDgF5V49EU9cjHGRHzbsnaGOWoJv0VV7qPlPyTq1raao2oQ CG4niWO2XmjVIbmalSwHxKuDHiIu2eu7SxylDgNgHfn7v1teW/KGvQ+bY9RvrURWkPNlYvG1TwKL QIzHqa4wxnisrrO0MUtOYQNyPke96LmS867FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwX 8zxrDfo2PThcNy9f1Ut+Zr/d8eQT6aVzHz3tTvOxvDHGZ8PTnXmwdfK3my6YFtPumJ7yqy9f9emY /hy7ndnW6eP8Ufh+xFw/lz5ukoTZiMHu8sf6gxOS8GXc1S7W04/iv4FHQ/lT5ifeSa2iHgXcn8Ep +OSGCTRLtzCOQkfx70dD+UVyf77UkT/UiL/rZMkNOe9ol29HpD7UdD+Uemj++v5n8eCqn6+eSGnH e0S7dn0iEfD+V3liP7f1ib/XkA/4gq5LwItEu2s57h8EdD5B8pRUpp6sR3d5Gr97EYfBj3NMu1NQ f4vuTix0+xsIPQs4Et4a8uCCgqdq/hlgiBycPJllM3I2URha3Yq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FX/2Q== - - - - - - uuid:e26a190d-604e-0a43-ad3a-5e51b65c7869 - xmp.did:0480117407206811822AD2084CAF8F40 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - xmp.iid:0380117407206811822AD2084CAF8F40 - xmp.did:0380117407206811822AD2084CAF8F40 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - - - - saved - xmp.iid:0180117407206811822AD2084CAF8F40 - 2014-10-29T18:19:07-04:00 - Adobe Illustrator CS6 (Macintosh) - / - - - saved - xmp.iid:0480117407206811822AD2084CAF8F40 - 2014-10-29T18:50:03-04:00 - Adobe Illustrator CS6 (Macintosh) - / - - - - - - Document - Print - - - False - False - 1 - - 612.000000 - 792.000000 - Points - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 0.000000 - - - Black - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - CMYK Red - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - CMYK Yellow - CMYK - PROCESS - 0.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Green - CMYK - PROCESS - 100.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Cyan - CMYK - PROCESS - 100.000000 - 0.000000 - 0.000000 - 0.000000 - - - CMYK Blue - CMYK - PROCESS - 100.000000 - 100.000000 - 0.000000 - 0.000000 - - - CMYK Magenta - CMYK - PROCESS - 0.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=15 M=100 Y=90 K=10 - CMYK - PROCESS - 14.999998 - 100.000000 - 90.000000 - 10.000002 - - - C=0 M=90 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 90.000000 - 85.000000 - 0.000000 - - - C=0 M=80 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 80.000000 - 95.000000 - 0.000000 - - - C=0 M=50 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 50.000000 - 100.000000 - 0.000000 - - - C=0 M=35 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 35.000004 - 85.000000 - 0.000000 - - - C=5 M=0 Y=90 K=0 - CMYK - PROCESS - 5.000001 - 0.000000 - 90.000000 - 0.000000 - - - C=20 M=0 Y=100 K=0 - CMYK - PROCESS - 19.999998 - 0.000000 - 100.000000 - 0.000000 - - - C=50 M=0 Y=100 K=0 - CMYK - PROCESS - 50.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=75 M=0 Y=100 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=85 M=10 Y=100 K=10 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 10.000002 - - - C=90 M=30 Y=95 K=30 - CMYK - PROCESS - 90.000000 - 30.000002 - 95.000000 - 30.000002 - - - C=75 M=0 Y=75 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 75.000000 - 0.000000 - - - C=80 M=10 Y=45 K=0 - CMYK - PROCESS - 80.000000 - 10.000002 - 45.000000 - 0.000000 - - - C=70 M=15 Y=0 K=0 - CMYK - PROCESS - 70.000000 - 14.999998 - 0.000000 - 0.000000 - - - C=85 M=50 Y=0 K=0 - CMYK - PROCESS - 85.000000 - 50.000000 - 0.000000 - 0.000000 - - - C=100 M=95 Y=5 K=0 - CMYK - PROCESS - 100.000000 - 95.000000 - 5.000001 - 0.000000 - - - C=100 M=100 Y=25 K=25 - CMYK - PROCESS - 100.000000 - 100.000000 - 25.000000 - 25.000000 - - - C=75 M=100 Y=0 K=0 - CMYK - PROCESS - 75.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=50 M=100 Y=0 K=0 - CMYK - PROCESS - 50.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=35 M=100 Y=35 K=10 - CMYK - PROCESS - 35.000004 - 100.000000 - 35.000004 - 10.000002 - - - C=10 M=100 Y=50 K=0 - CMYK - PROCESS - 10.000002 - 100.000000 - 50.000000 - 0.000000 - - - C=0 M=95 Y=20 K=0 - CMYK - PROCESS - 0.000000 - 95.000000 - 19.999998 - 0.000000 - - - C=25 M=25 Y=40 K=0 - CMYK - PROCESS - 25.000000 - 25.000000 - 39.999996 - 0.000000 - - - C=40 M=45 Y=50 K=5 - CMYK - PROCESS - 39.999996 - 45.000000 - 50.000000 - 5.000001 - - - C=50 M=50 Y=60 K=25 - CMYK - PROCESS - 50.000000 - 50.000000 - 60.000004 - 25.000000 - - - C=55 M=60 Y=65 K=40 - CMYK - PROCESS - 55.000000 - 60.000004 - 65.000000 - 39.999996 - - - C=25 M=40 Y=65 K=0 - CMYK - PROCESS - 25.000000 - 39.999996 - 65.000000 - 0.000000 - - - C=30 M=50 Y=75 K=10 - CMYK - PROCESS - 30.000002 - 50.000000 - 75.000000 - 10.000002 - - - C=35 M=60 Y=80 K=25 - CMYK - PROCESS - 35.000004 - 60.000004 - 80.000000 - 25.000000 - - - C=40 M=65 Y=90 K=35 - CMYK - PROCESS - 39.999996 - 65.000000 - 90.000000 - 35.000004 - - - C=40 M=70 Y=100 K=50 - CMYK - PROCESS - 39.999996 - 70.000000 - 100.000000 - 50.000000 - - - C=50 M=70 Y=80 K=70 - CMYK - PROCESS - 50.000000 - 70.000000 - 80.000000 - 70.000000 - - - - - - Grays - 1 - - - - C=0 M=0 Y=0 K=100 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - C=0 M=0 Y=0 K=90 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 89.999405 - - - C=0 M=0 Y=0 K=80 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 79.998795 - - - C=0 M=0 Y=0 K=70 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 69.999702 - - - C=0 M=0 Y=0 K=60 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 59.999104 - - - C=0 M=0 Y=0 K=50 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 50.000000 - - - C=0 M=0 Y=0 K=40 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 39.999401 - - - C=0 M=0 Y=0 K=30 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 29.998802 - - - C=0 M=0 Y=0 K=20 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 19.999701 - - - C=0 M=0 Y=0 K=10 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 9.999103 - - - C=0 M=0 Y=0 K=5 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 4.998803 - - - - - - Brights - 1 - - - - C=0 M=100 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - C=0 M=75 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 75.000000 - 100.000000 - 0.000000 - - - C=0 M=10 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 10.000002 - 95.000000 - 0.000000 - - - C=85 M=10 Y=100 K=0 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 0.000000 - - - C=100 M=90 Y=0 K=0 - CMYK - PROCESS - 100.000000 - 90.000000 - 0.000000 - 0.000000 - - - C=60 M=90 Y=0 K=0 - CMYK - PROCESS - 60.000004 - 90.000000 - 0.003099 - 0.003099 - - - - - - - - - Adobe PDF library 10.01 - - - - - - - - - - - - - - - - - - - - - - - - - endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>/XObject<>>>/Thumb 269 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page>> endobj 262 0 obj <>stream -H,0DB[Z E0'n[/13D©P&NihZayS*P&x^>stream -8;Z\t3tB1O$q(W5GGaCE:moHHf3*S]8e\uQBT(\l;1rI(CD\Dd*<<<48N#25hhi$] -J+n;dZar?H!F>@rG!MD)[GU/>peJQ1T)BT8Bc?088;koPF:Il2k0*%X9O5hW?01o- -T6*YqQunsWj1:g?[4Xsk?%G?Q"Z>@hs/\:cKmZ'RF\pQqA]Q:L3BLdUI'qIQgL -1kSlD??\s\dbAnMi`][6\8f7HNUu6AFa'sW]#EVTq9iNi_R=*[/UAG. -X!d'njtcu;zzpgN"]!/1?)=T~> endstream endobj 270 0 obj [/Indexed/DeviceRGB 255 271 0 R] endobj 271 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 267 0 obj <>/ExtGState<>>>/Subtype/Form>>stream -/CS0 cs 0.034 0.696 0.42 0 scn -/GS0 gs -q 1 0 0 1 174.5 -111.75 cm -0 0 m --349 35 l --349 0 l -0 -35 l -h -f -Q -q 1 0 0 1 174.5 -37.25 cm -0 0 m --349 35 l --349 0 l -0 -35 l -h -f -Q -q 1 0 0 1 174.5 37.25 cm -0 0 m --349 35 l --349 0 l -0 -35 l -h -f -Q - endstream endobj 268 0 obj <>/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /Fm0 Do -Q - endstream endobj 272 0 obj <> endobj 273 0 obj <>/XObject<>>>/Subtype/Form>>stream -q --384.667 535.662 m --384.667 579.663 l --384.667 623.664 l -1041.334 623.664 l -1041.334 579.663 l -1041.334 535.662 l -h -W n -q -/GS0 gs -0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /Fm0 Do -Q -Q - endstream endobj 274 0 obj <> endobj 275 0 obj <>/XObject<>>>/Subtype/Form>>stream -q -/GS0 gs -0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /Fm0 Do -Q - endstream endobj 276 0 obj <> endobj 277 0 obj <>/ExtGState<>>>/Subtype/Form>>stream -/CS0 cs 0.029 0.703 0.416 0 scn -/GS0 gs -q 1 0 0 1 348.2002 576.5 cm -0 0 m -25.47 0 l -16.55 -3 13.77 -8.87 12.18 -25.73 c -11.05 -37.75 5.54 -40.84 y -1.41 -40.84 -2.65 -23.42 -6.16 -5.02 c --4.641 -2.1 -2.71 -0.45 0 0 c -f -Q -q 1 0 0 1 353.7402 535.6602 cm -0 0 m --25.471 0 l --20.94 0 -17.811 8.65 -15.99 19.59 c --14.76 26.96 -13.53 32.32 -11.7 35.82 c --8.19 17.42 -4.13 0 0 0 c -f -Q -0 0.449 0.169 0 scn -q 1 0 0 1 342.04 571.48 cm -0 0 m --1.83 -3.5 -3.06 -8.86 -4.29 -16.23 c --6.11 -27.17 -9.24 -35.82 -13.771 -35.82 c --18.69 -34.73 -22.46 -16.27 -27.66 11.79 c --27.82 12.66 -27.98 13.53 -28.15 14.4 c --24.29 34.73 -20.2 52.18 -16.08 52.18 c --14.74 52.18 l --9.83 51.1 -6.06 32.63 -0.86 4.58 c --0.58 3.05 -0.29 1.52 0 0 c -f -Q -0.029 0.703 0.416 0 scn -q 1 0 0 1 301.8198 623.6602 cm -0 0 m -24.14 0 l -20.02 0 15.93 -17.45 12.07 -37.78 c -8.48 -18.68 4.28 0 0 0 c -f -Q -q 1 0 0 1 313.8896 585.8799 cm -0 0 m --0.38 -2.05 -0.77 -4.13 -1.149 -6.22 c --6.939 -37.83 -10.399 -49.34 -14.37 -50.22 c --18.85 -50.22 -23.24 -29.8 -26.939 -9.82 c --27 -9.5 -27.06 -9.18 -27.12 -8.86 c --26.95 -7.98 -26.79 -7.1 -26.63 -6.21 c --20.84 25.39 -17.38 36.91 -13.41 37.78 c --12.07 37.78 l --7.79 37.78 -3.59 19.1 0 0 c -f -Q -q 1 0 0 1 299.52 535.6602 cm -0 0 m --25.48 0 l --21.12 0 -16.79 19.54 -12.75 41.36 c --12.69 41.04 -12.63 40.72 -12.57 40.4 c --8.87 20.42 -4.48 0 0 0 c -f -Q -0 0.449 0.169 0 scn -q 1 0 0 1 286.77 577.02 cm -0 0 m --4.04 -21.82 -8.37 -41.36 -12.73 -41.36 c --17.64 -40.27 -21.42 -21.81 -26.61 6.25 c --26.77 7.13 -26.94 8 -27.1 8.88 c --23.24 29.2 -19.15 46.64 -15.04 46.64 c --13.7 46.64 l --8.85 45.57 -5.1 27.51 0 0 c -f -Q -0.029 0.703 0.416 0 scn -q 1 0 0 1 247.6001 623.6602 cm -0 0 m -24.13 0 l -20.02 0 15.93 -17.44 12.07 -37.76 c -8.47 -18.67 4.27 0 0 0 c -f -Q -q 1 0 0 1 259.6699 585.8999 cm -0 0 m --0.39 -2.05 -0.78 -4.14 -1.16 -6.24 c --6.95 -37.85 -10.41 -49.36 -14.38 -50.24 c --18.86 -50.24 -17.12 -49.4 -19.94 -36.84 c --22.79 -24.15 -24.98 -16.61 -27.85 -12.74 c --27.44 -10.6 -27.03 -8.42 -26.63 -6.23 c --20.84 25.37 -17.38 36.89 -13.41 37.76 c --12.07 37.76 l --7.8 37.76 -3.6 19.09 0 0 c -f -Q -q 1 0 0 1 245.29 535.6602 cm -0 0 m --25.48 0 l --21.38 0 -17.3 17.29 -13.47 37.5 c --10.6 33.63 -8.41 26.09 -5.56 13.4 c --2.74 0.84 -4.48 0 0 0 c -f -Q -0 0.449 0.169 0 scn -q 1 0 0 1 231.8198 573.1602 cm -0 0 m --3.83 -20.21 -7.91 -37.5 -12.01 -37.5 c --12.49 -36.91 -15.32 -37.5 -17.92 -21.88 c --20.31 -7.48 -24.49 1.51 -31.32 3.34 c --5.84 3.34 l --3.5 3.24 -1.64 2.22 0 0 c -f -Q - endstream endobj 278 0 obj <> endobj 265 0 obj <> endobj 264 0 obj [/ICCBased 279 0 R] endobj 279 0 obj <>stream -HuTKtKKJI,t(݋4K%ҹH4J#Ғ(H -wqyy~3̙g<3Y9El -@ ]!O-@\+BVKK :OX~WCaiHKL0qY `5ck -X]x= 8 XĿ׽>.f#aPn D^{y8  dp H st:Y׬cxc IV?S!:_9[YbQP~+rA -ShHht^ '0߅™kYXY9Yqqpl'WzEE$%D>,^|t*K)%/`\ҫ:&D [7dplDa5|mb4,yy{e5 3⚅,t+whlA   m k -xYUH&%Ȥ -qO'Mz3KT@v[NUnn^\o]abTrtlmE]e~U+jאZ:zaqi5};CS[\_ۆwCaQ1;>L$Lz}4:%8M7l̎Χ/}XT^]X>\Ym[n!ycskkƶʷ;v{pIs0Xݯ3s󝋒&$WWW*)!$$%!e$cHNOAKIMEq ƕ;KLw@YX;ؚ8^+DspfKOTCPpJ%D=++O%$*8IZ\Z^UK_wL"dx]}>9=;s_G8/̹N!Gz[<=2|B}PQzlH0Wc(Een|Pds::5&89yFT"od䳔i/ZK^&gd:fgQl kJХeJ*+篍kj5U[ZUh0|em6]B@`PpH?QM1Msψ*iϛ.Z [JYZ)X-]R޸Ѻپw?@?5 ǖ'vNg -W3gLC#u!MMMEvAms˔FVNA̝GLwA̬,llؿsݛnͽ+!B²" 'R&k?3?4+:6oT\ұڿ6VʝoF?LT;:>::>:;eqvx^sawݥʕ'_EFO\DKLtAnFF)F|ԭ6\`@z?m+F;LwiAhy͖)Mgw~_ @ZH_XA,"F)%/*9aZ:Q,\B^_AU񡒀2 -*'[j o5[uR1uh`fm$1xJgBdrltlyyEe$feg-g#`dGbwj0TOC9; ܨݿxz6zx8IP=A!.aAxۑϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{T?~ò~i~L}~cbA~Dad~ty~W~O>~\/~|~`Cx}%H}1X}%z}K} {N}׋<_~7A~-ψ||Dz|+E|[s|z} ^}wO@}-~ċ {Gu{Dz{]Ĭ{f{Zx|[]|ϕM?}R<}Ǝz]YzHħz|z={LNw{\|=>|v|ېI8z/r z;bz'sMzd6zɬqv{D[{0> |;|yyaIy?yazYvzݮ[{^=c{ФI{R*y߄yfUy`VyyuKzZi{ <{z%zȎ~+~}͇}W0}3}HtЄ}Zk}=~zɇ}!~Єd*s}Y<9wpSwuuVrUW؈|;,뇔{RsѲ;:8q)PCV:4.8Ȅ2񡂡?Up Vu9S c bփR.ՁNn U388A/ͬδz6߆өn1T\e7݀tXT)$̯̕6;eCʷˆ imw3SƀV7M -\lGNػځNāa5tNzlߴS<H6*-N}o2ن N%է>w֣A}⇤\fXMݘ2, KԐ3g°[} -0e6M _1 ? 1ӣǾI^I|B̯dܪwLe1$: rW] 1S{z|diL g0\ U{[G{!{ ޔ`{&yE{xbie{Jr|/c5}~ -~:f#MKx+Ca|uI~.yW ώәߎ%¡唘[w!^T`^H*- 5GȨ瘎=Π4rv_ҍRGf,ދ̋|,ƕ{ Ҙtٕ^1Fő,;',#h%T,Qۥ{[s:9󅼓&^!Փa@!" y -.Jl6mHju,bU6+s hܸd-ʥ}wi-sun=0Ľi-_*)U_ˈb$na+;ϧT;ppA7C4.*Iߥa8Mm.ACi7\j|fiԫ)]ޭjʄU]3(í whJch-4x7h׿*P0H됎L랇ڡuÂ,{Bz}8vggҲd[!XTZZ.vlAg -{;Sm`vؿ`~?ga. -3Ì{L^WYe4]L7ok!wI~Ira^=C#Zh`Wu}p)"z7ff&3$FJ8Ҷ5m -uR_,^VS&aR~PfLL_Dw*`\-9]q  TI6)>u6 D`e͢/xqY%9ʜ;åOd\˾P&eRz;].R<oΡ]P{?: r̨\ʻb Ҥ3|m s؟W9oZt]RnÅ\cW#+nI&gyAjsN06HiD'@J+a5V~cRI̫vwtUc[3+?F|l(iU^+O?Rs1Hqil$Wþh=(RE -1BvџnF/ BsGMY9>ܖ3ȗqI ڣ5V_1ȣβiJiX0WVH[8g_/ -n3 ` 38A.|f|ј0I6bv%& ;Y㿜҄#dD.).p'3J12K[Duɥ$s8IƊ.z^48e!R6}vcMiozo0'=~i,3:?-?oS,9w#ROa; ?pB -֞IO ݟe#}ԯN$\l?], y,>&Рq]yh0AqK)ĝBFҍcH:-h-ǟcf)K9T127]qEjL<>h;|U -dpG -ƫ`&!8al`83>.qɂnA9 -; `HByg KB*k㰗2fF=#OM eT? -mTm_OBۊV<ɆF('n3uG~Ȯ#7Њ9[١`Ns.P..콤 'KnpF\? B>-`NWOOWBlfxW^b-_x&*/(j_=߆󑊢zF`LdE:SNʔ@S 03|TOKokto}bFz$4-,.m'j*J|)J6BP ^3ewܫpX.*,07xPڳ:2XOT21|"7=0ߴy}ĸB)H[Fs V+̯+Y(I(x&9JAI'tXmyG=X[8TK)2<TSRvxlȓGO|g/{>4/gRFȶ&A52 uЯ*B幃AuFǞѧuD)B,*?n` 'qQIzK֗4{B_g68#ʉ2.A$69!̒ub1&D3Qx" >ɏnνxVG&TۨÓ)sxd-5KxߣD&1±jdGjJ|J{Z ޲f6/vTp̄ub PmBU#gBg˷)-*E -ar>>Ƶrn[ɭF-IByѸP=ĶKUC wG D}"vN.p]]Q8uY{#qCv}sax_oyiNr( d8aw2CQ}V8UWO\g \yk@dcZt9$u -p-1z(=f) -vě92 w u煼ת#{P6+Dq3HIi%BCb!kc5&U ):X$܎[b2*@PkcӘdoTB_L1Uwi")=2#pI9,RO>T@>;bnDPuCfk^^\G~ oLRcHqܮ=-8^5Ońy*9:-\g8:T<?*C;[yX+I;lRL߭$DvYTQ6DyVmfy%/sIsmXP1Lռȭvow)QBb_LVwupeėO*|+](uHװ4WU.{ 4\m.QwR~MAiRz+%BKz?'{ k҉aa{H]sX}da~3_auQz VM\ĵv5I0LM)DŽp1:5,&4 %!$}ocޤA]R^xT◬M&/B:DwA24?cd&g]5b4a?iǐ Ĉ.OA 6vfvsd(5yTH/P=(a;zUs bWxDa)Eʼ $sgPJreY3w`cFo0|U[j5k.5J&eTor È´}I lpjC8c5J=g%Uo|L58E" -ِ[Ak]J͆VBM"{NrQihЦ@Y?6^߫ZWٯ]ذc؋hKSLj:>O ɲ.ݰQ{5mm<ٷ?^v"}ъw9O&vX7km[ ,70nΒ7|eP\I;-wgFN cIP#qWI ;NٶA)H~7i thl~~dzY Cx2>*c&mb{9f1X*L #> - V@g蒼]7n249=MK% ;,F\j 1klZi؊ΐ.|Q9а$_.!;̿lE,ɥDi}D3^a`Y5g{J=mɳy3CM'jM-iЦm n5? SJE+U~ ;q.tXd~~p*QeS%.Ћ"ưBsZ6-6[\d;^z4`;64藸ͱw;|+&AfLU3XTm)lF'l VɺgcGObbɜ9;v \CL, >B?KGCe"z -@EHILp<5'҉$>8#gL2m c1 c Fw)P+rkC qp/u8#!*g°Pa`vu@oH`"Ž:z_Q<,D>'ӅWP .`xW3|!6 -5 El[",0 e[Oz0~lUO+&xkPc|u$k.?{Qp""kr6isVa=~@W_ -.<7 -2#h?c~m'rE_xs6aG+K 14L^kUp^^_mS^dШ'>}5$:τ!E[bJx&n t(m;ZsF5uqX.ՂBqKP *l%{ٓ{'f';,TT,bhUq2Z3;}T9vwRR;GD - K*/@hUv$j!@ vyבm,W|-͢ ^ ~D_􆭍"ĉ#c禘*X/Ϝe>|XH;:)d9gƖ4aBQ4Ew,C -ۯBU#>SV$L-5gV ϯ*B#} npþtdU$Db&$^\^&Z"/˺+-}%Z:}9AYu rTlP0"~! ͚*@5K?߫Z-P=j>܈[O?)a5 -?WUsy5^(ge${Cm> "Gգ+$踿ϫ& Xw8?g,'ō="/xNM)'EFqrf CįQ9ZY$r!6m)4 V9kJ$# FьX٥Cp[ģ)CS;rFP#ImKGɺzj>>X9,ZL-jIbkȉ8˚?vtxPIO}_ay@:|Ve6ubd/e3<֭ztea'cLaM -lz&,f^_!?l2x2Xyń3D)\?ye ~4O+9$  -EVDTSؓ7X?MM!ԼuOtP Cbt;iްa@gW#@4c9.Do z2>M5i~u0 qswQ9ǸLt삟Mz)>kɝI;io"U)]$YL >$$T:gUo$UK,C`sCMAJMÄKC(g]ٮ9sUG0?L5QM%0Ol5&`Ƒ1,x'{k+mY}-Js#\d:i/NK\8HstQ#-ND).s*Zymnf\1l{(E=VGW9s:?wǟQZsC6A1ƃ6K@8OUY^`7j6@9?,yt4&}"T- -\Y&kVx녣391ٵqQ=beMq\`/nņ|2͌JkzDmͫIR4\~5NlօKɁZ]TC3l̅D3jSS)tWw$IX[wV -WTUw^PeUhWE^ؓ~Wchs sIg`wgs (5mr] B`7JfAaA3ƓG?{O[ ?xj/Z*7exXz Ά})C?`KcMՌ&)Y5J]q':]$؞]Yv x(ıH1eU>_0b?*񸨎b¤،D;Wxm]|N7U13*;.=>SÜj)CM>.eI1/QvН6Tkk+Ɯn\\FFV#Xde&~WE7"bju^I@j@bQ Wk8w_D ^z xZKA _`T}] -x}ЁM0S,rV+ KO&ƈ`;E{irf0F] w86f fm_8c3V<)r1p +hs|p!QP'Ղʛ2rӤej4Y r, r?4! Uq]f(*&umM+;1 --c8CjL=L1TDJ7>)BH*cHY}~xI,{7WjWާʇhg_YovMKiN> QRǧ}AQj^G syJG"?txt,L>֍p_>Po$^<%}KDS4 -*S<ܖyd;éIJ~JMn>ȸcI6uɖژ䩊i77_5W2' 9t^}/8%wd0k)ͦF9kih3ShPBULzs'0$Y/L3ol|f ɪ\AW#siS-O^I+36xas @M -A hm45V-' ѵ1S+ ~*%~k˝ʉl * -lك=3_2~OgPs -Ccd[aے{<ХjA {! ߲ۓ;O'9+wEHE&JV?fiӺ j05瀶bhWZxo=ƺ 0zhK5mov (YOut;e=R*yMVn,$v:QڳE.yVl;svn,Wi.[@34SD_!MF>J柣ND @$Y~-CMu (+lBpБ^#$~2è /@̣6 3nh -;۪.3Fq3\َvZnZ"/vNFNJ2V{#ΚVse_쑮Ta8C¢!Η>FL\M{5eH~7;F AB?VY=۩Q i9J.sӿc%FVbdեiL`a)kD=W \ne>NX7Ƒ†2IYf-to7/~Uas[`W*v3_`~:kjR("E -* -e)DDIss,f_n6":hmh+]AqñQqSa9{~8|~bh6GZĠםN\h+(E30~kTMGβ1:zka'LG2>,gt X&@?e% -=@Ihs)HUOeX^m7R7~,, \jJԌfͬ8!*]JR:WR]Mɚ PZ;JN.8ɦ,[r*Α]MM"waX)Lbjd`>:?|:?u>^G$fa. -ʥ_S%ED8 J=ĕK{6r zGG Ui<Kg"^ q -I6vPWy^,uc/5@:ǹ+[N+li{P#^yv,ñ-NѳH⺣<֡gxV</nb6󴳜Ρ +nhB˾PoT(W##ĉTwZU} w-vT-9O᭺HIz) z9R'dI5aZGS˟agW=.P1ٜ y?2X)r4VaGXBe`9Q1͚@85$W?D}z2* -pt +;Br\ܕ'> -vCNeʔL-ʌqKHr 7I d<BgNelB^փRγF2AqCR&t7߄{" D9u)Cw1t}?"'[7o̩~1{>Ru* ʖdClutqf2[l~{S4>J$.nQnlP#x])By`r+wLH?VD:|iUG~ժ+&+Rb gP>}WԹkQǖ]WSkqwZ -DQdVd24KGMvU35KJ~4&jwJ*y;X߉˔O@5hw)񘴕o-9E:_̂o&6#V(ѽS-te$ פp}4%4mrnzhe4KX*KÃ29ʩ~'Ǥl|O5ÍB -;^j㛑Q`exH;J\*`l˴Khk -&tF|(8VǡܷR:ϳoG*UjSKknRgl ޅ-6&Nŗ7O4rGmO[du_TvY{ ̏Iy\aRKy&P7ݪJ)l"W5{K S_j0WSW;wixF1^lО伴^'1b%OAXhq)L7j}=9PX=n`ɗKX#CùA *7{ jWܴTByufכd=Af]F=_u*`q+_i݋\^`BaE|S&%Z a8+QgQ[IK-jIKr2Tcju=A ʧQ"7{ٮם*X|,Yzѽ}ƈf:jCo[>]x^hlhNrϳEDkcCǪ ת9c Ht<)}z!hE~DBӳ2S͆i{;ouIp??砃46ٺ^"1R<-65sjpCSjqi6dzھİ紈 41.$5EG9:=ob쾄 v#[xﯦAF+T(C@RQF772I$^a$Eq>.AEbiO0]ТK5ΫPÛG ZdJ*$d ^}E*֤>?Ƅ$dO _tl%$^7[KSECqz"$]*B]}W zT[Rk"n]EUYvFUW\B6-RB^Me2B4/wͺh4Ek5˖<1U[tD>Q!.kR涧7uJc>c -l/i^3;iڐ0sĀZnS -qW7Np:([568ViAFޜ~h9Pldüj2dO -+61--1Ewv =JCHW34܏&x8,&#Rc3Dvz6RSyu_N/nmكvT֥Y˼?RFװKzn9Q4gC^5l`P\ܲG&ޫ` 9PҞٲXr6 -V4,{a؄\tcY`]lǿԾar鴯؏=b!&Yb ^[\aYt$w -[R)i[{$7f"o Xp -zBz'hO|Ō4ǐ|-j -:}̴a%Tv5Y9QK d0 ?$ćH|#uD3 phrd@,@XmVKY@ou([8#!OM~.7SoJn%OG" -Ü3N|/'O-R_1Vh&׺ NPz8de 勊ZTH;XQ6}+'h_|ȋCcuHjBA,NOS{3 L`]1> A rxӴ*E^.ؐ`Q5 v{`=W6뼟\9avGOXc& v1w~0W:ʎ~f: 0/˵%m KRKAcR% P#CSߥfmD5oEx17B0<&Yd8"1wܡ5 TaaJ3p57A>+yIMcu Zd?Bk1x-rsV9sH6p]DGgO| y5S$aE`$Ls -[Ym ~u8p`6*I ߕ`S88sn9O3nXOE /7f^lbN[PBFO.9Z_.5>F S̉R'}ΪѬ`_dX|{dHXԾ3QlZe7PRqشO5OkZrx5u`aǂ:*`T), -DPQʮdߓJRk=H+ -*#u)h) )B6s9߹瞏HZGzGT"93hDͺ sr|b4y $TK "$I~$v(B#].qi?CN ~ޱ|ܷLcOnT~vxj̦5<.f\K<2p:CpSy,66>|zC -E -T)f/:X1}J+>_~Q;^ㆪvs&۸>.k7yZS:˩㜍rݖۜaKa!l.g57Kv0!;ڗfe %]"XT J3aժlwVj=v姠αe=bI/gH& :g,(y 27>aba88fVVqɌT0NɉB`( _"fo! t}Wg_0}HX 9,Qx=~Jٹx>ӱe9M2mFS)Vk-eZFF٥btg0O?Dǐ%7eyښ6WSCyeUS}l`a8i g"1лJ"|PKڝc,$+&PvꖴGBoj_t4I vqf熚(eC!b׼^SbYi1¨;2W`/7uh?4 -!z@#(T 6 ^!R S#>E/Sq9z_ /G%ӈ0C9[ۼ@(٩P ,}XTOkpQȫUG6 x2e,> -?ϭQެYz/T5FL^`tީ3\#̬D:,vw[mDW)TBZ`0Ֆ`3tBQ˟kks41y `\޸cV#z`XHhwA0چFTyqӵܫ*F˪%*/>9 -gS'"b'zL=N)cs*bR)W<#S 癛)K -&L\9WtW!Y17i*%wJ_ 閥nWJ!p-0T`:K6B+SzlL,~J#ZLHBEe߈Eq1 -ڸTD}bB;*OTCnՍl$OYQ0mz7o9NŻ|hDV[Ve֩b7YZÖHl~I)ܻJ5oOݑ%(,hZGҼmRd!/NEWutV57z;jjs^^lDǾ0-a_aL؁w44簍b^ppi&nX uƻ-݂ -cY4_g ?jGIfH %J҂[%ϩC6OzvWzoZtA$?z;ؼFT2/+0@@S<@>0bSuqw;j4S'/4sEթ(P[V^5ƊHkg/ۄw 0*֭ ajyB5TC J(_F4!m, RN ?S9 :״OfOV"յڇ1,V)S@._ -#Q`K|ͨ%cj/&\: [Ft^Z"q٤Jm뙊jMarח`VCg -w"~>< 8i}XT8dzQVY<p%HG/Û`rq;Nm~Ms\/Zh:(MXа^F.꜋.Ys}5`a((X0T+JS 4&~|iB!! !)$)ʰ WFY]E븎3x,˽}|dc -|i-0Ws -Q_GpRjy0׿tjT̎ԍD1څڍ›N:ka? 7ek_%]a;זF=9-b= &Mm0-vD'^j+/5(er^+EL F1$1KWE|fOFMKm::1`ڥfXЩM*i9 -l?+Lw?-Nx͈wɳ\C0瑃f sM;iđ`$O0z*RٹB9@"k5v~.lB?ug]ed8JAj͹um.DO^^v:y;ske+,L¶vŝҼخd_5Z;q#k> MU\J{l*͟ґ3Doy"UDcu#H)BPit/ v`_Sʝ{e5mpPpy=-2[m+v6*.WۿSǔ] -^DMk,2.#ɲ\!{^I4Ԉ.~çlDcBU\b"c jvJG|H`_2rHѥ tHHBaG :Bf{'9 -[jaЧe -&hz6Fdy?>gۑx&l$^:^nx-'-]O 5@S Uڏy]Tu _,zWPT|BJ,ɕ}`8ߴy?p7gˢu\JO(_vOUue4+Qbi?A.jCxyRJ駥Pt㸲rTfdd$ֺFR>PaL'v2M*׵T]`W*cD*hAe#"ɆKO9JKL2J( KgK3jԉfZnL5oM(_>FOӹGi}<@w#Ndhoo4Y ̾Fٸ2YAz$W֜5Copli\ 32l;a<;S?B>zprjsm1tZc̥{s/J{c*#3ހfϡneh->Bc9SJ"չO8'8ހ `yHϤu-*` x[c')Oy\x!QS9q*;$;d'=NY ,|ܶ34qT=ka%hs䬺UX7Fl[ o1apuxf9QGk4;e -˸7荇5xB:yZdͫ,`2?_a[0~9iY Fs3g Ë9u<,yx87 1Ja,O@/gO㔛94 |.]16'^@1'p:XtwL,jVQv@wl{έ̱\?R^UV\GI+9D03oyd[R<""" -.2}"!<4tH~(-r25DH@l"K濣,/S}"+~wF}V dRz,:w&?C~FqJ}JݢJirjzEgU#p]ZF%+[PjewVjlW7wR/*C%%jGx @EFH)&0_Օ|Xu -DRNXA\0JSH307͛73 CWc+U#r# aQOL4Eљ?s~{sIy?y>ҒLָKd-ޣJ1v*fH 6hz+~BO:IQqZUՍP[UD#BM >$ z|?^!J0W8N WzXfщ@'h< -%sdR۔e[$z,Z2H5[&Ht L UO 췯+52j&P6uRɮ! -a+rk!o4 `ܗP)f%VQTF(Z]s,TR|O)O?ho# ]6yл)OU,F٠E})gsٴGyҘp/kw~˖I'Y;TdgYU'I8@F* 8 $I+A2((+y8OϋWȗE {բbW"@}@C׌teYgvֈHofE`eagbN_4!/e%O;mhtWv6[iyFy4ʔat V] au #QYm3rM/q{~tjD 7fiɷ  . =[n`4qShBrx_5wԐ %nQ~x'G[ `+qb]Q2Ըi=UGn~ڋJ(Aݪd E7Kz +M]!} jnh-Cզ_魺a٭Dfrj6$-4nUZF)Zpux'@]U/ٳۿ3Ug`iU}ڰULWu+SU[;uXJPvOŀ{$KF,qQruH.}imfZh~atMBb0*iWC䶧jZmn[nKfi c+.&oV.&ʭ{5_s9dmIA. *s5: 1Ů m!|fl'6#N -Z>\oMkCZ8)*bEE@(27{I" $!0a=+vUZŁ`-xEJUǺ -~~7TSsV6i1=2J眆Jh@ Uu;7!0 -߽\醮%-;=.e/T7D$v{.ʫ|ZѮmcDֲ+-Cu_{>1H1]"D^nR ٺ:E3[h9 7TJOW+3 vœLimc @6'[c`Ǧ8v!bR{1_ӵuoPE2\@;4"mO m{ ߺE1dA}C=WB}[3']\PJG5VmnYG Xyahd'J[U~ vWۅWo]WnGnR9H7ѨAu 1vZm]lUrTVA -sj6lhm,My4A*0vJR? Ĵ>2C!*#q0MJ!:ŏCR|dFa?2݂ch3dBzSIt?%LmF[AxYGҏ0m;GY1űh%[sጒ@9 q_8G>r Wn)jodEzC.qJviN&If8bg - v|sd%:uTf&L0~p.(RU -; _)w%$/ t# -~#u`u[w.qsY_-*'̳ɩk/)2* i9$7fUzflc9}],툏WYCIkS-ty7>T! 26Kݲ m&cӣh' ..+upC6&@j5tdP0=I˂Ė -C{޶$tR:(ϭuOR4$=jluq1?פ9Si|cqF!_z^SK}`d%DT wV>;<'V=(5H%jWMV#9YD2֓p~~J }D]gNSsjJmn->,vg&SLl#>^i8ʞ%4'RJDhRN0hBA0(r0K+aMY|"EGE_R^v4/?m[˨yN`K/5[71[Gؒ' '铯RGhqꭁ]>iIX -5'\GB ćd^ux+[^%e ֪pxE - 6%!Itި@Ҿ#% :*h$r7שׁ55׈Ց'I+6*ЮwȰ%U#zD+Jt BaUؕ 6}uOr7dP Cu}FEua7RV"KST20 EN{^lkƕ$vW(,F7b ˢÞOy<"_).kh[n 9W?gڈ7yș*ӼuA@ OpIRrP($e[iVYR -n#(aFq&mq3%\g?%ӆM5XD3b$ʁW ƿ5&͔D4®KcᏊ . -1Zo -^`~¿`6z q aXǰ)Ӽ܄'84 n"Db.yC<K d},{*h -ڸh>wMv^ c8Iƻ(~j? -eoyl/Dl5Żרpy1ܣܵ^004{ .%CA22dWuQ>okL<5.ſȠiffh7S-|^TjX[wCY*sG^1Ve֗+˃L3 /2y{+.;CtJ } ->٫y6q< WxA_PZ? Q y1>yK\.!OqM -0Cl];Sk)=RZ@[ɷ5JBeǐ$Ni"0 -úR4H~9.☫|Dϸah-)r~"eoMK%4 _7"‘e -QD~0T.>"x*O>酧.Ey+HVy55RWsEk*PxEGB;(J X(8hiqmh^ 0`}_APWDLZ‹]<4zG֦`oyZR|u^gCF#nr)Va5ƪw9njyIt -xI1bIy>}-AگOShKFx6xqqQ -3SU\ka椚̩Di~ ?{>J3mtߐZt]YNju]ɒQYlZZsNѴѷW>Sݥ0Bj+7q҄fU7m :8^;#eտ+*,_CY3MSU*LX.jQȖg_IWJ5a"9R'C\y׳qH)VU-Z.\+Ѥ/aen/|F[?SPkr" -^Y>VH9 &yaIxQfd}+] -U.o.=q-y][viRgk*`/pLBu+A@[)&PYQ?im/K,Y*gu(i2`؀V"fJSs=RU@7+>dْsmY)w=U?ο3D qjv83׽} 1r@vy:{Eͩԡ.޸,珈~CH{ksv_l毁@"lOR."0Fl]]C˧Mfi nq˶Q{56ef e l[IuY_(i&;to 5kZ/ jjp~Ch⨿䦿iRs!G-֠5 -&wa7WAƫXUr8+}E)oVӃIÌ}qZlh<gw -A?=$6-ޡ|,)!<*ǘ*z!8߀ϸuPpD|Ŝe=sm4'ҢؽYaPOZ(vj?VGgxI=V-̹uMCJH_-C]B~2A\8*E8PTΔTo 9/whaߣby\'F,Ռo%wU/ժnM*T Ƌ{5NJԢT9L;y _fXD\uַA:x")V%V/*]1# )ԋ@X"SVӅ4u.f?Uչk%Nj;c~?]Pۺ˄WҌ=V듍1 -E ֻqd{q׉; -NYHdfttc #&vPtQjd1o ­R)ʽ@}<7 &8wyybH04͂@>o` ~M`Oi#T2"-!NSn\ z$SC%Q%;OzcT)!M.wf.Po1U=Bl1F#F0HD\u̞rڜ*ujQO5u8E$7:"І(UuANgulWYE*Z"cT\kTxlx)$8(YBIY`[}.Bb T$=U8Oŧ yP-x$]0_ -j(sOH|/=wKR` ptl>f*ӡuU<=Ts(&zpKA?sLo`N0Mq+~*m-~F7^5惬H]${|-Ҷ9Y&=X'Vu+^ϖEm -Y/0X cAdPc_X VRx6b|C6^FeC]o-F?f7Q3V>͝yFsy]ݯMF͊k^NնI#FZ.7ƆQfeϫCJn;AjB JFw -mԗ6t(I5beElXQ͌ i,)6QS 1zJezVBf ۹ʹ/ HQ89SnE%o-4NJ``,)~utyQN]vحp+e"xN6y*,7$'x\CQL[8.d@}CɏE)1D?@晹b$?7 - YM N| _Td'wa}0Z<9|3閗3~o=Y>l0Wb=P1jmE XR[louv:.C=;.a.BřS[nWJ3ǟN1='\Xr8۲:KXj6e g΀ap%z"K1.c1ɇzɭGTRiVBe-)K@iͬ!u@_`&2q up%P -SЧ|NWP !o-t_ nyV|ؤ賐e`HʏE=>\Tǀ|cҎkIST!%Gu,%[IR'+#T}m3\/df)`n2#\M(CQd6flqGv첵).Z&wITe{JQܕQE\m`p`Ҵ\z[v7OVo9ݜQ}$SSFMWdnyuя: *o[3 O FRJ0ոl+L+&oE+d- -@?^fEkoo\fyJ8zΰXmi  -Nw}OYpz&@>gݪHc. ]7Mz#fe"g\a@\qyºJc\3ܔ r'WQVE D|PLs\h_h#9Z-TdL>˼!WS/bniA3.1Fx@Ǡ3UNN^nPOZdtvWO&-8ךshveSȉ`wPU_cař=շ}m`<<$+UV66do88{ηzkG}ڻ<<7\jvg!5M!w&GmpfSgO3x? -wZsLRq/~lK]QV:om<Q' R]AMXyu ^ȩ $}! 9LHaH8hʡrTtD-*fY]]wuu[bgg޼ߛ"ȹ I7HR7HBHudt *Ჲ=eJtj| #TI/W?{ΝO^'`v'$^E=7ITF2˵7-^'Z"[x ;[U7,QyWrr9E6cy'I gIRm2ZQ -{0K,^H/>>G@l`T=FZnZH ѳ$m¯鵩KA3D;w7ŏw^J<`i$M_x8wU-,/h!pbP1|*k _U;N45jX_:]$ %ͫX+é Miwzz{7`fOE5FohX}fL}k%Jq_b_A54WK'h?:lTHmm. m&"X7rV7l̨b]r+ OpK[{0EuwrfӵFajCCPktMݻVw[FR(Y-VE8 P?)p>͛5 #TtF%3 qhk ;`LVOpZۓ. j&\Cʡ <*g!r)J;ȁ&xK0N\B&Գ$bԍ7fpt(0H23ӲG1d?ź -bVֆ|\[w+tjj?b7hwJCmm#b.^VBDRb8E]4J 7LGc.Xd/a&ڎ @顢zQuֈ4Tqi˽èb˕ 43~,ymoθ[0 -l} TCuLBt 2ZW>Eh@+[Řy0= -sU"r];û](̏{e E=ma^2'FKv~.Оm0Oj(esߺ Pk*!3IBЦs4{^|{6k\* }XYǠD=A %$hǹWǂORV UBꯪr+Ca6 Kԣe :Zڿu6&?W&k).]%],lb7MX][H"}WL)RIrfr?AƁY&I~_IB${XlZXE&|w#؆`_vߢfu3fm89?9 -̟NՎ`jz1*.@爎܋`oْJ_+-4α6@/DWEjE}HRDl;Y+ z/1Dѓ(z)oι&;.4aZ#gsbZ+XWi;<~n"( M'b6!G lP<^\nM8--aG+dyXP^s:0q \p3bWu.,R&rm#қs)lej(^ ,=/FV6fj;ex%Dk%!FW@ao2QTvs 5h0B{UHiGCOzL'pbIq+'_1Lv -QA%$[H~}{1fKٲ:HmWS -ëd}2w7 j< O7i2G;SWݒ!@YsZ~*PƐ6xQܡ/9i7cGHVf3R>K2jZxH"Z")vHD} @} YJ64T(P_(*C]miSJqOZgA(ny8}wν37;?߇*x"D6HaeZ -5K e -tE=H\ƒW8 72ym]Ly 1N<8͍@:> >6pӹ$.7$C$pA)hJewT*FmKg-lm*{{v\ܲsJa>3_*ݑہ>V5|WG_>RR_YL!RFjz S5fځO2< `}I\:XiZkRH*4[(xX$u|I9̺TkVzl_׼gC%*wXR nY)N.9+wZ[E9ľWJ%wp`Nj[.b|JOsdW,R~#* ĽyFdwCp*L(8OelL˞)A vfFʹ.Knd~A򥾺]Di(i]YʯJߟ?>w[侾7KK6w"!eDp5V* 3VEa{:KoEDcɾJ#oOU44lTjFk,>{S?ýSk>Su=|j}T -SU.nk.mcŮ)RxbT<TV*yÙ<+`RC;S^0-itp<ȗ2IZ_0ȡVVKHWol9=fd jb%}DCy{sI*{ZL1r`n}+D_*Uz3}i779_kjxL+u ;FxL.mmQ`sKzK#>&ޗxiBV^\s3_XX_رC+ҭj|S kϽ|j|[X -ΆBL.?\DCqߢ7nO(M&JOiݖw0IJLM,NCOYPoQRSTUVX Y#Z:[Q\f]x^_`abcdfgh#i3jBkRl^mgnqozpqrstuvwxyz{|}~ˀɁǂф{pdXL@3& ֜ȝ|jWE3 תū}kYG6$ڷȸ~kYG5"ŵƣǑ~lYD.оѧҐyaI1ڲۘ}bG,{W3qHvU3sIa)\ Z, -     !"#$%&'()*+,-./0123456789:;~<|=|>|?}@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdeefghijklmnopqrstuvwxyz{|z}o~dXMA5)ۈʉq`N=, -ٖɗmZH6%ؤʥwog`ZTOLIFEDEFHJNRW]cjr{ĄŊƐǖȝɥʭ˶̿*7DQ^kyކߔ ,8CNYcjnoldVD/h 2 -R e r xzzzyuph^RE7)4=@?:4 ,!#"#$$%&'()*+,-./|0p1d2Y3M4A566+7!89 ::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}v~oiaZQH>5+! ؎͏Ðxpjc^YURPOOPRUY_fnx̰߱ 8Ql»!Ceª9^ɂʦ2TtҔӲ6Lat݇ޘߧoX\[VL=*b/fMq T - p_L7! }tfUA, !"#$%z&d'N(9)%**+,-./01y2g3U4D526"7889:;<=>?@}AoBbCUDIE~% ہ‚rW; ϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{OX͙~ʹ~y~eL~j~Qc=9~|4~cl@~]̳~nf~C~لOiZ/gP8v}6q}0}>ϲ:}i^},~ ׉_LpK-~~,*~&E()D9vyowy=TS3wI!D)J%OBvwN64;>FVWm -S^Di*bPkpة?%"1#!ϼK`L<n-e2*+) X䥂C@v2l Q?(=0q MzǃIz7MEY; Y@K (-\U&>rI^2IMe;Ya"VN,S;o_%sD;fƎ.R?l ;0Dq>8zDKG)3o+&<4@n͗0EO94#ҐnW9 b_7}B2yːv/ąJH삻Ȧp$ȫވy;Æǘfo虔F¨LsI,KhW2!AjHE^τ _wdlXggΩr!jU)[%B\DCfp <_\?k,.wȲirJRݐ=>0+cvZ{HllLVAc۠ ^{6oCҏSمbȏ:sz 7jP@Q;[wg|z30Uq`!P-~|X3+z2lIђ:_p-FOJ*Yr(".O'qäfrCRJ'dc~h!€?`}WzBd;hѲGϲmT SAij9< -ߨ%@`8xLTqė=,Mk $hJdx_r̰gʱhtG,KytomVK0X?R=Џ ]ٛa`sʠ7g&Grŀ?>r&z`b>&z%sxbw&{~څ]"WR%c"zD zA rs!֝=jcf]rmANJl$ے#ؑ >wTfGFF699<׵.'SZ*˺#-Jl.ZZx%m*| o 2ӝ_TWK4eRsu33'jRFBWl| -Fgml0L1, y+Hu2f;[T0BE{:qntoT]okI, - LgV_R:Kϋ0dP?= vE̷փ(M4m\Tk׉o,H=Zw/EI-LQ[ 8F/g֖'$?[u~fghXjݚ- VImKՀ,%ibQ*e97WKMYiHtXTBUDw-49#iԗ/r]hGވ/ - -lD2 h‘%TTT*Fdw">GY?"[f r5ʊ4`TAo4H5rWS8Xy;$Yr'q vUPV&4m/5LJE:S7Hvy.. kPXAl` -,e: E$@BKr.!{A$A,CY[EA;| TJkU>41aƜdcT.Us R&BchR) - Pd;ʟHbl?1;_:i^mMh9Ӝ+,x+(‡j3=P6u>a}&b (0=.À<2&m%u9_~zL!S`(6͟>թVlW䨸m5ypg!2< PR%wC>ubvbF.0UK$K;؂P,!rA5%\v" -[2gwdxJ:_'Eښ_+^Cژ I! v,V72UJLNITUKɎIy/R+=+(֨v6!M @PB%R--3|4-)#ͯ w.ܘ<;b#;*>$eG ->3"و~AZ$xOUx f𜓜x;٥Q h X(Zx=`dš 8b†id, ϐ!enZ -b /޲І2P0~ +1baktT ?g)˧9 С`.ޓ`>'4\DRdPaxԗ?i|9,t Ĵq]"m-9OD'Ex>#Bz6Nk%tm6BDzVQGq,2O: y{iHcy[]vaZT5 ȨR 345N@qG!fYXr{3^M7HX1ey87ҙ;NP9tn/D=}*I:2s̋%G{7abTBm6ۺ4JZmI׶Fהz\FD*rEyք ̣V-8ˉi#7XmZLW:2 -$Iⷱd`U+z3 8"}Y\E^\Qܵ)<&uZ!FM)V"ڟ}&à/ ď 5 O546PW눤0 fGlEbdc 'ƪrӬ[{K("M/y%0=zFBx}{w6{Y50%,40R}ԓvTp>K@fR$7HU( /10f<,1BS>٨RI3#&&pa5j19#yTH9cI[էjU̟~? +7NzM`k|-kqJ}(Ҙ2SaӼGi ; b:`uǤayU}T 2Ftm̔%OpuDU0m~L-_:qWg0~huw-] NVrP =<]x;Y1iw@8,n\(zqb !$zB&5dn61Q& & CuЎy#c%$7]w'z\0Lk{8 ;fGS Fx¬P~Km%t3MccM(bCB$ _ J,@՜ %ӸZ;.6B)PT~~:_tHNITScΤ5_3bO6-[o 7$cn:zNqnE2~7\NT' "[fTT^2F&+c5r~ԕ(jl 48mWDC]X#<n_ T 45 C0 V~ m&AGA7w@w;Q8Q ?d9#1yʕq_eS]y|d*&6Q30J(WG>HN vAg+[o:y1ډGmUV'pJ{"M@3X|*oƙޞ%sfJ<ߔ[-0R'G i++qNPF\&XT~ykPx>–~u2LX'P MOW rة Z?qU\+w>-q}y/sRQQJ@737Ka[t̷E8X,Tp!PVK$`Κ׵bu~*LlBz-f{i8DbMp/ŲF_<`w[Uq. Y!'i7L' Rz$v]c-ީ%HY~ٕ 鞀ws{)Wa˹ԑ`{[z ϡZ& z -- U@uBP.8jz B{GtϤ1ޕq# ^o2N*`DZm錞c@QY@Oy`ŕ^ )H??s %J@f-H%{#}řPKn@u5w:=YX9(5#p 9#Av(~-"]Qb'䠡ya -'£ +vO@%7_*Z-r*~z Ց4!wBpG-q.a+c"wmqk=WfB +k^0>npu5㞃= m]0o-1:ǒ~%ui;pVO/a3;0oKܼL6Ed@ZU%{ ^ ͰyOVNHLmu?uMBEQ1\IُOui@L7Nk\dd[i|lRܰ3"rW^  -19~(VZQjsfb5~Nl, $LAE \Yv3k"*Ie.gj4uDk"*T~~g^ ~<|1cPx7kF84K(/AI\%HG;'6`kK -ZJAFqKq$5GT#.a;1 p't.t-SSUn;QY(sў*M8= -BHZ# GcDS{d',Utl=,}*vcr+](_1rØ@?A[KDlv'”o>=ԏ[?Q ôn!ܘeoiB]u3PzP'ߧ%44Qw L7@?;gSVjgohop7syR\7V%xL| 3n|2Q|-GotuV֘Gk}fd'̐yQ/;^+b#&~ي2(ɚpTֆ)$Dru:5zj,|~0T\~>*,6Y -]7E9!7;au*8Y?Ң#WfiA~\mB\$OwDhE16:_JqBR%*X3 !O:`Iok2+}Y'1%Y GPMJ{rK w_ L&N NyA'ճmﺾo4gz"v;L je %Ɯ{NS6U'*@djNcvo^=Bi 795l€Aⶫ627ICkyV_}B.I=YR2U^c~o\Ƙa3Ƹ2@eU*Tlmcӱ~ xnNU)o`Iχa]PFŚVTC&ϣ࿋Y=d]/..FBXs+$=}buM>RWm6Ŗ6ᢐFX 5x{v*j;zv<_~AVUJϐ^IjQxシuQo=lK_ՑEkZ\4sqU7vOa J?Q)4C^\k[{3y~M|J'g4Ay,$0( jHl:Q"V҉1X&e s)MZ(W |Ϲ\88&tcpҔa͔ CC GU$^fb|8u̸&A֍9ke7;㥦koAvՏ0o5y'M3q"y$[Y@SgÓ=ݎP1)L \!B;U!)/C$N$A³ueuU},3Y'/Jc .8_[ON-<"NawGm_+yj~P]ſ^\y X,r-|㒒ܳ<L^T},^eDR,nkqց%|r,!gJx=~p{"\eeEN;Þ=${q@Q_\?/иLe>u#Mp'Yn_e<q㼅Ra8pLB=(YK[l`BKB#4;c;HS^OA>Ʉx\+0lkOԼ`Fcfup.wlCnKJIi]&fXPAn1کFTKBoI!ӮZ f)~Xhy9 ݨOC5&|T2ӲnSLB5eD0:yP;(w9mΪnWhKu{`wk -kH>*ڲ1 wp5Q݌$;LvvJ1f3n*Tg@oO#9|}?V0M5.ۀz{" NK?C_$ P&B̆e>(qIu`|ob|_0l2WꂝsCܴLTIa?f(/+PIwB WhgšH EiŮ(G6 -"  -"(H2̙dfr $xZEP>ţC~EF:}< \{ -% rH6N$(߫Nᷘ_%1]2:$o-8ȥ I-qt;'kTjJW^}kfQUr\ulNkHn᫂H*Wd6M2 *{`V%VRoJJ`+"yO|s86Vy8 :+;9ɨ=.qqѝ=ɥ^ӏwldG;fH^2`zBȳ ŞO*{M2MoR0i:T~%$9ED~cj<}${.-+P]c=Vzpwz\S;!?C:GFIױqYŞ ݇>;]mS)yrEz_n˕aI"l|sGvmߵ_7e]֭>ГU)i:D΂G}V W5*{f? -($p\)9D$ZYr|(4D܁OHʳ ;ܫv۱jxLr_r ;Wi nV|Rudܦ;@YNl-QnJȲc/14C:'K&̕BOJ{ߴzfsW|F-q2 ?}Y[pXdY<\v+M{ir8~LJޯ vlL: ?@o[g`}>?UrǛI2Lk.}GpI8QRV%܂L0/PUE ?ɹTcۼfHs^QMC!)$ ; ej uIy W6#LMi9ĦͱP*HʘFg]mߝn+|X$Z6K'OQJq m(B~ljSuZ ťbhWP"z@UVJ΂\,<\HA 5Oaf΍C75O Uݮx7F>QL~:ʥ#][eTS2%c Æ~EWg9i%3W4ފ:}޼0_X|-ƣµVu8H{YF"qĔ-F95E!L/3zLw@"FRmOQ&[#ZO/xˤr~9T00bܬ 4Pߋb>_nMFY%MOaN$ʡ˖~ &($~>tBM%^i3ϐEf8UB '`-icIaͨ+ دR=ZȾŁ=5U#5HR>njky/s6H؃E oLyCG/?QE%FvMMz)=ZB.ϡƋ/•3O85&YKլ(ST eҝZVx'xaV4Ë*H]z~h~ i0d,K8CZy{jCF')b|xNJ>V{0e#|SE1b狛*_R"37Boξ(p3_<ݥ%-tɫBetƓpx HuRuɵ)H?mf@Iz͂qrgM_D|Ce -ӯ_wCՄYK/Ԩ 佨/Y0y̸7.]*ѳa !d[m9#{-;W[ U$mb?ci3ؘsq6ĂT t֠} dlv{Fyt/ټt̰KQ8 N"4ʻc'׸Ns6I ][#?wsb,4U_ f)Eď* uä6Go76ɵ{'CGa+RUA=@5_rgs1OUG*ʚO&Q͡4%nlc=%Z vY Zeਝ4? eC` _wvĦ10KB/*Brv4όwM 0r `$CܝGa6;g-N_&ɰ.` `0M/s\PMf`p3 $A7 i c(y jӍ 5!UiMSD-rBFL&^:OF-T4w T3c q]2Rd/3U\;?Up=@b -TYRJ3O)*+sWu.[L6ǼA. 귒hoN_=C|HW Gz}w\2h{?Ur_ס,[<4DmD〷C/Fl Mr_򑹾g"P\TMIiDw$=` IӐ }6.jYx^h}]"]l -8"ӽ΃ǐL"Hڝk:^֖Tm.^@1~qxTlU#U75:LE|4&W25exz*̖̆;M0do^lpmaIS7kD#'͊$"lL?bADINmEh 8Ԍ*"vұE݌5Z5 `z~x[MN&a|b(ǁ$ch |cq)M_Ɔw>bSО$  Dpz!G@o3a]PnN2);K4 U"p+q 7bLay$04iCc9(6>E3a{ R䏡0`?s07y9'`Lq`ScLr&MP.ڽ,_ru/F=܏=1ltŜ 9>1lם -KX_t+ =#ثL -uuWK̹ u)F@jR_$YuBśGbQl+$,o8qlg!) n2QήU>Ytw(^'Y! %GU9, &>YcwU Mj"Zo6VWF9=al mynqA/2AI̐i -qAN?!9NxlbO{eiYQ̶>SZ .&sbj?1_ǡPkٟx`дY!n6fVJ?ffon06l)7BuyMAѢ&m>>Nj#4J%&|E]ۊ:i2g0io*6zXh +҂3;1"2ҍ+O?KjaY|nMHpA/LsI5cu*ΐDx!W {|mpq%qehrYbBt M7uA- -w%5,x+ z!Ί}|%wpȩxeXx|Yy$M}yAz5{+=}5"6~{άq~p^Q~Md~*XŸ~,LU~S@~5 ~+f2T"P{pUIpf P[AE;Z1ٓ0U)Fj"0΂op~7f ![BPY_EE;T\1撠C)k"djpmfr=[M,1P\ǑES;`Ћ1')}"Ρmfni=pkqr^mtolVurX wtDyw'0|Yz>̾jqźjlr`ntpu0rnvgkbtgwWIv~yCtxz0b{x|bh|~j|l|^n|~pp|j\s}AVtu[}Bw}0z~l;fׇ i -9kDmh5})oviNqꂿUtXBEv=/yVǧeP{qgi卞|l{nohLp(TsuSAv@Z/ryX_dִ2f}}hƖMk/zmtLgdojT3rxAKuI/8xσ[c&5e[}gܞrQj.xylfoDSr d@u/x\ębp vdܫg%iwy3kyenbSq@to.wUad`RfWh-xkkemn)Rq\@?t@.wZtf4uhvjxxm0xyosekz.qR|{itP?|w-~zK'rp{sqԜu#svFtgwwtudxw*Qz%x?E{zb-}|Xpzr'zssj{@(t{vxv|cwy|Qy -}>z}-R|~H(oYpq݃^s=uPt;bvSPPx <>Ay-|0m{opzrt?s^auQOw+T=y>,{¹luSmoou{psGrlatqOvk?=txj,{ @k mܖnlprxqؔM`WsNuȌ=&x,zj׫4lgmomqq0_s*9N uI_|2so|u]}@vLO}xT;"~z-*|Ly(x*yyr z$y gWTaˢĮkTd@D\dPPp-HG&]30;sCg( 1DE*n6ܵaz*&>P3ĸg| ,X񦁓`S$>BG DǕu#i#܌-`xJ!wم:(`[HWeQ2UFD`|:Cd2~TvkdEeUb2̽p ʠ~[@QdF!7H$ #dLt!BOK*G-iCrB.UlmO> ,B2W<+367ߛ@ )۠&KO 0ޏO igm82=D 4FB[!AIb4~Z *fz\OtF&ӝN&3xF[Hjz&3n14bM zB! |+ -/hw{V\lsTjg?қ۟u 깮D}û.5ʺ(wM ұ=Ljeo(u\ yPXƢ8p2232"uh0 ;(3-ybݷ3WdsF@w ,8#!H*9)iF^ -P7Dg3I33D_)JQNdOm2ta':=J.۱ -s`d+uu- ǵiȵ\L -kw/i&G1|91:H^gW@-Eif?QF?/KvřMkz݈uN0:ӎ3BJ]PU@׊VVzDPC9>RTl{=EY^ScyjN96b~mwj[ Zl'd}[YގM:tU9WI-#d=sѣS IKuƷ6i/JO{s{c@6oPU,'9cV~M6IQ1WwoT+mlF0\Od?oi4M4MC%HfM[r0p[p|R’/Ld/_c8]׍ YpFKM(Ewo@jjI0/kad[H>|/ѓL |00SVRׂV2Cæav4x,'L82'7&n&CĿf]9-f]i{Ta4EeNٟή"V_ǔ3tf65ҷ, jP6Ex)ͻUSu@6M6dFVSˬGŦwƠuy@>.TȆVOdj?#驺sycA)w,zl<ـB*7ij,\P#;}}~r4fxO"ZhNMBe@(78,iA#FaN}qǖ*lf Zۋ M2HB-7߅,yY#p9|qeےNYƐ*M}"A튘6؈U,ۅ#||(qW,esY!MANJje6Ç,}#5tPcjOf=_`rhTkHm=op2s(Hv "zbtu5k#jl_-$nnSjpDHrB=tytn2ݑOv)yL |triIs ^ٟtSuSHt#v=_.x02y)B{! -}~st(o.w]^`cCcHlVf+;t)i0aldOȯ>tsw[-wnw\-_AMb0ke#SsShA!a7kO|o>#r -v0[Dn^aaShdL%rg{`j哟On-=rfv-vm3Zp]­ `܄cr f؝C` jRNnb=q-vBw~o`^q&ccrfBti quk_wInN1yq<{u8,-}pymjynlpptnRrp/qsr_;utMwv2>@?nC)HKс#Eu$%`^>[ -(?`~^x0_+OËv&"YD>s5x']~-if~>NF" P^OG# ǖ0<7ӆ7 :sXL!kݱrx{6Rt"+@q*7k1U誘Y}(~\H`J䞂\ -52[{F;Onݦ *C{2Hpuw0D(MHOB$vKѻX{'V' 5c - -sh]T4I DGãTD(2BNlz9eB_ ݫ.#JUbGɰ Pc36߅!3?o/˼ 4Ta1l-vKWZApɾ<>\Щހka8Z5$GdW#{{ߢ! e8l&Vlu4ʚ@ԸQWJ"쎛)9(6gf y'1?JL)b쭢l]4LkۘPpuﲹ)nCA Ŷ+2dEH'Hm&Y3uѷkѽӭ1n]_Z<ڮRvӛpjm9G݂#j}dA-uڠ -0\C"dhK>مٸ:IFq\BVhF'$[I&3BtK\ D'`;I ["%#N\I -|?a8+ş3"-Aש_ZZKO%u6`X{cͯw1 $+OM{'E],jz6+~ Qk a=_/E qbVk&S7fg\"&]KOÑ: %ijeB>%j:l=T1e~/ߪg I0^YV)<^ϑ% -զՏQS-WGpaθD8ߠ9D֑ՃXM' -UJ]I"mteuuE)-3`Ҍ SoO6Ju@$ZZǚ;oam>݄92)@m{>-V|WU>r$Ӳ]qّ¸zEYuɔ>GT@蚩\'}њG9mp.d.@L4c&,r;b ӂdlt3ݦ]Q<b-w Nk k bK%H@ j"W4sf|Aa{8c%J@bW\E':Ehsř=}9fǹTW !3ߔ% פԘ]YzĀ&XIkWdPيb]9gbIi $ O1wu_)xS$P)m/UI .mpsf5Uwl}oyh 4;=DUIKSDSjj:?2*w0P4o+G4O6jeu HW)ϛ=ݮȆs51 okaIӽ֒Wo0%>#}?V5N_r}%7 -Լ{!`D}K_4 -!Q\HҽzȔHN>uA-^Ჰbg%+k58W #wi+q0khcuTT[`5Z[`J &-v**cs0:-7o3G(Z!d  z Q}vx'E}aQ#*'viƷ|'in˵Y;eR{E1vikYT24o/;K |O c -Rr_T'UtKyγzaL= zs#k)|OĀ܇:axim&&^cŽoIѓ` -W82K/ױϬ˽^ipuO:JD:WtG<8YJ] - ՄyiZP-|xm4rQe`dZH ;4SX1̚`wpu>7 H2%Cd>zES?+&e{\Q>+) ^T9ZPFV+@l@ A B -r3L2$$x *,^-ڷ[]<**RInpdk ŻΫ :C>KXi<_TTՖqcs.JmZEŒ:^΄hsVIbm8tSX&^ a*Ɋn^m=A2s^mICca|k`K{"Y١:nf,ڱW x_n~ -!f睥# Aɧo(u -gįVg攷E)?n/ؠbdSu3QQIB`\C!d -P,2QC[Pһn`RXYU^',|Y5G4-},V{:T5zGFdx|4Zٲ u'ʦ"Ww[f^'0Xcx2rKJJDJmB|CÁ=55oc/hNL9'0jI. =$!_3s^>pX0]ScԹ`gi9Q?+,O|ekkC)6bf!),MjQZF_Y[-ۈfiv&mH!`5oIxudP#F -P&h_2nnmMsC?wOt[Pk+jnA ǐHځY*zל`L﵋TL01|w:44o(%j̨5YJ_|fyl00DO+/.5T"$8[g)T`MH?Ɠ\fިÕyL/\Zj@Ν(Wڢud>P"Yd'$$ʗVJ+W>pG[^Gڻ2|M 5kci{ZJbILFPCR7<]'wKÍQXb* -$f»~ ^̈́:)]}pA(+RXzE;b1t!9ݠBj` d> !L7gh%7nׅ _Qg1R2Ǽĸ:@n\KX)'WIC0hݤ!XL}4l5 Vh2,?bLb#(sÀytk]:ibP_"2S&F ߆*:/~5l6fݻ Ӡv(l1u;8qi7mL[@Wxlg Y<#nMDyYZOEX;/C<_IfGuROM++c7S -4ƊaZԃu Mߊ]>]o/m^&=Nh̕.g*>d_$ -]koj-]wz`g`@XRSZ^6uV^og~XQ 濮a%{s Tp4{HLydW)YU&R?FD/'gH7yOG -S0᪄g :po)-.XF:e*diG{.㯙nwn.tY<"`7dsSC!x$g:SX9Y%r_']4K . q cYv.㏢Mrm*ADbW냊M1Dqby9mT'buq7Or }yXK8`微.;~1K}wҭrB;ҏޒ &6 Rr*?j䆑lugICkM|vhZYHn8VzQ3N??֫zGP5|No(RGJ[5&Hs)qq}^&2n:zǰkFmP03;7Nsi+ZiӍ ^zs7Tm , zb@p22{96ʄ/= 4)c x -t&83B-(;^SedSy7yG^H@Es7<AQ|h[\jeZҎy1|i-M']|k!3h{&m5&[KiK%}UEk̀u hT[*FkkOZ e ev]G ؼ;GLW[d;oo3xY{OEk[@|l2섐^򒼗F6a 9uUQ[Em'*uWAw:^WfAw:Rc$DZ9-N7~c - -?;A34VfO 5*DvUe_Rqr_pMv]{қ[;f4( c5ڑGdxEjO-n -| g8 KٶŲ]{r3J(?ұqlu;S7qWA}ǰ=o -nxg|GCTpTaH͗O0U`llڤClt0jh~pڱY_,x',IUjn\[M zDBb<Ô]T7S0Co}2%sF͘MQ ś!7fSѕ&.!mFk(+O Oȏ@ W1fG 0JZ-#=qb>@@gIxFz|޴\E=Yg6atҺ*SY5T9vh  %2{}n}I90v zRf8kOʼjVo:*xH3_ 6WWx4\;5juK::i7rʶYAd~X:J1<;e -(;MsrlڪU[y5vw(k --OlHWeG㐣݆L9sŠFp6i&xИp0C2}TxmCH#ѽZyڇm{+EAaWdVSy%ې8bש"SLL14$Bs&Bj&d@Y?O+82}-D^ݒD(PR{Ѭ.s!$4Pڣo\i(#u"D8 -:]C>6ڒ׶*m@1GQm lìOrusg# tk-ۤ^G) yۂ2b+PgDWB;T+4Qv{9輵;!f6~/ė|@r~EM$,<`2+oMҿ$ȵk뤆)<$\nnu|LX+z-]:r"Xꗺ.KW;–YFC :Aǔ+IU u+U>.+͋;SN@] LUXKx6 ͑8=*U4^qݗۥ>S韒+Ż eLsf v?m!'粈Yv0zْ2GwT1e{BHM, &fr(y)% P Ehl% -$EVDĶt o \~6-s//E 2<뤪t :mbpVn(Q7:ziZNl*3miИ` snX -U\Пbi0^Kc=!!{pwpyKH&Ș/UDg#M@1&yf_sIrŔ\ Bc7HexXltbu!hI -&) ֩ršbps;Cu GFq~~c6RbO'l"<͖z [T0}5y V|EWrф\2aAA0 /ɷW&aA -AK]מ q\kPU"Jѻ?W{j#'rG^$U)~VHDTup7eÊ⚊R"I^w0^+mOXiMi-T5ȝ'N]~{e r5Ճ-wA-VYF~UgBOJt8y0.{KO(vlJ uS0փyk^?6Wc+ -Cl]Eko%ݼ脦g}h0[[tVۃw,U^|}X?4:a<X s%هU)<@ZQ/[6 . 0A=fxIҗQl3\PBoJ]Դ\>[3?,ЛMOyIOi> '|2kxo6oy*Zo9XYifNP?1k𾠣 *_BupֲB[ 4Xφ}P73d"dٮ&<ăT>x4Y"GXF%Ngt2S 8.hpq܏#~2HleҢ(j =~n$ Y9PKC‰/q䢘&lrS1|8+ۺp5q Z(QӸAX!\$$$CsrL2$L%,*OQuOłBuUX뵊]xV~n,[|nC --bY@X?(e92"կ)fm6@>_|Xȼ L N+VJ2v&ǂga:y*=>C,꽅zqwΣaVbP$Ԇ3H* -|tc^7CvfCUʆN\A X)MȊQrK{Fۏe"j%hCi24.$ҲɹDӮ?2]HMtaPZ+C9J*_r%QNH4r{W) |em}^e ٻ -.v_.e'T)V4(FoUgzf0=rƣ[(hGjKҢy}%]ʟ%(y쭬0L1sR1w^NJO7 نyoxõO`i0)¿6T@JJL#״C[!)9!w+@,&TQ0GU5a -5\1(-9]s41y3yʍ/ G䇫~IĴ41_35g%@.1N§ N̡Pi'74@rz8Z? i;f -cENOri@Du{A6.ѱ>1_:, Jf?/LCNN*E]٭!mq=p)ݍ -cFMH?b;t% 7r~L&3>ﰞ~6slD'9?6T­ϙ^ 5; -k[}gX0^hq$WKJm3qV/f̔&|}31sO[9"6ε6 9K+|dj8a&kɐ=9wUͩ?|0,lugzeU,}* e-^uGSoy77bC#Qşn[,( l^ 6!ʌ>":jbiq2$V1\$ǕwkGԣQ%[`ѐJ Ή `]+Y)u!*5(HIdaoElw17hYxЈrMyA39ScLYgBل*dlQ P/Džml)IR`i?ĞAY訌:et/ ysn琸M>dSG&HPe*p:vFӫ}9|%*CdڌTm ؍θSVkq~VQ< f -CB'LH? 6ǍZWzjxA|+cshi#a43 KZr?'H:m2AĽ eЭdcM^k^Cj#,@DL2I~tHGǫJ̀e W`_qZb -"pp߄CH I&d2L)xʪ*jXEtJJ]EZ_=@XY#>(UT#tgE UO4E]cDix`Ffw0b(U -Y]sAvjfhw@A,bx#iu+E_Xx˼U-EW'_@ce2b1( h^EN -`V[@-kbn_Pe:60lu-'\j|Dme;tHGD˪&աD!ߪ@M?B=rΕtSwo2Y!;DLž]򮆁˶Rf;˷-r0ۏ첸R}"?5#mk+3((.RxP{K$ ~?uX m(U$C[KIl9vL"F]C2q.OI61Qx 1iQZxle_)O&uZCj7$6} A~8zXmb|n^i>]fQBchJDj^ k]rou#Ih -8ЂTc1)üW+-*kxueI~PE:LR] &t-¬^*$M4-bB c鎳A9ZuKDۄT}pp;dzx0w - 7 ? rlJU/3BK3hf@jm1RזD*p֓2O(Vv -ndmMAO;1S`M-a6)N˛,_ -l[c.Hі%Ŗش+#]lcٶ$ s~&b~In^Y6-쪸ʟ/FRa` Ei|o$Գh:)=kZv6g|V'E;R^t\"ZW -YnN'⢒LiK[!6bjnf$=+ *.ӃKvIchP*%zډ,1-pGsD8DC7x&X8e!j5kL4Y &XqYLA)$]s_g^.[fx́{sHq  o݌ KFaa)1$PoגיDO̐Ńwq?0$װޮxYZN8$8 _ُ$`lcZ6ݐ?ȇY+0H5zቔkQ}Ö!~QQ2&P{BcH|7gz9^sylu^A ;RckU>)vQ 8:oVcsK68#7>^nNk_<w*>mڹ3"ΨŢl` D#ޣ7W-#hD:G"DxA4 >X( 6b-X>*'qkxOOX+{5| fP|~NEzEy?|S-2<3}=`[~#ltGPj_ _߷,cn$kaM=UlMQ"gɆ 5iЉ5M%7R%qvLSG[]]M vKsw>q| -7pL=#.[CjϨ^wUOlTvCe]j20uuFfձʪ:AƆ"E*S'_ -!Z:Qpt47rv윽Ys9{<Fr׃d+G1 F~ /bm1&&x, ^ LtZnDz4g?x7o߽06m3fB|=ksΛ 4|K5~Xp%&(*,.0<664^?|X@`PsB#b$ PX<1A͹O3l.O IrOS#?UBP' -BPT;} *~>22 -EOL_~[ g ,v,cy]zFl(}FVύPq㫪J6A$*H$Ρ`v0;f×9zL2ٞQC|QM5xzAR+Ԕ k*xGjsH%Ť^Vaݼr~Lȡ3h5$؋#2'$ -,FP].V!foDc&2`* _'ǹ{# ݰw%{2>aQ*X SV*5r1V/\2dL9x~dE ]0 -^z[AKmILŤSK``;m\ojc{.]w{]}A][UT5䄚T9"#֑$-QJ֙ -(R;7n^윆a:VVTST@e& -PkLlvw6ԷU8{`>5#8-Eʦhc5Ij ɱUx(EUu=XU=ux}{tjG -4a(=Gr(nËqZTivU肝 F7 :&|ؾĮȬ8CLNlG\nt{Bvx~T2?]ъ?:B': nAS+w."nG%PBRBz^MLpz&*T@ mHh؇Dc΢&ZT_Wj 5yI5LOї5m - һE/`v0;fˡp;ϙ־A}UlK8SQC#kדtYFUVErAF̾!b7E|{e wY쓌E8T@V4U4<7IIiA(R@: j:8vug*tE@EQ*r 럄B; !rIC@V@]_ӇQ5UW/)aY/-Ry%F2"  InK/i"tY{p8d|Q\Đxi'6ĩ/UUi5gԧyebLY(ke&\1q(h-Ev;wΛ6 !5kC(xH@m՝N&וy UFeaf5n\+#$,۾.wAڐ&T%_}ؗY6"s 9G&j ơR9aWLt~-m ANv$&! 2p0t{z$?5Z uTj]Ġ`9t& f,h؈!%gS$&T<6ncK /'z&bp`F*8b(@H3x!}': yo8IP&\P{C@Rt(ɓʌ*rH1𵐗&dx'McČ`$f>m|S~䃱ؕ$x0mq]Pe& i#eF6AWB~8QChiTɞ <|]z[u*nz!bg9Ԓr3lq Xr3" >4SPh=m@A8 {Ͼ+\Ǖ--F3a@4M6;ҩ'Z8JԐpjj6 DzQ0'չ=;Qv(X N#0-z#}2Ң>ƾ#Ahw8Vw5C/[r:mU5fYH7H)N6S PX'>}<5ӽe~y'NNdtOݗdjM Z̓x3YAdECM&-ڀjG ož>ْm\-u ZTS#%xG;Ѣ8]0^`#Hƺb~ںnA-9*ViTR8 -`'yM>aATm#GђZVZ˪ݐETD_l }mϒdo8zPc)VdjGT *:YϪ z*MSqKP}W7K۫Ov*om;Czzqt}JeVl|eryItV2j)kb腳h ?|lIlN^mzQr}\E+ݫl([Xp1ٔZ[m@_Xi䮠pvfy?q)?GZ3=@W =T2lvsdrڰP챢ށzE     q5YTp -yOCŻReb &l[Ghmb9M%>]8!p~{gkl’B42?ȩVnI6 -e%2G-8o QP6ncN/J/FQ&= }-9>#, +>nƙ,Π z,>3'ЏԍI6Mo$GWdosfܐT:jGyhKڻ)k[Leٓ#ceA>Vl oiEǪ2p˪lMe.{J~IT"Cvnc53}-"ÐhI'ِ,kHM"D[YjsUZCM:fD˂+)U -Naa␽Zfk@ 0,"IBLtrAlĐ  N9Vr:#Q1ha x!coDjԀE_dLqi&]8NLSNIS/)WKlƜ5==\[jTv]٨@(WKsm!fwO)iiLڤ?鑓#tɕOL=?ٯ9,o9̳t2UAP@C6-!d!@ BB6BĂQDkop94Mre9*ӍRMd0W:rB5*G1GRBd; ib"P'dh8^`B5yϕJ\ L΄*nW2b߭L)3t*E&' sdr* i@s?/=:Vh,~ߗ;{u15k}6EnA;xobhS$u,N%ɕ8j 'q/qO=`S)г ,Tרs=@o5-z$^˚Fk3(lUA?5(!4v(_uw1ff:w-}hXKvzqAOQ NϜ@:&z$B/ $Gc*8?z0;ߗ]/ZZV#sY]X&qzlKNCd P¶GFޜ=;èj!,z5ϥ+D`C^n"NJf90 2?}ɉ=yΝi*mJnL6M$_e A ($eEU Ȁӏ^9,>IoGs}YEHBWh֯յYTwL3rS1MOeS-)*d`[hh%؝jӣ͓\$|[XRK@-_JoЌ+כŋ8V"]?/&{d_$]B?,kʯ2xF5xun#s -[oyDs?{how1,8 fL?CVAyE% -K.?)-amU [5[ڜȺMtM0o?s}*Ϝ|-.̩ {JZVu (lIneC6%FQnj̍;\M{w 564q@p${{bKXQVx &\^fA{O򒻭m.B0b @ħ/d?4m/o -y0wA6kloz=vVtbd.RC{,DŽ4]@Г zӁ4#L#y,xK|}]XÿC>A𵲇i6pD1|܎,HψP(@c ii@Rq2[eaU^FR6Jz!` {v' fQm)0}^(6Rc$5 (r~P,y9wM:(^։gDHDϡyl"0A4t!5F5bl ”#@ -)ۚ+Ou`;\ mqׂZ4++'8bqu2ǬN Gt$ F7 G,)O '6bgSo/+WuQ.mlc`rj($oQM -0rIF?i#@I_S>8Z7gW-[ܫ J?&[1Ck\B"mф;[ - 7qD -$fØt;Sj͖%qzfg,;-^Q`-}"ҘGHv- 35Sl.J7oÉ@ 5pNgmwٱٙmu*ꊸ/#7H NH  @HB\$77!PxE.ov[O8bD>Π)Q6AY-aWjLGU-oF7k1Fj@3\=ۉ <'#Gޙ?uߎo qxeP IÉh1nzY=Wu Mզgԥ'(e]-gCGi.];^ɹ>~o[?) oOP^M!=aǠtRl69m^rU4\ O%%-,O]TB*s;?Mw+Pmv{ւC)#HܥO)ih\LC.!K'b1 HQs.w{ϟ/2Tp c6#s6"bI)i+˰exVz:;9 sYAnSKG?vOW{$a R*ը1o7l ˯WC^kh+qf7 :B|J+*u}B2#PCѦˋS%e*:g cCh܁li) -`Fm5{kï 5!>s^sUXt9UJ厓7YΆ-P7 $*gz0W]yl`\:XA>s97<5'&cE=ffӕDdyix M8ZH6."4Fm Iz9)d1 ź F+)mju@a7gDfFiUcԝRڊXxi>6|XG/@@+$kaQbќ0/nMҋ]%:c!רZTxY jq4Fּ]Xyw?=5a'v:u]㌵u=,"@n9 $$!+E@AHGBBpEA."(hA P뷙ӗ}Їw -oPEiԑ9qͩ[ q)Q<\Uh.gY}WS(35QEJYj)zS h/Pk<^~'?aS| A :8}F/R+|cha - 4Y^HjZU7 -[C1 ?w<}Aw{_Kyē]Pmp\+ؐ- TźˠRVYĐ[tX;-i(i7[9GPq4zg6@0=4kֈ\c-MANTij *A+7V |ZQ4fmld/ 5@ -ݽ#]w̋Usri07mN wˌ|!WQRQIc fWlerU:Gg&{ q? -n. |f0rg$u͚B869A$Vˊ:bVoi L,EUJ@!Og)Л@v4>4=A[+g $fy4"nv,9r1gJc:5J-AYL -:J匞Y*ϗȭy5Zg!W6@@6,GDOMBӆF`+٘^-+*uj/iuUcnC9K)7hsz 5]Nٰ;Td~>TJ4& *ow} u?zXcΑggS+~P2u.3MV&*1Z,_e%I#\iPpYRg/PphmsY}~'kGs4Tj`ޅX~>3en؈24"y 'ʸq~tZh/5kofصOa8s߸F_$@3q˰>'n9;7^^^=1.5?jD'_X,D,Qn?t/J\p &w!ב0؋gTStZ*j| D„=bCB3WYx{ot}5[,w$ 4LBA#oaQQ\xąʈ}IHNK ȇߠ Ke's}*_};v$p;$p\,1~ ?$ - - ! -9~|?}SRwp^@YH{VDrqQ"Ş'VpoTU$VdDױJtzt -*BM"{i1a=~oضR[ Q!q/eUV.yVH[(`IʪYL 1KWiE2c9rg0]DgQ])ܚd]ѯWiMU}:o@:vN?ćѱ@Fq?.[cT(y1oM70œh~8Jh.#lQDҭWF[3j;E#@O<~.;YKhk&qtd=rT}J+zPUX}Ψ9gTz<#8:<1)y/%O$yevUm:>Cn^!R$,@P18Qr .eFҺs&o|<#AD1@q47剜_NJ5yvAT8a@Â*2 -hc^3~13JEi颸r!:Aj$U^NMrs!&xt~8ۀ>4@sWѴm)9PV-kQŸiP8SYFR4c4Kl] IC4<Q zás!{2 ЅfNxfKH~JμΟuF^4܊prfJ@г:6BRBd -Am-[[ꍏm@Ch[kd+>~r`vS!CkBD+Y]d=a&JD;Dlw؛7c_so` - y툈z6tk4 6֗7Z *-Kآ&%ת#qfB׆cʡ2 GMTC?.X [ZH5:Wt6譥dUEFIҬŋ(ZǗkxZ,z0= >=P~?Y9=1y~4tV$aix%A!jLsLdEԶrV!tZQ<s`i ,{߸?xQ#/Ne`%zyx+UnGz)xVY'iNCV`k"|FyT&`y'_z>#n/F\Lz2Cs/)Tb%Ӌ\8yU B+|Ȫ/: {7Ӟ޸ho;A[,8N(V'O7* xUzjޝ;Wd(aCV%l`PPyp<}捑^gՕBkQG5wa…g7pkŭYlhd˿L^b/IİK(9w} ۿy7S[Zh=(L0~l.}-ZYn@."@P -gSDFd{W5d˸:n8 \o3K>^=ݻ_%%4$&8 j%| A -oմĶ^Ƿî:fԌ& 6-LzH| b?ӑu[}U -^^_b6QYU82Tݘi-434o'iͩZRn -ZoH͟sӹ?}W>ߪm7 -b#1en ?#s"*aQ{u5k ixtJK} -LjH -0}0:[gAM vtv3tљvZuծ]uC;rCDD @ !`BBHHBr;\BZPXnŋu ؇}f~/76ذQ @Bbh\Yuun^R! lQwLs6H-M{#RpRʒKʓ7k׌MrM'?gİkS!" q8@& xw3KsޖG!禼:􊑟 %X~H<齾vmWkaİu~AD -(Dh>F,AC~I)o|J"&xŭԤǮ03bgF}PM}3-z[6|ǓoK@C' 룐A PtD`#c{xʢHjl80bÀ!s'<jc/q/Ӄ@ | -8- QMxFeU>iHR|/1{.K<['-<+AIgPW7 K g - N H]iD/X"IYEMo( -g]Ytd_6]8|pR~ =)L}Uz{@ yf4HsRA:VPRX[CYqDu*ܹr. Y%3XlsZ~=*UN^i\U^,t{gP5y - AEr(ӣAeQq>IY`<<)`?5Y^2]b+0gnϪn]T_\Vc/=˚%>x[@A#I=,-B- g Vm<Ǿ_%߭PfZewJ-۸?{5# %SryUC ݠ>Ф'XʂRlFyCrsTI0%ŭҐǞ݌!Wi KFMvWZfC?]>jqF-VTyl?d^6b#Sl0bYKO̹4KftDuE5spx!DGSvWLv|j'mmcUZգ_E&Ѕmc~0 ֑ܙyWk:nv}þv sv$4y4A֏K磻2nuJUaDG222qwQ؃RpaWPgM/ uLnmXivu:3_0%yN䍡I/ɴQ:8nj %bP,|Tv@^@q;$8ΐBOGhOtP___r:!͆i`=li_(x1ra q#Ь$ $v@mdx8$ F{8 -;("a)^STS 7 -Ә>ɟAdL bc!3쨠bUom`kRS2i@1ȏlr>>^@=͚#K+ڴW+lc4`}_81CQ~u6hxF 0l? y;H !?)|$Y"3?iV徊H!fLSI̝Itx#{vMH!!M@0cr?H+e.%fNMcH͐/dLk V-I9wȫ_G 7^P6P%Ȩea-\`XL)jYFX| ך3"紒jro/&ꀣmjv;!NzA1 -1+d)VasYV.o*X0N?'Tg<'TZs{ZI=yw)=?S4О\ p|*N{?(ы -Q#eMeXqiJѳRSFz9XFRwOMnUzwOqKqOVgKx}E5qcu(:ʢ2 R^P)R @JHC"BE0 A\ gnև}99? ^!HyYz@-F*#1KcH9}b_Rh2/s/gf 97y7 HPa 0WRX3aA *v=A)%(j*5ybf?7 +@\MH@2 P7]APeB<*#q -r|h%x\N/bz|VViè- -5(n@ -^$k -$ub -wkd߁zf0]1>F)\d7KheRUr:[Dx%2Q5I%euaYI+tJ^%(G-il \~NSyU0.FyaM𔋵dCPq d&؜L,QdJ)BJ)dB֋$SC wNyߧ6Ʈ6/> -qJhMIlm"Y+q &WQ%+ŕm -Tbs@@ӞEoܭ-~b0䤶2'rą >UepKyBBc^3XVVIqUz1 >7O;AtzB;~ICțF-LZ,8GK(^4#J]cz9@YA}O_\;nzGPLh%%lƲ.I*\Y(ؼX%mK$ik ^-!Bs@i -?lu?ov9цwD%HS2{31| -n)c!5*!/Q)Hj&I A |sPsp3F>M/Gl|tĺκ>mw3ȭUNӑ98żbt,Bw2IjVs:L&9Z&9&^ MaݕɤvOeq'Ey+_hbh'GDzCȺB(kAzE*f5Ό0"4ӌ)ftPnjXo]+o?سB쨅手e36M$Po(u -v02`Ry=0^G/z*TN k㷩a#3 -sr%ۿ -Ve ˴?si1ߓAԇaqIw3SY*v5(Y51讆to40xQ9rl|Wӆus^Y~mKw|NQ^#Bqsғi1s̈9Zn0/GϷ`{|{cn[:6-2vk-oVZm-FC q4Fcqƴ(c j&Rߕ}L{#}9,Wϼ3 , S!VCfi}ؼþMGNK?z8O.{—`bc?[BD/b>bSPo93){J<#}Yw:W@F4 WAZY۾[hΪ8,v -]#xA7̀}@a zZ`C? O-"ܖ#>65ڷ;2"{+vM%\ -ypI^vq2_gQMg9=ǥ=Gg>(*(Ȏ;Hd%| ,심@EERVOU0l*wo{_;Ci zCg н|_H)Om;ݠ0ʃ]ʬ_Y4("65p`63q' ܭc~3!>G P~؎wr+ ..:rN@uᎅEc *lظ -zHMQ xzAԾDkW pN8t8@`s$@fka;PYln "b HQƺoc.᮳cً9 ܹ11?` v뀍5}wG!Bj/YD}鈿S -+5wqY.棇xcy/q14o(v7kHx AAn8x|A -e=1ı.${5pנq -&+0ȋ9 55l eԄJtJ{UK?Mj>"k>G>EOsE7ڙ+2k1`0)쉑KxP{ -]D#؄t -J2:xՙ&V"_8Cj71RuӲ -6YPsMҹ>jY,BOz;[Rd:MRhg75V]={__Зsbc kAENBv?k|?0j78H89PE --aoPoꤜYB#k 5*a\pP&k, -E|>O<3KbXC㟡m+y~oߛ`b<&Uȥ\59颦lY€VɋTg*uũ 6cdJ3Ft@6cv`^GKq;}^] -h;c;H N]/eS  VUfRe $7eMZYWF0W-3|@oΗ l1a ؜um%]V;B=vB\pW-%\gKERSy*ʐU(E_0}&79 @͟ -S߮\tncuO:>hp{+!Z#9RM2Ǫ* KH)T*mN6M2յ4\DgB9_2?B p%MumwuL@#pBA^ ST::8iQimlY"YY9}^Pd9(R6 D)LI3 %8)|'r2$E9)yW ro?(}Sӑ) ֩ COǥ]%c7M5Y,iY!iFy-_RM-ϻR?{9,Rl|RRF$5tYqE7 )ɏ<ޑ)  Y4PSF5;/xWg-^f72.ԊU!AyW2*R/}8Bfzc%9gʥAgjĥ:NwJCrgECzu6Wzsmsw~a5eJmN qȈԪkRbWH:&*_V/+w_rDgfIkU[4Pe1vGO}MO@ٛK_omϕY' YwFHNM?x=G_sb:Uݔɬyɮ|ɭRAb/+զtU|J -WmR}mNW)6'|cDŽ6%ňw3\Heܩ%w_J{1 GV(d2*uTnVyxիE5.vmyN5ҏ.b< >oDrZc}[-U$rD$j {.TB2/^#.SjПS3gi{ݒ>'Oqb_B]\~gݑ&ft{w t\ ꨎltz9)z68D WoZ?u#ꇗT ,iCzҏNF<,iQL?ЛO`S,W}ueyUL+vS;3$~S' j#*eߩ]o^T,7Y+O;'=#e4@ӑ/rdbO,B&xȏYhuX#wvݗ -C3깢L!rL:{NFN&&%ST˴}P<4Mt -/fVwWkS%*4ҩǡ; Ra:6p`F~ 0cFnuF##G! -E$Ks@9]0D Te8v,`X` N70I>~ r>ę["fȱ2E>ރwf6uw r3W)˕ 0b -WS $x9[LkpXBA{c7$;C#@!MO/ X/AbAh)c52 -E0"Z+l xj=ir$5w« /Urc3\嬃hD1w!av%8?)b|Jؠs~S6$ o=OQ3MAdpm:f2ɷ@Hq$KˡS YeLT~Sz7I}t _(Âh#t! NuM5exuH،x1bCp = Ȣ{v)Ki5)Zޤw=@0A}N7PF,`Ȅݾr<`&OlX+m$9CiFg#Zd= ̠W5o*oQ+~(F{.0F0Lw$sD% lggEw:v/@2ڿ.bϰ=l.R-:{RUp#V$BB Y$9Y$0Baod(PW+^!,E^y>9/yw}qzP!qO( CT=gd W o#oŸ_F M"#Q/IѯȷP(7b5. 0w~B~`9PXT?9; @X\V?, !tǻ4̡Y%ԴjH#uz:~CCoX}:No\{5MU?ͯO+r3nwfB` 9HY}LpuD(09ZMF5M.t+y&A ?,'L2򤨈2% `uM%;Ěsy~QC| %'bzjb72zjRXMI\I-)'Kb mB\@ḨOH8Ww~rCsk 3s63Q64r6[!¶K&~˙F"D]?L 49.5%Y =7pH`1],Y1W|rTMOweC/0m|L"H -Qo\JhKٍU}_6HϵIӹ{n OO?|{e/ʏU{Pu''L٠KT2^fq OhgK ^\RQ?& -lLjwxѬw݂{"YMв֞\;Tw}˄ nʦD֤ctB5YN7)S92 C'NEEC,PGI1YR PJ[rY¹}'}K5Uv Y/Ηg1c|I'SCR(NYd*R!Z2_ɞ*!hTAc2px3H]}=@]_Y0^}gwt# cOU EttAVJNSrY&U+UJJE1HaU@5ikwxN|ҹk5zC'KԘ<^-j3$/K5u&-Qp5 J暒Qr4rn,Am@7dK[>Tluٰ}së otxՕ`ߦ*P'B2p5 (\R' G&w5\gZ׻^<|}WwVPr9꘩{.+a%R!(Pq9g83mRa. $rt >SWV:rk>WX}rKEGK 2؀9ZG@$Ub\TDc+شB-h.YK}6(E[%XӸ$.wBly; -OU+ڼGr꽳ݳҚ7y(n)(A=Ǯ52:ZVf$+̂J]#EOP)=@/q֯/qxpoӡrΟ}=K+3FNȺ :VMi ӒLC5vDS7<]~QmP.rF/Pm`C߽yݏ:6Žў%GVg  uDЏ fB)7^^Lu)6Z2>u䝆c Ъh](VED$ -*d/FI - Œb#ngT-.uGܷ0n -B39+r?%RC]9˻RzU.y;w;l`Wqy-g?cS_iy=*| BKZJO6>b)MSXT*4VUj^cu:ZvctWn`>ӳ~˴[9N;W/9'%j:f8#mϲLviTv:^֚ۖǔ.[Wd1uV#eߴj%?Pbv$k4mv!&2yҶ]7tG۝8 /t)]8IWN0׵^bvWrRsLyc?=*˷ /m $KQ TL eP`F80+c_ĴŦXJU$& U% J>=r25j"#C##KnD]=q=ɑgDGw>ѝW!p|!ݲ7=^Jp|Rq^>(9!Q( HaY1!;BG.;QȞX?2n )~c3:Q/H&à r"d(|!/1B?T`GMG b ֶj+}<Aw#` 'p3nI`ǃѴ(ȦG@=# :d Ry=[9}Ʀ߷ V|aStD}Hp GP''C>i>ԓ}<9S|P6%_z=P5uv1 ġP/r. ܙIH@Z^(%Q| DJ/&8X`a:$I!a xa;{K!Ȉra93aӡ@ -eqqu1Syn-\Hnlf裆XT?go"aHi9C -crY3aaH @FVҖECm<$ 1n&x k&i}V3 #~{Pi کaa5, >.A C+Ĺ!<20DC:oe@Xu QS|pS\(nD{;rPo,'!6@f A c8Lש( _6 hLj] -䛙āh'#NwY3a)X<,a&Fc42Q)mkD,Bg_ ܒZTO.P&6+%_e- / _'E}4pR4Bo`,L\jV[x~IvX%=!+9x-7+__)[T-=YsSn\V/*G5f. 9sPl8PY^X#*EP.r`i^|onI)k-筮EҗvElSecM셦Y֓~G>A^W֯;8"߇UcPwGs-}5bc)pڳS2$kw[4UՇ5wtO7T]Kzuᔦp?VM63rz\?Y Brs9z!p2;ik#|r[a[!g=,Ʈlׂw1XWef ƫVD)tL^Nn?Γ8rFJF7qxg3Pr|UO3& S5`їƽ}/0~_5t<᳷9h[C䙆xO$_TN r0󖻍\g'9YߎAZ-՘MOd%LM59U}v!5J@XĖ1fGyPdвp.O80v9f< smOvcb8fZp(%-$T,,5K34HDuQP"KٗdZN<9\vupdi}{>Q `>7ZNHM$RCÆGda+2ZB'pĂp2SHr] -j yhC_K^hyb5b=lО# pQ,[8XG*cE_ODNCVNš)i8GU;ۈ&_HfPHZ!I!q"EmB"~>"pg#!(Ohg3aNQ4NB8kC{-!v,t5J d @T~|p7c1?#HKAo*V"t@' @ P{}dY7` -b u: Z34b(@,i!֡%`D(0~N} G69?CL  [(B[= q.Ш=4Bqq%xg`]y=;{5x5,k 2)Blp'0\Wx@c2;U ._ QM;#tp[\6scc~pG{ÜʘT e0} 5alZ(~'gYb.cny8=לOO11v -{*D̿D[!އ-L쑾h hśH 1%:K谺8|H!rP6 ca=,(^%~wBx/[bE܋=!9a grܑN6C=ڵQTUnE/?%'bW/wsᓸےRȬCAIɃL;8bXɜ!|n>sZzs~Ē7 ѯ4[؝>sQSYr_?ߓߑǷKWҋayu!CNF -;ڢ0xǡؐ|Ѹ#i{KcmJqkjobMZ:Oo tgw%;y}w,p>zݭB/M6小\!8D߲^7ZՐUPq̸%5:=iszGRUgcefobEf -b,g":z_Jמ 獡#NvF:unrsԱLvSQpxWZy}&6K&w*簩2yCgu9Irr{A"rYLtފ#oserɁ`{&^ɛu6LfJSdSy:qMP\Tee`KBE~Cb2isjrqؤϷ&,%!T ; (]@{:!PRB( R'DD H*" qwPagȇ99ߒs9I$(BVK S%> ~"^=7y^as`&ETSYAʨcGq'y3좂s‚nÔ/.w-XOlDde1%PD _*s:bhqИvN~Vqt`~xv>ǵ6Ç_TSq4Һ"މDnW49z)p}8EGדrlD@`VFExߡ³JdT=bH2`#7>"ak{?~л>;0y&6)!3)l09l:`9e̒ (FPyyX햅#`\/X˜pQ<cr9Ut(PZ=/2*PmC|zu;+lrJ'&I̩ZgTn$VlDt_$ X' ڤEmۓJper7ujRzdYgg穾P3Qֵ]SNA&&t.C#I.^hz-;XO#v>c>N6nkRlrk}xg.+98=7Q; pa``4ݣARP.F}CycJO$ ]ㅾjQPpav:MaC/ao,lfʹ%?wHo, ןDY\$o4(^U5"kUfJglYsVXV^ R x_md-;]:fֳ{l`^`h>jd~rgc" t^hXx@@!`CӘJ*䣃t'w9O~[=>*~fnsK;jZ|[=8t#42B/kd@su:pPQD-JSь6t7t䌞[_Ce!S -"gf(`*`Tݍ=.ne4.OH"Q(D'P\ЈhCFG t}JaFK!k.:7ict5A=Ș0EƬ_lWXi?M12qJ$ވ:&$*eQyPEY+:긺 (# ~| G E 3N:8ͺ;8Oz@5!8&cǴ -|5;Gk :{nq#x9g 8fӸ/<.ou[@1?s!p@3 if o^9-j y;Rf5@nrv' tR/2}e_^S\?zqfLxÞ7$>hp ANAF\2r6hjіI,[t;RZq3~.Ӿg\^3E&$ߑN_%| -, @`iRkCٽV@8y5l 9H:ff -(wĬMқ\?'?z u:Lw~v{ S?xJ;oe;5CB"/oSlKlYk3)Nd;9ut3{ܟ1N|ʸI/WIs >@e@>AngkJXO]%i2Bӟ֯eǤ鎣2Մ!n 1!ktkk:K7J?(}\[0G}Eb=l AdHQ@[!Mڮ{W{zn4yX)(6~;aj<ⵠ*+6EI>9?nj3qf K10$H 0<_^ ꝉh4 ]\ܒ\w,_!5{omwrqqQ{/3=.iH}!徽jϾ&)id`Oˬc6'vMUE]sz=H٤[ ע/Kj{FܕXRgkܴ?ZWLdUE7pQ=’_DőEQoQ3C:~AW= 1%ޙhFIiV V\-[SOxgWVS{zTg*|$1ZpqXqU_-khbOc/scs^r⦅sx!!n꽫QZM}y6Tvnj -Ҁ' ;#=T>)2U>(I*ي.Q$]qWVS4)u߀`_vP@cMjM給`:IkOk[ -lZ -ϗΉ#j3I%iCibVvr/]$8)NIC5Cǝ/: ;/1n&K `ŏX4jFtM@- - aPBzVYaLYㅘk|kObX3ٱ~&6r6ȻOOG6ɠDW9i"ӽQEhƜ ,0b*e9,'aՖS3c3{DQ4H0)ځPqE! -<Q=0i` 4LOt=.a.ʰ"aDCE4TQDU8 cPf([ .Rn(ASxX9xG r09ACڗZ1Jj ֨IGբ8hJ*\'8(>M\'ot b`8dLT;YR6*q~uF.J=QrNި?(KGyR$%zQQţGC1 0Vg်Qf@e;b/CxbQި$D*,,  ]彂w9zЧ[0OE-z c LZ` -c16\0j -#ڭaMzo0|?@uDЧj*[>*/x}P~|ݣ|ݥBY0< }c% \*fS1wM\H tdrtqƽ7jCd n]7{G}^kNtiD/5D/4Dj=|f~Rc5uԙqIDQ⊈ȾCHrsH }; - -#xZʴiZԱuZ>sx9||񐊵n.5YMAJ"KA 5 *#pL6#-pͶz7ӦJWn]Rc&S٥";H+,%p jHVJbe)Qa^b(,D y)|Z)qn3כ X)a zmVoRG,K)kȫvٕɎ|3LV&V%XU?@Uw(1ſ!1Ő(ZeW0Wi x6}=A{a.'M6eKȞ&!>6!$.ݙ[+tOfUUFW#ȑWy{R"wypьÝs8>Zﵡ7"fi-hgMoKKiIuHl7Iz7QCi -n -\+k{'B>p6?7{qevCd]@?ߓv> eЛbw8Gv廝xw{S;|)W[E?r/~V迒g9jfjk`s@=aSN3w1_3"ܑН]QM^i@AH ,!!   aȢ ѶNjkkGfܵ"hE .qj3/s{{sfW/=4rl4:&eUԉU'br(PV_}P#>NW8,9u >K~i]ԅ܋/a坟ÝyDUD^Rj NOD{Z\oO#"V7ЊwXN)iQOͿjr˹jʺZ\25/$7'6}&o 7}״Gm:i=ic l:;wP^Ս Ϳ㌊|QMD[}fpNۊ<zǷ1tmk|cm_blԶݜǸv ?6OvwP;;ye*pALdRԩ3vΰOJuvuO*vt/v^^ٳK޳[s.=͐^cHzak=U>GhùwK[w@9(+JcԾ"_L+)qZ;@U=h̦E;ȇ#J$ëpKi -נZV7n7ˁp;8]~QBi8 c>H7'""zBJ*'T"}kC]dR!EBXd/48pܑ~p֑ ͎,xx5quoC('u"4c )d $L.9t?$\0Q ‚̷C|n Pݠ}f>g#Ѕf!8w - -W(|!g5q ̤+$a.9N )Br=H$$(H-@TPiwgpZwl!_t1 b v{ cbh01dU!$Ą Va8*Ĥ@= >re(>/}K _2AR]`O!tZ -WR`HR~E$bP -ev0CKq'@7' - r\>&@~ aأ+{X>߀8rɀ7(qVH pIj*$&9f̙!vh7z+bMDbGd*FU'9oTת+-Πӧ<S@?IH䓐0)IO0M_=_3[|5略3h5gx/4x57xk}10=c ֟.)~ HEnZ{4:ML5y$҇V'c0l{nj]^An}SwQDMЮ$M|[:A8n@,ҘHB>#/~|qĒ2U<}̷;u 3+ޣ&Op/Bh3Pxtp_t=ᙨ*рK_걺I& (NBQ(e(:\ Ź77ǽ#g={ U[Zm7SH!zʿE-!ƚ+ƛ9ji&"N}} {o7sY Rʳj)s\ΞMoBVkNŲZД!cR֐ȧ̻$VqSmDcYi@~<4VJ' s<0,bK%!dW"fŹbR~]ʀs> *SINf패';Q̨<Ѡs,AeԽ"xBBZuh)MְBXRȶ[ȯ)\.<9q]QMi$((H*"@V,f5@ !LK@(h5x92NGǶsȇ߹~z}c)̓*u96Ϝ e^*3WuZM?YP2r}mob ZfkVPa~RM|%Qz|Ǹ$~(ŵO%n -%ZnUSOPj8=G`ߡ_ҥhܟ)<fA%z)U#%ܫefeE䶉ò3. ҼMBZ P+ڰ¦9$P%+2-%&DqlZ`ߗ+ ks9l3k2"Z*?﯊"you@+a{6 }jKKKbA*huE!j iTo5&#YP>e~L`C&ZSXQr5\k޸qM>ʮSkMmeCJ)׻_V& *W"5QXN< @>Bsoh\!B-"y3$0T`½z5:<̶ɖøPFm[ÉZUGJ>EMʪ|oHY8T*Wy-$W6Ec-sFF*"odRJ,48X`f:` -ؼbt̡Bpק{+y~š@~,6<_ɮdUL2d tt[Z?tBɐ!䭐\oJީr1p {@0uָ]r]Ky뀨1dzX]ksTu -BV&*)LU*CqP|Ce¬Aȿ!mpLp~Wy z{ô1){˻O9w&)HWԖu㕧4K3!i03"Y3JJTϑ+ r|ȭ^:OuW) {hshF}p|f+iZ@՜#H1\%wc홗.:3.f$p㦥NNzj5y˟>?}?Oq$6nfDgpG p =I=@+B;D7xxK>ؼ04+6g|`rŁfڵCk3eO=IW_zFοC#fwv~Qir -os+ k cLV-&۞˲?f`;Dx; ejgA'зhv 7|fkg/] z ٿկ{x`),@ [ߙ@C 8`64f1ƳGm4c5ȵ4W+jv8N Z] _;{ z LpA8"4```"pP, RFC` -l¥zb'&jA'^R -4TxPQ HG</chm6F&Vjr -l&e -#n#D -eSNCCC@:*"=S,kP%;LQRBlt$js_%nsFΐـ޻9sG^xWSo-Tj}'润 MuyVMg/hF5DӠDdEa0$L!g*Si=j0DG3t9G.ߌzFZd-tm%mӅZ!?9rNGؠq;EQ=QGNZ (M4LfΙIJz{zX[3ح ټkqyVcW\YgCSǟ"8(s9~P~Tx>좸6xx!IM8JEo`iǒ7g`Yûl;x -ʩg[at5#}!UgєPp6i 6-)>$VG7yTE_UF?UcP=LxI ds0<Z@{-ΑR.¸j8]ECF.-D -ǣ_:N N&!Ƚ2~"RVws܏^ZqO%(ߓok"!dc@13E4wкXD]c[lظ ]lq|,úՙ3 -\+ֹM.}7מEIRN+g^3?*I1ބS8Ä́!9&1<&_b7r2Wi1_ì͍dIUTfgT6k^QIɷ<^3{{j϶:-畅w_u+7nJG騘=C<R}ZVry^).jpdI*/Wy`vs-q-[ 5gdBV.YMY2O(g6yK.omZ>a"^.#NzK\ g8@U+beV%y:Ewn_Bu.Ϩ<PD H)#LQA,"tІFpF RD *1XQp]f%'nf=G}s=WR*x-^nAIܐ84wQSQQ;aQP_B61xCTT0^,p̕_-]Qךnܔm^`UfWH+v)OmRIޒ)ܤ޹oEDBLH$ oA26.98]pfnt.*[;hQ]&8+e6lDzBY[Q+HouSEg|2R>H{-H#BK&E20\ߖpQ )qXt)*+4W֕V"ҭ &ۖg:J $\IN^vNWFv -h[i Q^R"K0T꺭bQ#U+,-}).$)" -&{d1pq5k7٨&+46r5 j:^q:(X̝),dEK9wkE5/snAph}OQQQF_,Õ2ڃJwfm4Յlț5{V5d7DbRd+>6)uSu墈&ކ.uCq~hН) -Sxgz7.^܃ZZi>5Pt:2e^iRuI*Knm7rKs=M2 JnHC{p OpCpC:=zW? --4 ]@e*{磤ϖ)sg.VY97[pp֮(f):v!;ikw۪n{B.^R=lRMPzA]H-u̕IrbVύ>u4BcuGLBd.XPWvﰢqy7N}7{;s& 9:t}C@HĶQc$:2%@`u#BF6_s*ppqp5~'[-LjL.7h2h1=D[!b܍Y?.b/Qߪr#icؤ#7&s,17]Կ+_6dǁ\DU#c$&3+Y+&lU}'|2爦4SJM&-m):S]{ýqwx+}P2 -d.W)6ncmm,m -ib191 qBG|KV@E1aɂ:3jQ!9N,vP>'Sߨ־XԤN]O}&gI}D]\wa% R)i~=>BO͂82ٙ!.g.CX~خe6JlQ*\iTS@H.!y`b FdA@A 4 aJ"cD'( -(
Pϱ+߱}`:{uI ,c`#ց]{I|OdE?Xc{< -8b¯37*535.ClU4-B 8۰::paQpڱX'v1e| 2F9#a[ lA{̷Sɥ,s0\; -"_ h@ |9 fрW2:pb5 a|'&Gq b{̽D|^'Fa7BMhXt'=o) <_YؗڝW(5ܞdZnQcU!-[j!.z5{%-dp_jI:Pw1 d_hwWеL*D:臕fJ>Y)hץ(Sc +e&Ir2j}S_l_W- TC|)3I]':&ͺ(f^zLd/.XBVJ/)y+nd)˼hYh=w2٬ )vQ,yvi%)YaYYWCoadbτd`Π6AfҊ`u ؋M,hSbE nU/*H,X%%.ls>abAǐSN7=p w -%!9kųx)-vbE8{`u,= -*̃/ŖŔ fL7=[+"|WhW+BwK' ,:}mDss^R(shRX\)wPCTffU*'EL;mV1$bل-mWC_^!S~\[~ uI}q-v P߻`G)@N9@ΡKհSk -km N3<:fjm0ormڹ55K֤Uk|YxWWENѨQ?Jw0%wrf@Rɼe%ǘג3Ly)P@w_wOqץu*N:ڕyw[6~_U%1/;{xb ؅>K= c.Ul&׮VsǭX[-uMu^uY~%U4uyqx"*ʡvlC5ިxxŃJs`Vm\clTf3iwNl׶ݴMnc3w<>]لmqN -`TRiyFxs.q|r۵yyo띭}w8>9|nrolʖҵ-ˤe=UΧ䋜o)`"<#“QZ2\b$D+ mk ݾKvxr~Kqf(/]p6Q43` (; e /r*x> ].K< ^9e>gx:,fٌ M`tWDL+p`_+ǐ5|U"wxP w`EĄ+͸EQ"\!dAל8#P ܆Vk=!㼽ay4gTh֩ȑtG] ;z6& -,}sQD%IV%~pYJFii~Nu?V,'ZBsS` 9}yt{\T_b޼1zDw5Q]_Z|#x~sKn)$U9 48U*婄\C"⁒RX?"ZB =zOᨮFgyfG*˒V{3f{OBlMz 4eεFO >pZ`JUD/y:Ľr y̿_ # C{-4k-CF(^ԽfjppQ0f|7\^a3d{wUҕiM դ 0ь]}QNbWT.ŪUV^+1\"h:еg=Փp>j --b oЫ*CH׵Gh(MAcj1:QLtwxBOg tZf݈kVߙ^b]jP!SXIsGN/l7O3y|-0?a LYB6b>@p-3(.7RFvsնD7ó2?YWyĪw6vXhŽ]ٖ eɳјJgg]ȳfPQ%L^`}a`aQ PD0÷Q )Fal7Ls:q&3sޜ0e \[%%I8ù s>pٴi -]ʞQK @ ?IoUWp㠻6DC{=7ff:47BsP u~ڪ`v? lo>mnVGA '&:n1ߒBӡC U(| YO"$=3!Q2 @ׄBz=HfX0IF)_u@wPlP ( PC2hM? tB"A -kSRsӚEs@a=2`8Ȩl3q}JCHb >$L$)^>8qZt^wK-uD'3Ÿ2q'vABpaRNH^ɛB~ CXHPCnnDOZu T 52^HF"$W셺=W3uЯGnj6{ΆF.f#W'~#{;֫e=֥?:CןdNvå_…VW.D.rah+i 8Jc=a} Xa2bak7lcwݿfwܳmЗH=_2p5YIr4'jqbjQ3o7>xDxG#G퍼y13K~{ԷofÆ_$TT.nTwR7\v43g7p$I42w7y Y<=Aߎ~m1[b~(h-hHh\`%li<?"ﻝAtWΰ)83Aq^aQYpZӀ4ۥWsN)LjK$4%Ygu 煵Dğ |1SPk_yd`ZT[0VFr2zeN -K<׭EhJ3y5YxS}k]|tDP%VHEfuIcQؘo1}c%殺9Us0clƐfӧveٷ͙.J[}FG]z%WPt!A|BT*˗$S^X`EаtP7)r>0Oc m@o6Sm9`ߨIvV8ת\+Urg̬-l/VʣBYNxBKdń3_ ܣگ逋"`~ǸCBGGAӢñG%8XrӜ+wcNg3de7 }|aQ$G}%@~HJQbB'Ry"es8Ba+z|tٰ֠iEU9H.%:!_YW˫mks{H=%Qi/dj )Բb-in({HWFG'5ԗ25e;8a\sI}iqp)2t|b -~VA `T;!V.J亻r'?$ -K߱!u="!{KsH_[p"$bP[*( b ݜB~xmuSv%2MYY^aS̃$0(8qKQ[Q&']%3ZZ:WtCY?֠ȺYwrpnvC}V}^8vw֕z&Vk}j15,(-aW¨/U V]uTz>+C4-(lA~*h7#};jdEqmim2Gi9%5\y볿_x,?:_/aa ճ`>GSʹ -]=m]]@^7^/dٿA0Xnb>/!W[cv 幷%ޮB:B:㦉fz~t.tV.=Q7![@$oGx(3͉OF"Ʋ9u5ctmim##?r>o<Y, Q}hPv ec@¤b=%F:ފ] gBgb=3) ΙmU?nqxkzq 7/ޜS'Xc@ -v>ʵ sH:D&u9_[sc>oχ`|mq2oTh3q6٬܍~Ivl?ᮝn9~Wc2 Ng9ឋ@e.,x p iq6.a]xj_Ǻ%,e%V/YUKʥ#LyFr6#Y,/<爯1E#T{'trcIICm׀759`w -ﮃ^ł_9}PV )x=χ_u1>FH}oM+@ lzx> չle D((`W% 1`A,H@Dņ(< C-O1D!ODQDĂg0;=;{9F 9PY0s C Yҿ#DHNb:D X -ACFr<(g3J,Z=X=OZ8 `] h%+"6!j&;@:5ͣ1n@hm -}k7jGK(]48Zw }0`W.e@~5Gn+jM :kRsG?:=@ON}DoG=b{}`]$7bu)bѽ5t?+f 5(F?C?b>`hUŗ`RwŮ`0o4H%$"H>)k xCxjth(m0k0QLɼLDcOWI%KrW߀|ExNyn@߅BV5ջ ]x)[,<:t6ᑬt7J+&BZ7pC]h2ehTsE9塡|(T7Tj -:U3PŸ@7QMVen)wr{q]yMWՌCkp^øZsƝ{=fKm`f9/c)QDy P+Kz?'\z?#qnU듸c>;sC V}ҮBܾUXfLXD%L3lw`φ1H6G[g\qǜqy,wy"y_sW8-q;-v\#,s:Jvv:;9:wlqfLm|N:h{u A!8bnqm* -[u_epKؐ**2,m7֛l1l5)0.7TJ6 W\:dk\^V2Yg`(vF#9. % }#cwJFscS[ŋ6-X f%YZ=_ڽXU9 ֥t'+mZ#PM88>(cEV~O8qT oDѺk6+Y"ʐ-ʑg{fzmS,maeye//L:}?>4sЬD}>͟Po ;`k@xry`A1Zѓ٣L2eit,ET-RBg}[~=h(1:ӑ (X2 d 3lj2|/N&I I?Wbиlqr1_5׸S3Xejf<.iSGCp" -80(ٯ[u^ȉ̘AȈҢ}QXqR9Ӥ'S E ]|j)ǻMk"-&1sT?pjPEq췍Ҽ3NZ,ҿqBj;(v<.@0wlpvL8!f)xy\ԨLȵ" uyGEuqwgfd`.誈i*e60 URUZb2XYK(nQ@M\)GO-hknQ999s{}b<31=uO\u]D1D[~:s[<ס='ˍykP0e P0I(HҜy2s&3.N#56CiuXShvNޠGGp>36o_kE QY|7jdYc?4bIQ4I\tl-4 6)1D")!ΐc/T+b۵ \z/NFŋ~>\3T`'ٔuy%&G,5E^rR!+ea򗤚a6IѶE -$}LR¤r'Vaܦ 7w 3wY`%Rf5Q|'&`_ԥ;I 2ۭ^8cGbt8Nşi kܭz a5_b[7 W`=.Z -׆]4T[]Mo:`+@. -L p? f' iA̓0 8 ׃S -{t{Ȁ>-fn)Eϖ:4@ro9tXr0y TO&`R3`Q19*hZ]nusp2Nm U{0C{2OAy -vP7A%PJ^uqW}@w&cN7sG80u -p>-*ka{l(H/xArA$upup}DwPA;6yDt3=S-iw8O.ձ]#Zr_`HD)PY^K:_KFn )kp9}5O= G; pKŦ@ ؋+p By:xyDM?} :[KWO21 F.~EG+#ɗK q_po-~#nT]:˪^nb -8K!N>C<O}'iǠd[[k;ϯEf\ wNrgũ!p/394L`""}*/@%Spk6\KÍ8†NQp: -jp2`9Nű yy9t>`:G}vm(/cH?5'Ip?P;2z4.c: 'i8ڍVW0.bfzWt[=h/ - n{h˸_E zyɓTb5 O7?OEOHhq`t Dg)`Cʘ!]Zv{*vkphsѦŭ!CΉׇ7OZ4gI{Y*w}? A/zPg&2S:Qh MP3}:5<@SnT6hZ4uuqUҠ%YVkNq+5WSHOQZ*HyYITꩤމ&8biޡ'H}1 -"'b{d86Gji`6D3-vv]m / %^^%^DR[- & +[v\^'_H {BWG7&3ҿ| )-F{lM16ͱhIbƤ2l}C<@,L\5G$jW3NpZzfyմyQG}*.*D=P̎NQ-xyO |JOi:D'mxZѬSQ7uOg x $>[TujZ*W+F^kSRΌUighUjP yj9n/L]ns!I!X2)!K CmJ,S,HNe'e%9ĕىeܬJiybLR^[(TĻ|~$A& \9 4{IF ǪXnZ㻨1b12h![\npI%\BZ_ +/7+)ەN}?&zAI(^s?dN~7_mSJ<ñ TMAeZ$Sa2s -[jfKS\q7K]*Ӵ'Ԥ1n},)F??2 J/W袙h!kS.s(N9]Q;yIq#IlĦ3Ein8U(1} -$pGn?cUk(b,% J,v-I.. Eu݊#ʘOʘA'GHotE,9g0@X3}9ݓT84ɬOOZqIP/y_,*ʷ8o{PzN-gߑn1>c ӧ#% iJ-,KRĦwIp^4;D!:gk{Re܋$$ӻ0 -Lg6)C8cl7FgaTV?x B\,Il|ଥҨղYeY&rM"<'"*WB[+XIYIoR٢M^s=\wD\C5`0D"83ƹBqfL7JHCvKCviH#iȆe!Ԧ.e.I -^ ̦{~F`8[֘B99c@"u(AxI$ %_2JF_Tf!شzS۴Ne*Kv -PrQ? -_H -\ la d5i!݉tOR r+ZJWޕeE9X 0e,sòb 3КB[m(xuQ!b#IY}XLa[8 l5N /xF6#n7LŖ-lڶ* joAe}u͏Dt##s*g16Jҿ< pnPBUNP6t>2 kgBCfQttR@Z| 01O'06 z? 'Q@86!=Õx-~ 0h兠V>xڸ\[ 9/G0+"<5`#Ha 8iAu#y㼖➼ ŜG;/"WX_B_-'{9ȍN2I{F(;޾^S@y\|N u'^5Mw6'݁t$jV; . ={\\ ry =f -0^-z~I8m|E&w͜>ɤDtح;DM"P2$ydIOK exJVғ;؀DW!-tUU񭸆2Gq?"G@ο\!/"o™89iͦ=zГQ3pkMrpqUFjFgъSm$3‘O"%Cpb.đh8!x ܒNuY"o$[ TY:Sf*/G|6Eр&E :=؝~@JDd j|<\5x]7\uK18 Ψ)ؐ<޷=||E>86pcQgvǡJ? -`>e TNXI(ћ`Pl67HCNI6ܒCHrCEIίx̲\fimc?p}a2lEa$&4lLY(6COBao/}\)A55J .{]8..]n r[ۊ(%*XԱmSӦi3δv!mӴt2M3Mil/2f9ߞ>f&mJ`OfO-'_Ʌɍˍ "ܱj}6p/{Vp\qz܊5)hF+" ӚjLjIMs"fÙ!v43gNsCܠ"\4wYSe}~@DPCܦ+;t/m"hUc*7'sMέdFNfXa젶 i{~0ק=hgnK.UEg_  yyBrpeCmnNSgcDǐނA}ۘ~#ۥ悺\noӝQ ~+BY_٤+Ш>BIN1@QD,60aL@ش æ4g"dGٌt*tUVG5U~B$Zʜ5!M^Z{&Mpݵ6W&dw*&]g] ] -+"\F5uWep2CiJi -zE{RpqbS#uEuSnCw}jwςb_c٘B5Y3xwZ. -וywy_sjJ`&FOy]7Gif-PO՟ -f"1j=d\?_T䴼n"[n~i~-J#0GLQ;;ZPŽ0wn)j2@eE~W9tYV2s܁wyu65WGyu7HJxZ)st~P@1лoA^nhRqp@P>CfdJ U!#:¤zq65qMMKr)=kJu.ӞF D5-ʞ[ -d!st#2ƶc8ia=R|+,a_؉pH0ç] M&)|II74eָLZqhcq=dLO ej=N'$$O`fbI"qH+FB3sH\3oFH28O1p#Mύ!Z-v87 dRLL=e\,'`f< )H\8شhlX|s/#~qxqo n=<9) Ch_$uh -ПfIH^6]p) D"\ށX"vŌu+XEJʕA|-p~I|gėPG@pS%gi9i%ҿL/וP1M}SQQB_CRJSNhHER !|dB29>eȲZfǚ550żmw\]繟њ@ҚCeSeSE؈xxu`E D994|Cݬ`@c\ 0^_o !(`$' NRp>ٜ69mV<Z[9ɭ u;yr)ɘ+ƫf0jRӢ P676 -}@R;Nl_lL:X;:8 u'F7yۀ܋ouQ`= PSy -*_6XAEl<sDw' L7;0x0ZSלV/R"ȭN'w97?=G3sǼBOٌ<݋*%_꺑aуBFqd$$o+%9V)6 *5 Gp-'.o Y]> C+"/NyYG(2ꬢ:lΧq&9[<`_Gz)s 1'#`uQ/Z)ʤN`uSJY1ks4r.f~/Ȣ!ӝ7:WGP3ٌV"uC.b,lN%3_gpqoZ躙Y<8I + ᧾dJQϟ0ԊhI>K\P\͜E140M\ts :k42JC斒e.F` J.$A"gѦV84%^:e^.R/NZ*4؉zzu uawc3vE= 2,wwȍ>6^X㴱;MI(M"pX2 ʏqPze6>WNbOr۱t?63/QmvU揱-xN,+? bIaJ.l?=*q|]?o쵘ݖѨ)nyfQ%*W`U56YQ1 ^GXmnzxj3%Gyg{GFhh:!m3;m}PcjQevlMv`7v9Xgka}9VoE{X^nA+'C %bY(zԿ=}bi}z5 56t38zc?*ð1ӱ#9JYXR<,u*BSPۓ C%(Cg( -<'bg$LCRimE/R. aǜ|+W㬰@=ծL?2ԡHWO,TcNiB:[H+~vHZENһ\b͡\l{Jza|7[ +Θ_!90IB|B\`/.> \/E(TL : <&JAigV29Rz)d>rIv!cv RC⎙!c1# !a ؐHĄ -ѡIBTh0=4W -mSL -'-kzaRYA#[]dK3f H0$h\FFhM04ᘮiBdx0%|09_#M273(Bj+7& -"0#2L*8y2T2E$\Ct2_ۮfFmo^R=|yߔ-}ԋRR-)>Ϝ"3*{$efEim4%wW^zQM ʶ&fPndXVL#1Z[W,2Z2cI>&6j!<@ۖh!Y>q4M`,e,x 9*#fT{RclO8MIE,%eF+amڭku!u -j[5Vm8պʭVU_Z-mߺC[[7䷦A-Vsy\۾HJ1eRl4^kЯBnfs nԢ:D~aj^)K`eổf+]M"ˁ샓4(-wZ^;ir) 㞓nwF[Zi&sMk.:⽏B8jijpkxju-HN~spRb]05g9#э܆AV -xE{M\0pvƎ4Gh 1.::6zIù:bQG, r/ֱ>[#>AVG%h8ٜh[mӝihml҉GccPϡ_ONIt=.9_9%tzuR glf13] &;Jw>%}iBPWf2PWIU̫8rf`Db405nt;xZj~yl ҧp>HKo[ȝkrf>7vߐ@a5쇃L  B,$B&'fѿHi5\Buz}M=żtC:~5V)@C(M44sћ 4棱XׯuSDg-:XsE]>c}X+]`F>/jh   M@'_\h(Ac{)ezO=lK59cnE鄩zj>^TPnBHȅ@B.@!B- !"BAQDTRuκεgzvvnݥ]9o|=y2|k1;nmmW׆p%f.Ōb^pe^wqbpGX}qQ,MB!R}[;q+67Dĕ8.n0np̆vr|'p"~b!MX‘8p1Slӛ+,ejwѽW6\ڔsxiXJ$+܂d'wc.#2-޺[b_77 I}O0vG1QݟP{WH{1jm }=]8c,Pxub'k&j~GIF(}Ls1.è( Qv 0 .E!qbz]BgNtW2)ZXKM於C~ʚ%X$|@5敏)pS=e勔Ǡd#$Jr#K*C@ZԂvenx:) -f$sSk48?&"fE9OO5_{Hcq2Kc^2F9)_<Ay)(ѡ]QVE9*(Mp+Фtl ;|Us^lcQQfU=|ƌsdL3NY)GQF@:,xphRRW€ - WzPW [jƙEsjN1Ǩ}|H@1jO'Pݛz49D&N7@9z_ЦG t|4j JQU*;,:7:?L>fԏ /1*Go6Gg!=GrO4\Q|̒մoѽ =?eiѬ_> Tx -`5\@mj#5uiBuc:NVefZq1^Tr*L#NKT֬`o+&&uh<͔zSy(CC xIe_3LVe(%dtSV@uʹ[hUIѶ -X6# D(ЯvB / ?02xmY/sd?q5iݧg&#?E^`!! rB*d lnFf2SH/!-|H }z+NRi2Bz'6@m W7Dd;灼i06@0{]1K%5edX+aXo/m` ƣP;612@:Xvp {KO"ޣbrϯ.˥*4q~d%dԳճ|$$;G؍=g~Iރs{Ecpnk*>'͓|]%5!qw4V BB%}lN:PBp$aIvg9s~DD$<Ɂ' =Q%_BfjDd{=YpN')|FLN3,19%]`aB.(}INPWʤ8xd8Du:1>J;돟Ч[o pp p&t;1({@}>np/p_b?'v5Q5M+[4[Rjcr}Ǯ{GﱷEsS{^ =9כ `.AFhC+qrCH_i!eWk2[EB ;ɳtUvZ+~~vuGMD]쟀F3A#bÎZ̙m e|??[#(FXI 5hHKS?(4HИ9hb4qR<_Zق5b.@dP+^?jFؤsbguC |h4)ڏ$/{;vk.rrkmOqR-Yۤk#ވ ?;@_e.hza}D Bc>رlÎر;ꔏ<-zUv5ZVJ*T)W x+>hv@Iy _bh4ICgV)B^fUllF-n~TTj{OĎ\봷hh{NC-U'5vk}?UV0īܐe-5LbCfaJh*w\*v:"*p~9.ϔbUnܜoGEچ{hsVDh_wTb-pMD(9IQ&1S9DqpŚjdt/ a44ztc-Mh`yн\g̣:0+*"EPEaeXT7( -.ǚb&Zq_c5֥1xXҨZMD? \{0t^>|߂3s1TG9y%41W1~PŌV1V$ٍ6es[2͔-WJ3-WAMJ`?fr1 6 k`T78bEqgO9+h`U9Kq&(%a,pFIJHc0'+ ?:cx#%S3=|K!1'tTN쉽/[P%5)J)Iq$[d-`.s\ŧ<+SJM2ZbSI Qg[)#Si)ZdQ5DJH5ʜ4LiK+Rm9-QtzƦoԘТKj0;1Ue -v~ۘ7m]Č~2g V|F2-cY1YVEg56@cehKoPxve -G -r+^eti)̇ ߶LUvyWMP*սj4ʳrUS99~nբf@ pWKXN/`^ @8)a3/ffl^˹-~**uv4{Wnuٕ-thFt2K` Py;Nn{7M.v77\ĵ7TN(WRjgpG˽_&h'?mM^!A918P~!0qGBAlp.|7ݾ\Gx`K:9:A$'1 -G f:GMhI ކ* ]{.CvyH8ZZg8 U|J}'|/Fk~Eo#v{n;tk`3?M—Nñ=]|m--M< W8/t?úB9sIm|y=C魇 -ЏF{ok:KkOB<u:=K[Dp\џDlAOЕp@F=+1ɤI *!q|@#q8մNjB)odJOXWGta(V2:h䳣:FGqK]k!*WmWxvjgvBm1<{/H.ΐ}"1++YO䱜LYvNATúuLM&آMG2ӤO<JpW0`6``6` -$&!IsM4I&kf]zd=Uuӎv6դQҺN:mkUv޷dz{>I}R/xW%^սŋ7Zʥc:\G&dQqXtS gb"㙏5;e2|+ -O =.V%?{ewV,Y ,de#l33a*pN79nek4y g((FsP;."7)R.JŎ].%Yˏg m K(dXѢV 2X4Lq턶GIPݦ2=Ke6ҿ7Q׾H_Ny5K/Ib$SCrM6MNJ)&X:@w8]eos[<7C_kҝ6GYyҾLh_Fͱ 3k6Tmqeioi⧣"D{(Uh:D,xlO}fۯ_\DVyFWf/k\2,'XL5v IM[aS4,d +48/QxKEDd'{VwQi> fѩ6n5zqmIޚNuk>VֶJTzx#f(-Q[仗G~C(7_eJ"(YRZ X;TvPљN3eՔ1[(80EQ`#.x O~S -U..HgI*1'k*j;ʃ(`KO>=&z(쭥z MIv Y =DFۤ~&~OF'dDwK렴ĔDPKINA? L!w("d U9@pA҆GI#ydGΈ$ ?KŻ$ }*wJkYEHM%ZcUVQ[cȘ06HD:)y$OyZ'$bcxMćOb_O7xG?#~<Ši1"ѡ5UIJQ٘U!}z I$m8Ms`/68e|/Hu^dD~@cL<0""2 -* 5"(Ȧ(( (8* -+˩₩1n&DQc%i[5ǦMjԨI44>99=Ǚg}T:++Hϖs''- ŏ;q?>Əq)S&ժt"_u~uyzYWz+TXGO~>/~طb-v7R(=zB>C,N)V|^)P+[]G9DFx!Ngu%yab Qh@#`52yi>ZUƏq@Vf*%cDuX;;M,$ǩW5Ġ1 -㱟LVUG$oV*V[rcգ_Ks4g [{/^g A' -hEc)hdc)E -ZV,""[.v._iswr# kG>>wpelwUSVw JhYG%Vu.ZꚢZL-q"|Y܊TVjZ֤y-*s?RwTcxJ1lD%G(1,V aAي /иrF,؈lCuR#~=;iAo m -1 -ǽl09C"J (EӸъQ)5UkTtFF[4b0dǼa1|`!vS\7ya&po -K#.M ̣>0dQvMvD}}GEepcĠ`Ԉ\Ƹ5qiFkUظ/MjzbNs5MSTk7IOsf`f{{K9YeIPfRIIHJWzrҒR%SJMJM]j%7)MG`A,W}́z@y>9JTqd2јTI)& -`ҧ)1ݮEXgޭX`>x7e8نV7m\30*ǔ.SR3(;[9%ʩVdLE(}t jK4l)w)We 7v2l {Emg6k|m~sn0(z8E BװH~Rr_&,K8p.+*.]tqíAaa= Gw1]_5 ͩPFs([\!k\>ZiJɩm*si-䱎jb`;6{[ Vf6SDEVFr{ 6xh$2.c}cc}ǹ}7TGKH1Ia1y5빑oz v^x2 - 3#jrK y36 Y+0;g6~K8N[ u?E\vih2@o!ނ18I59͌# </W/RK ե e_&*F;Djǒ7pjY`\ U -\eN>aFї2gl MVżuؠu <=w'-]U'mu}r uvxa}k}Ӹ_C<ω <74}tWE/JD3|t*Ш-6KANw}eE|y\Y"qyW(29?9<{=;BDzQDJ^Gt<ΐ))y|X5<\i0w|G'X4HG# |4J=ͫ O[;i$Nb''sqbױsqiRM6Z:umU]K+T(L\Mh B6&B Ć m0ډ3??~:w}~{cc/V0]b -|Q_75O op}$1s4WG - :kѡ\i5ϫ~j%?L FX0i*\ъvif/hGɋ*ɒ5Q&>d -eEi׸?-Ye,-5jԪJ-ЬyC =ij׌!ƔiM5a<NjĮ1]ר鞒ה0F,Yڬ^FzЧ}c~,lZsLf1;5mnДEami21˘F-Jn\U c>nzRqU Zju~?>./8l>Xz{f,3qږ)Q)&iU֦-,xwnm~LъksxUa -WާyEit-<3M2s36{f 5dw*nנݧG=9bVr\Ym(TO5wU:koÇgZI"r=I8ce^FːH_mUPY^g8[R&Au׎*X;EuTo͉[=?kh=Rioޡyd,}TckDָTߖۿG.Ljj7T2|[/iW?ճ@su~NB/ ]m|5j RC%w{jc@霑sE՝GT*^eٻހ_p7ά濏YjN~#?yJ -ZUVnTTeOLCS-isCO,| $[[&[=>Vy54ИVA:R#Շ}…rn1*bQe\HnUCe٢CFS]C;'Ḵ{Mb?9WY73hzϣ3N Aۄ%n໣RU_*KT>`RـUA6 j`#e )>s2/]_SIǴ0:tf|0^ B-'F)ՃRuPAED6$dLeHKɘJ 'w([*H^T^r*7C%~(cFgJ D H~hObl3ɘ*QIʤ&*Lժ ըT@aتuL.EL%*Pl܎3% Ce{ˇvLJmϳ?ݿ}" JH%:bv̠RѰ$H@phĈ`ּ>5&ym xyX{g(b5 s/w)1WΣ0JWAJc6ԔG1 #uơK?C"<˚eße.o-q3<{>Mzmx_ShB?ʹ |5[By=g®r'oϳ.0gK2{9 2{2r{ 8|oaׄnZr1xvfK04&{CYi>>椏 ~q>J%?A۹B>zƸ%9j]cF2ur9ACa?/~곟B;i8'U9@mcAg|FW(ćW$ ^~Ea{3ظ!'}q=/XRl $Ip.G&& ҝjKt>oKOlH1ӝS{7$ۘ~S M̫2ґZv>Ϫ@VOS;tF=ğI |ݞpOѩye \0]׹ i"'kL>RXf)'Z:%t,ev+-H|';!.'v5LqTa'&3iB/mt9.hXIdn9L?Ev( ,r5^qOCr1/$v9u&q'-[|c!.yds.3: -On1.̓ي -U2E|$E/"|,||\q7˺LOgTT2CeO8[S6[.R^/i8:4D# <4(GJ31yJ}P\M曓Tp$:`v [6 jV^?!=8-:qHCh(fSwԫMԡAS4>. Y2a ݩЃj -=!vA@{ql5[=0fO53\6;ܠICtgUaɚR{Xi Tkh79|uq 5D,P}JEnGBTaT,5VŶDٜ*e/Hy&)7U9]N%}Ik2*#\gsó֣T= W|$^h)Ub{ -Fʳ'+מle'I.;FY)LTc|Pr:#x>3zhL9eHc_#yVR!: qq)ˑLS,yJO-QZZRL#}R\ z@IGeǕ6|W<h5 ћȅL|}^d+ -W\QhŔX]tȑ_$4(c,J*t=TO\K%7MEF4 gR]AQg]wEЪ(* --, -BmăD3iFUi;1&ͤNkNc̴L56i֣c,d?Y罾}FL+`WJQdv|dȕQ Jv\*C ~;+ιOcqX^8V±`>( *id_+;IFYIJdT'[y*u)ڋ'/ыp| <<_h&q;(@1τ;~$J ~dʼnJ**@0 :3"$ * !yURxP JlL_qÿ~Llu1JXbPt|R.Fz#ìCH Njų#aKgpK-/p -PH9ĜE̓}O?/Q_µEgKO F+k+:w%KF.(\/Qu`;ϰ-DMT\~vPBsy&1O _?f4`9VAZM.?Ppxs{Ez3r [d!m\@̳p}jΫ)$C7XlaX?X6N`LM6s6U|RMySpw+TQ"͡|ի^3uK a·A? XWY -q/O=r, w}qKCM~'q~g<>,O ڙzb/ku?#|agD:a/Caq0&Xku7F4(8!8G䠿&M sA ";`4"hu&x`x?NsfO8)w /:r΄;M6HhD9pɈH#88rpu\,b%% -~O -y.!MwAQj@|ν:+OQ8|H❧I~E?"sphBp;C->Un3o>$}|QX5=:7j ~{=Hj=k? -Ux3z]W]Rt+pk>\P\fFi3[GP'^uz|:z:~CE0-{/J'i : A ƸE+Zd$,%ض㷋\DKè!A6]Tyxscu9/pޏ#N[f|a -Gb]m;V]a;l/nvS<7v#dr EA+|2;17bۊtf.v#ʎ^DZ=B]F yBz}d%,ã%2vb\lQ*'a{:sυ.#U{~=7QBy5df'ީ~.=$8#`; ۓ=beد~ ?:CZEKo -rzSL9q,Ǭ`#vpFHo~:b&'2B". -8p@wtұkuԣj .3HxU32_ Vq G-*3VÑG&ȃceTY 1GT5Ii -De=G(\jycm+U5qr ?'L84^zJKXk'/SIF-6X3k,!K.l-HWMbHQuOzU&.UUfRqJL/tBEp |'6\p-^~w[62UcJӔjTM3Te|S**7WUV㖫hjͳUk}Eso*!=pm`cmzk.|q⛃SbUeMRŢ -MI*NS5[ֹ*ZS;IyW)7urR٩O+fL9p{HC -U |w*_ԖTRST:A575Kslʳ*VDEʞT5#}2.5-cD55,! ¿4`$|e}oJx  b I5AI*;œVYKfnVbUQyUۺuն]ﶹ]n9 d'y^z|*|̍W%Yety-Y*R OGrjU(Ek -&-V_vl4~PVg~”߬8Ki̥*PfYI(/TzT) jhQjE'Uo@ɾA%;Ċs2T\*>W?a;Rԃ|ǤJ pϊ|THپx&')ʨLiԪP*JnRbuDŚXFwlU|^U կ+|DUݬmo W -TP *1Q -<|.HF3ńٴF4P(NiO;JN3X3.kᡖ&lAĵ)0(41{$f[3K7E,^mfv)##ψvl/ dx:4z0^oQ&R1&J ȵ Ny=/亭Mԃ>!g}6blS|s>imd7yp.]6E,`c 5YQ>9fq/r9br9c/[yfg0% .mm,o:HCYk7f-Pl,`'&'ߡOQ!zt~"'(~sbϫ5*]Msv,!{_3hl<&Bh-TlDŽ0 ň2=r?F(8 -a:tPuVr4%-|4.F&1BJg蓳q\E?OAr3!pFpvR#<+;<au:Qx\(.A]6}fJ#+{^8i=syS~}=*:+G /P]Wiԟ%.~J~B.i\:ops0^/c_>Q\f -4G5t̻jL?~ʹy -JCxЙOEh47jvP}hũ߄3,ji0)(' -L5{ #u̼M`pEWhT՟W<~`;۹v0Ŵi%mx} %rǘ as9jj=7{L`e R5:%.Z;}Q`O#6Zm/u؞{݌VlEݥ Te е/iVқbX1\G.t욱k.l{]Z쇰V+#]Lb -Y:1~6ktv 5bׄE g?RX a2)snM?ӳٮ:e05&9(Fd}{\,XH.&=Fڍc~t!셱ۦv,n/f:z43UaKH}$A+oX&fp:9/:jQ6LC8JdRruaĉc;ǗN8NvlDZs:M$m״ K֭bBJAVSV1Dm0؀A h*h6&.ZQPG'e=:3Hì1V*f젗 c%Xz>A4lsGX 㰔gKH ;;Ѩ$:u42to>.& zg=;6%ʯc³x/U|8fwcniL".|5ը\nsL]:Yuv0-WxZ(m٣fA,ǔVr vM{RaG^{jSWKVZliDҸZJJ[;lWʺPɲ1%(n۬mjS" -ۧ:\G8N -6 -CC7]'caVDY]-vJ~%uJأjw)UԱ@ 1E(llVG!~*h<G -W^k[KBzNUy9-粼u7 ;\MZL3v@gi%r1O5m - ջ+rW]'OWT]HU+ީJ.Uq}\Kryr{oj'荓@.pm4$x#FE[תסץjWU DJ[զ~UT㟐ۿA |EFpJ偋rPOtk#Z!kR]'D~vy*婩&.W0#gGڅ2j<4)Gh/òRYcm݆]h44O#"YePP\u9rWɨUy}4t'[d"kdlUidJ%#DN *\d ԿEسA,$!=P ˀ91B4B6Lֺ"og4t@ mM@mݍ>T𚱮ib8d6cLll&qc|-0'3/<~w4\|tzFaɪ{Yנ6t-#Hb3ı8VjXCc1dOT -3oce}~z.hE75L\=5-Ch,I5$so%{sIFMı817v0&;XTVfH3׆A!s++z ))"ö[/:@ndwt/ ıv?~ޗ}S) -kyR{꣯s"!Rt{^sk^nh -Ƃz8K!Lt?I!q8feep#TxplCN.a0UXR|e>oH])a0K$SgX'0ٟq%=y2ղ1@ۏk#VR+{ @^y3xޔT'Y{.o?$ %KE&<{ŋsgW ml}y`}ò{ސ͚:Lm`VKs%O,~ccl:W {ś4썓dŧpO/yC/s /d"oGG,~~ͤyIKLWW^/}_%Կ,jg'ހ Ufyw?6sZ) -:2qӺ{Esxq~&̳gcۼ8m~v|;׉8iM鑶뵵)F=Cݠ$@cL ILHCC􏩈C$PP}~{<$% ݜ73 0(_fѯ=MgP^ O߰y ކ!$=~7V!Rd cse e:#h$>+xyK+Dgt*sB?Lm* у_u]S25t,v#Wȑq?>2S{R#aCdC/6k*< 3ϋJ\;-[Cw6Н@wY4:0 Gt7)T 2d V9-hm[=c0g!X=GG xl'[p3=ѲЄqQϰǦ![[-&v؉c'vة`;fL$GS\VY<:ށ(Na |ayjiȓ*ʝʕ3ݔ=$[愬epf(Hicc{SP2(:x$!(*n?/UK/w6$gGL*)r F%O9s* rg}-ckl@%!4 -AhߌM-]N9K-uma*$MG+],ljj@iCePPo)CН$PnNS!6J@e4U6]?MS'hu>[w4qu:@zJʱ{-hAz<2Lrr®Y~ΚE~A!ah66@A<0ǀfq&m&А ឦ ]` ta/)q ĮQaE{HYaNaV6 3]Qg6{9d7l[ Pb F -*e(P*SS -J/Pʥj-2 ʴ:ڱj 3Hm-ɞt;oel?V~YpYKbr5 c̉ջc,NY{&Μ&38]p~ᣴX,k:gHL6}?ѯ' v ?mI[-~x;gr!q68wsΕΒmQQ]·˨#rs[ 7c?}&{vdVĻH"8sIKi&xA;.Gd##h^e~WN0?HH3(qe3~VpNEj'[ٜ;nG<$H9X< WU~H<^W^ef\. euqDINۿ^p᳹ϏU6K<`,D$+5>>ɿJKb&>f- | -Ol.>IQAaM2z 2zQ{u΢k~8 p ޿z]uq-l$.%~u9Gem~~|?D~bz":'~BiUh -^VXe]SNڟ&hq48Zj%v؝lj~>^n.NC)u}v!~D_v<mv\pǝ;vd`IЈ"v;;eZu&v;#bl/"Vc(p< 4z"%kЙcp_/;muiG:ў؊ @ENA{;ӱ;arXeQÛ rW+b f8S a@䩾";=}ll>B~ *YoaT1v|*8=ط{Lcz\cQlz+۱ݍ>l`o6 ;s:>GNU QuCt~1lEоkپ Tc ~o~;@VdjYdg:YG-e:5c_ ;~σaWuMC,lr2ژT2c^y;u£)TE G7Y.wmkUh9WJ4fy$;B5ur%X| EΊ}ṗs&o/E̻,HK}ܥx#+iժDb񠂉jO˓˝lSMG;lqf܆i I|HbxSGdQh- ϻ|Iy"QX+3SD~ -& y24Xr5 9gϢ)K{caq+X³Yφ$/"\Cedj(fsI>'ݲ=&=#U0?;ӼMvū_nF5#\O&~mXflؒ! ||e6;A+h9/)>O&d\25 -r73D V:HJW xmǶAlcoC%K"K+>|pN+=`hiy׀)ޅ~F5}faX5 ZZ" -nUƱ3h:Z+neJ;=HYB6BIH@P !Ѻ/NT;նK2x:ɇ0p=!?}f^LRpφ`@Vr@G Aw"0<A!\ŜԪX<71 1 '#hGw_C0" 5m ṫ` ",B",BPGbP !BpS/ t3Ϟߧ"$/0` %:BrXa`F6;XApٕVb\r>i:_PK -:G/Ґ9c+.q|h"|X ~5.5uбFl 0a|x=u04.zE4)x C$Hl- yױ;'jn i\ W8tl-бk؎nA pNlEMlaY6{ר` -Y;y80_w97=Ecg@Ҁ= бQR$Ή {P1j` B΃Vݕ Yk`Õ(,7U -U+'F|` - ^EMB@n/+iQ'B/ paT/D;C!XB"0cr>Q88/l0݊M?xy~n07|cǎ0q)SMs^(d^^2l/WYn_zWl۾ܵ{"ވ־o|#G?>3L6ğ=w>1)BY"D-U5ڂ¢CiTSźƦffpvv]|nܼu}ŗ_o~OD%}y1<\'_ gK"0X8d$ D0QPp)#`@L6-F8n#mO@zH(=&c̾dݽz~x FEyy = % G X'$`(,K?W-=C o"[ ;=Qo;p0ȱ4Ï?!Idr -bXwAWM1 0 -z޻}_>xo=z;xɓOkMuDT__ba~CٖsJ:CR Z G#e&\WfHKi h0a@À 4 w|kfdKeUh_ݯAųs94HASe *g)AxӀ n_ToO*HSoTb.W]ޠZA Р%4(ײ3n膆>nE$YL!`*_mԝ/QsР 4y"ySIfuaƹgc,i0,5pCu~S9Ѡriȇ۝+]xWY"Z:ӸdM3^Dv 97V0N6CC4N۝#>1tdBG*@C'ie$5hͥotРUrS!\ʖrz$N:Ҡ#{脆ƒn#Hi КʷkJ -A˱)sNy6K"cwgI=q:E+6 Zg -Uo-/4CTРa;rV(ՕБu9'_4qbf՚ *ʶ̅ڸ|5ǢT۳,8Ȅ#Eƾt^鎗{<6XjwУ-VZzQQYkF}QLVנϋIh4X$&}49߻w?cW{YE˫}?Q -˱lpWDL|rV\`ƉмVmӰi4l6 m{Pdžg0|ǐ0aV]ց灡F!ʺ[Kn۹l{`?)`oh@lǧ"sf\޼-RtɌ)Nm-në= -5e'#1=0htHh#EAg"F Vh•Ibm0;;6 7`2>A :SvIQĢU]1W B% OXoL[n` `Q/c×hޫF'Jcs_+!DtU3(˗vjYy`xN+1™-x[VJf AƻC),ȗfjkۭTkëK/ck$fLGz(6lj;^i<)7m}Uɰw>&t%4aS&Hsĉe!e;l[԰0ݸ/WioƮOW}/>{cI_ᜲks,p!m,g9@Ov.Rgu6A$Ⱥ[5X=ښWǖͯslwrl$&";$&,aqJ'=ʲ[_vwMæaӰi7X?ښc˖9_ 0tJddD'%x:,&rA>'>\0EEh`NӽGWpkz^`x +Wc"R,Bq&<$Lci7_uA[=kV};Ǘ/ b$fǢ* ˱\PW@i.wEfx΁HmjiHW#-]`0(̩ IHL` HwEĴϙqrxsvB@E͌:yn8~ ^I3mfځ6MmҔK IJ qCwI֣yGﻭѾobKl˖%[^ p(t4uU}\?ɩk3Xb?<1{B1 )ʠ)u -e;5+jK״4Œ^S5x{z~q_=a8 ie/ŴxXj(Q@ӨʨVf =[rSPԤtuEhx{~ {/ͩ0/!=k[8P&ڪY V $7yMRULMogn`##4n%ubD@tPf*haTIȚ^ʸ,oe>OUq x -"8g3h.PԗMЬ] U,*WPW2M~K(d+\+x{ڍ^o_=NioYz!pg'ئb -Z(e^ik{dEDUۆa}B{_k_ӜB3sޔJ(6y -%<$iCPMAcqd"mnf:p~0HA\^0K Ì*QJ 82Eg`*)=P3؏6r[h/w`}o羣=\[u᣻nj:|ͶoZp7ȗ|ImKu:mlB%a50as5ޱwDGI^{Ivx\/$ٝh cD,IFIdB#mZ47"TՁ>m3V?1Yiޯ-:B}Ky/eN(^, -юd,A#$9Z6mtoJZmio=aqS5ݾ|OӂSacO0.v8hx'#TQ*LIHLʆt ޜYޖ~0˪a -аm=ć“!A)# xB1B 3QFg2R!@ R`, }owYr6[iì+auc71'R 9#lD}qNܱqZӝNUzuuk@zWEAAP I\Bx $F$@BȅpAEVԺ9;m-ʶ?*9M8bɢv:jh"(VV@ߠTei4EJtLpavwk}n䅜4~1+=n*(NU -<L;sYINiBx6 -_sZfFGܰZ)HB':!TUr_JDot$ H\$\VQ"Fa]|VaG ^j2#(Q6"*r*&!i"$]0 k A]0ݺ4!>DZр/rz[IV-9~`qL45z]ECmdULDD](ՀOICVt^DA$"C V[+{$SL:Q 1hG 5M|CF^kʇZx3UAPi/  n҄di=ۊ~i+zd%C6@>k\OX["d>Еq]iB6gx;iذ% -gd9 $*MM//uxUakfR2ȕ\o`*X( 0,OƤAq.<1*; O[T{j8lQƒ .3&Ba:A8/ W=hS g4IC΢/}ڐ:=kJ]* *8l]Kh-nH6j &_ciS 3Ҁir`xaؚDy]Mݧ 1M&o -Zr-s.j)kjTAAdGO۸7`pHGܤM$Հ!o?f*wm2~\?h2b۩z2lnʯK @1'TYY0FG)2UhӲ4`^2nK֬f{}Vm&pҁ-ZwZܥ5UUz(ԦMjJ m3GrA A%h4 `Z ЭlVy1>g~ |y؟~uG? ӷmHozޯ'|%:WS 8#^87Ѐ`SӏT]=r{L&u~C*gN{i%8 dp?3 x \aheeh jOy`~RMOU!KrUh>Du38lj,J0pzT~ޡ{&`jmյk˦t˸("R(HɼX&QoAqq˓2,ah6EeX=7eNަ ;63e0uOɧ4]jnH"QRĀvߌ帶la,/1 G#Œaܔ>ehi3~1k<ʞ1tȧiPQ'5D^LRMl)l8q(˛G| 0#xeX+)z 9Ys{xJ1?o'ud^H2kq2,9ʄq00|hahe>o옵fϘ+&;jpQNj$ -%h>鵐ifqfb5\Éߊys&``1k{ڦ4vTᢁ/AɩYL"2B5=+ v:̂*;\q`r!=\= ycʚqOZO:ᢉ/),duPbM97Fz\Wjz{Be7&H΋ ( un̬uyP>8Z?]'[E(fjY1)QUoh"^jN^l^$oGs4o-Ҁ28>u9Ƚyhlu^sKO3;(jzIyD. As\5KT1E7w>u>3mu *].NQ!iWcZDX ޲=7B^UtpQ+.hD2-hM;[l'Apd:d;,{OHgpj]<5jT:hCjJ -]QI%d@ [[ߎA;.}߆w[|pRB\G;A-٤}SKUT*K0)!D=eRoh`2xo.cxk{wt#;]ds=c?bv> k6`B:EM{MDZ"VE -Ӽgwo2oM{ ireӇŢ#3PS - }fj;8wym>3tE`uÅzAQlnwG6{xϫkE7]HH ~5_8ɯs뜀gq+>~?>].Lm`=acܜ>"ˑ~RJaiVUXaS/%(\bxa@ @Յ e nH\tzK?Y)ƶX f#fHvuqҨFą^DJ +a]XH:$?y.d_Y«ѶOo~~ZJ^]rrj[Eۛb.A\Ԓwͽ xYbN8ww`{-CplInF'LǬ/F>-/,zTB^O>{.V~1vtnYHI׽{Bc{C: >gώP:}$%_z^US~nˢeϪq%kҔIe?R˒6^L|,Oxri' ޥ^y/ >9}Ǿ+22AnB:@$dPɈğ?Ǐ۠d~u9;3'ܝd}/Ds;d~>O`?T.@WY4v,dG$xPt2\11 ЧO| @<(1>0nN\x??G )eUMuƥ6-k8b#S͢v횮馐J~Ү*`wo2`i(`!8):W@KD|Ъj){g3Wzǫqdq 1>, Ay-"8YhfNS%o_%B)X7oǶ;LyeT;- DA  p[ZT ͷ4zS>KkL7tDa 3fY`l^{j{~8 &x@ ?= -R7 -EUne2^dQDLr9I[M#D%@P؆~?VN8 o @A$o @ (pM@/6,qkًxդfu㍼*d %vk\Cn\ӂ9Xgh ?)lń(9 -R7DkPPqKf9T$Y?. c(w 5A3xی{6gsv` ;llHklԪa *,ђY.I38aOr791fkpoui6ٶ0 ( KJlK-Xo;_*%/K8 P*cK3\iaY< r|^|ǐk2L=>_USI;İ 6mNH OHT$+U=Td웒rl+Z3! 6?9(zI!73`zѯP^e-'ڜ2a@d#LҖ*1:HFמӼ(/J pEHy,pWt:;7 ^)m.3ȷ '=Zs&6qg -6q[ͷOG$$_py"!hgT6! !E f_+Rl.[buũ@36.}"~'>]W6SL - 1f񌒢Su<*qOhfuqi6gAm8%h?w=Oe4Ĕ=1a$P[k匭sH_g7)hv!oFVϷ0&96gtdul`5( _YT8PG]s߉5{4;~elH&{aL0Ejm<,P2|sszl e1- -?N٭s׏oPʝ~w8 JW14Gu'C0VЮ#ԫ%JFWV]R-fE`%la*2 -& 7Ym((C U5XB~dgr[7h~ }hč87w*A?:Lڞ64^or]҆Xѝ&jL/RiYvCA)Tu6Ae} -{48=?pkbPVg(3]BGiK{hnzicgXeTCP T!١} փNt[>59w#;vމ)/)+F $ev+Ӥ(󻒔.RPtSj]Τ -eGrJc(D 5f&P}j-~&swl&n.Yh)YQtвE~Nkbr[iWra;=VCjRic.TڄjP E &P)46_.K{OkVW<>D:Ewa>r:lHd(qm6r[uKT[|ks+AutpP.0Vhaf' ,լR:!]: sep1"@L)FK%tەYݑ@ 29!kZb.zۖ7.nޭY["B>ߝ1cEGC z)?"WWc{5: DUՄ/ -jDA?iW7lZ7ʷ;[%NJd&Dr'IY\hR60r-ʺ6WC`}UI$P,1oDAÖ/V:eņ-`,oY/ݱ)|! 1iTܽشDιt^73h0!-/]6(֣5~c#턉ӗR05nl:CLy! a1Q_sOq!)%5#03g!0̃T2^6:ע4C_XW L: ip='>sCa@Ci4kP z#T=saTؽ;`fVg  ;`xN@vvG! R\!pJCPy8Otغ.̾߄?m?.N8BpDt=~8+[Z!H[Ck#`X 0- - "dl2.b" >c @gaЫ\BXK&=ה%?}*_Ŗ͐iŢIbhX<" JFA0(&~> C e Cfpc/شLVbJ-?k.A7_"NDˊǣ%cƒ1;;AͲ^bYgT2Cb!,OK= yЫ7DvZC&3O&L%Hq1|4JYqZy->i':OJ|C> 1d#LĐ3ѫorٔTÛcM'M$cؚr]0IU=uf# ȮZT!΢<0ZOsjӞqkuQj-"eA` @XB$d%!@VI %$lj@AA VG;ߙuzݼ٦$DbRfw9WiQ^cUT-U3f5URmJ*0P 5ṗƝK@ޱ C? - ;61|3$-!xUF1x&(bJfX,tf(FނOg5p}o1(f|Sv/%V})$;͚F.MeםuEmvC'hQCݢYаsh],^trx77n97Lw@,Ddu,B %k{=eե:uS.uܥʐt*ڿB۷/7&V,tOmx} o*<^DAxbyލ0>P,8OkĸDT6.HO:{9F#OV{xAW~%=3ϭ/?ulmWۂ%/=J=:U|?HdeP2дpy7g3w{jd8⇃ȀX <&(Gdl1?Ƞʨ13?3vjjqBn8J:j`G'`21| ;7`&oPh1G a}C )ȁedD#O/6 P{]䈪F (䠀Kc.#KqgKhpu?ŀ׊@ؿtAC}"c_zAW;(v@ہ;\BPn  :w#-ya~ C'z6 UC_ - B 9t ;{p?*NN& n -nlw p?8_QC< -Lq;FVk)+>eRƜ%Y8ωgz4Q0kMa?M47q1콌!} Xu;1pC:b`!7Ey!%x„LiRK33oT-"֋2$+Ill2_;$'I$ʻ厐7Fz, \ GN-M"EǚT`R%~BL&6.dN(&pG~H988l' +]mE P7ȌE2&GrpI/9iγ"Szx2*}L|DjP'^81Nh~ʾ}8K ii1U vp9l Z$N0gy4x2L6AT'f=$7< Kl#&s)' /S՗@ A -N*1hb d| Q&O%xΗL(Ɠ+jU) QS4w75}M{Ҁ6D6%h'h ĈADA pm|("F-lTže 'Z88kaVmFwII7 -i~~~}FY;A2 Πq@PB ^WfΔT! sF.JsѯzJrИk8W\+e^_4 1b ,oB! APw}A"NUqSJxBrR9aC۴s%Ime]+nnYfSV)) !cHɽ_oCP% I/ ֔J zP*5aniԚ>Z*|a98fkz.7q{ʹ=O@dA (F0aDY0H R'uJP - ;-ִWSXmzNf+2~D]nt1k%~fo2 0~Py]܊?K -ՉLMeQkj\rU[kתKmVHaыLzqWb1CO@s0 -&߷uasQOԑLe-ZyUqR+ -Ygԕ[j2ZkkU6NQt.bA&b#VgL{BPz7CF7}V3GvHwVeU+mŲ.5[4my6kR-4UN#rH|jx>A2 91PRo<݂x.NW@Ʋ5΅ʃvz!0$lŜ KHH"N_Ԥy=Hzg04Ay,Ey٬,G} "}bg}OXeeK'!vD _0Yǩo"ȋąs^kJ86׍z99`t2~@2ȓCByvK߿靐E?)ԯ&X׺5\L^sv:F"ed? ƿK \⇻)t{]ue5yn4nq2ueI 1@&d tGeɍRR؞Z`nvb, S!O" -Hu rK}*e:.װ~vxcOѥ$Z"oieLMoʲ@[ F{^ ؙΜ.zD{@,D۵rZ ?8rD݁A bfL6lL0V;f`Kdp3% d 7 l+Gq@#[8ko G-x -,=j] bOrT!H4dT2-pSbj'tC>ZMISs?Ç k -LDFr$j@#H$C!ױAU&46Aw'(vGUNkp+o5SB!JbD}ӃP*CD}qIE3 aQ*qGt7Z#`&gV[VpV0wEJz@٦ }}/DІ.ݐr%`U 0j(6 -pUa/S 1f-u%o/&|E@j R|iA -~9_y" -c>CzϐBT0Bh2@EjpB e(;`uzP/R e@SWI-A+vw>o/e<{g@|˚]b={ǖ lMi24kp/70D'^' RʚBka~mg}#|%#3a&ϰ&5==-:+ZQԣuTD+ʅuBf! H,'$!Ҡ("e(U(Lx@e(λO}s7i /l>BG/`X/Ш[ DՄ.3#6'=0] 3ĉjқ:kci!i{JFӚ0#NI@Z -݀xr 9{"=qH{\v[laSBzYF -Hz1|`D>e1̦X 5Q5P7y7@?H @O< qzܻ,\>5F})b_d < y`ۣpnapE?tݦ,p89 ٹi$,~'<=E3ch/qǘcӬ*h䥄gx=?1x~M\!_;_[ 8> yȷ/5 Yt Ac|bIo#e\=;0 cÑ͢GV\_͘>؇:Cɹ>q%y?h] zjPo4L A f~ 'J8=leC5Q QI^M|or=񁬊@vܛ|ܛ,`:jp!ul,Ap#@䐏bv/f<#|`l \QރR܎V^N9OJtQ'i= -G,`Ow& iנ8 `ڹ} 3 ѻkJ&DD0 GMIT: wc;rjޑnct3:S ])lG en G `2w, oo~g1Ag[$KiPyRT'5kkCWlǷiYjl|(9Uѱrfr% 503o':M,s&[W8nR)UK]^6a֖ 6X~%dgEl|AWIg)E - b K1F|q B̳(V=1mxCY0;̂c&εk\,č `rlLjxcWʴ|Yu6NQaK:|a6.ݮX:ҝbMf*7CIC<\:W{}w/<صSS~ՍuquDPQT(bIl$$,D*0:ŒZ;NZ:nǵZP*2)UdK9}m^|^K.7VzaZjBK5}F_\c<\mzGiafӛ0ܻ=|j|4쳨Ǟ$MW?l{I]voqf"k[եm+UnzZh|:^Eh[m[?QIT"bŋxFR.p\T*m?;1te!WrΉDyjx,k#]!ԳQ>ňX&gk *Y>cȎcd%rQ)#5Ңq+QhG3bwF-!?&H#!EjZQq_qY_iRH #ܰ8΋ŊhM\ sp1nq9fG!~%d͠3Y /RLtFkӡ\Ob ICo2 : Ʃ:KayU4c&ϜBp,4? #G2_%dBR+>a.| sxF=qs@ ݄Y0)։AXISQ-~bOqp?;"s;TR4HH6•%t0 `Hp\"b4GvnM-13Vw_,Q1_@? `g]!gCzztPh -á.r=3'CM*${yCBEXtY m Rw26MV/z/钼vH?i3 lhS`¨DFf(Ь\_ܜvCrH1D%3O ;r,jߥh@aEvy7;S0 A1lz, -8HA6 MPnK|bH- z9DWUB𘂠z'~٨]BfoU A %@ǰlr2p`^cI<BW(w8 V)%$uWT5!zJ _6+_(ltrH e&f|U7h2}`t06 -cP2A J$7?OCj!L0lSAG~DuAYgV\7?QtR6?I:?K 94d0 \`Qr$TOCl6Vh%o eLpq__ӫڣI7?k~"-ցjWuDd !I 2 hQP(ThI ǭ{{̋yy~y$A'b*37EmJO%\OŚx4C  b'iݑ/f F}KF-%:v22vfAi:Oǡs=_H`0Z:*J?,m: 20% qqChmݨ6foT?'j݆49u NU<*А^ _b`406YAP24]f2e\w|D x~j&TxXp%=6s@4j rѐǓ -) [`bc1` i,p<f;/_ -|A;sT!5஘I 7X- eI$->CX?\Ij(cO3 4#76N0 Zd{߽\ml׷m#šC.9 !ƶ˜LV]Q[j6,KeDŽ =<Àd0 x9h@ZjKf{p?pjw˓S?+<ڕߡcSX8Z-PKj~!Bl0{R2Y:=,VGr=/mDP\s`z[k sBfjv,t^<{ j]7wZu@E מVET$xb%Rν)S $"B˸D5ŕhڷxHGz,߾ோ;^5YovYcS%]7+Îj~jrXUPPl,S.)Du2qrgH\&餢aH8, DO7"@@*,XSiy}-z.h umǟѨ1yHJ%e+f% b~jږʑ!K餈tXHFy1_d 9i9%FWa`FN֏oU6>\w1ҧ"6TU"Oe!<32%Q*f<%Ii#b|TȖ 8)GjD́dtm-,_tmkŃ]_t_w]|`eDAmLpfV"tnKR%q)yI㲇%dՈznLHK -B@ -6X֬6c7WG0}wv]:֋5-a9AZRNV -T#$Jđ%"\hrLǟ7J#rn<[%/sڥY-xg ~5=?Xt,S~gZxB/sI$4IŎ gj/C5z*4 F.!gCȚ0 -Em-xlۀl@З}pƁ}U7ܭ>"Ϳ{IŒ81k5Rji`MK vXQdbF0 v<[_o7l@陣UeEmz]~?hn/$%8vC2]$ow/4WԀWKկh!Ab;,å` -tYk24cGfMcݬ?Q }#ف!'Gz6⼆pq^o 7}:Y0y!`XNKg j,eUL9or^!p]/?4$BQ.X=㴞0&+Am;2]>0GzbL;Z hk ,A}kPdk-[me{Vg]1f=Ϝt{jx&{9:jo|}{׉ϾGt~;߁pF:0Yc>:̓|ޖy9ӡ7Fy:-p.]gQMy? q -.,* l!!!{ I 7kKGwKU#-X+:uA=zL[8 -B|潚|w]=hil*5{.]0wp3GN RqU"֘[>asbOn"){>G6bڸ-Gx}HY|HC4ЄaX(AQ> a@TNq Gq2͓$ߡ(2)*%`8z dE!; qL.}6D3e|4|Es262'aqh/Ȣhf3 2* (\GAi,; <As -Ru t:3ALd> 1y -J ' JCʀÄF KTaP-!DXK/ldAV'ɺ.g Ivg|[xbd=xM4d'ѡ`1IgB'^9pGCI<ے!ٟ -tNf@x&v.Ywg!>Y/yB t&xCȀ. &E [D(@/8nBܖ>BE<C!ρ ُQx /(#hPy#o1&BPPCUꓠ4 ʝ =GBH#3 KGR9 &'}HNJ1&QOn=[}KAݝ <Ϡ#4>(:qLT}å -A1(Iy -|v{8TgP^RWhʟk4Owyw:?.)4½a#*}P23L}*QhAd$?ҵj}jzoW ˦QӅQ9g0"7x&XśU@|e渱jGʰs)wtuV+neEc88ᑾx_~aKyrpf.l=tГ|{]Ċ:&N'ؐ=ա#1+mWU]GF&K_ -n[nZd(0[mmECSC-_zl/yAo"ؔ-Y#zY[|%+p2\+9TcqK?gK:-;,J/Y_8Z4h 8NJ),9yL~#d+ȷ.ͱLlK2ȟ9( vmpo]_JSMk{As_%Q{k7%γfGpYeM>'( dȾWOz4̣a[4;Yp؛=n[m .ѕ++ۗn)ztAGd9׉+eU|Yy+׾ʾݮ~.'0FfQC5&2%?1Ad袻[~mC?h9|{ɉǪ]]mK:j\]Etm_Wly8yƟ8H%CESf_˖889v!5dl!ҴeFiK4L^XYA@3AZ6]MDj+.;fw9&G7%ƞgTF.8M$, -%tIIlb樒I^֥N{:+vxof:4 kRe i"anH^lYXVt/#\Ԉ 5=/%z*"9z&,9j649j>$)j%=֓0{"_B4{YS.uEp@ -k%Y5_qOfKf|Pw .F -&BWLxYN\;.v% -#<{+UͤHߴzrLNM~jK -ODdg%222YI„)x䇑 ~d7*a:<:~7ǎ.DDaDrxY~nSћjᮽ&ʷmZ_s2P"wZ~ܙ *d 8ᇧOq#Rgy)~[& `A O_B'=q/n&yd,@؆%`mY`Yn`ug=w4{@7|I:H5 ?BHI t`{R"n>|bf/s/m!?삐OV"xF`'!,ɹ 0z}OX ҂Ag,7{Ɇ_g"D.ǃ -QvGlYMtBt"s+]*W5Fh+ !:i__#;?=G+b `>7ҁO=3@$fAb"h%[WWGmtp:f}6aי D @+5zq$X?r'j"Du"֕ -S g8@> JdHJ[Q+<: D3q,]bk,d;2{!8?Ds3듀UHXAPAK -},N&-*unH2 _x+lƴEwÆ؃Q7Q9/9}pŀw3Wq>&!?{ԯZ{d>@V#֊ArArUU=,7J$6^Z^%s^[%*7!q+C;Q 8/DN&A-d_Ɠ|Ň-֑{@w. …lٲt[R["WQT;KRgIO{[7c! qe#C1$WLhb- -#G4g _4egy?YH_κs[+▲%kҞ+o.J{IEeW@ܩj$>đ|)֑6UTN-g7G8/yZ\ИNn}%7,ܫQ=V!Jy27ңv[V-@g_Bidg'=6M%sz_e_- ~6K]nt^7 -r 9戞;O?O9$w&8|[ٮ]ٖ2h[ͩ㲦ԷƴwI dgQ@zlZhRjwZOkCf>VEuv$ٳ!}*$\KlWv#Ir8}`ZjMk귚}#ꆵVE}Ƹ|{[)!yDmH@6o<l&} ԭmݣFyN$,P}U.+*wWdS6g4e6d\Kٙ٫NQdsqYUDH$[G dΥ‘2VrG6O]m5n6;^.{vW6g?h䷙6 -[ -+eyU; jks?լ}0RiN0-1VU0.{$mJ l޲T͡ p<߽Vԫ{58xthWflYWf6nIY\#-lTWO0vZn|Z^03 iMqTU?(˷y{)L|28k݃(7x_h {YGՌF6Z -Ě*yeNfSkʦԒ4Sb:ST41L a&.&{S͠|>rǔmݭ%"J};uʍbBf\.1M),,ոLZ^ُĀ>ӐX:)(UƔLV&Bٜ3(CU沧iFuh:'ʿ۝j[W[Ģx=rzSS -nW&./fkIiViqUX٬5X9SY׺-CuyTe4\ѪuMBXEAaIXE@0qWzZD -REAPAܵEܗ#n=3v -cNUԞ,gg|~zy}?ѐf͂1=ŧoA4ӵV+ok2?mW{$QRYk+;.b}˶S"{qIyy%w,>{I@m˶\6E~у*!ݮ3FtmuM原Tյh'ly}OqOj# Ǭ;&a)*>K_X?+w᜜}md}=@V^`O2w  Y٧DN6 u1ֳ.3&sՒ"/jT6慮;TnuÛf=,=sӪo2/ UYeCswFRևD"_IUǧ M%S,\RU\,=㰽CQ>wݩy'G,iY5-yc\vSѬc{SkRNo / Æ/?R>*FGRGCo#zTFtb=tG_]ҡkT%^ 1MmDd+/d/>08g6;>'^:1U>>f6#9(TѰ臝Dw]۽j/qTyÈM{\]ۑފ_q3m,k |VS\1s6zڌ1יӣ vyŴ#>3D]!h`?Utr뮈ӖO}[8:>˼&<ت};hVFByCx]DFvAu:yDgD7#jnfʯӖ"kNkzżr =ZkCO]JOxVcz>Fȵ=U͊t2T8w(C@u752ω.4>/N͈V/y/eTFWfɯfOxdחa3/N׷!oc.܂M |{FD7$/!5Z!Dul+Xvv'_=7-)_3{p~jZxY4C -UClw~d5IJAlbY?hGXaD|K#Q;#JÎ7n:Z(3 -BHc?d`l.ATVK\_0l_Lj*P5˿C)EpVCԿ.4YEjE( "A% #@#r A("HM׫XVG+VWZ]gߝ/g|g]ך$i VcjD0!D -hzG[Cq n@=_\r}As}F} -ns[x -ϫAy9*Φ9|f9DY@DB(KD*׌F!.mz?2a4;Na1vk -ZC狰oR # ~H{/px*ٽ_ -LJjٰb׻ͷ=o:~y_#!|\qw| $|ÃQ>P@)wusW`Qn2#5hyR/ף5n3Q-߇/5uM  -N :!x\$hB6&P(APo8.S3)mOEHd`\iXf6iK'Ed Rtv阽';' :>|$l*@zg!U 4S V, =vS^jR -\g [ͨ.Ǭ="w99)xOHKU|%i t D0^y(ewE&:bh F 0$@@)=Į%Ωs?A şS~+[ovlLqɥgr"2.GRIZYEࡄc|;+#vl6Knsc$SA -j)0@7b-ǮȳCcSSfz3%쥓a㹱.#->J ;,3*o&e=d}06ߐp]PW%n 8r r`d0q-=-@Ѝ}M>*g./.qL'꒮O+IX") ]E7!=*nFgfONTF*=ERώ\>fP陕}z;D/*'Dˡ9a~5i(akRe --D}/ -=˷Duz|o.5-Bg7߿f6x@ wqo]GSI:mu~nG߶a6޲z1hQoge!̩R^[.*KחkUM/+(L U~P^^Z6j`0pXWwT hu:yMt52-&bEKh}]m[UM6]e_Q*P+K+njQ@ɵgCe"y;B;9S w!!tC}fh@nj ՔUOguUMbW]CVm7ϐNԱu/ D{X[~|pL[V)DBwNc=fh rͲ]5gm[Gn˞YʆܠRzBNQH~T -Ș -Ht@ĖZYpـp{C |i/CC._-+aNn݉[S;mŴݭՌV"0G)js23^;B|3$toL>,u'{RFj+E^O?dr7 N07]X!@*Bw]Ad Bc _ݤt{+k/7ZT_ks76mDna-r[;~cx|D_|J>KˎEћԂEG->v8T)Nв@]n|;)T{s%35q0Ͷm@yW5;dd&GyS-<D6zvc_֍Yco,dYbjmt"\8\ۅHMkD Ds;^ ,4㹼~ocd 8= TxV{ .\;vhH5mL¯.CwC׏ma3>^gsX~G[BQ(e>*  MCraxayFc xGaw$xKp' l`3vog&_$*BM# |Ʉ@CBZ(( *.\,\ xH` X&c ࠇW!fpU3+l?D"\" Hų: Ix -C =q?/8T 籎簝'c??g5|M˾Erb(xS(b -DZDhĒT /j!8K"f5SdZm$=m2] -{ --HEbfy"z} ];ҏ|!iү 9ꏨbD2wa1xd] ԠkyXzLVG'zB9 q h( F|?b2 ?ɜgfn3~_r -B,#dX,TzGPA}1a4{W#"f2ς友#; @vȨAKH?0q}5HpvE,UO ɯ)cI -n e@t 1W͈1Ҵʀ﫧4OmbEۄ?+[+M:VHiPv}>dj3q]3r57`g0o/iK9XߎM9#sdkQ5nBN y\8 <; ?QB+ y#p!uNxʶ [Ÿ] X&wg<%ݫ:0/<8S6|n:9@틼H뉸Axh|KD~F!ZS4.y} - -|&t3I l}#fr+Ȧ0k4f,9nD$s& J{jUwQ1k n$o<.x:rVȖQF"vIv$5 -Jst0k울 NeNEOU{JX( Z0D] -(ަi0E&pJהFߍyǷ ʣl2v2&%ݵI ť3ɵD K%)^U - -/ -Es -!Bh`/ {o. -c2{WTKEV}9{[I rU:]M/6 %}_7[͖7[|ĒC_dD[ :U7JHu!ܪ5*5LNe莖˜=jС&K<\YH)ʨ+d nQnz 1!Y*bRSv10x{J.7[$5; לvU< uSTbt<%7GEϒ׳dYa$8̯~Lđd"412D -Xp;O눠kXMaщԭq-5ǷUWFRW%TVzeRkYE;')O'̝{/!s[Y)(J"j& pk0hkZ1i8f .ZU*+{H˔Ԥj<|/_|b +.1]$[=gp{W#vVvYB{>bc'ٸQ9jU#'!@jYR.:S%񫚙'+|*'88|"*;R%S"h5[KLqf`34&w3T1Lz-#6-.Y(l5+ȼ&WdC#- n -Va#FpV#ZX+*_ͿE{Wp ``#6ფ!ly +@N{Ss\»JC:՞A=q;mAԣ͈zL(Auy{oq`w0@-vвuq1Q -q/xl#GN *v:s9>Վiq\r@ o/"s;ٿ}52GpsgN kdӻ iWRX0o39jUmW;'2w(tێLݒc} 9. ra ut 4|$@MH3v;b=IQ>as7[MΦ[sf -fjvg:`Kږ:duȎ1{\E+WwA'@?@ίXΟH m!f[Bਞ_l쫏^'1)i}g6Ky+wVn|8x8]Mh_ο-3'pC"HvY(9yѡY&/J9hZru3W/~,=A}ny;P gD.~gЗL{(m# a!: 5px7?ՙSa20 f`FP"JQ,X"q%Uc jtE=.Y{uƵG"%( -!;O}}'~$~0Ofh#v^R+uBW e{; F;m_ x(6Q}اD֍"j)]5GPps`|(|H?-"")bϏ߈5X/v~nH>6J-߳* .C4'DD8?( - - А:H>0ZArCOY -yJLX R`Ev%,M4/q-T{cDAD 38Ӆ㡽.Cw&]mqm{w'♯E^d֬QSzɫly]jyh'P=9]}GK4wV{Ju#qg|&xBSFӉПHD1v( Cjxm#TFtfNLPɮ+( }߆}fDTDDYaVePYM*X&FM0.59Ѵ1ihKs޼[ą3r { ʏ2hnڒ۪1Sb_ǯ*Ҫ=RDna_Y9sMF"",MB0R߯iPQt &VX) wj+\ټwIl徼Tʜl~Yv)(NBQj& -S(Xlaᮔ^;4>#80Pk=uL{Ӽ/xE}ZhBg./c$18%#p0U$MK]O=O>d(NGQb. -w`1JD}P:}'ih`A=hcZU4u kbMeՉV9iҊ~-FX_r'N>++D8E; -QB`4ԃs5ԃz{vH[Cje-ZEM+c-$u))Y$TzU7 Uxm];xs6pk -bJsS 5PH3@/*Ʌ.3rev.+k_ٶ0Ӥ{,wdh9(w辩KpBr_:lEX z.,^.Vô6T~GK5=Z)GvMw[n̳>\Q缮kD{xv;a="zNϤB 4MC rfh a]';m$gxF[bFl6_7 o7䴺)AU輺ɡQA5h8AzvV,Ns!eL83 Gx*NgLбB㐱Um -kpooȱ>^AwP~1?OH1Łi=3LL{յ3OǨޥzZtnT!ACӷyFsh"D3\p-Ds8I?DMy`%6U" lBgE b eJ2L^U++fMOe?Y-k7g]ew+bG)F)O+a5Xs\3 )ς@x+܊f֟btRk(j/˔? 'ODT up~ `$lF򙔱xV2eы,?xO{*PuAo_t?_#?%7j`X~|0^@0WANx絔Ahieޞ`og?hΓ|9g|Ht7B|{`'  zh%hp440ppX%B0H1Bo FʗRQ>= X=Q[LɅCy+)hEˉH #[!`|E~\BAYpS8RB7(ˉ -ro }bL x`B/Hb͇C<hƠ3̕A#z jAM,H`Z&)&5t>2L$U)}~D^ KK0hȠ ]̝ACo l`rI$! 2A%r|INeJvv :2hOZ1[•XB\RJj٨B: Bw,\'u}GEugqSFA"3u -DPAd230 ",BK5ZWcM=hbY-b'su߻}9(zy'V&q_ Nq%]ev^Hihde-r8hQA:'hE"[|}mqBLb?ǖ( zŨ-,rw( e}ow?$kxo%7WCgҋ_w?=߷{'+E;oKQܒ(['e8s21E3fNPxpz]8oW.Z ?Y̬ Y 0/2]7\ -g'\e -/p@w$@/#@oZP/^z~>+]}A&ݙ;U'Eb;w>3_q)0JƧ(:@38]z~@Iw}҆<4{~ެ>;ܛs\Z&Uٳg7'dY>=x5qχ&G<ޚ~f

                #z}b!\ C a ZdC_E yN68=qh~y&sL?ݢ?`xOn>A]gwd-MwN6]V@A`Wal-pM9G2p:ҋ},b>H.p ,ݨ?$Ev/6߹r{Z6A[K:K7]`'QkԱO/&f~e%<疈JGT؃q=ѱ{#4=]7nmtۯ6lM%YK#٪w͡hOPc8O7cq>_'d$8,d_۝P=>Ұ;.AԵ$lSlEGtmMֈ6eY˩1sC9z:N(#5hWұ0e7gRYp" S'g67c{g7'upKJFu=1Ŭ-![ܪYĕ6/Yn"UVѩ6̥2+yy]7Li :Ƣ8н}I ڍ0۔)oS1ņ,؛m ;s䬞l/^g\Pu1$U)&uMCR.־:acE|sejkQ)Wjvţ3q$2 -ÍxAe Z!3|gVglnG^[΢ DY f itMuZ<ʾ$ɱHѩII'ܴI7r/Z52ĉȴI0.x82LcTe} -AO)tX6eiʟPj=VٵuZaIBC]U(ReS*,˶I+-K5;w01E]#.BdSc -PFF 9Pg?\Nay4;ʛfq+ Fuj,ĚqҘFYdNʊmLXŠKhLX9:RXU[<^H}ݍkW J8 -(8g6NZ`jNmzN?f`afnMPEESkٺn]6eyZ(*X -)JYYػہΞ;0}'MZB׋ǽ2-c$)nJjG%W?ō'=vpUB`J56<ցYki3d^S`gꪉ~E+߷bz + |NXc.tsȥձK,i)X,1$f=baoy-~KU^)5cFi(ޔmJצJGxiqoMnx$p̆; .X$lhIix^IUDnIcDܵZ"sVIdގ5^u+7r~v'l3`Jy*qEX[Qsl$S}Fna)kֹ9[V̭3ʮ؇-%$}0=5P-gťʁi\&TwWQXJ(W wݣwy2df3]/ӪKR\;-] lI6h )wHp8_\ɞ:P;`yVCNdQ7F׍j)3u{&կro7$1T(c1f`6ɝ.`2Wûùf6hXt$ G<gSFcwAUQ˴2-Z-~ˣQ;"ijro`R?PTY@Ƈ& cO!g|&_$#%;`?;}MCO"h-ݰ} `;+BgDi#3~n`k/b݅ F I'3@9=.ak[,m03Lv^NOй^6Am?tuނvU*3N5?evSO Hflo|oa1:w4;pPA7 -`s̟ɹ2;ك?e[V`'` x@7BdNqL9ćᇡ7\.,P.W/{rg̎ X>̽o,v$'ehB| CG{"$(C iJ0~OzJclr}jO][B 9 <9Sb(T/yf(ў:-TDA@'/R'yN[ߛ3?;nD$_}š-&¸P9U^x<~4^.0#;ߟi%G\ )PaI6Re١Ԫ֏ k괶MM6ѮAbN} :F9UrꧠǕiE`_PKufT :kA+i_ !7!q6Tt-? A$b@k"q$>ǫPZ%vٱDX}ب]ti;֨ڹS+D7Lj:##ݢ{-T3$88t%|t$ˉWӵ ki-Η=>wqڹ\wYsssy6%6{6&]jH`T$>5@| q4Ay@+#Wӝt[ZF⋴dډS5?gcb)+ )yLeKgMi4Hm5M'UvSUX*iIXgk{YjveVc5 Sհ|w cemyUWo5+ o" JbZE( K!@k@E(޸junkn۱vvt;ad?=s9s߰NJbMH k) ^ ك{x s%' 0!n%&,%^JR/5|ϹR3qS։ةPG2{4!xW!s΀e$ kg|¾Ct+J\V卵WI*9}V8=0MTL$[ƒۘI=!CCY=2/.H]r³ זDظTuYc繥ΕAt_fMMtfv<gTF0즎Їyj^]w!S[lϩ mn6gu4Caͤ&s>*Ie#YBCDHYCB>9Ήװ{^.p!g 0e b GP5&0z -ޝ,}`k~ I_Zȭusf털\;')Yh?P[xJ$  |s×jߢ7 A R7 -`LRʢܺKeM - "]`Ȭ3VVs͆v~YQaIH?+)/n(|+)1"4#Ucpу. {F[UQyнŜX[W]_]j6BJj9%m|cqP4*Ht+rޠ5~#0t`aB 8Y0O0{Ͳny\VQS -(2UXEj/-唞ה^dޗd3MD1AJ^W%fA=X4By#45Zѫ ޥ~E@C]S_kͭif!azSz;\Yu:\YHUITf"P _]AxkC?4 -`Cz'f,@w -;kW j0\Ž-nؾ$mˉuY [uMeW/ة)ZxM* u]xpNA{&q38;p;@57h~D@t[ۛ NDn^>pW BCȃz`uP y2cc}8ܻy3itu` cOx>>ޏ;x}~lFຕ@Cq \֥)bJr:ɣP-g< <ܗ\;JܖᦼUp8^E' 霽:'8^vMm -,U)Q٬jifM~/-߿-4˩ŸS۟*p-lQ犓|P:Ma(UOUϰfRn1MPm6MWf7 -l0Ԭ7m\keYb׭Vh %? Z+jslgXgzj~:J[EJ,6PnLW . )lڜk\]n^bԼfy\d\h,7W9aSs\ Nq+H -eu-??;w -WtX1QcJejtȴ* -OY4KTh;7h.?~vP}^P}n#~zБ]N-:3.mKvʺ{:+=TFiXCEqYZX, -SvfU6zY_L.4W:~Frǜ !{vziBЏdO%⹷7ubM7gjHwP,,ΏL떢u͌lsdvq);|a\NwYo _G=97Y#Y.{{3~,K`E=^&W{^VocvJ4yRp }بR=9$A_ٍCf =s c;eH~kZLtNr"}zpppc-4CJbe6%%ppj\&#}YI %)֘ꌉ!;_3T#R4b JIOde7 1P,,.V:,UHA@*`-k1Xb]QQD#UѱrԊ:k+ڙs@wŤ,F/(GFWύ8;jSxTQWc(a>_# }xk+$|dm8IZ%BN(If4-yYrR"!1ba\eLBUt|M,9"V6:p kv - A>0^舶Kgųf] ޹>-)9;r=$eѹ~Ȝ9aّʰ4$Khz: w=}lIV|(fYb.sFx <%!e3˦˂KQ~-'-Vy[M(Yc^IWؒSڎ]*lH!)6=g;ؖm^!I.I}*$BP# `hKWjlҪP3yU UeXxUYRzVnQyTWW+>j -a^c{s2|s@鎭WU[` |7q8P3kH̐ Y I{6+1n2w55w1lmxk:VXX\s;}FZ:K+* <moԪYG]׏[\?Mx,i+q1K6HVȆjdCLN2T+䃶^7τ={tW -MDofm]2 kPO  3CwǀPosc6.C}$NKE%q\[Hv l#z,za ˞u?0 &5M:0h`<c=F`ӒrXBz\U3X>"$d382;s `. 00(лв]:!e -mv0o E2 -N?!kvN}'5) i{M'܋HDrA..iT5/Z\/_\JyC2h/`pB/뭐yO33OW:赦;X_*8kx!v7\[cی@77,]N)KOgͣp4x0mځ=jz/ȏI~"r~T<</qC.נ(++7&F,(,ȲܖEvvrY˂+  ".!xCEh&Fmc6If:i:MSM[vڴ}z<_9y>|e >X6e7pmŕOK\@$ dXqu,xFVe -*U-])[kkݵMp={aj1drrr_w~ko7CfC $r"CkKGmoWkqKp/4 nRZ.GRZpP9E;}VC)g~֬(b}Bq}Lq==WΑHH둄CHW ׇG17r}G͛`!:)3aNi(-)>)wfi^Qg2z{88w}Hca kl!Mw07ߟWЧ>(U Qϊ귙.=CӞOQ[2 $<%b޿{?@ωlsc9ʅ49Lføv33 @fkזs5ތF~OF-L/jOJ[>})iNؕND"BWO_zp}b0L -&tRݱp@Gt>ի/`wg[]6^g@ێ֬@wV?Ӓt3Fݼ^wKZVw#ơ#"$9p7\G߷`=` -ci`@J0C1)Q0󊸞<+ߝ[ВrE 9{NÈaޒWޕ m'2H1D>O1wW9K(D}7 -A) iN3X&{m.,5V4 -ZE5=!8)Ae_HSGD瘃[xqz~\__z_ΒhlViI]lvcI>Yb9Jl5N-,+̃RaYLPZIXn6iH; \>b';(}-ügyQۼxQ}z ?jXxc^.=.vv)jdҐ0@+w(RV, Ư\2ZBm6^V{Nr1糨{{i'҈ߕ>j@k<ɃȣP]S!> kjX?7vy@E}eaOp}P, -(q]ՠƂADET,NPXh{,G$1qu]{Xۏ{@xgygΑڛ%_>`Q2l]f(2C/)멷4y赌A.| b38~Z9P rxë;<+"Q1ír\\p4éUp,2!9V3yLYǻH?RO VF*gS݀cju#`WDak261ZCcIڲ*K%\@]+!=bԝC݉Eݸr6ԯ_ȠAVh6#GdeYPV: S^ jO-Pwm.߃k=?CIl3Yw8ߕF6eل\dikbR5љ&+"CV!V`zmDQ7+|; R@.Wtll]> 7 Lb|II}g'&w!h!y6N(F{;Q׋]# DuOrLhv/C?[7lO 1yI#_ҐWhv<xռmּExD3=桍i<,`!Pqk6@kA? $#dYM6RDJvRK!u/+~xI!쨭PpW;H32$t䐍dur -.2i.'WG ƙ5H?2|B>N"u9RkC:k%2SVo>~CG7A8RWm! -GzjXjMf|tX@Tjds"@# ~I p'4q7F \hK_hZG9&ۇGx}Lԙ0&He%rM8O_ŠS 8tZ%#R9SThgG8A'5qU˲h%|:bN+qJ'98̃UYê -4jpHՀ&|W2cjAxQeNW^/'7~}6}pV7lGX3`?`8nsWu2:AC=84aT9F@YBz7ˈn.yJ\C;N;tQwðԹGT{$aL敃*|Tx{JHfKi -IA3!!Z=k, `;孁Pg} lʎcPR(bdl HVJ TX)Iy'e~LY֐՝FRK03Ov@ol=P4[Gas8OgHy!s!) !!9!5!U!쐣eOKC"#TțY?]8iG,=c~3XP7la(<`G`q8AZc"[eLeʳƕLFEq2ݸS^~EX(\(I< ԝn_>|r8nU =+LXcFie%-7e&2Lt\E)EjZL1S-0FlSϏ8gj1=6 ,Pe s :W|j -{Kھ>XX? -#e&5E\F3+Pydvf>6#hE ()Tm(O|ǧJx bca@OdFwƒ0XiQGdcNR̎LNNγ]mMV71.!Fh*a`+"}ccbuX2qH &̏(͍͎)K#"q4!SR4VhuGEyafav .D&葨((("0 ̌ (qh]\Q0.cMh4rZ=&Ic\kmm&A;8}}yIirjIjI4j{'JxU?3~F[6a>(ѠԦ*CPnH t$=WV^PVOW5MߡYgMYHc֋*^TZRES.qaQؑlZVudD9TfCi*LiPlJN]Y(_Yeƕjq&˸KΘqZqC&#CT ҏ}mf`69x%RuԘTfbK0ʬcQbBA>dbJxyhI%){rs~0AZy(R+‘R9HLT I\E4L6-U]ު^WY>J"r,JB2`y)PK8]LWA߳H^FB@̯}a瞂hĺ0ǝ"ĸ3ndX宖Ns/nO}M><<P{ - ~u@7hYGo ڥŠ$;Fc@G8;#\<өG] - <M hw=n];G;65+P`0^ہN``~ jCp(C!EAeaqC1}C"? 6je6րv1.Ao8]@8B{|a#hB>n~psynu󘈿+27ԝXg&Qs459=@{?0# pZM3lF{p3,?gyٟ!a{(pm>/д.d/`=fC70ԧ'J"H5K\~¿ƍ b^?EnD|B]k4RCIX= -(z%-BR&kOm?rw޸p0>&?62j4hGLAIþxq1GxPR*Ǎ+GsMԝPS20l<@?F-5Aո޸5ZxWXwq+0"<⢤MT8UKƱs qW\ %uW7hZpYӉQ\ňv ¸C8? ΍3n&<ĉIdGoN~:G ӊx0n11W&%atrF&0- _NI~GH) -^?`ST!|:lG0V#ӝ84ߛш3۱j웹 Cv`p>ݳ10v%%U'8V? _LHjȹ{<3&̬)8>'$r&cp{T`: 5cgP'vö~ak?|^ .l ->/څCք|/@܎FcyG92]ұcq6-.Rlw/# û º]bO~qui;X\/=R}F4XLk6c9 b r&G/Ė$W|ٱVW.jձ*]إ[/vI!-;*ޕb$7SjU=c;3Ҙ?ov$/޸ذ, -Xn}+Ra%=W.H Ƅ'NQ?RjjWr^\ Ekp4riӊ 2)I~<'yNGWJVRn0͐/BBl4ԉC6 rUe8T.j* w4eߓ(N*;STu˯lU' j^,^h71nFȘyP"\ֹ-B-΂d,NJ`/( -bAAdHyղ֯dۆ4fi,5L}2dZU%3_S11׫=W̽H;Xx:O#c㳪EpFIB81(rБ-6!Q"ګ{dwY>ey&& MCMZMZr4;ej\A+XEq 挄2r˲S/dSYlN)ݹINuVR55I4)I%)RCm|GiJ%i"ߋk$UNjr!ۥɕ,]]EBLHuW ]򲪣r|ը纯UUT -U+Wg`/*!mMVXE] k#ݳFz}IEDŽdAyZ8Z1~SIOrYSZU!ϸ\R㻤Ž@H55 IFJd$LEb<[ðu ⽉f`ׂX.omBw{P ޻bh'bh*6FU {'Za'|/^@,%#k& jU8"W-EĪdĢn+ºKuG|qXYĖ,$&niTUk_p -"$DԒPJ2UcLUjj:Jϕ:Gr#y<꒕Ȭ g*]FhI#tM#44B3`i M7-a *tfpY Sa*gC~mw@^dQbOE*<7Ps#)7Fay -믐 - -̟j_v;\y)`jcmAv3yf.fN5`={e!/b򥈥Rpq/R?- T@iڔʿ4A~kS>jmVҾU^#_WOjYQx?Vv&gR\)"K/ʥk%O<Xp1Pom$5qQ cXFTޕe) -SM4PIYhx>]B IϕR)51JjIb۶21 ocR P RCk(b Wovm7) - ĚzrjE oTK;$]++>v۽ c~ǏZZ}-ͥbbjW#0Gi%oFɺUh$/5?(G ~ŏc0$~b9EQ:_|F^}I;l 5wKa MchJV0E:\:Ǣt%B{ KuL/gds2y4]!T=AOI.?H+XMXPܥq>gA*KczM#c/v?>>~_zNo:ptp0JSjc &C0&51II1/gה_q0ބ10fXP+` -6ПPOls&\wV6= 0a&~j [Z=W^u_:Rtzme.4+k4xƠF -)O ίu/`@hȉ+f7r}!>w7%,gҹYn!Kktv> KP_ ٤4*3ZzCǪljjm3S/`R _Z- -N!Mhon6\[b6R\wϑc*=Vc=?jCZyF+n{>@NZ5/bF*#r#7i{YQǍԨ+ƌG(HyNd7xg{=Ê6Wvg"7*l.an ZЭ跔=Js'jvLbR53fg̈YaT2c?5b/ScSbM#I̯\%gˌ\}2|))enE1>=*U)@=Da)fn$[IcuhuX&L;by7q3qFzWhD{o͌ qڽ]iVK4+>B =5#>4`%ۆ)6ZSmD{d[1ѶИ`+UXj,m\Fλݳ 1g$b>ã0{ KHe K"I&L2IfLB&$$C!"ITBR, @!(}cVVc] -B_Hg3s9|/>X$E ҐcU8E5IsT@U-wdґ -G@2#Xa:Ŏ;BGYn;[ycq9.YK$_mqg.j]L,kc acSUU -TE<',ݩӣgFsQ3Lw[,q+'+yN+fNj?g8IK+MuJ,Ty]̈Qif3ȝ;KnEFk\mǽvo[Vr_\GF9ƱlMԀxꉧ,'r`fE8;J9SU3GK= qɔϛ\o@^o1Mfg<`9={4cVy+󱕒c}fCV?8+/n-xBRgT7\c_-or}'w*Q?_n0#b&w[I^+Z\xm&}$=o%PF0 7f|>xhA,BeVVQ2#*RzTVj|&)ԥ`- -V(!x lc 4o2cؒbی-͸"ۈ+c/bO~o&j`C5o(]k(FӜUʥWj֪"ͬFnԴnM=ɵ(zۚ\16&gJm<h|Pu<شZՃ4>\3 i7ѴxMmthJcuC2Mjӄ6ii|qkzCz[Qk`mD#hl#Yy&-)tS4s!&E:TKXܗ.S p8.jkaR3нAWe4ހRbc‡/L>e~>g|A`fNmh5@8 -q P`%:X>qBx_]}%~1%ޅ&V#7B%B70vޯեh>g^}~$%zEs`@}xËWbCaADA z,EL -Fe;{v0-[nrt#Lqjh8Чm>GulꖀiEP0'oeX׈?L0?gpjJU^lbPx;w@x#F7b;&"awQ\r㑗#G~-QXM7gQ;O-SQp2"G#q$*q`i9-2 v/kΘV#cak6X.#/a86`Cj~c>11_Cqy,$Ȱ31;VcJlYi$+6%90HAOPKL=PISA&ze?Z#tI %UoW9R2yWP~XaJy;RU496*pz9֧1ڌv d?}ѓݙCM7!Y'KG=2%|'>KL!rl/碗͙s1  ec [Do=9 V8PxWtS9ڕ{QNUy^ g#?¡3m>K,;&Ygɸl`\*cїyŸ_΂j -([ -OaZ p6¥jJ4 ꚰ>ªzB$a-@Sf4(cCO# 1.aV-EWQ|řh/΃D*.m^4aS$E0 u3J$a"?JE>Nśi^t!:Q%,r\pVhЬEv6VZk`n&AaԾ& EQH5咸Oͫz4KI='=駛qfܚ%piQ)CSU6UhԕêӣAgF&}F F@NZOIB[%*%qX'{j}񻋿UZLXj`-P:FC#j -1tBo Ag}Bcr:#w#K V5HA 5Їf$&"p|wHdꓰb | .&7P[M`븪oR#$32R$uHYjA\, iD"*cDAtH8MENLm]'{LwXǿ *pʐ%DqEׁ /BEyjMl`֓&8֪16Mn?H}~~=~_Y⦎%( )Dn(/WS:`ʖ@Φ%r2mKʡ|2LhLcx, W<$Rk3`\r2#s͡jgQ[ ٙek,3ƛvsZ+*Pb[嵅OΗg -S3`VjeSˌ[ۑCh(u:.:.Xn0g<̙+[F_sa -SyH1g`^.@Us$z 4fp'Eg  -m=E'{xK4bX94s퉮j#MCd;srÎ]ر;ر;h(|Ful]pwr߇ {)5՜ ݌>4Ap&B4hΏ{Hc_N`G#I#ůKuX4`;1'-cٮqux-tɞ%CR[1Y~ւ}8694.HbU(Mm™&>v ~fتnc8!;ݪu.4@W 9| -Mywt{>Sӆ#I? {YrU -nGL_M%݁{ց 0=&&OVۃAcYp drXw@0C̄9P eP`~aY̍;ټ' K==⭇܁uޔ_8 l4r9 scxƎi )>s]u ~˯| | \K68ش +/cHgi? ؂.c*Zkl7ң49Y}]ZZ9flAMOŢ:#WϚdDeo{g)Q~hAN^Z0UiEUUnE&herU|w+Wrm]w?<5nk0I!vßWÕ_n/*}cJ;U *4X;<1*J,{T\,POfӌov?)E]C)!*mU2a.mTAE5k)7Vy~7L9ɚ?^3kz7P2VkJ6Ҥ3J &=UjE7%gaz<+Ŗ7fn^ jzM9X=G(eJSF,BW(5x&k\A yOcB+%FXZ(.EQ6XU<+Ė|l%69i!]552{+w >4)l&MPjX&и /SJ -ج%E҈ CE#\ 06C9,{rhaVᮚɑJ쭉}5 5D㢒46jR'ktQ@#bjxFOCcNjH, Q-נ\ZZ#mPGjRRc<5>_b5&.R)qo%jd%ŧix|4,ޤ5^JأNh`'P-?<*?we1 $n "" 2,0QNHAA(MqZ5q4զM6mzĸ&ƚXa9}"ΡlX?m _fK1SU@Y(/ir'+; ,E&C2 2UZJRSdHPR>%RBNJO %$HrT#,g= 3 -boeȜ6RpeE+#=ItsjLJ26(\MG'qA;Nw(4bS:F @QU5IVcwU^56=VS5Y!r>><ekzP -)iluOy-P0yڇ>+7{4>]5o_pS$l7SO7=ϡ~z&j"9Ff3A(h ܚ4K}i~i<[dZ8ZL-P kygຈmlyh*^/|3Xs"kĚC 7IÚ%%m,1ϵxXE# C N01ҾCP"p8iFjz͚ 5Jc{Jj}?@?6f p뤰;YT':ppzybFcI7xZZ+ow^BmxBP\wFzw>{pbGs֏ ŜC9VM(gU8@xuq?Nx;AEquO/Nj[9WuqN ?%wŗ̺75f/NLN>V 1,vb{%Ө;[|;xR>prWJU}s_DщTMNΨ@Ə7𣋼:~ŏZu[8}D|E Bm'|.85go-/(t"шZ:s_lخ|l6bsll29=قldsۮ"G'#$:D b]Pr\l.`w,$ -ϓTVWUD̮r]9 ];A1B9 (hr4*Ѩf,Ry ZDd+G#r"pvrԾѿ+`ܵ^ Gk4:ıT-TiL\Yn0˰/2,3,31 $vcxKʭk7V괪*RRU~V.Q*Jc;R{;G: rq+YȦcn:JFd)ﱰG}VuWj폴~UeZr6f_T=/F|Tg"S8%S[K8]ͱlsrx[}嘽,Lr fÄce.vLg2=&> 1,wvi9Tk%?k5t2Y$Dq"nG9orj8`!E8\IL&1B(iK{SH9#3jJCq'_vDSyʝi%SK,'r %pj6iLU1݌2ьQfL4-0`tݙ2y_ d2LG_d}>'.zi{XdU˜jɌf*3Y&w/4i'p y-0ws_c=om)]Ɲo6t=&ezX✖.kߜ,ȔjٯZ͛ٗs J*fwa=V|En+x O=ūt?*%o^ΒVGaֺ"tQޓDY3%R=V -=xz1{GN]a92k=c`~53tRLrH[(m $`H#Ϸ\_!9 -}ue1ӿH4)$(~I$ =5XE_Z#_t ^}Wt,RT$k$S @:;I Th$9")Obp/ yvOL\Mb&&+#rrC|ǥĠp!ҮZjBVCq$Y!6BLaCSl aTdo1'"lgqHLݢէ9(Ji+"J_1uBp:ع DSbsMa}aܰnBywx fkf?T#VJ٭aH=Aa+\89JI_4)ҟMDZYXI׃(ORS_US[Ƕ\[U\=%=@vP5,O8"Y=%]6mzI0H_)K0l>.wR )ZL-vj5!/Cp'V54Xք,(z۩g C|D' z "9&5xZpT% -vz'57` BcㆎS}&Tyi0(:5 : HtRwKc)j<)^xrS긭Mz[95YiGcݲ9S OkI7e.5ӍB 2{2ceey(Kk]XXXv]`9DPEEE-}3Ѫ68ƨǚ&5UcըʹMG϶&iLL9l?qg~e}yG㣍 Y&FaV[O?r&4ݑ Cƹߢԩ~?pҪ 'Ki.g]l穋 LhݷS c)+C7`?vj $ur.{gxhV.37kznP7I7M;*D2f;y6U+6S|}.UXzM|;]jsrE5zH]< t9}" v@ Z3a,tS|=t}M>|\sOzO BVȆB}24FQG@Ǘ9 3ЕbA\Ru!u>}p?^0zݣ׽C.RC('~n>_~fb/%||% -x6Otk?Sn)qG>H^WBԟqsϨسu8Mhl6uF*ާVc%>V2e e摍ϯilJfSQM49αͷhf x%{Z1p"ơ4-6o,P -4jИTmnq_x y-5+8{wn}W0zh%KdhVWfvWc!޽LӺR8MI~Tc&X[Us<1=/gjjb(Gˋla5øph?YCif5iJ_&U}M (Q]HѸ8C5 TFU[UWo<=ߏ2pFqZ#-93#gjҔ>(BlQmp֘~+~e_UC,dlְڪ!T~q >O ИUEktI"2¡9*PJ4@);҃i Vgd(͑TG9du(9YgdrF wAF2:)SB}ځγ$:P^ ,g3_Yٲ5(ۢt%ggWk̮*\Jp5fuoQeEຬ(]EgS WgђL1P%PR]e`Yr#+sY<9Sg<);S2Ez7+;y*sIaSDn[X,4&rP ^pV,o4 P!2WdU薡PE#Q4NE --ZE'̃>8dY]p9dj FEvǮ"!fRzD1j56$HӚ1ZsL5Gڴ4uSv~LLJ=}}}J,}Zҗe-=/kMي\!iZP[OhgJ(~ԏ0h.CM& lXoӈ`]~񣇋5顸{ ٽ ]k4N>brK $B])f:[`ki8`ogg~rr9H};¥{Ev$9P,z)YJ\BcU?t-=7L0cQq-)8ť|?ct$`]9sMxB@w~DŽ q` -a2B5XXQfezE|^&WT_?xNDH x&@QGՠoLNי1]e -?>Ǐ?Y>c2D|oI9d 88>//w@<)3̤NL ?>ď0՝?{wgROyN9%x%cd5^ \{%e3)/&.lخlln应wEVوvϓ:^<@G!.b(?hDcy2ĶuDڄ]?Sm+_qх*?J&v%} (nC -D:\fkmt*t3zs7]/Rk3ɰZ嶥jm\Lʤ"iʒUTZM8K[T`T}wj9ME$QnrvJˤ3i ƗR-gE)v8T:Lũ#5-u&0PiєA^MԬI_ ەO_ kx -G҂Ҋ. `+ܔ9"T0k#Qi*7eyG(AuY`w]`e]]6xM0xD⠉hhԦ:M4=$ΤvI۴;^37{y{wiJ>SMM,)O"t]-)n~]6pDo}=׿%؃ -M|!.oNP9M1#U3&_,UVSSE嶶i] u.XwzHb=xpgيlAS!|(^UEUY\QYM29m^a,-<ٗоY.e|9)-0pvӍ*-M0 &]*pĪ̑,Wi*-5,TRŮ:&5UW27j{/h*u]9rFc3e.KFB|P e;GYli*.RQyVe(S^&OF{f)ӡQ]FV>L+y>FG*^3T͑[|oF׸[SQ5SӨ|3kWo2|ەۯ4 \UZ FoTQ=Fh.& B -}/P06Fk[yoHCY2uLRz` XmJ-ocB2)f(= &rkxȧPPɡf%*!BCC݊S\bo+6znڌ5]0Pp]W>mĤX6&*%p¹J[4,p(.ܨ0/6&|f,4b96Dx5ƌ@=|mA{D'Rb45AC[R@pDT#EMaP<0iBSBca<}P{{$7eh6ugrј?v6ʜMncښ 0mx9c8GXfH⽓1[s)V)m)nql( ".ɣ=åM$wc:<_O&(ӧ &⩒iX tSK(kRˆpp [eg%yt2'9drcN/8&s-[ֳji'7UjCm^0}ƛnr ]"W4y&걙ztG7B=V6,Ԣ\1ovaM]QD:Ro ig3tt:~͍[`+<(f"$#I̯e'{5N1bhof=Cc@~ Wad 0*r޸ΞqM&:$fϼɀ$`8dA>ؠAd,-=qB~#M][}wuO|ʯ~g ryAXzEa N -n2.SY4yy]C4b9eh'{̻Ja,#tZ\S Z!}5}L>U3 xG;h^ms{V3]8 -Je|INS4hTO[}?#ĞIybZg)W*7eƻjArz}}Fwㄧ ShGV4\ԭ~b&Tb n_}ث ѫmM-v,ϵ'`| />g,ƒ8B-^T*G_L|7{٢mӉ9:w [iɨ Fܤ`< W;k,ExNT2yg?fۈ_FtA7 -Z9#9NZ֓I:Y' -\9yv2È?#KBh&t0UjgBF5׏p6XfƱZtR'e]o;v.p8qNlp9&MNv-mvJWrT+[v h5[@QZXA\1& -  -!:'}<_+Qˌ7ъFQ4$M,c]OxaYEVW^eN{{J;Q>!ctM:^FݏNtf6R;Iha:fmMEQڣ^C")RQXs< -uM!}*FjT tj"W5=dƲ7k 7,jpV7PE,+s_ܴb%4J{JCvJ.Ym\)Weʘ&+W*ߩd~ -Z4ZHAD˜*@#S4hтk"6P:MAZ]ƴwRIJfa X<1ٔ0974dnҀ9~sb}kIieF˜, WrFAeY*]YzJ9ZM `<ĉeȖ" X-V(b ֣.:c -7(hߡ} -Skj.7-}G\ܓ<:B %CYXc)O/;Qb-SOYrʫYVI6+^UrD~ǤZ[ث&xFNjr;^Ɋphƒ8$:j0.kQmRD5jq*P mZjj9Ffy|Bu|A5WU| qOPٍQ4` z=^0>Eü^P.Z\jvW]/ۧv5GT_?(g\.&9=A6Á23|43 #7964U_.4&ab1۸zsVW6t-ribAL"c+ǶDObIcN9TYPs46LJs;0c`w^@nwUf 5V1!a5&9f6Ԍn&لnތc+Z$_-xIL|1yyuz8c}:`?GgisyǼO& ٷ=0ۃ>9g4OdNi8)<|.[O+q8O^aX\ūÚRZ#u}g\"ӿ30+FHaW MqM7-:uqSu_qp?a`ә>^h^; s͌I.1_^ }C~w=ue|>r,!݆!ytVLX1K/W[e2c̦Z^ً@'~yy_=ͫ O8v?;NDZ%n;7zImvݺ6[E֪] Bҁ( ʠ*kT.T`@`m2sQS>w{y+8!hn X_8wp@7)82}]c^e?̫ -<߅o79|NFb-COoc\#Wp9/|^u¹|<~KhM^#80lO1|e.c_ރw&2؉_3/^P'=C%i/pZO~|1!} -"zARBLy,|>Osyx4c$csyy0;G{ W=hϳ<*wnY6e6NY]adZyN8K΋eT/·df }?edNaA{)tg"֣=Sqy9 ܯ3 -OTnawj~ m+'`6@;vahO0y$>f{;{n2ŵSϰހa<_֜B~c7EE]TK2/{]B?J5hgI8Zrs̜y)u&x"<参 ǃ-hQt1"Eo2KnB>@6X=GRff}6CKc@ ZbKI~hyYE6VhF~ , )Y}E SQiT]ILkiS;,>Dj+>V%%9ib"6N&!ˀXf2ez˪cU99Ty:;QޣeJZV2V˼jQAE-\RrU!u9Eqs mohn0*]7t ԵTiU)CjꔴXSҤZnicƄYEyj0*h|JTgX>E:'?'n݅=XK۳|ý49u_;-s)(WaQV+TѦhEJgάkpnr*[yZsrW^Ru pSngN5pwoc-u@[>C )VB.1WljtU(r+RW:긂 -ܫuonkUsJ5_#9ϫ}*s:Ļv|OA?tbqo&FxL -y,j+P[ZޠMyu7)6U>(g9|'e="|Ruޜp-ĺV|e:^$Z"s~|KwF@܁rҪ d%"#O Y_%xQgTxSJ}NBw3h&hڡ{Pa\a.UF|rFBt-:'kt,=2GWY!D.5Wi8{ 5سly Cc~;7zUSr cN1d5OQy|Lj78SEc*hct U -9?ހڣس^V>7CPǵIrag+Z -eʖʚpȒp1xiE%ɔL%I$1ILY( IpB'Po+h{$qh~\r߅uc H^"sʢ!Sʩ%) -S jV `V4NaRRRl֝Iّ]hϠņd6h3//LH/S/9t5Hu i࿏{vw #A<0sqsc,1|rl7mF1f#+>i<>]s 4y%lH*P_rsN0+8t&ܧH()^b)e`.ɐц?:񣛜M'х.;q+\̎ ')'/aS} 0Pc7!g y?QK9d% .5u!}0klVO)^ތ6)`{`5=0XI}ƏuaK}u\kWr@nzcyGY<D^%-ći 5M7a&X90Os6&j>괟d+V곟Xl!y}K؟6Sϟ!s=U|R</hr뭁H(!0 XBqaC*5?+8plI>| L}_cuM;9`ͅ9x7Z}k -Ǹ(dD\,FN?#'')3q˥|xCulb3׻Z>W]yD&Qp$ U\0!Vs%q@ϓs ,QTg~)!ĻeW9IнFsƺFA}pC&k@&0@>r0u-ys% kTmr YWIe{1܏-S׀CX5ȵG6(пјwUH}r:~\eM! s?ΣijOZ{$U1#1J ]v[>_mpmu })'hЗQ* 8fy ->=w$) t9Ïa|$љY;6f_)b 5خǶ&b{gbx O)5dt;mG/Q'*;)p XUf{&wѺИPn.NVjd ~E=Kx:\?דDtO`X >-`U2K@ +\gQQH/5?z ORz^Nl߰Ǩc~g;h$i= lYnl WP:l7`{'!n-n_%sŃtAzDwm_P|ت]>`tdJa7#u:IDQR-4,MGZYmbÛV͵ǐy,G1C,E'9 'F;5:KQL䥅L>f2H6lq~+93=\ssAOǾٚ5E^8BpDJ8jnV_D*P#ĸc7|8V3pw1wG6Q)pd‘GnRx੅M؟Ld4HR1è:g(UW^1DwAýxK#>6s13:mԐ`ˀ)𔰓U W\ᚈxC v~nw]Al}`hi`, Y̹ßI)&;U^U'4$yRTRLPij݊.V8uS_T(u)G9%RQ}_ι_m>@xV˻JP=Eՙa2åL2TYrEm5WEA{kߢ^y䶝UrF8Xʸ HjFJޗO4:Vđ,Y**U" 3X|WF\~96>>`b:ɧ20ہZyVJ)7WJI*vf*RRY N@9U*!k]S˵HNZe^+쮳9ALk=YHI;cQ5WR> BK?/M< -*ϗ'';A׃AA?L pew^g;n ,$$\ T -D8V^Bq2ZN6#2Ң >q;9oyn'[鐫%g+{ ]Il% -e VP!d"Z "8<<]LpUq-@ԉhܛ_! -c> ) $Uc֥ &Sa -(Hw#)<as29C>q-JFP .~1͵~L{ MHi 4 -JG ll+@5c`*o >40E70cۭ +W/pdK,1!a7fF3bll m B&xjG؄;@ |Ro.<)> ?:cm9&'4^6O/3JκsܺbCg\o3@jiy\g6^g8 9@/}o1DNQCbwD&AzkN# -:Ncnx_`='d62!'#FW?r&eRR;㚅ͬU[uv ~&v6IZFPI`%XEnE㮥>yl>7 ,f=F5\3KTh\5!%>擤!s`1kD- ^[csX|0>CMlFY} s$A n–Z5d||X`5?b ߝ%b&&ϰo_`aM<~H{xy71RX:8{WYIň%@#_&A%WL$u8xWXQ>8B>0uUJ &^pKd|G|FwUV3]6KD_PLpoFp*%U~/N )ڇGNvSO8jQv85mjd+~Ɵ9D!Mǧ);Lr+jOU,U*.V_ZUbRmP*Q!y7^'q~&>@^gUcS;Y))*wzT0TjĞb{*tT(Ѭj-JsHOU/Zl( "Tr O%*HV^SSSI++5W0*7BMJ3:eK1VmlxRS4Na\ɑJb1ǐ' A9J@!%7=A9$e(ϗP&#}cr?8ʫ -o6$,fwI6l~vIHBH&@J$ -$AkJJJRZjŢXZdZQt:0VvږaV;0/۽=s}o -|ӷCyd}Ke+{y3݌slP⼫`M2|ey*(!Uh+ت`>9ò7RN-F 6`|KZi -|A|lr :)wr(4KP -Q~RpBpNˆ/B׏܆hDѲ!|PNc%|a#hpJF0ߕKżbxLq㤸Sn~ǐ Ѐ (%]%\a8g|JHlHOq4di X65|ՆoexhE0W!Д./n{y೎Y|< scZlŏv0 :rEE0&u٦0k@3nIk%e o!ya|HsvB!'KA#KYd>`]*Y Ճr\tuL-1GlkKx_ o8I/9kA!h.\c 2ꄯMS~w9Xeqrđ&fNjn q/X6,ao=puV?&kyGC&g3dL(9!Qjgky?ۇG>-})wžk) -!#6ko,c\ɊA(fC~yCv&ړ{OK߹F*JyW=烀% qe#3pH\΀j<9y{@&/|N:gT "bc|'ku4Jg-_-__߃?[mrrz{ҿrGQ --@t%"}v̨N|StLF8$P3\PEM/3y^b}"3ɹ#LV92l+C -3l3ԑ)eX%x?<>j* - --tL4&qXsh^x_xONjqJtR{L(P&˽v+p^Z!3Ne8qY Squ sa(C2M~] -{mf{Lm5:'`6?)=|w|_APŎL籟.Li$_y=Bz?"kzDZ}p_!B%}'] J)(<5kn tb#BŅ9!:NwpCȎn$|_)nSV"xfO*xlyxH%k7xxSspd;I쯇o9r8+[@ -ԁ8cҕhC|E\ -;{Tn6ٻ4wX܍*ɝyyrgEo/(3?do%3$$`BH@ Ud(Q"EED -TPM(Ȗ-Z""Kw;=4s3_sg}ߖ6(M@rAk&Ь%vJ^ ; KgM@ úZ|u9I<9v,}l+팸 O8:C_ mk<b$J.!)A-A&.~OHtOHZsѴѪŭ$NVi%M["VxsRܢx:{u>4 gqYBzt}N}.ѽzDEģgq%+ġ~ŢNy}d8/aKbrg*bNE} -A3A "M~K[4[<~M [[%VA[rNj?]༆ey|1G@(h`*]S@K!M>b Gs)4 N_(| SC,u%7$ђ4ų `6уv-dwCaآļb1a11NSaȤϋ8!5F -ESw':{U!<\>y0?*>⎤3&C̙",\&57K?GӚ -4JC96g! -dSCI23!rm3A{Z"%I cfqdZ$-*<|6xcw!^"0Å("qkNƤ5!96"M%3 Cso#:24s4/%RLZJkM[f -ESjhrٓ\gRGB %xPEWjI],-VI^T0 GFZќ^IRkA#VN,c.'ZϕW:g/\hL1$iRUkkuRG[bNڱEAΚh˺نTIn}Rɻ@S3$( 4[f\" h /\4DSGwΆ݊+yލCF3gDv6gTT a[>u 4UFhF4B@?hI| baX_MbHДt%0>BS .z$f*|ըj@8:FF0'YPyH`pΪ4M LH9:KFf T{|jHh#OS4puddq'qm*i~RRB7 ೛%ljۛ ZoIq@>CRM}jP~D&%x8(D笚|9*Ŭvh֘Ws/wQqN2,AI5F(SB)RV$M׍luxUyd./(ǘn+ДЬB݆j>׍l[ {T38؂r99<cBvOUdN[`(Y9y -6izEqe-Z^Yqխ暶U_WݱSv7٫w8vC 1r17~¤Snco5{gκos~?.x?.|EO<䩥˖xz3ϮZ k^Z~Ɨ7ymn߱s[{o{>Og𑯎~}Ϝ=ϟ.\JJ]IYWQdg+/RKrR+kAݔ7) nƃe-ʅpa2b"NLUV܉w+3~ܘP~< y G+K<Ô+/b:&e+8fMy[sP>| T}<:I?().^J>\ͻ%~__b2lvǣaO G8#1<\|LҚ7?3' t뮶;f[mq&O6}ƽfϝ7 [xe+.j[ȤƟILiLT*Nhj~o'G~83gϞ;w?]pƶehbm֮-;zW_5a3Жj꩛sӲZdOG. 54PCC 54PCC w +u%^]/9 _ԏ-~kwe ܝVOѢ'~HPG VFծ=Ͽ1}C&|ww>/n{y /Mٵzo.Ѳ{_d'װ6Rk]/޳̾{ttp|gvzffgi;fiNд2/AoF)TLP. E["-)'-߶g/yޘᎀN"_ -)Uka"a>W~ՓĢ ?J!&vezzc-̣>$CkSFkCe\ )j3J-)|ʉ鱶d(;nZs>w'C71}fDmX4 >J6 3O;F.^hW}F]υ -{E"f(/c`4Ѭ7h^!}w>85KhʙHAΡ 5.-F\ |{Gq{im=/ZtUppdK*8+#KD0 -3{717@AoPa.57d0~DK2qH9yBCOmHLU1tՔl2"8dX2, K%e( %6@du= -םj^A\ˎ*$,!2.KGv[=ZP -$A=]+#zw^ XaF*bZ*SRD &^\4h`C͏@v~'x<\վAGi]8^@(WI<}IXA-edYÍDVa( e Zg:8QCHz,I^PQ%xI-02,탡2Ad jk.s[g-HQ$Xi}yJ&E|Ne2@ZFO AF# zw/؄9Ќވ0RYeJ($9J;C`M􂜇}0 P/69&Il됼:y*LYT~?W@lͥt%SYBfaC*Pn;ӑW_ހ}]M*'(bN)%O2qbzȅ)}^KgX $'mo N_u_q y[r=P"fUdVp=!:qܴ.K``ZJ s^9z5-&i *ઑ9u(I#ObDQHnƖP VKE2jVwn '\G&ǼԲ֠m0NJ\ɰuUH Z %4Y@" 5Pog1ip`䉳ߦq/g(MEɱZ,T"V $KM2TjA})Ï9;g/(Ė>Ȝf+Z5b m @92v~ jl̆q'G%7B#~̇ސt& n磛#XB. xю?S]1a^‹w>LpP8:H"Ol@H4@D E> Eߧh x 3{ =p~@bIb)y`o%65~) -}OztGr( yĆ_ x {L|@mT+5s7*Nȁ3GR]xڅ)|9x^d\ \dyb.pPdmkkm_"8'q*)c{&B?P|5 -b} \hXL35j1|%/h`?b!4У( ^@9 Sa6r%'Pb 5A(=)|FIS|F!'AcIn#V4jBkn    {C.bE aԞ=ag*"tVP*GhHLf)sUQ͚H%PY~5[y6V!zgkhpwK -Ly}\DM3 3]WdkijJ$#d=U$yA -7B-P%P_6`ׅ3$}N+5AIL62U`#%yWFSE E[V\Ks2[nh`ԱCbx. 蕽|Đ -Cű-NV>ߊ=jVy& ޠe=ή0ۯk@G -*h\̰O^LA m(U42fwO'pxa0|YPa47(t%1 Ο;\0^vwvgԟg oB l;e^cdUd ~Pb07(PfG?^;87rzĸ~_|)8Wх5SSrITdC!b@ As/=s߼tD[gnyQAA$LN'3 c8FBm}.)u#=g4b4~noUc[Q8ܾMYBy͇fBHOI8t8:K - |H{ȠLdT}ūoݸ\7gMӫ[e`Gp=ϡnO"@EdYs@\4yjlflV/o.=ٴBj:*n%}lNmg[SeJKn/T^P@QQQ@@PA/],YinmyRؽ -e[ -C>yE@)H;a#ssEfKϖ?,?_V3|~lEfAx8䌃XH?Br_({Jh3[^^0_S 3`p^AkOot7$磐dmÐА -P+6/ -f^ Gp1~)$T1|RB.玦TMI千.YoA777SCkCɦC ?#4wPO?Nfo0qZbNYLn~(VbOKmkZeu8MB ̵Օ??#Ȏ,kNDs:#:'>V\9Oe t̚R2'L掞8Nhmנ镡1!?mb#~GPqEfV 7UO$K.R+ \f9\cLu%uMXyߪoNhkGWF 5Ak(9ԁZ$)93Ε4RfiNb]6*MZInAӉW2v -&Ġڷ6[ɐiuL Ye>3YK@e6rU/"4 SjbMCb"5b@ ЇIUBEI*w:SW.+Է[i>9Eߔ+UKr7Se@p^*6A3x!Y!,!*y-vANEM&ACӫ cuԆnvC$e^X_/.bm[rĠyb g \)ƴ&} IQRVmz;hgyn46,bhغ ;WB;b>tv/KWt:A`jNmg\}CEŴ6NΠ7Ҥ}4E111t"/,1AaO\4FٴC AJd2ȫ(8Um3R HaD ذ$[n+A? - cSΙ# ͺvUD֜Zא )F/ -(F;Lj! -14! -rfס^w Y]1|6QHUU5gvŹ=utsԚSͳe׈2xRKFEMP81H|ZOgk15zq4`.dzXFPV(3Kd&Z/asbP+KVPBCǎOf{~4]=|RPIZ-` I-|M)z圾ЂxME os?߻IocA?c)ґ]쉗RtIZbAe򺣕EHE)B)2*AW8/1/o\#=s#ǒF#l{t%/NՓ % ʸtM~aB4|}MG 5 qtl^44ra8((>' ) 1tIDIz*5+ @};XpgӻG\^km'#!_ٴ_DTXrR,-s4A8K`qqY9UX[~M6®QUA۠]tw \ԮUGg<6`**9{".#u 7 '8́j');m{k&h ho''DX_A!NW1K)LY[FfZy on: L㆚ P 5ۗ@+@t =  򆶤YIVS~AƷST*e\W;^^'cF:/n΢wt@s[\d FPEt$H3>eOsJ0)/(kh@>Ӭn fvhN1{vgo'h9_ >u6EgZcin=aqWu7h4(N~ ="l'h0SFI721MGMl/ 4d`B mȠ84'<@sgV;5Q9Ts ny*rQ(FRiھ,&#{ZsJgK|ݶ ۷6@|ftgB&'=TeH[H}U{˚6˪Zs}I/S9K 'h߷ -T7P1!O I=;scPcƪQm%WY.(IM7ـ Ad|LgGX"nJVx+9J%rS}Zd5LV%THdHm/6%^AfdP] ={}-*[[|SJј*9(#6a"[R)|Υt9Xe*\of{{8 o@eЅ փos{Ȑ選 WtEi2ȕMe*icAfa<&ZOki*QCP:gZd`"/zn߽ʯ'mytSqф̚t^s4{g%wQ5g,lmEڬJgd୛ m?gz݋NP*|3I;! RʼnC䖸 5mkey_goMi#֊NǺ_ъbZԊ"( D K! ـ!!@BB "ua(nXQHU^h?ܿʪ@-g{~o٦w7iaݯ'^ EQG TŶȟEa|1Hx]&]-E"͚`^?eܡaWtLmqu~)~?;I _)OԄi_hY=A.3+ݑq+rnW-n/^2禰gl}'=$qϛ2 &[ftC2.L?+N -z*)ShSes s -)[+,vU%8Zyps T z;v6ُ.3 -#0l&. . x D ꞏ|ces`"5^Y{JOD'"E5 2p!8 ;Bq(7n\v{>F+,Uyv.5ก -.I- -vA@Dl 8p}!:.uXb,15(`ռbYȅK2Uw ׇ _ yC7^R@qX;o;w]8|6s\FV[a4,/Aqp[k=;\ȯ f+7@!H26:C6 pm mlO +8{q\ׁD!P@rԣag -BdIR&ԉqMYϢhc.ƓޜG{a87Nso5dX݋`J#o;A ccx⇿LNHVvL7(I sU g F3LcL.SITS󞞹's1{.bXܛ|mz^y3-9D^鮒d L4T ~m8d{嘳@_h[;V'(PJIki)%F'\WTonuwWIeU'z+fjol/c}I6K m+ΨU\f\VnFeoÅwE*I> fh:֥ݰ˧֚.n&(袔[1Z(>D$h $k+{*%KGuS[o{d<5mq|셽qj??gpzB9(RF/oeV[׃ZE-M]5rI@.i' 7crk]:_Szp؜q봋sd 2hD Ӌ>n_ҧʫW\[1(\Ax*P& e~Qaўw5rr,` )||dh2e"1!>LpW1CBzmM><\( WyPzѿdf--hxomP1^R#g¦iIIVD6)/D~R:.rЬ,N/TV ֭],[y -)u߃'/RBHoƒHgyQ0 -L=ED] -DI(>݂]+Q[W_M[f1-cC\ÿDa)5:6`5\,+E$Eq$rV7z߂jZ'W ۄpN%4X`E3@D߅P Y &( Nv /Wm FI,ˣF9"/*J~ ?*\8 'C| X d}51RL܁i k|s'Z8B$1"۳ uod8:;r8 8DC+D8CN@;)/S~l ZCDݑA5"*{&#Ud8p@>3Nl ]80 {`ma CVsX@s`5Qd3c&?.n)TC*בֿ$\)/]N`,w[V6/SW1F@g JUTC4$"1 Bg $*AHP ' `jAj9H7Z $d;A, Q^jC>Ak6*8$l(|g<59jCo_j@nEDioK 0W, `{kX3_*yBJZJEZ n $/F.D>y;5?5HoCIH>,1Sd{jC<, 5ujS h5<:y)!j@Ky4@ݿ4$ig>3MM$" q:y;*CaӇ,.1ҽ?'qL.\|Q&$NzEseP ONM%O_P@<Ґֻ<eh@!Z jYu&o5C\D.S^GU$ͅ`̐n1p=pS4\:9x Va dYˤ~Hg/$'gK'd= iN%  t=n?e5&S74!i HCJ9@ї^\Z;=z4C1O# - FI%>aOЀ~9x,&i<4А͛lG68`H7K -ANmtaLs)JM - - -.QY2%Y")u"bb] -q@$8@50Eڿp0̿bv9YCu7DrV,8dI6Rr<ĵH i(ߴ׵G>trÛV/,أO[C0L]5SI =V E fKt XBkUSjOL~Wi_  鶅 ^9k>=퓝#ۃ͑QqMzZA(VIXb>Yʙ,uIr- RzV]@j -齒B  dW'`#g! ƽßo=UǹC;|{Z#"[o]MIjRE6') oTWV(VX5֝U[++h(\Aj|l>m/^7K>fs,ؐ'NYJdXʮK2_f dzh F<ߪ!zA=P4;A%r@Esw]kЙM? _p8#,-:Ym+jQYņ<YK G*hez}I$jp^ixo\GJ9t[ivO=W{y{7QUmqYd -݄/4s -b)R$Ī8V}pKsةUu_8t#Tov4t_6=sꋈw]`X ҊsdU4a|S$$E#LMaT! LdN)σM~kcK_o}vvo8~,x8<⻘4j̒byƉ_Qy"Z4`k0mz{i4hހ&ǁqܵy 9O"n|@F 'gR> ݈6fYM\d2m&Vp73pp,gnWA8vx2 5c/OOp>D962{"1>m"S^gEYQϸĐ҂z6 -v|yl@jGr j`bCo+ o=]ޜ3a93WgC3"㧉1ԸkxI!/)uJTm sE7Cj?EXzf?l^s_);xًٳa'fKf`cfKʂCgy!$a~W}g{e(]P;# Q7la -8 -` xd( yBr&gp>;~`}juBR*G!lu))6<קix A;/CԞPH i =H1= bPz\Qoh<-^(eCUM-tZ':-"%,X8.λی-~^m灴\qJw֮ udO~q|2PG( ac>lpNj2[Ke8vGEłH "BH)$${$!H*(( X.l"(3{9W?p.Y{ofF0  dI_}Rb/Wx"xW]^ <|s8ųq0}<Nb8!cVx} sw[1,b]YHLelQuҬ`ZdY-IVQ¾guDY@< ␋ -_x:[9pˣ!5Q-e'& -㤞-Pq$FDk -(ܚ|9ǻenkxn1P` #|"Ȝ̍j]w{MEP[[L('1F:רgKjJPER+.4ŧ3M7XN-Kt_>kDP"ga^c'qqK>˞^=SgsוGŜ*OJ)*JS9ZSXW -tr]:ǐ,ȣ+*,4EC>UuӜХKe"[q`/j, -IgMk@76޺|tŦڳ1ѥ|~y -M_La˭LQM-àͥXL$}9UBȹn&;t$=)Y-0epD`anj{9vZkgoaGQudC g Kv1[F?!RS -zdH4%Y0aN8u)H d9s8g[lIJŴ\u]I㚚G1hhjsP+]ռ\}xn~sDr^G{TAPI =uz:ڬ5>tk7ͤ﾿Mw/uk zDs7u#)y)6YAO9e;푷T֦P{@!AsSwZCRs?U O>Rj&;ߨ}M[Z -W}^w76MUK,Ց=8RAbyڰsԁ ֫ uTqZV"D '(`A^Iyݿ20duQ琯UPi5w["I^OjfƵ<ɕawY9*y;zZ]k^wiT4لݔxwg 10dBVI۰ՙ!NG|=xa~iw\p7?W^)m,m*m+w4XƋk/ TA!GRpn .q.qst [q3c>VFn=RRL{ e"Ibw:C/8hΎCBh$3b\PpJx֮CyK2c~q_vdrT]ptInpF"Sp},t66!l"FMl I3Ff9X!AN{H+RƍQgSwy*wlHڨTG= cpsdX"[,G\Z $7@t6KH  -/im>MKH{ -D6XkBA2]d (["O@~bN{@i 9Z F?x9 ϙaciǩF9ݬۜ{1HH@?!i&Ri#g.Qi@sTnBz!<y1v> eJ ?Vެ#Cbhw/e=(}z,~L:%|HŞcdA@6}GnRŨj=˱j*n_J2}rcf32gҎ$MIٔqQ~7לG᜻ vfOJsE]Y*HPkPNaZnZweCI~T~%c"7*kHNT$Kc͢ܧEw/ sGxvt'g@B6$7ϰ&5oT#G:i)E edY$oH I؄ld)C@+R>}/Ç}07H^0iƟRO~O$,i,K0)QN|BȢ`z@`/A\$%%!5v_k]7t 7S.lt9nF f=ް|܁Uǵ6[B!ڐgiznT[$߮sڀxoʐ8dgWos0f3iApZ@bڢ2Mq? n.a~DX+"UP"  "d&R0 w~T]sJ/)h -k0x QbF-&*E jQQDkbaĠ8?R9Q_3kỵ@` ܦO_,Z_t86]aɿe?'#a dëcV[L:@?}b#o$`W{tC -5@; A_m@%kPkj~CfeK0Jjn@A((g4:I?|kXyI*x $%Rtfffjj3Q*jS$bZ\uab'q(\} Tp0zSs( 2A hBmT‰c4탱!]~^qD:M"!#M)Xag -'d&n,D#fa$ȋO0K!G>(B'j m6s+.\I9MD*9N` (7Fx!$fツ^kx]2_K,GT-t@B{,Z_]$$)\Na8XE= Ìzs\2Nl숄^ RMVBd2ePڠfV*`u}P\\cB瀿<JmQۂG0ց~Ӯ^ 7Pz<^O$B°7yi}>Ǎhc'|>B':8<WC𼍑2M0,؀oNXׂ䣮wvkʯHH|;čWH^: 4.x#=h1, -GrR:" `q'yq~=@$= &j ڐw c!o& 0 *r4bY0CFsȒ,!M[t=NU")3`^D`0~폰I𱤡-YI|89H  #D:#eDN3afȎ\E%+!_q U7xw܎ pN}!kH) -'c-uh&W؁/1("B`p7Yke9⬐˶ETxATGLroc?KO~K RSS?{i_c#:u6ᐼJUOjoSp -'r"Rqΐ1QcM#)'XkF/%mG{~B?d%KD.vX5u3Qi`slBE|q볢0H+z/}+K~?Hcd`v1n O ?dh=L-6kq=NƙLR -=d,GJfb *`[%ƶh>U^ذl`=>ԧٝG0odg>$nޤ__I\2s)pFn[lu4v?5c5vwֿ) eG+ ˙%5oDH:2p~LξɹΧ}⏰O2t.KC 7:y, TzdVG[ʾ=VF9Pis.)/w"`8P#~}bC:1J"n!ȼ=sSbMsF])c~.SPnrn(W%3ʓNcžQ[=T ,BBxyɮht9e5hp[Ԋ˓vja̭J9jsT}vi.|oC#$ -$Z-2dAC.q {'i:&C D,{ږ^;2(+r9gJ' -*GUYs[eu-FvAdOse}N6V i(&A;}_;c䰛p­s}Vt*YIVe˯W6嵨~[TsdJiujejekq@H[2YD,%!iAGF>s:jh[i~W#J:Q#gW *J-eٍŻuMj*UgirYB?uz@Q5B];sk:~#-4)A)ԡZ I - -*HDP]@?8*~Yѳ}ssv: {:,{~'ŠBzjZƲԨ3Y i%9ՙp0W(D/D)췉y@4!M?a{g6-—KR.~4qj4h^\:Y]_^+(.*N/gd)ŒԌ 񟱒@:mCySn~c+ǯx`q_8ΩZAd -ёTaiEfFajŜ¾#E%/KiG $I;8-88 w>\/~e*=3rpAO^?۶[cK8!)LjFU^Y\Q/?//[>_LRZbٛ$8I rԫ⾶oý؁{q{nvh䘽a^k]gOhV0qјĴdL^M0TWõO5Ki1oxU+q@6\ET)I}QFˣ{*޴!ݖ17ݶa LjiO$3#>$Mr,ȅ#q)MU2Cu6d7m\N ;~8I jTDfl\o,jo: {FeDzS{“zbb#; WקjHjNgv̦_ -8$t%diF4;$ݑFSh䑎T^Ŗ86_p& ׄ!q쁊D$߁!c`V761=/{5JqP)^^ >;JBf6gdtmB᱃F՜ACƾ,ǴPOhޝ6wBš(whñԉ9mb%~cPI _}8-ۤН /οQKrk{5.T@%uR=w1щXE_R^K>KC  />/iE%FoZgaAլ HkU-ɫV"WCW9FHՔ}B[Z~Z/9})gOrveNfB82GuRbE| |#5lYwT [`wi} ӣ}x={ɏPcMeC0cy^a[I2ކP_B-7:=P&\hΆ80dWPh' bpN't/}hc{6m@]Ĭ Pet7||ϔA$י T%OX黀 >]4.#`\5ƨ LϬ_9,P-R ,?S@5"Ib-adVp'EBP>0O]QM^[TzYuQ Ɛ9! I@ @ A@(rUZPE -*Ȱw;9]笇ظm@X  o#D/a$vla,|Fk~`We0;xۜ{!p .B i+n hkrx[6?nǹQ'q-[FÖ8āh=н0 D Aq1O#pR=%~h@m 3@ ҵ@ez$|e[IZ؀ ws*CfV=zG%v?&W0e 'waO"w6x   Æ9~/ϸnl$;C8 T7[ځ|فa䮛 N!F#{4i!U!_ٔ>oA%W;9-<þ$`ODfhl<%n|TQG wN::>r~u.;Zm`.W&<AȍԄȾD WA3JJb;D|IoKIyO%^H>J3*dS -4p1:?,y7s_pyP]yW~1GyFԦЎ'XGE6&Z,L( %;Hi{I 2+F,,jB&)&:Wn*J.eW{;i4IsȒVIT|(0g-$Z.UíN2 +TU% iC -nE>rSiT՟՟y z ߾C7u27ۉZ5/[|ٲ[WjʙN[QM*jmU-M-4cR<7U>42_%di> -35LA,ty ]lrxOgwۂ_;CO=aCAֶ2fS<֨ThX%B}0/D=$קUR:U)?RHӎ1thkuNf Gkf,ںkyWS:s-=hUR*S Y#0deIU+*"0$N%ǘq5@:g6t1f_Km^t?p#`:Ἇ7R4ԲwVW e2raS(hr+F$!ˬeHP<3Sd[X15@ cbfq݉Ř]K0W4t QrFVXY_aS֗pRK qb\&-O+=JA]4_8̗-,qi O -1P= f<^g̍Kv;φڻp;iSe #ݓ &ZJMr`:/2O_^*yNi7.*a^\W<ƴH=;af~.al̽s0W0}Wu8/l_t.ҳWl:j~IH (" ;BBB@aG(Vԩ#.uSw -,0EtVEq=c= bʎϼO;~|}&GPnj'Stbo~~́ՍҴ껥? eUe>6 S9Gg?2ɃVEnvK7rk. ^H -/usYq[[ 7sbMFuaӶ9Y k -U E┆u9&NMit tIn3 .3^9w^SǰVՑ|פЭ37\X%XQ"L{~:ܮԶʬymdmC9TeZl7$chI-if+ qA3$MScCV{n Э _}#/zq|εIJŕJ*-A#HOr{kJxBrA7좑ܭt~NZn2I##rߒwYQ۞7<{7ú{cDfknNS2KR2LH.$ &zrX艨Y? -^3C \?bY>.Ԉd#hݐky˰qooLlqd)jMlp-:2{-O)zIH8!J"HX>--t?x9g#0 ee:@i5 !e96̰p\C8hՇ" `Bʂ,R)!*Bk ;[s@\#/x7){4<ǃ.fqq!cBE1"ST,B%W"=U^jo3v+w)n࿡) ->HmW] f{!և‡ T\cMPCj1de6C!>Q DHhu«)5QʤL @JM 0&jTًH CָCR6 Qrq Zلq鄏 gLQغ|AACil2} fl)2HϠY_8!e+<8!vCKľāIp1\h"G$wH -.HpAFڕLw8(XahS-^dltf',rw6&`FQ4%oL::!Az;׈Qɛo%Cҹ7I{-GK+ D4ȝP*yLa5%B )mP1oL6Ɍ=~iޫԆ&7rGQo1IyCWW/dclLg)BCBt!ő,:飔c}!"LPƷ:̚ bϱMr6s_`kcN8MEqkKXܪ {H @ b B-@"D@D -A^VPֶ^u9ߞ3)1 ŌyD>$ < {>p}n0 1[ n32+$lw} b:XۯQ)GrU`0kq&LxO1 Q f#@O[ a#O}kTm=0}ډ}Bs"oףX}i$6hWѰV0+ -s~1e9XET2K^Q9A~E6fLH@S@V@((C^ -d!o5n3aNKǪ]/wt9Q~uqXN-Q1J8yj^NB03S?*?g$z$ {s羚P?llew]O~{GI=VkȉŔe&tir:NfQJ8Y9$Q)JRR^y:m<$HX|\^ԯsv-K.O}ݪ7rV>VANfgf1ӋjMOu^>/NPJԷ$?IIeH\@\k X -:G.5yionm>KWg(Kɔ4m#%']ƍϬfeiƴ$:7<-3.#%. lb$ zob0[=\&:7;/j;E W_v_U*є(ɧB-K^P•Djω^H;)ʋ*|˔|J d!"5.7 Eg0ri={vUM-ݥ :gv_cĄr5-4uFxb$[ܒ\A?LQGl2d=iv'poٻǩѕ7w6qiD>YP|]>&Q*4qw mWB-PA;?k#t{h5h0phUw-uHy^/;,1 -0idҌ,M6ɍOhoht#$1a-0 pF;0r]m3`fouw)^lw+{/J#E] J ˒B'Q:*(v#-3>xJ÷!a m̝`,߷A ,hrO-i~%s0ɇv9-t9(ax@!p`9 l ,n0aߌ@v;(ݎ[G%];1MοÞOʾ\O%(wƁfdlfGmrޟ~n^BL Ѿ"4 I\dLCpfbc!Ń5RlOh0P¡Ej9Nh8b#MN dBBgCbrDd9CVI;hdFo۸O@p꣞Sc>k ᳐ENCP@^ᆌE gސlB@|<:S!RԨ/Do/G [1|l hf;U:A=*$(j='os背f2N/d~~C]'^OaM)^Rq|m$ y$ rȋACrr]3CS2.TkyP~@ȏA~6dJ -|:a9z[ gBƄ>c8i80 :W=79>Эvc4ۂnAPAu,lȗQ!ѿ)^E*T'* d#d@G4LX( aaV4D{%1K튢|O"Ə y%~Gnwv?DsdڐT ߳`F5}E=z&L`dcn= -'\y0.+\2lZb憘gMOsN=ɪHӞK{*+y&O\0TAtLi/vNuĂ 7ucżsJ>?.\0s}Իym9,?-wnog\?]}oD|$u0R.`ḁS.͇=/4[/[$ɿ(*n)1wƎKNw=Rv<[7E)F$z".5,uL,Xo?T48˽oҐ17*fhiHRRF酒EMs-3ԧL4'L]c;ڣϳۋd)!J~r}EoY{|_y"űo2ksk._YB|Ʋ.͊c/5K9P|>wϹ%VKedZ n)J{4/#/x -b}_`߻FܽR|~vLU k,WTy|zߜ_);qc2i@Vs%dM}Q ỐOsڷYVp3? c> tF}i1\Ci`mrkU{*7iw<狹_(o3~n9h2m:oHXնf>L0?I8XUA)ғ`B(@( =jjA@P((2눸zQ 3{f{vV|>_NnMF*1&8xxot~ |NΌъXQuTY٭9.}|gWF>UVJoO&51/'&Tſ -NZ 4D#/C -+2TVkrRtLgve뢰%1Gz ;ryr)R~1)ܿ>YƪLa&KEļus->TC"{٘p#W7 ưnA:hO6zIw VzE':J 9U*%IeQ'Nt=h/L@ -TP![ ד`]tk 5]Rwҗ]&ok7BۣKq-IM79'LWBȎr0yL, -M1e?0Y~rD#CdUV&z 0_@]=hxVr⸁pD0`ƿޟ:esZdjJh*dAC1b)VO(P T{kn~x{oeFgC5='ݼios~)wC,D쏹k5t$9ǐ27zO17ml36E|blՋ6<ȕ~WNP0- 7HP5 #(^C}lgIqLO΅sd?8{ &`V`ǘ9f32g̠촋#:JR%n+Wq gC5(~/r!Z Ɯ% Ygf~,"/|&x6dtmGUnߣCnO6p`sY9P@ -HUY.B )RyLR7*71[hP),SOeNwen6sew,~^p\O;Cde.|-{2!aYb3V]5+ꊟJJMWӌV}(>o;6kb6ە/a+~*p<@k:> }Kې_|4kC:(r:k!T -5C^pZ>}w <H[_Hh \~:L:IvMQ" -ְD{P9Jڍrw2Iu|u &9+m8)@ g)kHE vȜ` dYTg;Av5&@ $$$6!)67,E*n8RA[EQ}k=ťӊ֭Uq3_ۙx;}srpig0 bɴA$ -ZH2E1ʴ JYec'6PT9I~(“Fp [83ؘǰ' hiCzu%icj&v&ON߃Ѓ`O B Jπ_.xzǂ6p0~b8A\4uxg3O>C|x\-,@0Yï {M;H3)W;=%wÔ/x0ȃ&|<BDd,H:τ(} Xict `)$- ?&^[?i >Th\H>D,Ku YB !2m@½V"i EknٓWB_ a5W\R'H#ݘZXc!F](#,2S֛CMʆd͔dpG#vg&W߉ڏux!px.S lH`8G!ք`gr{Qv4bgمD)t01&*4 _c3fE;v7{^u~%;4 sI\I>{7s~c -RV$4ePͦ24/-!E: >&ϵ|3So"j9O=w60G=/xߑI;vM +3 " D[1`@*&D3>+ߤL_$~YT|?V.z}nFs#b{=bwUywTyߥ7 Q> v&c a$7d;3,!7#ўL {g c NrPչ_Khȹ&v߅s1D <}Ip"Xˀ|ăs8Ép'4!ιtl2K %dsobɬ&?$3K/w)|*Ι=G :Pui㟈&LUw( dx CIb̀B R2 -{ƛ*WI5GneЌeJѢDNgN˽^w05@rp_Rhhɠj_Ȁ꘴?lww}Kop[b RH~6[EFVQlƯuNV+.Y*Ns:v(@Vo?,r=K%};;RC ˷W$VCؓ/M7&wУ(#Qo̩G06NX'3ZȖgaks&%C>_GT䷫I+&gRVRZfQ6Qmv>-"{9צU[^RZ*^Q$ސA.o9wGxS#VD5\j}\?!m,DPSO;!oQzR[3~:7SohUڻR]\Qo+/]%n.Y'k*ڤXUMYW0Y?U)aDm{gՕAP_&(TLf ֦CnAlMU``|wBmMIs2<;?n-_[])XSY/^],+oWԖ~*鏬(9]VrUQ.rՕT iiQohjl5M]_M:4:-p|澮PѶ[ZT.kzlXпBаliTW}" aQ(B @ؑm( ""PYdY(.Pjg: eLm 8ȢTEgǙ3=a>~s>9 -f?pfތ=!)B3&w7- :íT~!3߷1 ײ~\btqjZVWdx,ҬdX]~at,^}w:}.();x{Br%FeTA:']Hx uE:L8˄M|j2$Z%&EŹ;itK+L)(I:Z㟘75Qp|o~ ^BD&}8jh]π4\nAG byэWYoP|&lmM95qU;U.puVnTUy?? Ȫ=us5:r%j8Of.-lHa^ttz/Z}=b]Zfx;:ƞ͒G7(=:}B|BF:V7^:{Nx -۵W:?yO^T]ׇ^+F5);ǃѽAOﺴ4BU\ۘ{>ȔF|rT^^v=#}#mJ6'jEVH]r.;hHO2pl`)0?cWh-KjэcǚD&Zn*Q<ZG+2[2Q)'9O7^F;uߑ.> g_E̟d+?Āp{߆L3Npp~; ơwRL2,X -kmb>E !T*ք!>8^LI dlT,q*+N׶>~LW4Ӡg3s'|:Dx ꩻDa5`ɿ | 9_!(_SW"y֑vuc8aڽ԰ye=c\\tm2YYpO'-Ba -|P&(Pq%HђBW=iS `0F3 1 -Ә+{XY2kY|uS}.?@O߁2``Aa1 -5ZJTP+Л^4#h=up,08XKt0Ļ75LU$;x #0%uj}4d/K P@領F)AWJ) (t" EƖF;R!"Jh`8 AhyǵHsq'*.Zoω7r,ɖXD8(g?E,A660G \ QJ\ Y ?ψrȝ/j:YB(>\E t1QB0MƲ!Y 2Pͺ(EQK  gijoĨ;Kx,(RfBҜ0SD% ݂5%;_t߸Jkx(i ZG>b9 z }z3u< -qz:O|I~`V=.h` t "7N qQTM ֆAH$2Ī3l5c ~[>`-c5Sfe~ #Ɯ}Ƃٽ0L ƋBF cJjH}1@LIJQz#r߇zVM#ٳn'AF}xiۻnzЂL0X^W6!``U8ߐ4|3-5.!q1GQkG,7[޸VNa{rq&ՐΗB;_ y4F=֧#TX`̿6M{W"H7Bd]沼5_g.}ʎ{fk"f|*k1vWZ~޴b.#" t?>1>Kg O.Qx,ŀ^ `38xػ,|+>Iq峜DKm%8opks=}2f43J>}pIʡ^~3G 4@x{;W`2@_VBkcڝ"_!y٦9zw,;XýȒp>IdY>--\!BEݔjoBWhN(Ԏ}ɂWD+,z*2m;xBa"4hR~/C);ªțfc?]Y뫊]H[@Y1BVaߩSGB:j&Z4y/#g$H;$l61ױTW*H}$B%M\(/, - nOY xb - ;jp:DUʎ0\2ckY,ͦ&k\wUEbʊ:NFQ _r*(VP~[|(B0l5g>BU t]*щvutc%߱0Nkc,l 3R5n^Ԑb]P+uHd|&3e#30x=KvHU=ki;m_0ptn.>'n_Zm}W ->H[4@oƤ`GLspf=1Ze_LRs`6`a(nQ5 S≧3JӾU_zk;qolcoLc9a91 5Rk)C:{PWX\(nvW(hdDzs۵ DQ:8[3.O08ĵ}ݶYٶG1ֻ5]ƶD\"ΡKԼ -*/= 0"&\Bֿl!:!#ԑufq:': ;#;?:kXݵ&$F$W1h|~z=}?o ? n3b{˜XFӛ̊VsBs>)Kk ~ׅBy yV?Kv@x D? ŸBG0qLd0%c Mc{ xgu7v+{u+}u+5=Jp_A_F9\w`l7@0JttTa4F1ned8 Y8ebIeI 52@cs'?25P@` EԔP\ 1l1 l01LF>ba c/jwJRC,Hn!? ۞ Fz0EYf&\TOal>/r* QD('UDE -尢O\\DEM‘0Qn ƹ28_BX=&P3] ^"°O,ߨ[VeJڤRUUG/Tgs⧪+⇪n}Sq[{jVwF@/eP`}\zi=u\Ԏc|p<˘VtS~U*~QV@do}v5uv^ͥQw5y2FkHWɕ(az{tGh.R0#3{g$inuD;nݽov%n=N7coK;bOIǶˮޖ]}$7,5ƣSk<:OQ0-mH8&dհd'dXdYIgs3e]~õ5NW7HL4\rA׭][ަm}^9U3~fݐ{S"6&d2:HF'6Q7t̓МЏyTbq~t[]͙i{iBέ\ΥM8t2&}w }q_GRJEϺ4tKGtfmL,+zwNq›NxLdnG*/ZN~I[rMuG5}qIK@H &8L 5! !!!!B-D~AumγMzvqwHEӒԫ|90;Fzx5OռQQBgC$kP|sKMgZ;> .=w$e@q<;eb6tU!ŕFQ=.Q#U"tGr VMN|D#2fo+) ;i Dokvpa2v\wz`Ys:P{qG2ˬ6d:jH343!ZHXi\:!$;D0ut [8?^|WA ,9ai;d8У;^rji&F7Q*Vnbh -CJdCJ,K!).R.>H_RT -DQ!5({AW ie$J/wwT_ZIqae-Q(w=|kXhރk}twKfWvzoUk%ƜyTe7J| EueTam5-hftd֌W RUXz͏eDL5;hϴ`!@[+{} =L۪_9w^ܧHr+pڸVwU9)ECi6P3&4l6m&lbB&fBdk*=[\?ޅ;`@Iv0ʾd Qџ\ЛvPԓ}-bnV>h0-<m[8u{\r#?Z_#3M/eȐoewbp8S-]YrNaUy,"_M|Tn'UԐZ\&MaSހׯT%=Oz{U z9gIO1!E41C׹z. 銌hԯ-iw {=k aC,CRDNئC -GgsYg./1n_nߘ7wϰ_d8"i46[4X\3 嵄 37%_A_Kn^ ,Pisc ?\tN B`hDSEoOu̐&ʡ'Q <8H1&FTȅ?G|&^(=7ت.Dv6ltvS!{lOVԆ!aP~`*ZpӄqtL:R͠LCsR|I_EuqӱKO,^&?u-Ñ#w6N/►*♺2jw*vEME4ʈhn -ҵПƃL##Z3p'S2'2h,ď,Q ;mu\ݾU{w+igaˣlnsۧ.eqhWD>F` }lAmstl6+Bx4sPzd\yʔŊBb5e Λ]7w+w_cmBKI"KPUvv4 t6L睦y 4,B8,pc7p5aFrD{̔=jG|Ŗ6\!uSiz)kN>*ve]]q+aMLtX*b72):F[\B:qP?Y@PU/bT5?F37Y-gUYv|cVtbYk25X2}ۗiӾ-K;4NҌA^6 ru КHW?w|98/#j8g> ̛fM -KeKr?R|Z9E5.fo/u$F!@n ulJA@5@XYE#.`ǕxZjUlF2Z;sng.8g>>&u)1$~*2~DV]Y$ILLl'bopk9@[D;W"!+H^૫QMmG3ӭ>ȵNSWV:u.NLVH:.K$Mr"91{b7P.8EC`{Jm]inTśXVʳmʲ Y咢LSAFK^z:kQ;kiZ2E]\PUnZV=CU`QJV$YNM.)g')v'(ds8]ٚ&3&I*`Fga4g˨}=@W:Eh[+WV(DVerی"ԒJiRqì5Mh'*o{DZŜb'z|K}jpvAH{WALl:O^UniCan4:vfGɖiY6I55تzv++ETuQOL9DU0DR/i?WS (l BԶ۠rW~>oJn -㬖u1D mRUjNaug}Pw5n|5s U3b7%zCt}v=7[*J5PjfqoEz S:BL6ψiO3ڐk6V*Y%]ֺ)s`7΁-Zòf&^l'~L !߽PvK'^e.=ӑ#Af'OЏl=R-4+Y֕mYdbkufM_Osak%[F~mf6zP(hU((H"y5E/_fm7A|oi=3zj,}{=e{g7>=f>yz LwoTy#@D rH!O.tȇe|5r B<x GhfL{'0yZLA8 c< -0~2$o򏁜a?O@ ([@z0F=7 30z ׋z9cQ- 7ö́1j5򄌑+)?W $ïK(ۍ(0` -2=1 |f Lmo08qLJ8 ƍcGg 0H YG6.Yc \#'+q/?dyTSWK¾!/@ Z*,ʾHHXHԸТH݊8mک^ENw~NrOqw¢)^/  (sHlCbh&M+_<8 xKKO>Nctf' HbGZdAC6=|Gwѽ8}|K ߑgcr?F>c!SMA\=iOcOg#SbH5|'.5ԘhZz%BSE]3QDtNSEWG-M1fO u?Ax}aM>nۓO_)S 'zRC*}I d+d[}̛~?$'7$XW<.z60s;pv*f} τp-#k -,IK`btV`Y.u˻w52U&߽6]n|ѳMF<My~ozIfC޿Ʀ76# uAmaG-Ƽ\%9Zy%FjM0=favo}OOՀ)c>׬>~?l\Ȃ aha߿~}'l_o0'([wb+`50@hlFcYqeF9 3Йۨ(֑p< u}ֽK{BVq -nn -+ogY^G-=w[k [?0^c_t-ě:aqFbe=-V؝՜vkNo o ;(61'ǖg;͑ض9 -|/=7SЅt>LCO!l/5ѓc;)մ31bGں=[n[cm\L_&X'\=* 1X쁭! Bwa0$Ѱѡ 1&T,ҨCh-Mfٚޔ$7'V94%6ҫVovZC,nKCQQ}܈.K]¸c]"0Iiq' AR :Jm(sEM^ğPи(Ƭ Ų\+gjm܂RZW#P BUQVW-Su=#*x!Tc' jLޤQ8' •\CT" RFM.P1ha, 1(6-+Id,[MQPSV -;ej׻ȵe=nRq4ew8],X\iP%28Z2 XNvQSK髂X& Z:\Q-Qg9(J+FuiWIcn(YS üIwypB{a4ܷ 7XFU7(oE42 ÍbrkS,klEV^UM*U.$W4 *\ݢXq04k 3!A4(ADqpU֩Z -X+ -8"8KlUk+.D:Zu}_Z?y}r?hL1+'Ǫ$;LZ_3~Pec^:A?iÖ8g~&h;+Wƒ&^I>7AR9{u{d*`}¬4=f15x/j\jѫ;|v G X{EwϔLmn5l%$ ݓWoy?8lJeҁ529ega:__qڋQq=C89NwnXۚ]2xuj8QgCls4و<+al܃?/ b, q=0DGcr504/"~}Ts{re.r,EvܜGD7H}zQI;q-ri9Ѩ }>mmV ⭱5^tWtSYNq̟Xbߢm_6*m管;k莿+gs' v}8 .B- 8Dz 6PF mmmmdۤ}hͮnyc!xP:շn+9 -d ;H΢l@@ѺEA0[TV%=вdKƠE4++JDuIU>%Kſ+ -T Oﳿ&3{_3[_ wE .R.uCKɗ"ۡrAWY E ] ombj/e?fSXhf? rh^U?mwfpػ>pbP٭P؋!vI/3xG@S` -j'hjXU5@¨#񥤆5kxk ^]zB/Hf,d~Љٖ@ˀO&|P:t^;5o -@] a\:$dwXNR]% -RJ:RpUu~ߜ%Hx]/dϦ{̽j  ~O9^D.Ue纍.O<Otc BTPwk`w%襸MtlVGKf#d<3#Kwa5,Ն!]jr}va2v7Ἰ}[S-.R\ -@!nӀ\!Cu~a/ZlEY`<7"{n\$n q͸Ah?J ŀ2EyuŹf)4S6b*B:Ul| 2ۚ0#Zŭ i4UT$wT9Si̴MuڴWUb*PԅJc~ 2W :b\Qq}nE%󖱢2YQjPYl:e^Ɯ>iNs8ar8.hvO820|aj|tmGF8BF"xY;ը&(n1PO|3Bq"zQt8/ǃKGhE2 jĪ}Eb'{c\jl!B!$K@$6Ibر@ 8X$vl'Y&vL=i&I:Mm433{y9^+b?uUL$L(8/~?b.JϤTJ> FI l -|,Ki #ޖ_LAYB e"dDG_ŞvQe sIZOKB/yȝK3kFJ0}n3уL̽{T -rr\9fW 9eAEEr5 z!֜l=+;ŝ\2S cr0GY)kXP!JEBlkdJ'+RRD.0ԓy 5LG aŸ!5Gh@h@DЯ$a!0\̜/񨻍(#AḦ́˚Ͱy 4iӥr)uQL6WlzUDQs=\,+ {xw/\: >ulG<>G~=<𞍄r98 z1iVIEזƌ3SZPJ\ܞx"Y|RԡZoS'&>Ij){|K !hQ< 0*A-3^d hE0cJ!MaCqG_NU{ʭ.m#۩mv4BfFԤYJh,]KNi~ɦ[ڴ߮%'7؇1wޭF0w]żcX[kN&U&VfG TF4nQZjFn5r]FЮk/'Yt6~5F_EO,g50_.|\}DW1y+Zu/iВFEtUG9*=QYhc5T4sm&Z@bbR&# -ӏJ!@xU&K>zpu6͘79o=Flc 61]ASF4[˩ -ʪnX;恸Jqʟp|&]ՇȗIz"CG/_p3u8mx 8لǚyRHG"^mQlFY]gTֵL}qq:46ZGHX#*qe_k%xa>}g6ּ::1wvw ҠMζm֖Ljn=LnhG; --Zeijg[nAYè>_b9Qe5^Rs|^b;Gxa}x&ּ+?1s [ܮhhw~{I6W*֕IvFVvǘ:˩ -zy{-ns[ -[gDdZ$E,,siJg|XHCBr<(ds r뀯hf'07!_R:WƊ2B_}(VM* 6U M Me0?;ϋgnse@@Ӏs%`-TMP^q7W;AT(ĉff>XxkU@c^_ c?\p/0Qz:Ue@+ n:ԤnZpC͐7݀3!/o)ca؉?DZڏCKswُM>0U﵀&Ѓ)yocܤQ}E.>o9G윸x~Q`:ϞWXx}ͼ{~⦆5i`M󞬉"CFQl`.~ <_ @]Q }Fi -ͦIٴ66*TL';1E;w<;A&W E8>UQ1=H?y,NxdJ<2uQ-R.iOeEBvWjz/+/ x=K{+~rK NX2Z*L-!Kel%]ϒ%#/X -|* -})v\UlSl}Mbc#?4esZ 4tU\q/Q]}IEcdOΔﰦ)[+ZW(7[sUͪ #s5oPtU]*60>kt&T Q?wQ=F*Nm %4N)h"/_WfWdkr6hvج o"nYo̠6ABmАc̿B$Q~<)p0EaWHiCxڰܰъ_({NV ^ -]dLk$d>=H(aAha^S}ZO#=vn4ݛjfWpj/s'Ϡ?FJ׀7GbCdr#H91Pf蛤^'Ygi3lz2 h8;8R}J_#6{܎~f췏l:lvژȉ醕1aRVtYFtbaʅ&-jiّ" )+G7Niq4%CrcG ;ғ=FYcP'pFnXoEF|O v"-6Q͠hfLΈIM=ߐe41zWCR[c@a [5{砚}>)8 -|`BV `)-,5!Z>ʔULM7]?1nݗbWq\>r{c ;ғm|/#Y.h=?goÌX<5/e GAkТ!#@ Az@TBt]OZa]-3umn~L _|?~i扫t$))2k89ǹ0ՒJT2k7gk[=LڃYSL^&3iH$%QS{ Krٻ>5`:d1UKkR$iAzc~97⚣[XVu'4i^ԛ4#uNpK J?sYIjeC?14LӱظP\!?kԜsr2\ VAZwmꔌ5I^Z Iz-Y/(bkی8(bq1;¬Ay¤c> xc&;b|G:1SYQ1#:As9|ҩw X=|}鄓2v q~ x́GO4=ˠ5½ -PBEE(z<(O=޷z]ɸ-w "N! t;< Ji7N}7PHI2$9CԿp;7qBƝIS0"@!tIeKo4pe" WX0/#tpL.#?o05w1cbzx;~~ 3 'MJpT,=/^`Q|9Y0y\t$o>r|O~|F!Dϵg/PdcE]cAnArKĂܑlX Y,?`/G|b‡hEE>{F)[6SDϣ̘.c x6o>&w -C}1<%ă=&YEyCp m49q42,&$ Ud=LZțNr qO?/ -z%qx:)$D-"d% d+APg?u1q -xk%w~AE?4tN"|G҉Xy8&>y;uvQ ?uR8ۃo>?pnA+r7Fx@qnT\9C41$[1jlf4h:Ӆ/u<;HT}Pem:X5$p 1$$"B"QmCToB -~ZC j]FҊ6\lU~\_qQBYOU"1J F* !zR}/&4w|kuWa\QƗ#.hVs|يs=1|Nw'#k"uqb  $?-2zp۸%Wb7;>ŹU8ӽz4Þ8ٳ'z^m8k:CO`kO]"_ǘ٧1-O$.E&꟏Q8ÑEOg`f_BfOr2lav lpxixm71Fd7w_AB> ' ]8\Q|L|4h9'6{6`ٮf:S-ڙLv.Yݤ]nnbkwrܺ!g5CV_>T-ÈG<&w銿6ZY=[|0,Ga_pҍ6 [tyجs0t%zmu:vMl*[/m[bJ,ѝ.ݒ6x,m!J? -O?$[FM|@380J]b^q!ވ,fM\2]WʶUqKiB}YHҤ_%o5OW̸񢔐O%RkL!jy{Io$('ClH&$%IfQmNpM$2BZ -P )Ҟs=n#ڌ2tŪh1hNMaf3sRNaC1,36 -K5e0j*` -G11E٫`Sg~+Ofz^b)K29sG1sӐc 7_k*ԘҐi:A/OL_LoWUPQ*L,Ch>rp:>iBzeE6l r1M4侍>'d[PJYҪ2 ܤW(6uy8ƓuE^W(6ҜN`g!XK- 5?OY=1#?ov` UyvΟ-R%(ZBe“LUQݭqZ>8,;9,?y™'ʝQxɷTd8GڳX@~*P`ڢQ3a6=$fb+ -rٲWZPėX}5 + .ka][׫m]NVM_jUTXE gܤ:![G-^]4:u&rDiי; ^Q%k}j_ooUwj,\ub3^wY Gr`C3}Qye1LȸfnowKlE~F/zGn)\)\*ܮ6,x2Js KtNRS*4~$'j+텒x|Q䋃7q2 t7畖Kr!Yw]Q{;TiޣTďQV"_ <3:S P4vNO~%npUFQ9FXҘlRir* J$?IRF*ErVe*IXPT!*E9!{:;)`Tҝui />aB0H1șldBLf(5\ZO N$I2Cp0]<^PU T$ -QSo&7h"i4L#UOs: {\?a0G!=p:c 066)a ~nL>\yTƟ3, -ʦ0 '-Dk$F5O465"eE 8Hpj%&*.TӨ(1> -&y{E -9^٬IθI&9]hBm^]u KY+ǢVwdX'!-'Y00g#YT:Gaf)r -/lV&TƜҘXe\*T%R=PC_7f1&yeVr dia=H>}BR8Ο,$}oɽX{c?&ؾc~RĬvywR@Դ`5GQk׋WI%0PCi4K+MA/@t Cc4b嘆HG;rX/usRغv)XHk}/q ;z8x@Mi3_pz"©G3*ViDhe -B*"r8*Ǣk$T͆U[U}VRS0\$1θلyY&7Vlc<.=c6$z =08WO] Թԩy$&ߓBwp_F;~v[.vB-ӎxJd"%"SB ԩN 5j{q|˿C?N?D_/b"Od -fRg>u p6Q)\s;SU[whWp}+\D ZBӅ9 H^!M?Ө3m&SǎXC56sjnݸX|8%:Uj- @oX ^zXHo2L77Z3X Ȧ -󸮥F5*phf,Nc'Y@*o1zuAS;hvcGbl ^;CQ T6`sQl -n?Jp!! "',Y<8}hHBmcj"G:rĦ lZDB4zT픊51n(T{GUHOic{WT^o}kd4hg7Pih2X8 PbxņiuBT#'Ib9/a2a"axFq-ENcEv:Y=k=ן@|U߶^pĦXcBIXcզQ74QZek!0}$-3-rPe*S,1mU,65*N*$Pf)盅"JCơqs5>}{`%v,iȵ2j/e[&IK-Ŗ兖 y%[a)-%yjťeyޙ{D K] qDpFf`fD -5.Kq-5zXTkĜ4mz5m<96ij4Iۓd1w= |zemA6G#ulI1kLslJFɄU&3-X,VUZMI[a(wcm<+1Vl y+6"SH"?7wg:xuH?6#<MXmE%4X2EZ -S,7{2 -ۼZ[b~^*6o]BeKa?LK^Ze}%s4kahEI٦*t۲mPj+KlbͫqֵRul:lsm/ԬkCzu]˸9Dq-빮l-#QW -eʔ$#JLHY"8Xr]+~)W$/U~Q)ʅpEy'<[!܃Yż1t7|ۊQBRu&T@j:\L5IRԀXݭRYVxO^YՐLܢߗuJ@o/K} J#Pdc:9pHG#KPX&.q5َ,Gjo2;uq.,q3l>P/^0GO4l^\NGV G3 -w><\$丌X]9bCJLWcqҦ6H&gltҥ^եOuo4gH꣰+y|'{X[rzTB^i$1qO➉ŞdyRaX,|!S$.TFO&ͽNkpoRrFIII>KB^ޠgS@-H zdW BVHX+' ; <)XTeʆUVU(ebNL,n{OKqޫ)ڸʐ6'.S8\>84ʕ] \n ~OFo }HYSs >Ź͚پSX[hbBڟ8tf`5 |?` 4HnX< S1?$0o.f0fi8Ycc 1Qu@fύC PD3I&s[1efƌhLoiqڪ3fL ((@Lс<؈ =x*)`|W ~KwQ{s+=o^[6 Q1LLjۢ0m,&MSX<`*30`1FkZن;aX"FԎG=a֐Qe۩BFT'%`^ v>ۣ0} ڣ1}t'i;w,ǠF ؂ h?[?CAzdݛX'$b_f1G Dqrº+RW,] Lz?]  |d8paD8vs 0CK77[7E. ̹3_oI}^3vi=EWGA a:-Dr:0 3G_l]BG>Z{#=`7ԧ__ DQԾI@!j{r aCя =aOpaȞߓ{G{]E Ybj٬5{#|Dc1=GO>g`|C x/y=dO4 rjbE 20*;o!"\>'ug_KH2kDT} ** EZnnhYDQA@B"2bM01rRV&NRV8ff\*5qܢo~T{=缤O~ld!Hu'3enDٍ^ӉYDdd"d3AvtS"oq?xW?" ~ 1 1tKlF3`'5ڨqssg#>mj O9z<&ȿ?eg7N&qdOT@EꬤF5j8s#5P{8g;V!}i_2:2G;C5ķQĝL%_AԌ3sӨCBjF%5jH-_'QB//} Moq~$7 /DÁc 9}r]*|=c\| urQDUԨF-5>V9wd4o鋫˴wi0Z"6;ٙ0eG'\;kBq5JN&gͣp y]U -Dh9YВSG|kwqlCyeÆo$O^17x Ұ,\p9bu,ǙU85|z6S 9G#qGF^Qߠ1] sh!ȓx吻|!+ȍpy~.)DpM1lt-C[ :jtmD6toO$xm}qoc<6WL7OfRߛ70L.Ot%wW􎝆|=^ }`M.Ůk:-ScJ O9Sylv M=D+4xB y4O3 : -]&s6L*gsf2ϴaR4{bW*UY[Q?kP7S+}]s_\uS^})ZO.;v{{bs%}4h1' >VlDoj|P[*BoηUX3P>G\=X6rޏb|Y,yP<\{-]~tS\ `*aRJ=ʔXLAҎ"eBY$,W ˔br+-]--YtI#e?!,CG߈.10vƲ1-Zָ. Uc6C}PUT:(PLy!E_H^X -1cx@k[Hb[fB+:q#1&.헥{Rh2q<3I+s#kvxa>Y=DlvBP&-~,"d%ĞXVjI 5bԴc1ZiCvZ3\o1\r{y{lb>Kz 4&Vq.]#4"!RhX0&>'dӀ~M}̽5G%]3G%>4G%VhdeT>` - 38E<gTJ&;iHbR48%LSh@jT6Q}Ҧ+:mҲ+3m),)tUShShdArCc#˰ Jsz2gکOzguStV_ٱ -ώS -˙МSPE9kS+c͹,2L/RXݲ|އB}0 f8*]A -, V@a Zƨe|,3mIU7"ue<-\GacFgWA+%r:!-;klql}Q3dcMW2UP -#[yL@^RE7_W?7Hq؃R)`+5okTg/S |!adg,@PՑXuw\ xº2s/)kS -܍>iޖloaHa1~R=Ci}_CP o,^Ç<OXI-A GhFoz<^ÒsdwT2GvNI8Eag0?:Ǚg -hrM@-H| -/:'֣?<ŕldllj֟%hMFg&9GEq\#dG(+t|+e`؛=vEHrsh@:st4CjQNFi-9c֋]DNg:ЙCGaoA:N:K(gJm5b>i-mP՝ U|ǴUl';cWC(NzM=~WO2|u{7W ?w1ԄZY?T}40VEq*  zM f*7h+;8WYEYy!GsC+-)%)a_ڸŵ7+x(0fl#Yik͊P- %,@=# ^+eOiJWZxR#2Q>_ -h- ZE%Hy!@$ $BТmN!Zҭ͵{3nu;֞vNZ!~>Ͻ`͊O= S&',V iw$uLs0^5K>[R)G{Z -6g-=Xaڌ -pŸQ ?|mX -o^:"YDX\f!U<ຒX`d?|lΞH)EkӰ:;9:rLh)GCN9u]Q-\ʰQjIY̡TP/*IT80Tf?گ>8b팣E5yhV-O j Q`e<y [v&*w _4#2]Y&H4cO79rZM;렂Ʊ _39j&c6.N:tpQæ_/'EYQZ' ̆wd%["G+ ?Xu ;i& }60(Ӱ9lT4 -a+,ƕ(5`1h(.z^ɊLC2iTVh#HEc[LyB~'Z$[s8ܦIpf -bLa5eXX0QRBq*[`4(0zOd:yc/"ɴfIJG=L+s3Y&Pa0JR si:K0PTf̊ʽЗ?]yX}"z\loTBe(me-rA/{"z`-]c,Mb{,KQhO|+UA[YJ*WC][:l1pYUD+~g9 ۀ}M.G}\fN*KqC0TGB_]"hj!&y5*P9P:+ZlW3 tu WH=*gDjUO!wIBFs/QwZǀ'Ɇ5y0(Ȑ_{8CAGL V;V߈Vx2oR/#{Z$y HDGqKU(=C$ s[*e^ Oo*2}QHGZ"țRڔM*,o6`YUHj"ѿK['?m$4CB$!s;ڹ'Zg[#cR3 Hi@R$bi,i]G[Xܪ ;u Fl 11man% ¼"EB̺1q}~ux@s `3]9 ;v#%L-[Jpmcr60%&^JI$"|HL8x˥^ȩI @@ \*""^b2T@W=j>gmt]36v[NvݦsT|?D~;K NH#H3i#ϑm%1|I1G,Cy|G3y~g_2)ѐ,O"ƯgFCldbOajWL#>[_0o69aOƒ #5 &$dP/:jTι_72~w1N.~vp:kߤ0ڍ>$%qαRgrragaoj^ԓ24jZ}\ q>)tvpgp//^_ğYopjG708=]O͙xԓ3I<87+]Jjbf@FRcn)C\vV{k4Wy? C~9wyD)B8%3/ DQU^jM]c:ut='ye&I-`SGch"x^Qy1H}^Y:9?"56qj66LubTZGKB<kW)hVub]X1eG;Kf ?6I:E1g ~s7ڧmFeV -5f4`Up>V.X6!QҌ%!X50<_EugxG|Lw -d*g> Iǚl)X>#"BTGP\,SEsajTϭCFTmCyTG@Y̋ Qo -O}؂ձ!|u iKd煕Q~X=u1cQl2jPkDe qN̏,Q⟠Hn (D -•>.SL >{Hh%kS'F$ $Ơ\*C4 z$d(OB܉(L\|2dp:F87`O9Ia0x'29gIigk譞>'B>e`H![BIFlp&9H*F^r%K))w"KyUȢ(S`n:ظv``볎>VG-}+Ǣ$t(#R#O -J٪\Rݰ#+F¤QsDyUd _Ads6x:ْ>(}T"O -:X5)hĄLm6KaLAn6tۑ? HcNAF?V'.w/Zd=F.V}0,9ԋa+`ԧ!Ð -}Bk\q=LH5|Q4@A4 " F'Aj?xK1#MQ2gLdL3a Yt -ZL ԙyH!RU2d"9k^>d{|~y0Bc{?wp$(^ J5ři h!Pۢf"Ֆ UlRHqCSyRHoԾsGBl$va3#{/u+9Tq/𹼜<\z1:EPyCYH΋D# -rGd $:m:!qAEk-b]g|A#% 9i?wQ{">9*VK!G%=B$A ;y @TQ `NQ#"7#xŠO!m9B!H@+9Κ~/;9_ -4s]QQXWeueߑE=-fQ(̸ `T 0q8QU bզAlVMM`L6{bCRc4how{ xmcb-fJM`PW`ŘՔhSE(4\ldZR[_yE`oجloCkiYΧ6B}3UXO|)uF(6VvЫ -dά<Ȇ3D$ͭlJabWS2mzAWڄf_0'xni]' )vba'luPC!d|R[Yp156v)40wIwvjQ:jXG .@Z.Z}-Kbna14,ttN_tb\KK34@ o/uahj!j6pENc$\bq'-%r?= kgY,zA&Z@q.IX4iÁ=9]lix3o'3#MF{- ~FK.wuNĐv>Q@$M1p2 u1(}\4׸7qț|m‘3}ldIƿ>_{[4Ү)yWP(]%| [6]?>FC#c61qF./l~ `0)`(bJzآ~d|isY;}/\pedZ AwH0Ŵ}k1˰_}- :55u]|gu N|OCx̹7T} c ضa{.0.S0I v͏C8 Zנ"ZIJa/`߈"ih~1/Ƕ \M?Ч<~b*-a8k7刦NƠABc")}gcfcߪ^N*ȎSD2P-T+nKK_ϡ1L4ʓIg#?EhXrc;YvO^Ö}51%;JUhi#:cFg1v՜\; keҧ.]:6k 8qW:Dy{+ePvw9] ƧimZqGiV9hsV8s\ -eJ]*TNuA2_T=z6k\FXᷔaw͆SUnZ=̣U9R%3EiI *4,\JhX|~C9>5fSvVfspN_FъpuQ7N :sh@ h;3bʹvK| ]9ʎ UVd21fF ֌=Vi)=MSf)kRb5)\c7+9Zh|qݚy};`sآ#;EXojz\kj|MV*%~&unS5Qr5.at_7W=hTbF&6jdѳm/uT@T@S2 0 ]`H䲨1 `y ^K$Zf*hY)=Zֶɶv:k%ִܓ?>y}}˚ƎL}%q4bb\9\0 -_EUG$+7ª\eGڔYQ5ʌ5EJTjl,5?NܛEra #NJ + q-z -)?zrX͎1*#&U,*-ήԸjYR)JNإ2%Șx~)S'FNm[q88GE9^2LTaJ3D)Ր KB JI,Pr\%ͪiV'4˸Q2ː.;?^b911AaaV٦0QG%#dɔ$cRf%*1D ɏȐRfřE[*| w)<@75؇~gא2jSHdd8̓d4*yS~NC@SKoޖt/*zXlȤ,bI&XP,cR4QE -*(M+NTV) -M-Ճ%4CJɧ䔼K>yC6&35‹JzYQ΅Zz-X҉oya+>J+)5I0=hD{&3SV$_VqOjlyʳ<˳:8e ,\~Zʹ4\SHl2y1!P&JOոJ? HyU%ʳ*UcQe{"n[FVKիUF.wZVmhȠF΅ǩzr@LI1Z(7T:B(GFe遺 : ;лX_mQg?ߎI~%g#=Rb|J cʥUÛйM\\k1>$mIgiໝSQ;vMG'$]0P`C@uQN w+ -}|7[ًO -FwJ]#y‘PRa#> eԥ8 t4v71qzjiW|?-/҃ -܏WO1xNA^SIAN$'gR,Yhmy׵u/`ͅ35b%Ұ>Z ҅\Opn!p8>c"5ec,ýKKf+ų`ߐoO!|z-Kp\uCѫ 7RnWosܦHv;; PeP hfh(MEyEևb7:󺮢gKp>5HCax$q`\,?Yu !yaMZ`{!`{9)E h̏Qh;:.iofp^'Ѻ7/}J3G~1`9U~ YKm@k6Ӣ?ڵzGOѺѩlS$8AQn<r_ w_pYX;|r"𓈏4-"el -ֱc X:V;؎t^*ׅ5h 9$ V,a߆};plՐZ| -]ɳ|kyF;lݘ؀m@an_L b -M&kk^5SWUv6ҤjTiViӤݴnUNC}>}}.Wy%z"Y/_{Ob> -ۻ3>wiJ>EOOUE79𓣛}!\+q~F6e;K 0"WҽMyޑ`HRsxx/Yڱ8]c~9Xze TtOҢQB|c29wxz8-RLSγhqyi'Ooi=lff1s c`4!F?јop4Vc:Wy,=|`oŔ>1 D`1*u`6ƎjLza"ΏnhF0pC LÒ{_CI"%M{MlbdK II%LTc,QcI%:0,APڀ!i H;0 EldcdsI^EwUtmDG{+3wLYfV 37C;1"##) /ՆCГք6tw`z?:GϘ2іyYwz ^ω?9B x6`uKlfiq'L) (R‚@v9NgѦUGޜ!4LE4?-xo s@Ïy uQD\, Nݿ{xmtMc[:oCxhdj2q@FV Z' -ܨ-ZKg1TΡRav+(7~@N<_&-7p%~X Rud h,LGz}jTpp2Ԣ؄ -c;E즣(3@y6uX-/>K%"Y=r`wps:T:&9&*Mp a7Qn.CŅRKlm$iXga]GQ"}opKcm*q-$ RG7u2VP֊&E&.wm  li&IX9㡭BS5uv۠T!ӆ^(Fp -Ho"!R䳈=%.p$[;xuwIE덂99r(ݬ«CׂL:|Hu!7 yI$lBr ҖHlI-_Y̷۴?77s, ijڥZ Qn Y8H!ůܟd2pAф;! !3 OqF_|g|AfY㼓#VA}FK=J} io{eD$ - B - -D !L`0!J{e7#bɽ6ɼ0Xa,L|qzJ] PSSm$;8D'!b8 --,FI> d0 1y7ȹf{5"Iq[\9 N98|_%~ / .) ._\Z!,8 ]u'0B(5wN FO3朜>dPg\Ҥ}jCtrt\\ȯkK8D??8{=<<wrx\O &5y vh}q- t=! P Fj0ؔf/TdV [=v]Ku_}K7펝ץc+ XASZQvg+tB-l7?ckncgX>Ntho+|+{n* ^k踂?t\B{lum29wtt"w71pyG\Vx塿ۏa -]x: k %^i optDoq>!;p(cv;i w|-88,~>^rlWaد@Z=ZAXf8Z_m&:-D`kwp~ >szK?"'f)X~vcN^F[4Eт&tl2!'*,42"^q6Q{rר_\1a#bP Gcᨆc2pӜ.E(>;Fvf|¤n 3a#<H#8 --F"t)rkKwմZ)eZTmjKU}*{lVEσF]W=x2undy>уnOun5W&h{j3T힫qCU1Bc=U9^= y.RJxh~Km**qtS>TgYB*ݨ|V {Sy+0w^s6|;:rT -?Oj_J#5ߤb*ꛪa}sTw+?\Co50hv++2*3䞲B#u jv}L$7TA* 2 (F588CB)7P9!_) t21RJq%ڕP -xwۜC^_IqD7g C"De(#<[JԈ -DNRRl٣Zw}L֘Kp(щCp`<9k6d>FBr<̨~J2(-*F)QJ+):C ׀r%j"ǭٴ]&gzWq2}61dZʧyo":*1CБTCd3F*'k\T%b.TLje΁kJJ%QC|`jK0~a||}XzfXd/,`0oJfJj_5 TE -WQ%+@3T.¤Vބ;@_Kڕ|VKH F7D`aLr_hvȣ<ȣ<iFF6wh es-**12eXI3b3Ism2Q"@zcn^NVN$)I&O/\T ypײ ~ h -x Nw 8 ^o7h:9ϚQL3xm\|pZ+>V4X9np 9 -%pb]79E|Fk.=tqߣp_ ~ @z! 8d -%8b&qO, 7G;[s}F7}#8>oDX׏xobE.!}F'W\G8?#} -y 7{//x8xB/?xxd!]ʥ?8 -Jqq`2ϓ9cʚv鷈uXi<^^G~_['228}@-1/i z]@"b#v91::f)d̲%8 )=`A}`7x#vL*%x[fEA>Nlb=Ӊe2į~xVav];aA-63ڧamFnf:iyZG1cW6!~>gbE,C %F3QVXn8ױwl=>t 3mIB6wh=X)p1b8{V e5YЕ(އq#%Y/>`ݍ.F($ p< -G - 68jȣZӴ<G UJ\ #J7á{6h^b{?v[!{8v -!J$D @2-Dʂ xPW`k,@9GY?[ԟ0G^m8rК.5~a_\0A O:YT W*N.gd m$VM{Mn+rޓ+}GXo|/DA]U9fy;kfTW5-hr,lSNCݚ;d\%X mh#aǕ~Iww[~8:ZڲE7*HFyb=41\ T3f(8NYɲGNWfd2"+Y&YMj:.,/>R+цhkknтҖQ|k9T(ƛm,S/My2̣d3[n\F)%fĬШW#^wh 8ӂ%mhY y>̠NSikTF.+_l# 0 3ΰl -(0.D4Dwq;hc9&٬i&VLlkXSi&=iZcܲUt=}kPqQE! 0ԩ,+7lFSNx1WUJ3nUK)rF7r+%.^nrn-d߂Y?=N#_<&0ҧzs+&OQA1#RVg&),3]Y -*հI2dPp<(0C9?(8/<39AM֪lTi&Sy?;pMgq$*rkPHnȐP`~˿̖qHA>+#C *B ܼg9G0s%\*(EYX'btTP%b_qq-OI,WWҍ1 %gحNՠ:iV4x i|U<}/!㤀A+ Р2|ˌ)h`yr\rYX -0嘵rCƠSW.jB豉4/Ɩd%ӛ BM -0wE=\.BD."c'1!Mdb61;-s8KpG`O+yɇK*a@ȡ3$x \ \5\t5\@5д!`u+-M_M;"88Lum6{&P\ U jbibh[6ҋP@/DG=lyC2D-\X:` -XX G} 35ã9p5XᲈXĢ.$ml||<[\ -nm 5ʡ]ֱ@!H]/Y@ & -VxҏVx£%RZq.|j&UL+q4+ZOX9HfF$|6K[w+(݋ < d۹xvzю(8r965]@:r;zgAK2>Ab{婋t} A===uh $߽V3u"o%9KɓFbvI9V#= u̐ǜc@E?eb(Ea.^zCU>_Z>QA\%!Կ_p55AGy1~ [/ g?>q&8Ǣ%Yzq]9@"g 57<Ǽ=f/΀w9Q|P5Xr*.S 8yP  q-M\׸p@E~_).: x~B>G"QUmpA0ҷx̯5c=U K+<.$;?1?R>@k?eέx -^?ni 53|5ezqA#_L -^.{8 3w𗿂8#=C=:n$2y?t,Y?8VrEr?أ8G:rXD^]M2m~A馲.= ݠ&救GZq+YȑLLV8DDRKX%_"6cvv'iP6Դl_+u:~G-rE.9ϢB1į DWc Ğ2 YNy: ߰Z_j%yWx=19v-{E'{Cf$Ilq1 BjrԑdkL76`0`n&&`CbH'@B(HB[Fi.K@%Ye (mfi6AZN]5mӺ}m6MӦM۪}ؤjڥ4G.S =z?y99『w f 8$7el{W('ߡܿ$xqÖ8 1Ua#f<ߦg3q;cX5#Df= MSw)h5졅p$v1iL.x -8K)gYBDim` $]v>NK<n'2LY%u )tY='e*\v/q~J M5+ɢmIښQ{rڒ˵9%M)aES՜USj61m"Z~D XR(j ?R/1~ -b:m:r"8+GS IږVQQU6`(VBZ7֫޸Qu6Mݪ5Ri3)yNU -VUX>T3SKH'bCطEȓ&K"L3TgU\Z_5ZjUm(hک_Qgͪ,mUb{Sg;>S#{Lo&Yg{(C$;I!Qk,ekͭ*[*m媰W^2GJ[SI39OQsWޜw6 %33IcuKZ~vlF9{IW3SNʜ.*8'"WH>涩 Gyv?ʬQ5` Q)-[J&RVj0vƟ^Dw;X҃][K> 'dMSfI,kr@ ʨVz(PRB=J -)1N0uR;HfbM ~f/w_ዾKax e"'q!a$|:xĞqbMG#a{i{sp mx AY2`͐ѐb: }0q8k]A(nbL4n"LvLavL"&i0bK4A<&?åC){1ǎJw ցJ9>c;cܘɋ9.?7FҳB_Hx| -:;_ U:G;0\|Hv,bb,R(2 $y{8G^~;?oسEi㗩WH*_%p p Ǎ' 67%X,e -2X&8ҫ>_{Ŵna"r܄*_a |n]M>gVcB~PW -Iʊt9c/ggTW6\ۏ_ݛ¸oo=^I/G!R6\{tƟ6%inmzK4IIKKEZ.E\1AAȠ ás)`e2q2&sӝYiOs~/<Yz,GG>ۇ;h -{mf5*c?,ks51#ꋚ b԰>_8?@}^Gnx7u6v̀/b@2(CAw6ڦq-gҿu7g8?R<7{{BGeER?.jK?wvT=:uч踂89,C%tz gz@{཮kz _>/߈M_p귪һܷtɜGG8qyqa6WqR6K'Hz0v]_p|ܟ>ݛ,::)tGsc88#8Zܬ}d/ _R@m!B#_y \b3e'"֯MzGek=:Bt5JR=pt±nѽ(\Sݰt*O.r?b̘C"f'Q~mmIG<4vPAo ɠy#ynsmEo - 8,OUB$P]*,Od_ 2\G{?vX-s^tSsd+\x -)c:h_P -~/k$?fOyF>OqmrѺ!.sSc>;\䱧"p᪇pMdptvZf^w@dG\ȝ --a4uAL&cjHָA9ʂ͞*P}LHuª4Z59_'`K0\RE-U$Fp+mw_ղqlI&&cqjHNQ8:CjU`b+4$JUI -$5ȗ4VH%oUqOxBwU`BSDEOƮGm%#P1i(bPɨ!Ft94y4T*Rjܤbs -*HW5r[)\ʱ\zD $#F#ϯw泥8!7#kȍߚ -YJ-*RBK -UX):Jn[rm3/T}RcxGi3-»[1nŌsJnFS'R*U`cO۞<{r%r9|I );AY㕙>MNgҝ+*{^2^5MlkH=Sl-~@ Fy24+iSө̌\P -93*=+4L={l]< K7#L_O̔zvx75RxeXՅ|vꤖz P#6(e3Ǣ49\#L*Yek.{LddHO*sLIs#>|o #c`;3 mcHrSCn|Ĥ* Y|vY -ke,K)EmJ.+x U\Qy|;rȻ chiCG3#t27^RL%VJe,u) % VRYH 2*ۡXxK^n"/˴2K-pg]9]m jF_-CF2֓b$&@>*-JLx_b}^ SH~gCcc ~cUEp>4q*=NsaXFh11+)`bA MhPi`0MA C?Vj)x6{LzӐأVBV7q7 $K%l\xa0t\x ǸcBHuhcC걓zCON0yy@0"dF\1RkRivHMdM4pġӄ&45GoLLk.Khhh k\ni)![ 9<h#;?;: 6+Xy#tp 30hs1 ; 9tG7&4nrхU]Gy,AUEpܳ:^J<a<2h6ƺ gGI'M/uE賏FG.Y'ṿ; 1pa0p{Lߐ {%W@Ca!WқO c *r1@_RqpfLtLRl`ut^o$6hVӐq -8.sfp>rFqخR+_W.0Y āt0Rοgjs;pH}A#GGs"^@ aG>|Tp!X4T |pƲ~kg88K8G<N]zS'u/ >z:=E;N*ңn<7U#` :._ORܠԍp/h=k!G!^7YJgz\hDt*bn 6^ 489x,؋h2GM>:p6Nv4#ԥY EfUR0we mXu8# teDt2!Ue/Z"\B.j(fmV]O{ jȭ7\~t \χc9)2xYŮC-Z@泳R\ ,F}9(48ĵ5xW:EiU5YJϨ.&j$ -n1 BxS(fYjC(i>'{ogG;k}+l$n9C5rxxK;\p%'/\p k4\5hr#{#PN. -idgqedY1@3zMaL$?r2C&X5>ȡ1A.%jTPFgiD a!w+'tCV:7)5C)O( 1|!OwDt.Xm)1PANO!ǁ紆*dT^Ur .eGxGRZySbdSd{< =ZQ1]!2YQ,jLN\r,rNi 9~LSeLȄ*W*,qB=9  -NUHO]pwL,Xߕ|VLl)f9#'CNPEyLxl2{2yeLJUD0(-U3Ui0v|:ɮL1v -ͥB+tr)D]᥊y -ݸ~0)\*ָɽû{Xfmհ2V|ߵ=růĔTMT۩jEZWj^vqq*B˄ΆKZ[µo5c[_U`8,G bK^2ٓ:hh5i|1/jZVXA>ך_,N7Ѧ _\[=_iu`xD@yy_2%ʹx>r؏{Թr`jf>+Te$9 `cU: I ~%ٱ/袁/h _s)qqlK3[j ML_>7\;ֲc4QkTT((kx[w -ሕKk4U@{.J1P╢4 ŗqE`ƎUn\ɼEi]l'${.yǵ1Ja} !Ϛ:mfG3m4I3]4E35q^'$;i츎[u r@ -1T<ȸѹm a-߉MKvǀz(j-|BL9~3p.Q3 xԭGn߶dN;|ܛ}6'Ѷ$3'qR<%&4S|qJ~DzR>ދx/9f |ʸ'yj= kâٱ ]0!,ڣp~ӳq0rN<Qٗc;ޥ`|<\^\e>PF<?WOcq|xiorM_a{ u| =&RK忚6W$dv}*1?X߶i{#_\Y3Nmc} 6>|d)];__/9Գ -3%OlOI' 3d,mB=E;bW8{; -,g_^U*IltBtl x( $/g :{'iv6l`gv;8hûCQO)͠s'I=. \x)9)#+yJ9ۉxs'5ۆ Tx>)3tSI/ WB)t~-vk~ƻFvNZMsEp]z>Dk;ddI8,ybi|ENbWVf{crVրco5(Xe1/sSG j+GYvꎣ7b%8pTȊ*J3LJY–ٲ_h9 -ukTz.?.7i<%oD,!`R8\)`. .jȥHB@H1%폎@TXb/&f:.cK4#1wsb=8|LfҖxxCCxt $2N(mt 5&j0T?CpmG2aEh9K(U/0q&{@AkX = =Y&zfͺ uЭ>HV^iPfPwމЋlxH9,4ٲ5f` ,x808!qM٠)]I l"10BTI##P$Ccba܍2Sc5#&F&G;Τ-gҖH#D >[3F5b( Ab${izз9&l^}p"F;b2!{asE -D&x#8j$,byb!p,dLY]ّ!1CHlp\q .U%NLH-Rdch -^@D3Hvgxq|Dp*жhcHu}67jʌ -?R#3I3< PS,> ؞Eq\=-R'6;9IAzɆٜI6|XdA,@W־+Y?[ړC iBF-(ӊ -A[(oq@j ȡ^s8j$,AE$h~?Xhڊ>ǁ-•a0|!St+R)5D@*zmahCFnlV7qm͐pnyQњ+{O#Ok R>5y]Nbs0 ;P^84~EJcil)%dtUY#Wq€rFtGz](9dj_8`]భKJ7HKwsؗ1TT..(rۮѵ}4f>z{ϟࣵLAϻsƌzfzkfL(քC ~h?j}CJ3E%/c_TVJ*pT_xEy\_^Hڨ;Wi YA"ҭ[l!Iv^يR9$Vd2nqy>=/<y;s+Nw $ ӟmWy0\*c<0gלuN@B! +G[Yu?R|^rrH/坑,~$K]Kn`l=Z5[7q|gUnr"~F8ߛ-cY đ\ೖ-K1Es)`[>zyH]PF(볫ܤ;dqFV Lk-zPߔJK{wWy~P'C8d,ߴ. :J@7 dzqF@` V" 6X ##  ZeWŔԃN~a~qfu#E".lйy.?Xϊ ;m HK=`(tu4G!gn_:^!B@zhCLZ8l$@ -+ @ e!OAx C8~ⷎNs]=/I֣3ѡM*{q6ljK~!}9Ym!!_7Hlް(Qppj`0GXs,D`+/xGF@ҚSШ -s=t##URuMT?|zq+[:sMnִ䂹33o\P7.B *OEtO1o,N4GO\ٞ~pc݌)GR0XQAl(f4 M)h@<׹L"]NJYsr,'%hݹv - ݆/U)|JnPW -x kFEQ`0|=t[ 1x}fpc3A&ŽpJ ~ 7%1,۰PRND,^HU0uf>7웻ñ]zQZVq6 S d`0XA#GVJ[(9 -RWvHo^0x3 bx -p`+gQ(^1ױ>9ږ騬*^x#qb ,Y2aHwcVMOb/f=-ȁ/} - `=瀾}k) -4`" C!)p3:mu@XoQv ngn3w:s+*qBV- M$NreO{}v R` 83JyMO4)XZGyQj{DM {_πY ̸Ӻ|)weUefᨈ.A]]dciI~\w<8/t Pg+e >*7E`S# 3\GHpχHn aKS[K 5uk;mɶcVރ iEHD_+߾U\'9GVXJ¬9M<~̨փI+qijL9%A0pcF"((`77Q#'q h[:-H,n#*Z_YXO -=Vy!pLYzY*K;x2}{"w7er"Iw:GSy\V[<6'Rչn%:溬'5mDtbZL\&$ -ܾ~vן{}߻<%E&gINDHJ"NƄdD] Q!c@ -d *>7 8PW% \ h`3^l:93cM|;egA :܂8XJ[7XI|0|N7w[{EkvcJȬi%J-Q#u|FBѵ<~ԠVTw|_JvV{J,͓ɯ)l/` R|Vxfm 96pL1c3Y0ߜ,/NP[@Qt+eKTe9ۏ-p -Ȯ|BpW$ %IHO޿y:~0?_(gD,rE}KcШ+)J_*=I,?!4l=Å[Pծ=Ğ [ }g OZO$o!xL=5dbBC) Oմ>RIr\r"#;@V2[kclzi5a#*Xm?;62.#:ĉ֙Li_8L+ endstream endobj 259 0 obj <> endobj 260 0 obj <> endobj 282 0 obj [/View/Design] endobj 283 0 obj <>>> endobj 280 0 obj [/View/Design] endobj 281 0 obj <>>> endobj 266 0 obj <> endobj 263 0 obj <> endobj 284 0 obj <> endobj 285 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 16.0 %%AI8_CreatorVersion: 16.0.0 %%For: (Alan Chang) () %%Title: (MaterializeLogo-3.ai) %%CreationDate: 10/29/14 7:17 PM %%Canvassize: 16383 %%BoundingBox: -385 -322 1042 -89 %%HiResBoundingBox: -384.7915 -321.8403 1041.334 -89.6665 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 12.0 %AI12_BuildNumber: 682 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %AI3_Cropmarks: 0 -792 612 0 %AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 %AI3_TileBox: 18 -752 594 -18 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 2 %AI9_OpenToView: -344 157 1 1317 754 18 0 0 78 133 0 0 0 0 1 0 1 1 0 1 %AI5_OpenViewLayers: 76 %%PageOrigin:0 -792 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 286 0 obj <>stream -%%BoundingBox: -385 -322 1042 -89 %%HiResBoundingBox: -384.7915 -321.8403 1041.334 -89.6665 %AI7_Thumbnail: 128 24 8 %%BeginData: 2976 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD1FFFCFFFCACAC3CAC3C39AC3CAFD6CFFCACAA8CAC3C3A1C39AC3 %9ABD9ABC9ABC9ABC9ACAFD63FFCAFFCACAC3CAC3C39AC39ABD9ABD9ABD9A %BD9ABD9AC39ABD9ABD9ABCC9FD60FFA1C39AC39ABC9ABC9ABC9ABC9ABC9A %BC9ABC9ABC9ABC9ABC9ABD9AC39AC3A1CAFD60FFC39ABD9AC3BCBD9AC39A %BD9ABD9ABD9AC3BDC3A1CAC3CACACFCAFD66FF9ABC9ABC9ABD9ABD9AC3A1 %C3A1FD04CAFD6FFFC3A1CAC3CACAFFCAFD6EFFA8FD09FFCFFD17FFCACAA8 %CAA1C39ACAFD0EFFA8CAA7FFFFCAA1CACAFD58FFCAFFCACAC3CAFD04C39A %C39ABD9ABDCAFD0EFFC39AC3CAFFBCBC9BFD40FFA8FD0FFFCAFFCACAA1C3 %A1C39AC39ABC9ABC9ABC9ABC9ABC9ABD9ABC94CAFD0DFFCF9ABDA1CAA8BD %9AC3A1FD49FFCAC3C3A1C3C3C39AC39ABD9ABD9ABD9AC39ABD9ABD9ABD9A %BD9ABD9AC3BCC3CAFD0DFFCABD9AC4C4CA9AC3C3CAFD49FF9ABC9ABC9ABC %9ABC9ABC9ABC9ABC9ABC9ABC9ABD9AC3A1C3A1CAA8CAA8FD10FFCA94BDA1 %C49ABC9AC4A1FD49FFC39ABD9ABD9ABD9AC3BCC39AC3C3CAC3CACAFFCAFD %17FFCACAC3BDC3CAC3C39AC3C4CAC3C3CAFD46FF9AC39AC3A1C3A1CAA8FF %CAFFCAFD1EFFCAA1C39AC3A1C49ABCA1CAC3BC94CAFD47FFCAFD19FFFD05 %CAFD0BFFCAC49ABDCACAC3C3BCFFCAC4BCC3FD3DFFA8FD19FFCFFFA8CAA8 %CAA1C3A1C39AC39ABC94CAFD0CFF9BBC9AFFCAC394C3FFCA9ABC9AFD50FF %CAFFCACAC3CAC3C39AC3BCBD9AC39ABD9AC3BCBD9ABDCAFD0CFFCACACFFF %FFCACACAFFFFCACAFD48FFCACAA1CAA1C3A1C39ABC9ABD9ABC9ABC9ABC9A %BD9ABC9ABD9ABC9ABC9ABC9ACAFD60FFC39ABD9ABD9ABD9ABD9ABD9AC39A %BD9ABD9ABD9AC39AC39AC3C3CAC3CACAFD62FF9ABC9ABC9ABC9ABC9ABC9A %BC9AC39AC3A1C3A1CAA8CFCAFFCAFD67FFC39ABD9AFD04C3FD04CAFD74FF %A1FD04CAFDFCFFFD74FFFF %%EndData endstream endobj 287 0 obj <>stream -v{lO~d|o ⥎7iTJU>ޤr[|DeCs~>޶+yvn/Ϊ,xr̽qV>F45l)UpiqӈELYD0įkE=^-۵pJVN~W W+gt물ΰ1>6$,f}&ej=ޒʦ],}f]iZզ &KB[2>U-aM/n㴙}St*ѪXp ObKy2f^9Y==9t+婓Y<.-l<$~ -98 -5~*8SJߏՊrde-KN K"qfJ Q*?ȯ4-(}}l㪉*%=.æݰ.o z]nא޹rOheSEhtbK`ilu+։d]Y Gmo~rk%^No|Db C@5 .*Q>QLW-h؆̕hՄX<~3qw~;JDn)$d\V/TО]B\vi"*q9 ڃMk{NF޿؍γ+ʜl  < s%[aR#Nl(=]>UE{]fY+W::<^L%{e~ءtQǙљ.|3P2 SlmM2TgV·haCqW.!''J5z^'ogL}P43R)]US`VFP^i໶qF -6Roe -]VSߊЍ(~f¢!߳C2ֹVxQ }wc})l6ɽ4Tt/&e]*g db (æ92w<0[Љ(/T4Bau^ \fgܬ GM̿QYV6=^m|y6`m)A.vF(Vc) RFfgolJf*6uH]M[n̘J[pX\ji8 Т -naY>A3^EΡwz gYo8Cox%mW)?OI=^e}FI0Ov˷,[}[rx6m8֧˭f]\O'*yqݰ,΅q)3ep6wtHg3LN/ES.&=ڐS9/ \C6߅#BrQ]NĞc8-T M/.ԙV -۴[1l~2 O;^8Kc xzPFD3+X\r(s~p-ƳZ7ZF SH\wdVT[l[Tv4'?m^ui'r{p#$@=gW 7D=C9 gQ5>>M9+ԆϸvCN /y:JLN)ώ^rZ}PެӍfzlӑmW}Bf -mj;S aڷϓw8oJDXl\g -aD[G|سnY>jw<к^s󇣦g֍9-̴.Q!Q|dZ -s Gˍ_~3;6{<6ڻI?j^WHްFEYUVa賫F'M:{7C.&%JTU=|a>EsC;,3A:)-۞h41s2d{(5 ^5|*Z긌3Lsݫ(i2?WX,w%:,20O w|WSe(c۳ֶy{'agm٪Ӧ2:){ãʱ-WKAo)h yfzԭ~!w[xBN[BBxz );47h;`y+ºjq[;lAbsgd?fo=ǜ٪at):9 !_wsM!MǼxL^vvr" ??&\p,cG]0y99T}MՙF -N·MڙdrHsqIݛ%있a֓ˉ>+/dWWTn\쭠N+IM)*vMzʟq`nHM^a*MՖt4ױx4ȁU{Tow򟱗_DE})Qm10mMi\,f]>%YUD,`hZ̡޼W;rdbT[e.( OlqM'mz^U&5O*w?X.S?Au6{/4{dQ: Zngۭ{'ĢN [8_S+'k)BOF=$Ģəu؏ =) ea$T%W_%1O!v)U=k~4ĜL|o|Wt4]#e8}) }h"ɭ{x(2nt;+ ӬDfYt b7y]b5nG˒HV?m|-qĄP`0O_VG0TZEqj/ 0mߘiꈱBDtFQ$7,AQ@wqF]%MJٖ"h[g3GS*lF| NfB*AhS&u^Pv%&'D&޸oP2y@gw34D,aK:ݒ.@G 3 J04t!@^% '=YSoH0 5 fWO Ƥsl/-+PXuXr4a9@w.>X(4ڼvac<#4{)/ I2@.l ^vE籩DÊ~+tQB ```lw<{hhDzkCCPB(@%{U_g2/B(Z zx1WO8a}\Y)ЭZe!@O 0#$M8U,r|>A 8Om޳_lK5¶_58@_hW@|1EEyDX'k>om5\BSsqx#|Q.{Z+%{9'M9 `] %lĮ&tWbʺ Kѵ>g}cl{P\}/|WE(719 CPU(@洞DnPy\ - 3nl >HTKB >ů@ZJ٫ xU|6Z=?-W~=}3^[u6 -\TOlx6ꋿ@}7X(C5t$ rFVPfsHFGR4o.)wpo9wUYݖo"rE{|Qs/K~{{@շA%%o4t.lrQkB_<@˷"[,ĘD׈3?wE`O@Q|';I}ֶʪl[~Tq[qxZ-+sOX0|_u߾ B wI,_u| -TrsM쪎]nѮΓ6fM^5@ cVw9ǚ_RYަ[eU` TPzs"j~N{EWrpϜF" a̪UAEؐo]J?M'Xxw Y)YxyX.Q*V0qXX6tBlPM=D/gUɷn}#,gwءohf3WZEBs;fA\rf 1s-?2 =`r 44@֕ZLĸd&3eI䦕_yFN?vgI= RU7,YoxMϐ -5zOk]q"Q֒O:/L~OA9rfBStiD/oӁ7`~n 3> 7-9K^RpJ]F$Nnm}4ٸu8ǾNcSc$FPC a24E'ؒob8Չ猿}8yTs໗oڹ>">:9\ZXQHTS{2 7#=WΒ/%!2l{[={<+eFi"I&K|cr1">\YUzaL7k4ڹxx籬F{1)eï-ʖO:wV 3Xhzva۾pyGTzYOc'\E#cQkj.>ud7K~8&Q_!Orzg臏pZ3H2|1e *f|rxK,m,(% PR2;{|(EjNiݾ?Au&ۇ -QP+rH M4V^3zq<|O vW@;s!ٍwwOKv.NmV]9MDR:$ IMhE{(ٺj?i<}{EWnYMQzXI;HepjROMS:Pz+Y]٫V?H oSožo7}hjޞoNjF]MɮVTiaIy]3pfdLj׽~bo TxTA>,r\/QmB^ZL+P i--Ҳ3O}do s;z Տ͵~:Mt3VosougXaBZQpVA]3vpbxm]ŖB'[Qjk%*^̼ǍwfwN7wg2[Y؜۰S=y8&ti/T{yJy}Fb0{hgv|%sMDZOJa^MIӁE,ݫ9 xTU}OovdaZ`_N|'ZCJNre9Ե$4;6]%,Z(Ry.O}:Ia^8fU~qx.C 3ɣX ?ȯ|鹴*(!5 -a,m+tj4}|x>XC[#v-#K]1{y241bȝ7x0&?BʮZиukmk(] gegoqDv{/;Uby^`?ŧT|q[,^}JGAjj "UAsiy  ܅L'QH:/^ꄾ)%]>=?{-ÜM*T*9uMraNq^6{:U%(yoED*}mUt4}PtGLu2FN$sudqEuw犍Ru5,л3>S ad .iso_ym( ZO} J@ouv*(LYH8c6C$ORbޅH8`iSɢY-RKIؿҡ 5e/xU -@7Gs JIEH߃Ϣ\i[ICD>XWGȱLq_{UO: . !Xx^=΋+j+@ˇ4@)hFM), đKp؈׽2v+:w֧gHiXoWv2쀼!yMW"dB;(߄= -qhwhefq }Iփ#wV~4DžtYcj bp@ -}]6xNbWxo;οնXL(d5 = QLi:'7 r"\=+LrB޹ݾ-AH҉?Au PspKͧ{jҫ Ũٴܧ0|}v[n*\W;x ֙ڎSk -[d~aTuyo2tɼq."Ъ. Y|NWiDg>^$M-;W) .^[!zw5:ۙ '|mNS_kanoUX[$o=pr\9i[9dGmӷ.d&O3VXV;g>l'7`rvmdunc9$߀r[{W~7L{\FՂ1~ e"}nT=.pvԎFlw6[rzՒK @yZ) .Q.Y/}~ :%(Q 1+c[w139kl FїCp7//Ʃ;E+CPFR2W[37N N HuR62Sz/{IY$ZJ&]Ѫo-CbZ7X%+-Kg~]~1r=;K -ϱ$N⾪Mѱ޻c2;IEpk92 ؇(dwIBp.Oq1}/]:=n39mslB3e?t鲪:`^) 6؂( - ؀]sy95H୹xZSVTǝؠHzt)i9Bj392#Tm/7ʦ5Ooq_M%jZpT ?ESG*E]ΆV:Oq@ZGvW+6v.uN+zCᅋTNgY~k#T` #p+t -3 J⻾2Cy -=R"7~*WdiwT 'UY rRбf|XgǂT$KI`jLs\SiFv[qSc ,'wwy0Yp{cT˸kRֳ ro#:9g5Q y~9-0~ao zR.ڑabd8<šb"H t\u  -;O ◈ _2l餁}B75~v؞ Eǃ"'klkVdwWguE͖TMٹ*Lt ZjB 7tɱW9?_;]'̘W-?V2Nguw}YõI@=e{h6^6\ 7[~CrTXӮPYsA:Vd4 Pկ:utq=U}p K"΂۱rzz70@sxS}g؛vHM^nM{#y.Z%N-T홂QRC)?Wx1_0Bά=\.8y^Gwzb\- 9vľ!wQui94onTf+ףs]oQrg>ꧢ֝1 &?ؿ-BHS>ҚrɧUy J7J0,](OɬMKM;{)x` -SUt`Ժ}TEFj[,2Jl¾K(Ğ-~iWK~1R[)r$^}7{`#$hC`6svSgfrYu7orng5sU[T# -~r6f.%=ROM­/𤙿;_P}osq0 !"0[hR -eǭ6Wi6sʴ2m-$_mT3GƟs\_kr6"{ uT{>?\|8$8deTqȰ%"<<)f)=_+˄ko4co-duQyQZ\(wh|#vR)|.,8[fR#};? hK0ʙ넪"++߬6X),_378WX:@h5hv]#<īIA!@8ɢ-a-PhJA` wmg3,:>xbgpK42G @aF -BXP3C$S]ۿ|V1D1FV-z<U_hN*] P1@O'Y-4{qvEZe⯀M2O+*&;#|s; #b<X+sXiMدP&@A) P |8|Z:! (V+> q ̕+W+Z$|$~"H|)t^d6N 7*Lªc4<J{=/3On_MIJe"ԊJb4y_a}UewOҡ5OGĐb @0L|]wy{tŭKZWqn,.B,.J\dѭ9<`g~u?L~w +`Ӱ;W(eyȤtdc dr7?E vKoI\uC/n5^_O/\^~tϪĉ1 R?1oXF(zlp vceȡ-2{g*{5I {{M~%,|T!5N -W|6Ou+d"gUV?@h\ݰ t>S{{>A~пޡBߪwB@\56Nߋ~}e&:T$MoQHeoYPΕ7lW`q@eO#{Wʘ+-伣*|m{Q8O6¹vN oZGnf1c?pHb 2 e'0{Im@)Q?߽oV~wH^ZU;~, oe_~SdGc#sr\p{~etR0CIު$͂CS(|9 oDzY賛LW1`^X1Se|E6vVmjjQ#t_7|J%^wOѼ$&Ԫ7I(56s '?(wZ)Y#x{݂cT Je9 1\2X͉Row]Nݙ31_B w!тCj .⦯^hbPCiđf,^4IzZ6GO[zlJҗZ,ꈑo -N+iJs>I=w(4nq`Z㜾S8hCc7Z`={kשWkz6- c2.ϸvR%lݖ";'EjBfSqǗw=ҮRuue77I/v@stqSΐs$mڮ$\F{B3{DU~d'iru&|ʈ'q6 -z EfePSV,)GVKe7;O93Wǻ0ڢ5|^;s>.ZѐH9)8a~/X5Q#71W[??Dv\

                QwuK^SX ]'n;}>w3mqq7Dݳke 7 -S:Udدl}k睪MlżzrHL|2wVm ~ !_\uTG!inh0^/캕s޹LgVG]t[f}$f zwW'?/dțp~-3rJTvRDŽ?PI.3j:EƎ}c4MjathåNm㽼:b-i[OH輬yR4ջ1&9JeV҇%ne/Ykf2zH~0jWũH߉0UhݹNg[k(vp16N7vwڽի?'x~W=2fxznqQeHק.DqK ܌28h -܇\gSlK%INAY|lWfd7ۍ99vRpZOnmʬKw5mj.dl no{wa:`ry[a.OZZpJѭ5x֘VF)K䊔MJ6$% rp C:Ȳm>sJL)-%md'UFe8 kGӭl.?@7"ӳ|Sd,!q_Uk5\ ֞]3[R#|WGZB-|LG>FHF~Tq׋Rq%zs5Z9k޹!F1%BugkK4ZU嶲> -SZf+U*`h97'Ȋ.q?(<&μrzavid/n=نa;䅦ԕFu)*ʬ$ֺ$vړ̭(߫X9J"=H,JQ,w_jzNAL ׾ɂ"%2J\~<1}kbÉlB*HeM:>8 =̀>LUOb9% -p1AkIL.R4;Cvk-5yl-tBAc Wf=2f|~C3PWw6yV?]q&x)ҧ+PojP9Y[= #3\pqqxNpI/),C,ؓoPou+l5kxxev=iGN+f]EWUeO+Vϙ(ȵU@vKvP_3l eV}(?p$V&ec[|jiCu4:D!e?ؿ?HVd`z &?9@<ֽAG؟7 [ wa*Kx6j˯v8?)}:]e cȬVH_KiP+; t JA(`x )"> )olAxMW?L>T^QkB <h@B4I4#6rOE{lA|_J!WdUȔC^٭z{ w"?ؿuz4z;,)΄50h>=w]->@;}Օ:,F@Sz}V.!dFy*I d_qV~DT7rt[iWOz?9`X#QpXσo5'nmWH㩖wŅыTyYlٟd<z}[1`iۺχ[ `i -{L p O;duZWn ,Vt, ~&rI#gJOO簹1Qӯp!u_.䆫):yC  -=d MNw@p UI8>*.!o68>H/{[޿G;t/$f|r_Nu'zWt;9v\]@ l~ß;ˤkR˗bOiYqN8NjNnzInj+syUu'foǣ7/,; wid|*E##s__]m!l#8ՏF|6I:aO[_lĜ$y;i{thCddVlHW vj@fFq@`b; vvnkɀEGfa3g"JETKjpx:_w^|UD`-ω(sqG j$DY79[P%]í|䘲'XkQc)ݑ,nW^`| x<פz1"&EViT>Ԥ:ԑ@Hē -Sc?k\W&qq^|}[ M-&[V~ Žh'umҶI<ˆ^tpyLpWb#Q!-| R"A+a\ŨN6]L,︂/)X~gK8-fᄾ(K0y7\aȞ\s8oUX2ڋ3-a"c{Y![J)7J//1CfhUaQ+1B׹9c^@+ʵ7D.x+e&&iJXBg_1XWK# ٓ&7LDzO;[Fj]}VYx0f4/>h}CsD, JS~ 1LN:]ǬFl{^ڬ.eˡ酃 iU-&[b -Tciɮ[ I=?ޛMBO^C>\>_@+d 7 6b^yŷoڙ 26@(yfb, sR#wc*3ٗM1b[ - whȓ΍8P8Qwȭҕi{!rʿQWM]s2C k߳§ZPk|GOj{&Sn?槷_{"?X?osݐ^T;wjѥ;i'cDByP$RhÕsO92z 6SN b~x7_Jd^dVP4td}DOr69 !m5ɝϻ[{N}۩o bRoo2]k*BմxΚ3&sur71?z.X{w*}*Y ;1Wss:i0gǺ42/}^ݙ׺vZ RXhsC0oh䳇a#+𙱁| -IuɳUz@ 9uњvX A'A.i'–ƧչwJGY1ɨ ,#|.ZE9Եkdo=Ŵ^[zm.f|j[{7bq?όvi0q_qxJ'izgm׿Ǽ_y:4JsEU^?Z,vZҪRf'JUMmaRjS"߰]yqOf[ jܨÊ;}+gU ˣ⨅/oP E7\z; mwzCz4Υ(V)뱖3"gpNv 2܌U9ȂA\܏/TʜDXRf0gn+B̮74@گRUlv5EQ{y =,)92MZiAJM\ b<&ׇC#0?i$/d<&o/M(@1@H~T0ҥM$  ? a.Lu1ClCzGOqds%DJ6QJ:&`@ΒPI6~71#I - G@>޽$FA tak !Hri%;Lf!^ Vii,mfv 2yݬA_HPN/xtZ`T?Je }%~<1iTg)7]R,&b k'8>^rwV\,HqG:*ǽҴ~o`c29qn1(4j6[F*<H6;W V∺\=_\撼>>}?q#*>Aֽݛ99n鰹~}7ΞJP\'?ۂ[``Z9_{=#= k߈ȷ0< h05nxlH/ ,B77/{\Hߜwl羳 dlJ+4G'74@>.O*~<;OrF{KԢY -˃/|ϣqUF{WٟqBbN]x;YOk0sy|.F?m`6 -e=;1K@ ]AOY ψ -Ƚ7Qn}]w>uu94vo?1*Pα)wпГ~8!LwuvNs\tEbA{ʔ  dHa.֤h' +$3\J:U?JH){c;́]R{w%B"N)m`7hv3{u{ $tz:\'CЎ3\4Wg厛v`]hܝ/s{n -NG{\d=+b-SYtnp;;gY!vɫmz7C1S2 5?ؿuh9E(TZBb{ -R#iwgg%Nwu3؝RحdC2eT˧nc!π~sD;ʗ*OK)zW[jfj͉yѡǿ`W`_]쀌?>|Y\KRXݏmJ]s2ܬ\l~zaZauzeUlakr07wGtovTkq.Ѕys5o3,"LuY4~VN6Ω21'rkkTzfAiYZtizv1VjF9HI(IC`bqKɪ0;oM^qT? NН(dz[q=Ev=d |hiCyJ&"+}?"U;Z6?9lztiJ-v#qb3}v["­NďAlKpp67<53H{#?h+)G, 54bVKG_mG_5ܝzGEP5hߙ$qk -l F2|vZ9!oshF=b ALEB_(! -;KXϪ[(W3K7t/iTOTJXtY']y5@udmOq?.gϓ:)uǣ0Wǒ\9%І΅>/4I瀗lM6+ܐu~(->wp<Ǚ T:$ܹSz5>N҅l(0&5-;rue.@=WLۗS Fuiba= -?ؽ/Zx>]>IvaZz:m7(E0{=6`4(jEKz^M>V^3;ُ&#Ž{Y@Zl0TC+tz2+a^ć,_J=] 6|T؈7Ƞra?Ȉ)PR']d2㤴sWU6db$2W~^Tg~"̧<=`ilO/WE|_;$>&Y{ar3+lԌ\QDKzU4H\f?)Po>yoGPڳItDžhďONٞ?{k関 uwK IPo*@NB^P^Nl`w/ϑyx)q}-XNѬAz=1x,/W4uC|D'9޹wj6B7@jO7d^AS{QݎӿvL}?Mݐ1ޖz -k;r^QjyA쾚\X -ltW30'tIjP[r_'V?_ ZpovӦ?E??1&nj.z_l@Wwr=ړQ{qsi7?vzyD60Iؔ'۫z.;<)|:L&:Mv^4 46gN: Oh/|-^g|uo/?d$5MnYc]N5g>3ד ea*u ݋ԮQ4dN l1%& 8 fJQd~~3gK5zbnbEN1J*[6]]RbCֹ/w֕p^AV)@j$Q%MW]Ul|kLj tƷ]['jP`m[2D_jpbQv>( *l:4ZA!If-ڇNWޑѨ[m%>存f\`U/Ħxz5 @*WVR6#P@.rTVJ~6Or1:8Z#E&F^3/6NY+y־{[?iwz2p0؁2`1iL/QMfiU~_7R%}~sVGrd]>ᬖV ۴[E2A*k܇,.2Hacw DK]Jes8mR:[^"b`̔9_ Z$*a#<#8Y\pw`|2AJ|:h:RI4;L#NuB!ե>DdY SiSX+c-Qv\^>09LoZw975/&"& y w#<+F*֩.Uq! $AB<کnSRPm$E,i*AZH2 -yn* f)>HeiEc7#."cNTU?A>b-* -** -*4_:1٘L""bf ^ nEҋRm ExQ* /1 ̉9Gk.wsz?Kݸ)fAvWo0zRgzDBoJ{̷h&UW^s]teg -S1clLVb11vSl};fb&Au!AGl}=fmM@yOoֶgl/ά52ߛ ˞Vy"P.IzY*s4\N:h'hV!42=\r_ش-qк?ힵ0MȁB"F -cW6VRh^6'?g)=UXsǍq+k坵3M'B>o>a|}{M%3Yla㖹{vɖpM(}^]:lۺ8Mݚ~a:8]..Jq@նhLhܫ_3y #MÔP8n8~&{`"lVMRA3G~>fҜ^z".0[uޗAVQw64m\֏|0>-kc߅!0L[um[eSzvδݬ||e3Rk3e;'߲]ᪿ13V66.KOxo_>!Qp]06®c':m~1lY+lK ^R[OIeFJ'0\ Y Z؛vya{vcaε%T@oY#.`޾z3\/hgtb^ 0T+ֻrhID-nw߯\ww5V؏ -4rn1o)z~&l.tvtk/ ҍEksVΉ]B\>8fwy]gpNmyFHVSL>' u-JF_-7DOW{ |ez],3lLLZQXYΖeuU)%T -0c|y)KfxZzl?c6ieKTκgG+ԔʊGl@ͰU姸f -IzcM"p/ FSRh%4*[\/6ZOJ Rx{Qz+US%9%x3L٥Iujtf+M7c; jL`5f -]#sb)fJ~g 0cuy=Tsn.n`$*;ʭB?~ɛqGɊ # x^$~3LYL{XQ1>d+ |16gri$E'O~Ǚk{{,/V#]쌂ax*V,4]IajK3D鬭l)?$eq.|x#|qj#GS5{ܦ9VM~g 1tUu-."f3κ1+*LΫ9-./Ef'X؉#q7c~ߕps͹i ZXV"c.]a9\5eI2zikWnE!iEK?7;NBR7sԯ^7!s\f*cIJS+/nWt,h*[b98HnҘY7V݂BG~NΡz&,tC5<6ϭvA+% yx;tB>0TU珐]^ ı\56,^, u'NT&Lv:ow҆`b֣y(h3gn7pnL^k b 8|{)A Ư;aY^6(+1X첫WehcdvRupRX*p6nL'o7&R~:\}<:O e-[_d/U/}ŧ[W_\3S=Mf2ၻ"vGWDN|F%ʬJ$(uV%}#5SzcskZkyZnKSݖNu*-*J -/.jsQ&Ȓz+8IVSd2,d3@M?SLnۦuiH:$BģP_n06n5A[j.+s`DUއ|tev;;SrV90,K{Uopg[lffL1 &jQf2L[!9Dgj騡TpRX\|WD9w?4JggJ Q R{EXc*h(dzZhBl3XJeɞglɔV%^+jʎʅBg̎Eʙv{qqq?WZ\!Ӎ\2r'`9x1q?qك\g!Fe;󋥥Wmy-J݀ݍٮ -'kLKS|R\xs2-=O2vn˜p[(zx&mO3gCf]*xt3ZuE޴r{ MI~(G]{6luqX,l`L)z٩|$D.Uw T!w>{\݄y30Lozα&v&Ao!mvpu[jo -߄mBNKc\,|P0Wn%6 ZyX2|v(myaM,RVN;P 4P$Ov}`8]h[Ѷ9{M7L㿈v9!cfC1mQhf0*GkQJQ2;-;J:G^')F Mv^Yd#JQG/io7Goo.ad} PMF4(uZ~6iU\?(8-P*XGk{}%r}&JCSG:EypPV.  W̾9fxY-֚~ z/^  j ))_Afaǐ+14bݾ.ze@Њ!9fRjD(u~8sd{=3fuۥ@͹TSz6M_~ M# <|3ߕF=F+@Y Z O/.hO;>8$1Yb/iji UYdFPzzVc<,a|<=x9 -s!"aUTcV>EȤt}1z UAc0^TlnR(xC%k~con7O61͌[$ѪkCm~[5]c/*lo>Suv*qxʁ/٥Cӊ\(# b 87';_Fo郏aq(*K~nv{]F)n c>vIdp|C!whׄ;CwA%(횺S0Þ3ׅuK1Z*0/l "?+Y3XMx5i69ZJI{tYp]YƳe?彻}ykA?]>A a4 ŘT }7t4۲ℛm"F=cA 3#g}5)ϬwYJ'5ip(f)ЋY v2?d$3z[91ݲ۠9()0mnfk+0MzaNjC̡+@^/(/BP->jy$Ё.WWڽvѿ:- k2q 9{~&xeW ,Wll%;QII4RCU o+G1: P{ -7pÓیvvB0|a)"ד4y@Vj.MI0*U-mʜ%rN_gϚ|~cgAwQճۚs2OncY`&㰰-ur- ;V GƽBeFU_h%1ts8l<F'| ~g8} -4+yNafkinneԁ^UX]U1}+l $*I1f7jJ. CO149w2~0I[u1F -5Կs Yziŵvvow]6/n*z5ei=e!x$='gf(L#VL~٘ح!=>H? Q -1Ԩ@m|PR1~ ~Qcwx",P{}yw8iIfkq.bQ[ZeO-}BKx|F:$&atŤU1[]yԈN[ =N-tЩ5@cAz Axor~];ꧦZ?fqit=ьn{++;e};5ZV%Nt/+8?Vq6s3`e.VuHfR3϶H59.' 8=Ô܀)ϨA& 9t]QfGWɵI/ۯCa~mcG̠X__x4ryZ7jf1Ly}ޮr(b -b#!ke,ny,`G\t< K|kVr yF0j;r+=ÓVj k*/ܕ1p7zx% wOnlu_Z/JlLf0!n݅#3/5x JI[mZ%ii5kLSTAoZ -wj6( 1&h[?-g{f1Yz+hsO?L,ɠRΘ(ei8ffCJJ׮OI/Ygλ @FB~+hMNdVB9&gڤH;$KkYJYzwrVH'zUUt[1 yISFMy^@=f0y}bo* D3\ri˒zՐxl rib݊x~J"h+FFu9h];5* 5I.wUc+GQ -QKmE \i[XaI 2fo:3ȯRES)-? OO'nX/ӪnHZ'5~ښ08=#ZNkdr+Ta)MH -u7_a6]k8ʌnHa.氩a%^>`z`%5o?ZӚ[|lԗTaV([O^k&ihgj'{8VSPe&ˎ]1Vfk{ !*ZTzCeA]캆q# CtZwpeTo$+nDܱ"kʴ - U)sNXXziE$393Ej8:4Nf]X]P#KrBL8Mu[R -U&u;x҄jWbz1Bӹɭ>h Y>_gd9<[-Xϙ=~NL|-;&ᣉOzl?oξ -\s%u/>}OԑуIȁ[1p 8VH+ϧ%-B)Ĉ?+HуNFGGj\oK\T.J_>N`vT:pLv.Wĸ(]v;7NF!P}g+oDF]|ti~,mLL8w-_}q[mW-Zr1%0mts@Oˇn -Sp%FX^&o]SPbj} > O"U=^H-GɺW+>|^G3]=>NX'u<ۑ617w_&,K.(Jscz3/ʵ 9Hɭmj -#'6-0[ɇ"D~+Խ'TN] |BܧxZj=C6vf lkd}e٦w!G UG@_;dd^GIX\ѓfC|#[TG*O_)JWzw&ڮꗴӮglL : 9FH%_WJRxsjeVAN #ۑ.3?¼>E6>g79䩆F`읧ڀu]+9y]kFKqaL}1,?T7yvY#4tFY!<'zTvQwyOoos7KN$dPs*$0 -s`p&egc<<ٹ{{4塴kNf"4җqT4`H ~2/eTyIy+lL=WcAk>A;xdLO8ow%y1x>qfubqyu;[W&ncB4^qMc)lĊ[pyNwIŷHcش3x^T p{S>z+nZm{᣻?[E +MVZ6-_ǧp<|spbWܣtC-~zyrO{ /K^0lE/yiM0K$ V~7B]bjrAYJQ=N {9  Q!gqs2u/mo=S+ݹA\#%s&]٢&-F oN'%54conՍGʹ:Vp0W>U(O5[_nd(mFYb1qK?`rʻϡ\;ux6eګt΃:LKiS -+"5Rb0_uWTFǡ\7|t>,BY -㳰q1qk8z?3f;ԡɟdAskO@Gabwγ,dAETwHѲJč=WʽRxvtfB}yzcTb.T?[|85L%8uruARz]׫cTźpt-vw_uۙOC۬A]L x&h26Zcjێۑn9Qۧ,앩2M 2țQ.ByWDU"orl2VَIBuvB[;;a\ŕc\ZHl"{v6ji 4 h7J5,Kޞl6 'š^m%w4boq]9~O 7vϘiջv3 TOkzҷO.2K^-P*݆8!T>Q(XA݂<:K:Odpdؽnf I_V -/\D:7ܟYLV;ZxWB&ޏ* հx3|@< Of d+~ 2mn޲5* -ZQorH]~j9>'(l(Esj;%0CmcE`F&?kG Y3ul -Qk?Xq;q1ؼrt0aP3hU^ALAO"=B0$E3P)n!kU.U@|h`64KnvѸEN;k7nA{xp#A&|505p|/<`PQg_e0.nqC]nw^ vv Kwf~FtPT ̣߸]VtL.{I6.1r !m>n*7u+flOju%j?˂U#vϬ1_>EiDi8DQ:(fu'E0QQ4_4?ؼ7Q`=(FEVEl B}p?V8F P{Rnv.No iܾE@w<,d A`0"`﹈ -x5H"}b:T]>Qd/Y\ 3Q >JĺlG `QgQQ,(^Tgg@rI) S*pQ,`uuo pf1_]`M$>J WbҜblm݌ң;h 67Gɬ[jۋr4J 0vsɾQo\,?CJ 8ɕլ.PkcӠ 2uӗp7r?Υ_9X>ƐkjLwcH,c(ۅԑ Q:>7HK4sD{Msn0SIFNQO78򑪲x8[^qeծ6瞟tzE c =hp o1"T0 ځ;ia(>y#{-磫0PW/? s ēLޞ;\`Gt28Ŧs]!+8y[1J8bzO# HvytF -u%e]ir~B<8HosZ;'^GGױåqaT;{T˃Un;r޳W~Ï'-1W?шI5d/5 o TkGkSP:Ҟ[ζU}0=\kG5঺ao6:=cXLabasp_bZ>ĈTH><|KpO&U76;ޢSq|oISضAv ݬ4Q/֖ 6.]>Ԯ󭢕ZVଯ꨹E).|{vds͞xkAޮC#RR-\G%mG'3j}kٌl̵ -||ˠ{K՝jXI; -tt@"V -1*@K~$]&L;%`xkal`֑ՍG::&@;~^k~-:b{ͯȖY].ۖ>!K@7Őmj;扛ռВ6_4aQBq^cW]sBz{*5-wiLg9ݺLNçnץV?L$F*w[X"[Sg|c-T5 +kW@fJXȫ`~Q0V31'`V#jF#[nך^jw8I2l~z TW+|Jf75rt%5s ?$&9nE/nEK'eu9?3Z㽄]((jQ>VחYy_ۅbb4iZr>= (TbL&?NVMm31.7Az툴ƙsi瞃1ϥOsт?/jٷFct6?76t+oZ+ 5\Lbu.D7],׶XOϳm[OL;NXZ?!wDNuU"Xq( -+56}7_^ {~{ᔴxt[|5 UqŞkI\Lْk -B7~&g3fk]2- -#טv0j0% %B̙LҨ~l[f[̈S0Mz;,-;%r,mI3dDLi2{W9Α90uk*[/3"DED̊E{uz?;ϋS, -j԰|J& qw$cK#rs{H'+{]Yd+5!g(ڗM՜p'rby' 2OYݐ, v/o{咗h;m d[RJǧG}Am6 h$Që)kɆ_;lq&^p\ V+O7 -;\7XF)&1!ڃZ H)>S~ FnN{F).ȘCu~g5gѐym@<xWUDQ9H"dJ# -eTe/<;QmdƢT5Lk።ŎAAmS}#6BAzYzx.k?$x&%zě"Þ:wX>uwVPvBڒjJfW 8=X,F#.!+fuc -wQsT7l`AC%ܞ8cr“sCQ!l(GOdiu;+bZiJnI) gZ"d8<0F?}D^F&8LZM\"}UEb(K518Y)TFGSf]Ƙ\ cS6g`S^_ls(vR{Vhs=/S>}[DaS[rQx>O~|8iVvDtޟE:1y9!T >7pX-lʱ,[RG8%tѿh6seOU3wOÞ;E ÇZ WL+[-)FW}ЬNKu%DIOo)y.ŨVĊHbw:r;qӾ}3.q.JNl{T( & ]HV7U]`q'1\ !oqF -X]hYdzsZnUuL`1:!M C:Xlt1kC̉y}4 -7J>8ڂo<$"{Be{ mT&Ʀ+t!M5:鴯xFŲo'8%:ĎPesN?`sm3mgYhE-ռ5&yèHbk}[ѡƠe5azG008(Ď:ĥ|2hJkuPr} zVâNZLlY&k0kr0YE["+#CgA[[DousDvwu(]jS;F\6v _RW#Ug(\rrZ)˓B)SC.().}Jm>;{m襀?FI"] :7zw䫵(tT'r]x&&n.ur -ѾKb*.ZCqцxUl|%PBl]kag B dr?*腆a!<-3 |*LȲܦSA iQY"ZGuWiaւ"o|{V!(Kp|l6?3=T~-*&nvӕ#8ɽ,p`̠;Lj<6Th%Яک:T.8^ mW7.0c`7JpzU]@V>o ' NHݚPxG92 -'@=g9$N -e{z| n ?}}֗mz.bdSo8b9\D; @ YR%ȾTY] n ouU|Le'NUCv,޵@Kޮ^Y~-*٩˝@{Y6bB[ @J4Ї|J匹Hwf˂Q |,weGų~F{:ؘtӔ9Ҕe6$M9)3F!{P 3ys34`VXfL*JY~:e$Tf}z~#T0},8}H7}I8YB'tf,2&# dPZ 6@">"yz*f釺MhC/}뒓5j+c iz9gM9e¿fqg*r]}-$}MEͭ']GqX&j{םU|;$ &NÜ76Ϗ( 5NӼ0?#c}KXX#cL^IF) xv`a M?tOx@K'PgӁFl/rƛ7 .ՇiŪCzJF[FzFif+WW.燿͚ ѾN\; -,<}d7jq6hvnDkl!ʫBY-YPFE}Oq~\'~lw!v@_/5o1$s^rh,:ㇺ&סN\r0moKt!Qt -\.jXkh/&TkM՝: Cݞ:NVVwSOA^&27?VƸӽ_~ÿgEK*,S0GYԮ;Su2r9hjaw:q$k SWjfd9I%7Pƛ׋PT^P357ņc+N^y\ eMJ[/؎fܤZ {z^g1#Z7$ZG6<X8K|;67vQKcnAU@G殸ڛ {T -݇#M"gs_/&,:.Ox:&0:r`hkW){UjdaexG _I|'e7:n,8>Um?`?^ܡ~5m!Yt[kCI$d/_?Ê_r[^X}sWiσ:m%wo5[iT˛~kFw|?ES9֘PTϷDʒ/r?wɩl׬-eGҲ9_l|lޙ]p쨖-uF~[ Dt&=o:듹ީk,m$|Tj(2&l+c)*~݅Iw~a jvZG.FM^ʲ;/8bCͷ-v`t>[zIkz::u}5jZ淊|̟mzr]'*⩵Ķ[q+ . nQ0_?f7MpuZ~UuǥU,ήR:?7*MýT}Iz[MeTuF]H}vtOQW\\Ⓢfx43ltZqV#@+&`,o,kFVU5_uPꬢ|8)kJRLvh%h(`t#xGaO:G\4b D -∳lR_?~?|.5 EZF6r1w)1IVI! ?V'k -#쳅Te$p2UAVj7kgd)t_?T|E]&sIO BA`BRZ|Sܧhg%ҦCduȔ?ָڏwARHJ HZLb7r'`4;ߢsz? -$ >oDB9>]K5V,I -SY]2./0S$k.-? >*`,eI!F;[e [ rDTԝ BWN@w0jrVfK~fT;KSqv(حihل{)]D9b{r#,^ ޫ ]GM$ P-?aZi֓Ɲw-*۾s0^!vj!~7LMto#zS-&w}2 v&6Mrs"yR]jWkdgw}?vv^W ٍϸFIFO[? }> -h_|n ׼zIb4qjXZXK b v3օڶc̣}h]~Y+ՖmFsik]0" 4ԭHjq&`@=^wEKd sQH(۰w<Vz֍-tsR^tsq# -k~^>,=2]X= -k9ӕUTBЦa"ru̇/jv*[#-,Ӽf} PgT -8ǃrrƒ p7ֵ*k9RW3^ \GcypQE0Ճım/j_Qw}ǰ)Vi/+;7|jTҸXNKP]gިbO,D쪖ST+&UPVN\A>VN"^Nz4ǤΐnOV"VCCDhF݂+cLoICX=_[N3kEF>Ig}/\zYRN@5*7^|\J/˰.>(.4 .({rzgb8$AIޱnFq)-h ̘IԨMK#n͢p;L -zg6Z|W??`.kӺf\pAYhkЊhGhMg[HAqٙ8_"uYU-Rӹh=mPd8ǖf46gQ)YA6<]P' `7 - =J͌`Ϻ ~ZߛRYg Bw[;l'ac.VB'` sswyc`{gQ"@̒!@-@[H@,lc"5$x^Fsh -)V +IDu":.8|j6ˌ/b?& w% -VWY.%Ir4וo=y3 -sk/5ujjm2@.@m$3c,!C_eGXZ,}kjƿdS%;(d=3@5+@zP9P!ںm =dh dl7B%/wkѳkCMSF3ne▦\ ouou] KB[FIS~E96zouV }{0m1cbe1Ì)VB{)o%wQ_.)?eyΪ#d!deߒ}ߋ5fQre) Se<,Lim1v -o>?2[yD q,YDxג^nT']ѧwJlsxթS}emsJJBYR.;$M5roOxvvղ fMz0rYs"g|kO~cq?~9^D75.NJA~?] z=dm --3g JY,VwqWlRډh=|& -.>_JzNCLi#GcbQEh՞YnϠwv,Kf=AcZ{[1?.vijY5>j2nrk!c 9z 簞< -+Źko=Q`7Y֏7jIsW(\iʢOQH؊?`8f@SLmop7|Vx{Ìn<t}g}ܘ?^{ -yNQ"&Zt~9l֭yڧeNiH7 9Î8l ú; z-D6thaQd g_Zjar/w@PQ=7-$l$rw?;mRR٬hPlvOa[7Lq_'۫& p劊JdUFrj?ZlJ;k (Ϛަ|m[O>ޣeqb`8dkI6Ebq1vn\;:o}4;"]@Թ\[gisRө6E3QRl>p[Ʀ*\$\2}23GR[X&i!<`]Ziih\nYΒbb7\-"kAL\ϭMbO<^s+G }eWxOy<g❸-qia }i~ifsU67- 2:c}z'K>|2@B"d}G^I-:RndIJ< -F&|A|.mvl,56i;Be/FFqzlAZXbBk#7\ f>*0O9es傽DeJ$8*d)"S ȸɸ~ԿԾTT~֖`g7=rjt 85gڹGV #uu-ygcHn,v҃O27Ս&r[,gJOZL/ /l͒-Tٌ"l~ UTN^Wew,׹㓽xޜ;XN'#y_<9 -kfýܕc7;o E4#mS] ;2yeL|>]z7bO+e3W=?ʿl{_6S6 1, [)3x_UY:OK疲DF<l1?92rZlsNTP( hrG$~z8a=l2VyE<'vȽQEsq JYr]7%1r -r -f M_06"Qr'ފ]?S;5nޤ%? vX k/"Vújw*wVB)TV̆Y̰~{IywwJ! 6QPex /~@\ۋ|99p@0 xfSezqچ-nvx.Dhc\6hb9J>^;ea. t2.7 .-I< nl ` %`6 z ~̱y A9ef3 %Tݕ6ޏMY;-W>qws+xZ`fbزhؑ|\nLSjeOB qgs%\c RtA2/=1d|iR;ηs]\Ex^(wM/.쵁 Z*]|;d}$Vr#y<)Ut|*N?ZE&E WR뵌 ]e])X^j0aL>T푶{7vm\yM1KԓC'-~)?u[PQ m]tcF#cĹvMSePʷv(czIS˰<*+ڿ m|^Jm;QݽW6o*{ɶfF%M_7Afawf¡FJj[Q8>O"N{g:]?2FU*bij%x!$:}|U枬 svҽ>7h"]L]܂#QΣr`RmnrtYu8*_[F(#ZU}{[ӷdFőu52,dMLSUӟ&o4\)Ux#{ p]+t]oagEc|k檮 ?#4^]n*bkEd[Bdw/vSLߛϢվ_YϹ,,mhe=- UqdJ6jZo-ٸ>xX?eM_+zw=j8vhQU{C # n n0\HI/gM?'ShEG[W[?i>[لXFgBofQ^*W `/$2և:H\k,{h\!zr9H`n^ӬTO~s\A\rV|..Nk -5 [+fYXw8!p>.'C6+F%3,3nP"ԬUϬwv~|VFF<{-IBt\ 4-NwG$AuVj{ *JvumBFCUO!]'z"N8>|\.[3%S -~a"R%IOfU]' - 費ɢVgkTsJdMEl]›OY] -rUprGw5 _sfzN6s<`>ʖeϦJ;#֕z/RjDieYJoW9[WJԖLŧ0v1&DZd*3.u!~/q-ܤ1{3_f1T^k9P7輧V: =j?fwKt@zxGII=:'q&/rۍHǚ {!xyxzye̽9xV)!aNt輟B8To~#ͬr@1ݭ - -YVSVwlN75Ѽ-!i!; oU>KmG#;}o6kٜl[~?//qVKNEИFZ8pԷOvԦ&.=|4&uYwX)7 v%_yy - H>)y\pMrT]@ln1`bl2g+UE˴=qK$ئJ:/gKёp>vN Ƚ&kʕ wg|RxXyOׯ} y2"hynmquIjy2iʚ<4חᘅqi!3G~@oH)o'T{Ac\4& eE@dѪL?~d`Tr :3y9a"A)2ŕ^ա+MD%4$ݓ픪WMAuAgFM 4}w k<oŏWժ/5.{rf0.𣩘b?;EY5ݒ)aJoJJ;UmĹ2wpwY]G*cۅad`%ŰG}e]lߨ9*mT=H-6h]p/eX/S/X1ݐyY9Ҷ Ķ(A^W,W;[}5}Oj Aqq~WXvbFc zet,w+GD^7oݳئk~7)eYLRɕX40797N^9(whU[elsFKOK,X+d -ysk  -F3), zY\(GW(EA:l,,٣/{؛W1ף=ɝ AG3e5tbbl:|upZtPzdZ/vny]XHF(W84:0WHH@MN:trith'n1d%˳UT)<}Pø{9n:ÆQBit)pB ޡ@W茱tWڨ1n?d|@wYoj9=;I;};`Ҍ}5nd\R{+#x1 i2 *˔]+1ʕZ% -@) 3 QUgH2r2N>+mL.ʷ [ Ō@@M -2}+ -8P=SuT2˄' ֟~xғzW+^T:\SXvD0!9E0'̢5׻lJBS*s Wf S xYv?+w zɷfb#y I(Y@8ef@X]֑ʮh҃S7)(Idf:e1) n)t10Ikڏ,` ;̀Xj_"@|M$Y@m -3 -N$w2S2dk`UMRzp^C) 0wه`zGV|vmyo[dnr+~!Y5myKFMm+loa'188V"O[XWv#ű/o8ڟ1~l`/ ɘk}qmo bOIqO뷝5~ܤG仙!}e>}g#{F>ҟ9<'q.? r69]7'xoZN~?`s~OMxD^e'-dS/ᣂ3&PW qQ#-]G]:ڵ~m7/;\q?Gpxvfv:͉]SQذqØvP} ~R 5bF+/o|wmm5u^I鬮s'6a^fGEqm}I1iȉ*{rkϽM+בXKjP[JN*DOq4>W?nɽϦ4O^¢8>f`m9P\ UZ!1E#>o{1irD&prv:+jμʦ~_[}Zĭ|̬Gs_3#ޭ…|Zwiho)lPm:EAMOAJ`$gA|be^X)C~:F -ﮫ^L';/ĬܨqauPָfLN}Bs{:|#.Ms=O({B==3 }J+8 -R8c ==wSgvwBy6 !fM+3]<|6tfxLڮ O%a엂TuZ蛹՟c+ފzz 0y'6㝺\}c:qu鼱]/ 3[_v_\"o#PMkGZh{;#9sګ6*?o-=c`}?b?[&#[:_*BcMs~i ?[VVqZA\yWMxozD?a'l4ݯUýAct~k w'=IonkZ,uNG1_PS߇s5NjRD2fn+V֖rv{oCg.jn]?8IR:6VȄK*2F?s;%kw?ĘȪυE| `K:t4Z)RdS+RBO^ZVɦǻo|>KˬmƲ={pǰ;k\S6kYc.\QNkeԍ݀RjIu`kIMQ49_̃"dVY^3iR#ciSujhwH]ĿmY'Oe'|KW}xVeS}YGO-AiJ>%KeLJvM$'VOFj M^[T$ͳp5l.s-g)$6= -[2;­'gs-Z :4Jv$ 6_Y`Ցǫj^ m+Q?ǔ4ɫq!`'mOtxhp])MG#^h\,?\LC^p_T>FM 7^iH^g\DtCjrQ,Њ*!嫤jC߰J|V vB1-7Ss ĂG00I= ׾=Pg۞=Պa ;'_ζ5V:vR>MCRi]pC#ߙ*b椖1R(:E;Z T -^wdbuy)BG:jdkg0d -D/F^ L~-]3J%y? Wp{7WvqbU2xlS˜W*I[cFȠ#A*dIug2{'XлKjchZ^cU8nqf_gS|##ݺ]0g} -xZ@yuA]6dg_dN;ص`\}YǘSq@1]B ,Khx5 -L{\Bt!C^!9Ųgg^f嬚vH܋H "Sx(`((`õau,`xt|/>q{Wqgm*M6qTZ>&y%l\Ӆ u)U!<stGyX~x8K(m+]Q^:JOTA$SeMa)Km#l߀8W @\}@ls)UV~D菨\ kI93BOK/ZC.19ب^P}0B= -dj[g:ATH>W*^we[@iG~J8EPlSOO,'y৭팶=GnS]ϱG@>a QS{xPLpx@o{ou@_.00N6uXЏq?+Gh uLȟOTviUvt|`Up?aw -*m O@t1e@R.: n;:R&TyQ)=bPIf<}8O;ಿ5~[Om?2oGo=y_\<"@nh$[;Oaro4۫UkyMp^R O :#R?F 3ecyUjTf`o{ߞ;Eg=Q2Sf䑙DxuV?dau]E~1}ww%̮ibћ v/]vy-8k3Foxnʗ gpǭncڼû!\yg<Ϭ^ -&J~XVdzf1xs{y}?ڭ_yU[/?\ڸQznurfpώClF.Ԉ+w2yZE9j.43Jˍ 9D(O --.wq&y^Uj}t{VQuK.Qd^]pwk) -Ŭx\Ye8R; --3fʍ[3e9vf:2'{U(k7d"bQfP#*s/n._--L<ŇK.j\5e;gfJPհ]X2va;6謒ǴJ?Y{ UyBKb&H@OJtq6l695ע[.{BZt%Ɨ"f1;ՠ^4T֠wX,vi不@vM..ۻe|7Ʃ -g,t)Y>yAHqKb"i MD=%'f|WAzp{a_]Ž{R*!l&8 hcKS jP:a&: -f_ ra.$lͥEu9=Fp_G;-"pd/K-;03ݏ(ư P}6'Ė6mE=ݠOO!%~ũm)$f"v9:i40T9XP,7+sT]^TqfUg!W|q7= tneԺ~(t/u]$[![J:fT&&-/N˛&ZŕON0S -ޓ7iVE&\e& z5jsy<]PŒEeH3Bn/l7+q^pT A?8?X :ѶJ -ZGKPTyRU´|X7>j{V)6CnX2%~YRB'WJ`9Ng/(ףE -Vpj[k -RM_oo*; 0~DeUDsJde/I?Fw ycv&?MPPU}?OC%K[ }5”\1=Q .wzک"xM݀z@B/6HX  ͺXRab N8fyw>!aiNUZtۏ|9/3Ҭrrြ,@(  -<`?}mU[4'~kMQ~VY֫1~m{_<L^ vqַ gdPCһdڏvTCŽ|^3~t>yf>_IKy9HoǻrT,`b޾{{GJp3Os[k.;1_9;%|gj;'/kORb?yQ(2Y2Ǻf~[~3#!-?/.@&Αlgjl'/mN.{YuɻQ9p:]nx埬;u`#~@u.RwR[mU9 N7=k0ƴxg%EGYhӂ/x \-pΫةe՘BeS;C. V'qif]>YR]ܷDq{'VkAl Z_+Vu/n!cN/<;bfĔU[ +FJUZs3o 51>Q7m|S|GKYJNYFֻɵKv\N`g8ݮrzpj6[x%7pCZ*651}5ڇk:Xrdk1SX=^mP -\N=b6Gg`3%h\ - |F{SsЎhjTexf;Zz1~|W4mjNyk%~=ҩ/CZ ::AFUuM ChD\SmQc <~<7N+?^27IzunH7R±R5LwjA)ӫQUÉYỲ T \#l9e\זњRA4gH\Ew^ÖNf|>W/mPǽޭp4;ϵɳ$Tmy#]/YM -9A+ճn7WS]{9{#u+VstE*N (^u翱쵯6:ƯI?-+#xֻ*¾f:ߴL@.qubJOpV1f͗von窦3S[ƷRA6vW4*ҥN'E;JR,eVdSm^X 65u8_B>v;Uz{:vnN26< rzLc QYjZ7Ziw5R ,[˟Piue Mq)l!b&sdjb=m}KԤoAE;~/)˲TWO5Vj ʩ.gKc[$uHGFr?rDmi{RN7ߊ-8{y3+DNJKΟ` ~^V⽊Fژ:I3kVA{ϚPjwZpPz[dJj>\MgҺR$$xq:e-! -oTС@>j4izƉ$``Pa*b,`~7͡+(EaAXATqNm+yuVw"/ȝ/BcsKQCwCh>'4e1;5~08nkyArPr$W>yJ eSXb&ɥa^g`y^tmKbS DmM(¡Cb8'ͫhN}h[Nݟݴڶ{ZFpMfiiy/`vDlkG̔xvHs3sV^Dչe64ZKpoݵhqƬq^#pVTpwվ`?)]1\:8KXCW_{)nF q s#LjI)B6w۩#"U+g=잘av '\_ tQTӢr1b@\ƍ~DJ"N.&L: YxZkNDՊp?uXs[)0ҩuL8ZLY` -բVXi!Ә CW ,n^'f'ߵՏLJݬODm~H+mk%Xo^gd8/+E9in%=a;PFh"Y }[.dl;\T|^nr+aŒJ%A,XٶR SaR a/J.1Gw.;?>[w砢Qj*@ - 5׋&_SܶmĹ&sk~b&TڭgNa)~\;wKED:<!D 2"deė^?1bSˌ^_y ,C?.4?0L$ϖanqɯ$K={ j,vmz NU-`LAg'˚n}{qqIk2pQ @}"JCak^IC9aħT#)Zs6)-qŀHaK> F0SH: {GhY?J AY(jƤ -tF ]`$#&x:߁3 'x/S<-->% \8Z9VfR)ǃ=.H\oau3ނC|Pn{ n h%xmH箥 ~و}u>fkfCY)Vo!w.jةTS%֯ߞ޲ A |Py8Ԣ|HT-@GP{)㔠ymk"Pk.GYn!wODL;<2fxʤ(@g0@}Ҁ0y] =}72.`: 0.~I3etI0~:Lv!¯3Ɵus8s9J[Mmc 5/$&_׿|k/C]lH{kـCY p9^܎n<}nJ>;N;QȏӲ{x..:ssݞ[CyAM)*q=ʿV(I´s]5K@5}bׁn@,H .er9{uB3|e[0k ^KEkMnԏnqBOn?ҭζfd,_r#Ғ+<#@>M ǹY:lVSB?^̿>/O6'%c9POPln@^bby_P7j݈;nrq~X!U# /l?џ@qǻRC܍zw5y]33Z{p]9?G%p!VՎh'p#ɴGmZ,O}1FYnI7?kLvٓ㭼K厉N8QF>c8o -lvYG ISW6|910W=c / qB_p endstream endobj 288 0 obj <>stream -"`cɱGfd`;m6]GsXS cykpPE@xBGan^|N\8Y5/x*](WoĎSH^{#n%iĚ)VE"73#p䌅  ):/VX"qmĞаNAϗuc͈Zz1?'k=N˟'V+As gƽp -OIM%;y؛73Q~c9W@c/Y^n宾Qtu7E{Wfzlx[׵lu[~V<,=?LщR;9%3^7z9P_NOQrI[y,50Qz\M]#~čevhvCFl l>ղQ2ӆE)r'0ΜW-4SוfB)'P;qP_;{m  @Y/jF6vNjghq?ȵ8XfU0tM?83kKŘM;ijny{E3D{:9YOQdr;V;SVu%vV ͚6hKogu -٢w+sPkRass%џWSA֜+' k?D|Z{6@4N6JblRoYR홛Z5m"Szw[uѰkGׯnP-'a5e]~ʜ"ޕʹWE,a2yl43dੑ!?W#*OAmL5Eӻ|Gs6Um3I\g1f3^ƪ*i0tԔL<1o띹Q7kbe~U:WDso$ᬬ(^'[7n4?n['ZF({zk񝠛BmV߬5Ìq,櫼6<.n״_΂oU;eͫz}UGR0JJUz+S4+}JXvY;S@7e,K:jv͘iU|OD3cܯJ ':6<}[bsEkޣQ2&KO*}U)WVSGgWikiٞߤ,Bn+>1D|֓_?g }z\P ;/]FQm4o4>-~Eٗn<TնmCAE1#9'Y5יksoRUafK\o+^PfM<+Jd R璕~:PHgVGVzۊ%U:f nrW/TŔ -''-;ms產]ᓪ#S [G=9LXvi罱ѹ0@߸jZYJV'UkG=EMUFnavQ6ϛ7h~rBv³cŴo=:m'BeO t@N*N OA`@TN:O,nI<^z[0'*X7ez7L;|NsR=uiP( -K23& (nraqΞ59_\@Dש耗ƫ;Nm"qAIIyR)W')zΫ7TYyf2pT@2^_D.|E  `vt36[+eKh O^cL3 /:7a~%|Lo;"C|0C'܃I߂I+vQ6i0(z$PN  0g]JLEhf3&%9L`a z1I7e2?% 1 Y?mѾX%k>C\0j+jу=NW >[e:AO0?4Xz%.\"M $*$w*/~`\xmLC-}9Y'8΀o<_ x!a&xSr% @ǏK0 " W t.9I/CwU-rUGrz!98 y96xuY@C4&?>`BA lNbi#@= !/9-=xU .A`D>e/~W_#skPbQ6"I( 9敏e@U >P` , -P8k ^IE@PH$ 祖v;iGσs^7Jjz{;+*g_R_#2GցZw{@CKU:wM h[`oqt+=ԁ6@ dug̷-k$!M}Yw?.jIokUErUpKͻ-/t``ܓ}`j)0s70k}(frf z~_lme}8棇ĝ9:Aܡy;}C1usd?7ዯuծi<^2$G$ѯQ_7|>L_;T7wbs.%] ]VPm=ǚT<=z[IWo?hk Xٽu~T[ cwC|Cxx+7dC}$w˃6?=ݻwC vP`cV7;YWt~KyFqʴz?.O? Ц/}owU_~]ulU} W,C,%oжb3Z}`L7.Qk+gvC~Bi׺jzG/wpfNR.O9뾸м>Խ3dnx`昚b(3dabSoGRf{蜺CJ -$^UVccՓ?Qܛ}G-s\a5*+-ků ]Ѩ\6>PBZd0>:=)갭+L\t'l^[uÞ,3UY˃l6? BK\nqL>c7[7^m/,gt3)ȵT(d35i%ב灭A؛ /֠.Ж-l+u.FxM*?Fb>ǛQpF=W[ J\4JJA䵟t'G~t0g NI˕{(Z. ~Lw08emXvgdBۘé]ٳO^(M@]Gk.Af68 -1k~-c *f>`#=nێ7ڶ 2=޽r@dA1^Q0 $QL>uڳz؈*cE9땪g^1̬Q-sFUD!oVgƎܛZ8FfZ9,00Ԫ7/q&1KU%VZJ(ɢBͬl<[ԟ{eS~&̴}N/;z11:+Ad4?3ju tw\IwJA*ޓ_QeoW\E^!XQ4-)e?bv[xH3s 3f~!"=.0iږ FMlA*jE:%ru"䴰LvE=UU:P=.ch z;iRf>~IňnDd 4ٚ r@\yߟR"Sr7dK>1}T_DHxRdqo`ݟcĘXHZ-N3XRE?a/FT_TjT(Vx |%;' !j(>xZM2ȓ.AzĬ]T.ƗJ '߷Vɦon7bFJ VTCO)v6ʹN>J䊗N\p> ΧTwj.n]mk|1ڹ[yΆZ WM+K.Y˱rA݃:試ѐ/Ϩ&SuX8;^rez1l[eEk2W~Jm۾΋^{3¬Y^j ݷxw\I(b߹2N/$pg}X58 0oy!J*MT"bC3g`!鰿M?qVmnҐ},.|y. ŝn8#gU -6~EKrSPzv,z8}q`D=@N ]@Ψ }2X,LKd馛@p W簣6cA,5! j{u}KV y$RH0kj/wcN5uUGZ,&LPq :M$/&Ub̕~-)hvaL޺2&VD^ʉi:i5)Kw L)S L;KP%/Q{NO0L) j&&oJo`׶jIv_Q3uxq:0}Mq +,1v셨;t{5"v5t9K,$DŽ:'عE']>`'-C, 8aԿfobqff$V澶쩎Z\ϲE.ut(>gdQݶV82[9%(| R&^\u4Gfq;%'RZ'Jj  ] -bh&[:+*jޑR4/@zs@s!uOщW ,9@. n>U.W.> 62CJ2^iBG@Wzr7|ܯpW}@5Pg5fey"ZZ9|-TO*,x3'5 蚅۴'; {ƪ -nOonB۶&-Ym`<01&.'x,ILR$MWj_''!odoF[֟ȁooCq}뵻*~bm 7W8_Ђ/m.]yr7 ^T_o?0ۯ#֋?̉ۋnKJԐ s̙ioVOnO wca߻{sKvC|A*l @~A}_)9me7ʵ<2VpuQw^o'}آ!}|Pk]M>+aArːTEfGSA慞͆:@Ls)]_i._cCbS^JX`h@؜k|`]DT0TygCԜAR4udnU'|%>bWOd`D-mvݾ{{}W@O -CӿP`q-gSg){sԘQ5QɲS!+kC0Yޣe{=UCBn7ݏUIv&kEŞMPU(n/3{ՓSvC?&s-̏1rAH~+Þy%ݡέ; cPs.<Ԋ|Ue *3|(Z3YMgݰ`nQG[ZzmR aȡ5gJs3>Y`iT Q63mj)ZUJ+ N Sk 6mX@^ԇYySwXxޭZ{xeUۋU.$w?j+H??Qɿ6k(lcpي w(F(]k\QrZ neU)*Ծ\.Ǎ^fAXjA) xE! W1)^~RK +&Дb|8f!zg&6#7@(r׮:J]U~*5O)FPxOJ! =؞C+7s-s6QpjُɢQ!h_d1X8W^GfkyLSˈ>nj1hڥ^1qc:ue>4HvW)nrOii݂-Xg:+ckeJT)ύQui̼[f6dT}(5T4*‹fnaCw]-]ٙek9lGGbW?l5B2Id aOVQX)q34f33b`EЋLǾ[6t&VgiN*-i8$Aeq>-ޛ&GlvNnbNֽܽe'cv#k@Vv٘c!u0onmx6i}~&)hEh,uت0~9 f\|&#1ޞ~jnGWm>>͎RgiWo 7[[z{VM ?WNZ+{ʹ/U\ʉXu{rDmY.R^%񽺶~,Ʌb$Z&We[؆`iQ"<yQw^MtɹZV}uAD-U8%T"+:grT0oS굆"Y.$Ku]i,0MBnRtIHP(zL:JRQ#Nf)Lm_97wJzsFppr }Y5)mw* $&EgE>`{( dEƫ2ֽ1)H*%} ʥ8\զZkBU -W*{ -mM/U3rGYXR2bDxm B>m #<Mn–'­ĕk"1F`o9 z}ib26xoh(Yf Y*Rm -$gȠc]K aKq)ϓR̕:Ǹc*1+tN,ߏ4)K/Ѥ@ KkqOWu9W5|rf~%-fO 9ϸ*JDg߯"?cY]*Ӯ|ϲu+2YeVȠgdb/xOփ?4՝?%,r[zGޒPE *\^E,3oΕaR2Z(su-ObB 1=i m -AQARn<oR8܀qBx=ru}ZAf(zǸE5~g`è|BWa= l:L'd4|JΖn4}OY0!Si8n f G@,` nw tW@R`l~|}jf3SV;ʍXtS+YBmfA|mmMDOt-}d<҉mNP& HKt!4L,7d[HQ -c@[ 8$(OZkB 9-ȌQ4ϋz0Zj()Tރy41!VMTfJ= -y;9@YP!Ar(k&%^f}P2$YRG @1P?3)rEp؝>%'~]}45=Q -7O;[QC^RDVRH0 \Z؂I&ZM]r  -.hq>% h$<73>UN֍X8kmB)zy4^x]Kn.k Se> V WK0'[#X`Sh9`kf{3'?؇dy ʝ[}珳q+qPq[Om' 텻#%56-kpf M!1JPHnsnKpp3qρ ->y5d9pYz.R6~hb6d>{`@H6 -\}B€P3Y t:f`¼B?Npu0 @hM T# }ZdmRO'ֶ3V|$t8?qy/9+G`:H `2ѻ)~@:@ڬ@' v(gwګI,>X{/ -PI63ϾO74᫘~޿6\[NSqTDZ@mvȞ:bEn1:]\ίz^H8˦[$$iP9;m >z7? _6+ ;``S9QhO4!` Z00F'4WF%z}d_mz2[^;䏜ۄZ{7.]ܭqś d1Y_Y+rgة0m~>C?JW^4L˰o2B/u}ֱ{4Ca?)?7h;'?ρ#"}s WG9Fm -WޥrvNeֿօg_;^OўyӉЙ.4ЅΩtRBojOÆdC sS -$ˌ_배}5ﯞʅhG3NӾvmB=IVϘ^V\-vˬlP8Jf(KI@{jPq{\:6k½XC7RZ`*h*5˺ZsbCMhn~RhDHwBhn6ȑbSCWkK1n d]Jf ]ZjU՚TJ\iUƾ^RC; ?f[ujrI_n{ -Yɉ=8|J&B ┬jk9Ǫ -Yu̞rSSn-^mCRֽby}TM=<c9nIT\5kJSCE:]c}n~uLpL+u'l\{تj,fsNFW91SX,'cN&_{(ᮺO9^dnƼ8dDz5fG@GH/|VΌzV+e崧49}hHo>G+V-}/znm7JfhR8 ќhtA=[7)Vd\fBYx1eT |߃"[nj,WN#=0bw}[:[(ud߇(fsm)w9s]RW -qaa?v9:m5}^_f45N,7sLdF \\>u[zT)C)m"3'S(KNDd[->C8>K_j_, lvJA?o}oD%cL?3a6 }T*қ ,o7b>_݊"=#e6P_QrRݔck/|&(܃6hgKry-ǎm eWC*<̻p gAr(s lb7[moճ׹_UJ[D #M J -Sb2<w0w~x%hoT,T<mCi/nNYכ|EVa2Q U;Cz?pAV&cO, uW]jN /"`?qLHz7 $0@8og[Ϝjǻh4Eh*@msu/_F8|l_A}dOoL$+Ȫf9-@<QzEV0[Yk-W`mmdT3П5WU_G'?O_k|CO4q -̈́4ρzs -dSVB -d!]nx4¹OTOWf6|UpۿJ)U)"ƛ@@`{ lC=nu~__&#|3b_QG/6^ xj\: Z{:V/\Ҋ~}V7m׍ɰ_M׺)=CW^;pxՍ YT>V;Ņ-y< F 9@gۣ+auKƇgfsբe(ȯL ʡʵ?66œҚgS>~=]>fV[kWV):c✨Z\Yj{ xny.D3tPxMT xTT< -yoy]elwraDAZ5c^Z6x߳: cHL09.z>VܲFՎ5lq VՁv94QFp萬[}P_ -鵑.%>Li6+]>F}FAܵSzE'3t,謝,2U*C[m,lr#fANm/U8Ǎ=Oڔo/h -WUs3׺\҃zpae2u1Sh\:OZْw~C{oڮ3M `O'<ʮ96 On4yʅGȘУ7TMk] {}rjFhj FrY6 .PR]'O*}4J]*%_tFbmeړr<lyv\yYgnB pS6>zrtROw!wmgl EIz;i|_:gجǞ7_r -i_{ђJ#gM2i^&((xi2߬ , drb0ε+ϩb٭IeaYWA| ӸRX]~2wucrXo=-r3<|8>y_8 +\.JNEP7McɌħ}iL_J:-d-o"xݧZTTQap)c-ЗՆ%K\4r*\ ٰX_du5n`gI(m^м\v1)Nfm>Fd }'s ,U^Sli C:jAiB\|Zyފ3tlhK_f{3{4k-MX]I[Csn=:}/~ j BT.~ 0o+f'w];]XR_k-"Lu- -,w'VA +6sPf{5MY7N\Hvl3^>dt-Sjcak#(BO<#6H/^WėR'hv 0'O~)8emٮsU1ȱ0eU50tS7H&l͝RQ7"ekK벺uf{'AW=FlDY1$aBW.3lryU3Ԋcֽ-Š0e1%.c5gVw(^c+qhn߅r -k\jcd5QO KM񫕃46nsRse냸Ȋ.3] -f<1J9!hmuZ)Q;'߽9|/2[x(U~%x['0 -9Ku)ϾVkJIsu[RbL <)FSz¥KI˙eʓ EZv#a-vs%R l5"qZ_ 2-Dvp8=H5'{<˃}^pJ{3Kt6`R+ 9x%jO$\}̭ ,~|89氍]la?`L$XEl̇8y<:4w_'R,I˷WorTsRG7[ WyƿS\cB}p+3LE؜˺S(6TWe?vL60Z}tϠB ڸĿvP*b^Vs|"iqaprO bEO&'sm:ʶ'1[wg'ܳN m^y*Æe=0kq -=-BCA+Հ]vDG|p4 6^iXud-J3+xNH@ǖsD?r!B'Nn7m{1ɎrLi_Df3YAázKy-p8%(]ֆ%nb{ޱi{ u8Ѥ=Wr3Q07xåBX[/ U;o6:”6HB'wH-$X&-|^2x}r1ĻMp~Tm> v3DolP|DнdW 87BWU`j1UeJc|V26$ܳvsb*-PIRtceڂ4(ԅd@>e@GO -Iz ~Oÿsit<`AmI"-^;6v'r9𻅔SNJz6hi2];@,4LͼWFIdN9VKkFK|]}ljMA*iEQbd9I -T/|o̵Lm'FW0;8h04lfn;ϓh4iw,g ts+(/nd<[[ڽMdWI'Qo zY8\\0'8MW p'Ӏ+s^pdsVE(i39뙀} uwn!ϢBL1?c-j|VT) \wĪ5`Oz?߱L]|;">A@on5j&$T0 -^2vG@0/ r$V3WkFt&w~+RyzE<P;?OG;?ۿS ǯ_.!ޏҀԮ! vR@W 5|Hn1sgirc1%\3Nm!@b7uWp~B#  -+KjU[&'Y -Pan֜VKٽ$2v-l2\ -GJk n}UpK&|- J@@0k u@mBs#A?2ȁ-^pW\:Z*פC@_vipUYM܂W).^'mM%}c)# -:k}+/;RoS"ƥ_M՟j9RRx -QfpCSv rܮM,=cqҖڱXZd.<iV)1? r*P>b9_vvnӏHCˑ{4. U eHc.ϡYAfL&әc~0}>ޕHoС%PV :ke]x[&ٺ)\bw`99|0RGQ@è҇!q}D hj_gnk{M44N[ z7ܙ&Z*XxXZW-r-~rO]h\A?HA qg];Qٴw^yS+x=-jahh9w>RZ[5/?}GusT=eZV8R5CZWpAtvn÷V-2aڴG,GסԦE]CWVQu[*}r6_nEޱx{3V ay,w]/Oo i~Qy3~Tyh*8}}խT-h; W=WvSᢒjAvnAs[z5duTt9&kFy8ngEmG.$º /wCo-*lSյR=h{vEp>:Íc8q[h^?{ފJѺ]d/jvUX7g\r>_y -V㫹hts*XeC]ȘZ3M}4M wt{~9ϔFzJnһq:,/J9lj\+N]9i ߵ_ZjCҵ_mYEn(99uΔՖ捎56׺ T/ cfSN6tARxf;Hs-bSbDƳz&cʣ+JfɭrX{pgƙ^ϾA_Wy+~Ci(,L՟CM>]D{wͣ(9PˡyziptT4vjŒ Œ묝U6wV 9f+ݟ5>}k) {[(0׺P1Y짬$9t$dir{PoYn^5kmn6Z&Flq#Tg .G L9GRC;,nJG+g^\O򿬫f竿QDo/~Hܜ`8B&"jB]tv65LW*DɔrSҍ882w&ZH[*&Jتanb4!:EfB4#G$"B@ȜVJO}(((}+h!EiJ`l7e4 ҮI\HA"q땱te= ]1;6) T?}kC䨼1̭NzJV=Hpк6yh9y -PTz uwGs|H2+itlZtxP &OdU{9kaB*=ftz'(0CTg`$tF 0yK>@Ov,|Tnľ|ъvX`Ӗ2SD'$"iHvqf)1ߌ4G'T.%XV {`l}nl3KM<¨6[4 -ծ woC>IH&G~12UY}}B'_- wWKPl϶j#b -|~(v>.oJ -a[mOFc/&jo{C ;S((n˞  -`B Bpc&7@2 H5L<rg/MVVw@\J, 9tݝ Y$;WzviP TK^.7Ժ{e^N5 -9jZ3¿W0P$0 @%g|Q&8ŹЗ(lY䫵d|jϕl@Nd?dodXrhXg -K#ы|yGzeoЇc~ G tvd z@Ovݨ]ݤ@dqi:4y4ݓ|C~w)ڰO)yd`[&`O~O\/?zQJpnـ>`y>ņre* -~jnEZ"o6mqv?Of.S.xM8Ҁ>da>%ip|x6GHP<#!wjDDsger>]|lvÈݧP 8nu4iNY){Zh~ɰOЯxC -tuO,|:8yfg0m[A[u{%+7Ӯ 6JMHgκ9w&nW/(we*N`BV}TdV?HZf+:"~578ʪ>ӕ7Ygf¯;}";k{!}.4[R`5vP dޭ>Z:4 i?w馺wʮ=+\̓^i];xN:ޣZuuD{oXĩsCQ=ĵiM?ѫUEU TWunIw[F5[(XHZK>+v-SX|~yndSXǙD[kF!@׺Z:w~rcwlGnK L[DZҨ\J:m}yLuğ*>*߮VP)DؕOAaƘ&Ya3A` 4BxWU/#g4!)G0lCrWʼn866)-⨃Ua:]ΎX ”_J |?yZ8>aʶZs;J)4N1DDC03SVצd -kU5׆h)q^`b/OB/pv﵃g1IhpEf|C]~)ngQ\Hz;'{-ҙ|ХtrX~&+Vd"}jEK´[kE 9xp^~/Eg}LqV:ttt+(ܩTة(]nTP&fO10PF.K쌍ސAk5F1KIvYvے_+n)-+#у7(WϔB銑#qBG_Ύr7VΕN Ah74\ g+w6x8q(wu&KAmuHz 0{-XNѭNsH%}BɊҝ_iv'1FEuScZ+`.@7MUA+J\E!qy^ z 9r[Fg=V*esAg92Z5%'՘_5 +*:]>#qR >+Kq8\:Ja ^Rv^WE 0A~#Nb1#wJRS)RqXhvYAM@O]p/k]+_{nhfMm. LԦmp#U}s OⲞ];9=0b2ѺwݺM^ѥTT[Ro3ٰHOc4hS$_'yQɭ@V2'R3J]WLZTZ` -?sʛ_rkڍ͚hV6rCylUHc=3hNij 7ї r,,U2miK1--*/o΄!244"Nd  ʗBA7Y]f?pЦW>u=}k~yn+I?cwi=zj( LA6(K5YʜDz2LROSvEPe1DV5YEdu54QDYQ5Ksfr$2%1]__UZ?Rک=HaBCMy4M?%Dªr"d vx4􈼈yA`w4gD^^XyF g[Drq}0fZD)sYC㿴`xUeʹVLviP۱Sk(ҠMPؕLj0JCX-T#"j;DP%pEPс}AeK!c6DjW]2MP[3ކvu2]rhݬbmAжC*M1drgޗʔ:t6is<#A~;x" tt#ֶn,4R)^(Uwpj@ߵػSB֭sj{ 8J*7;k#|;!bh}{~C[,̃mOosQ/]e\HÞ4R 弽x\ }#bh1Đ_CS0cHF̈!. gb`XӍ|[uzR%m_@WnCR%1hٽ -~x{yGxNxi!N折ybۈ_"9W]Kq-ZZMY$O>ISÒ$qIΆwC.hłX5b 1"VBX]뀥붸ڕ56uX0ƻ%^V+ȶ}Ԁ>l\ ;e}"bC"ssm'pZ!FR/=saya[+ZN͵^uz -vX˖"V c]EK8ڐz~T΢s|ݑg]}ʏ-`mumj)MdKgv -9$"Lpn4 -p]Rrg~ T'R۫ XmVv@G}Ʋs4]a<ڋ<8Z"ڇu>g}nڍ&!Wyrwv6t!Az5 ŷosMr\\|kTjkTjkTj@N)uͮY9LזNCCԿ2QKUCͬUaȻ2VOƺ~2Vi1]L1gQe=kښuKrig=7i^"\Xw;  9zI#ǰDZCW O p*%yYV|%GZwj4m۳K3jZSU6 A! `<4C[u i=?HLλb[\ʙ~Jl:]<xÓ'8DML"ge1XH?ϑAT^*2(1ᬊdzurkڛlҩ:5,;qv)Nd m#kG:#pd^d.`5󚔾LvcF2. -.%X8><^Iys1N\n)k.1*{zx*]ugyM%ǮYE F^#5糝;~cIXiTF>p4F i|;|J|KJP,rtdڷV *OEJ6[ߘ:« Һ{9t 5G -g:(]cPTך4|ɥWÓpK9l5J:\xxIcz%]8Rf@ -M_\FP`Sl3c70a9G]"44ٳ&-Y?c8qyS-DH\9zvWj{ 4UYRA%ep)8wB*ոRV3J~ojٹ,^3/DSnְrrg_p1u8uD~1^4qmHwr2$iT! -a klAQdrvԿ -#! Xߘk! xe_\28, l -,粦mcb{IZx 3UP*{e @ɬcLgٝN4y^<")exa]_O[T䏳g`(t+.0Fҵrز٭p/,F,-Z|C>!kD;CTjm50SChldE1* $ʣ!r ʸ߰zgjpٟ 8cj k2t g?*?RZüLzcs -<6[xk{-xG|I~X(ݴ~ -3}-lo,ڹ.pHzpdoԄ4f3r]q9Sa ?JF-+rrx1XՌ̸%bO,+;q uLLKG1zQ+a -;"Ueԋ:{qB8 -[I) -eUg`b$'5XH{ sԎ"{C%5P}}2.TkϜفTp*; %WݎvG,̑*%{Y<JFS$OTZp^Ȼ̜ (F=AXM׬!Be6ïl5LA|:W6pBu)v4;l(i1=xe#BwQ~X>z&Cdn8MZrlfi@̮2'@##8 q][3u iiWPBeAiɷjNUog2M=Žc͆܊L7 2]N,NNE34MvMHly&79tC')ÏťRG3N&;KX[[tquHvnRrDw+УXFD2vD%t7*-1pҌrA2J,|VEۺ̂$(&! _XUk ˍFEA̳B,0h/= #ߵ[^SL=QbktV8}a/Q# '&Ry#9}<,b`# bOXQ֦r#pG9~ mDn2]3%YD&5vR -Ͳs׵_B6z`nj%E̗pGr" -J\f&{qi[8S6R[JzFJֻR)>ѵUrs4ufGR+#.m`͘VJ^&?<<*G&4!UAbtlTJ]zݣ|A { -R?|WaiomϽc3#UUw <kCG–"U 615~Yu+WXAEX.$HwM -gaT+]e -۳>if=$k#MڝOiَ/A:U9A]3m*IIZA.W-yͪwjLzb COq?.D3ek( FݡMa -˽cXNs;= qr5tU/XhR#\(fOa{Z&]ӌ; [ -E /+Iܧr'kqN"_,A~t¶\*MsFU 5Êrc̄*y}=H=!V3FBO r Tk ?lSLfbavX*SHP*R -5ޅJ*L_U!dv88eIQؓ SȚO8^9/v+d,W=A^kxFzj  EOnd#˝_ueznJ\䘉g4!6q1˕9dE"F3Yp'2e Vb/Z+FJCN]}?aǸ*I>tX]ywQCk< -zs01TjL?®ST*i:a. h9!aR:M@/ĶGt_21 ʥ,Ņ*6rň{H&5{Џta->TD2P |Ub9.aD˳atķ}3y`* t+֎=!՝z?+~rƁH1i ->ɼUr8Lx(*^4{dÔEeW%hlVCVәōsP{w8^2vjtiz܍C.Owζmgox+BQN -D{u1yҷLtԨ[Q:1J±G>K٬D"zJ:}ZU1f+=IL2gs0$)Y+B g g<@ ̟p|ٗ%f{FFqxhv%+i4xăy}Nf+Oi{H6WjB|:Uw=ٲ͊_T.ẼRYT;Cu1`yiWҟ^c(äQϴWJDI -1H);,qKM]zkreK)99WaV#FxOs3 j<,Mqn18sj£-R_<̬h^ m/X1е6^jY旱q#5>?yQwRL&`0@YkapG2Ch\ʮ9[袭z| ,&;t2[¾d` niw55~t/IOۦZ% -.,3LvF _KB -Otۈ;Gm+H0i 8LzGm&mu\KP2L;m{6rrcvW/?*Tf^$yo Wz-e]f՞]ca9I -aԈ]ڦ -ZIo[T3)nA)ZRQfR]L:IC3l`WDk|e`F[؉(̔o0$;L6QlL{uZݒz:VfYe1!~sE.VM8&Ť,99N4[{Zs&G]*GOuǦmU՝K+͌FZ'}ISA'ۦ%eZbaſ#FH艙tO#dpOgf B膞nWx`m`|r$uF ;49@Nڎ2Yl5L-7ks;hB0֜44F5*WSsVvg6ZAa ?*TDl(|s)lwJ\.0&;~-6iҩOwacw2bljQN^lOQeXxQQ*tPǯb|r+gkavJ i7_؜ڗ{*g9di ̯|꣫ejϦ/J Yq\KTbd.YTOQQ[R"TWmBN@.&hr8g_o6|Dg.-r # nJ#pLmg%skM2i^ET4„mԔ15CyRyqbQ3zV鳃MM/jٞ\ \e1kR5ׂkM؏+l˿~Q_BNӒIo -mMvK~ׅv}^{p"7f|Z T aP/C~؎#,Lރ ɠNVضwVɻ.̳[@ J\㾻Y+h:_ _k)za32:W}x%QCo,qjN?F [/XVNkqQ#9t[R|֭Y&oV9l[wȃ~bcǼjyj;j SoqĜn`CV}3=_47?p:Ko-[lȏm᧕k>:D?*TG[^iC>8vo9)˨rmfnUTsmzsص{ph[{m ~r\rC}ԗ܌*є$m@CbkӉ3?=q*ɾ]QSViQωGߦV1g?*>*gU!z]JwQRFl2D^j9y p=Z sS i5COb_AFGh*AˑȜ֢?0_ -Oӈ:f2!yr:y8 5z;뗠?Pd'\i?_mfDG |fs )˕C~)&t6%$AC) ~ۆ4bNb?P%J9mQt[mC6PmN ,/lܖc T/ܕX'ee(:7fl_"jK҇ ʲEQ.[\h -QDg̙_K!uz6ssѵ5P-aio۷mn;֘"t!O3ߙ6}ZmcoU㾐ob҄;E^Ft2 ޒuX_ʞO'Ϲ -`)Z!Za*L8£SxW?(] ggWMԋNgz&Z4uR[ *AdJ,!j[FVUz J},Xp&C.NjV+`, ī0UN^s_DZs+{g!Y5{VU-KgcR=k)eahQdٶÃc%drW!qh?0,MJPErՋβMQmֳqDЗ&Z[-cesyyk.px]wё1 DƐrrp D[:G7]iD^c֡3AQpI<ҙYǁ~]XO}>QcNsDc5utN2'ъGi%U,F.P[;:cer,$gN[$ZWD+pvz&x&zHK  酇DAq)(<_ci٦q]w踉ۂiaTpnZ"Ҭqq QAPdA?ǛD{$z h#E nRtA5?PD!Y=[*tXȅ% -R;A4`;XIc#(BN52N~&OgW Rvz5E}*uKcr^oYި`ȭ_?3iTɷ絓+Ŕi֔o1Yўjw3qayep.+H'$ϯIE[;oʣۚvuSN&ű8]q'\T>mcunx?D9۟K}å[Ƕ븿kХ6mC'q%kHu5ocx6mHM !f֖4|ۘ*㭶Z:ȷ+aBzXnESe'Bʟ!o9ޟ'3_Œ ,̟*|-Gࣁow덐$Q9||'Y+Hy>Y-7Csvl -DTͽwz27V$C&nOR [::ZJ,dT2\ 8FPpD] -Ft_X. Ξ3 ٥f`ia)yX|9-{JgZXѳv%($Bg||h3 $A_IukOt9q -tH󞕅21*Bw: *n/X"VUv"vʫExZF+juslp"~~2\/1-2Zn.'r`sK@]nD<5I2>x-׹Ӓ*wݒ~,?u#p+IP/ϧ6!W2+O0txdS:BZ#j 69's{̽XOqhO)c/qjMa8I Nti \ -b@!S`DisS~R0Ƣ^L9 \8NÇ&ki>Ɉoq^^4fݷ8 ܵ67x9%j<$B4%썐K!٦@<1Dr.j%S&p+SߙHd4rJ;B -G9A^:3 M.|g|y}0=IP{GjMd1fI/au|,{vQuYb, 8*71wQVrGϛ=f봣GEE Ac|V.o+aY[ac/l>n{ l q5#O"!ZoȘ8Χ;hnM>ZWyܻ".0]i_0DS |8n`cf1>%rjD~S)k5K!JCݬW4xfc%Dd 6DD}fKA;K4hs[<# ª{ A!T Y!b|K`|o`o\yC"5 f&)t$-? ,4l `ac#Y)gu|SZbx;=W+w땧YKӐvqb -Wґ"JZ# WJLDW>ݔ~qm\kRwo3 YD`.@4Y7xD1Ļ"ܞۋy0E:ֱDٕ"&s9M\AX)bs˶n 1ܓ~C8xMA39Ћl`-"$7N\E}g~[niYs D+ ޏ!qs1.qs:)F1CoctL(E FQт`t4 0C'@ Fh/`脿Gb?б6. Aw,> #p}9,0+*\6犽_3zxO1~3N&<4H=U 1&n|a o -(2& B3M!1=Ď،gGq2kw%;P1űo9=`W,]gk&q&;J](0ā=UDr__d4?4#JsSA.&=́E0M='<=-zv:lk#Ly+^<9&*~_sz$8]eY^[ -M4Od& >;)ػ[|OER3G&]~8[340>?_n* NKx8ֲIE< _y"aWzJWE/"XNkSДXRu4Hx#C :e~!%f~~ *KAqB]bݡg H7<2i#aЄ"<2d PЀJ ;Zs 1<2|gYPz?܁"p7ѲnQ~Ǽw@}h+ᘶ_X">Gk9)zN$n)&'lזOՀ 9o{6"#mvbe2?h\c;Sjd<+VƳd"Ӭ #WmVKnA6!_9wnymA;_BF N_ s_5J৷ѽҌۇg;=5Tʘ.~ :DHE"RGұWwo R!^sD*lT؎k&1W^A/M}9H#g oC[} - f| -9/_½﷤sLv -G@8 -P8nH%REd!Ӓ7WU̍t},bMMDyE8ac7۽ð.~5@ADpn{Pynf꺼0wxx_X5G^_X&6 *^cq<؏WXpQ-lx;CI{5 'HؐE*qn]&=Nt, ZI$FÏ;sE%:UaQu=nVTVuytfhf% @Hk1ZD1zZS-4n]4x}c4Ō M^F bVMe4W4x[@=| M|m[hgH鸰t>7uV_쥫xT2ks>lv{Z6׫cu<߮Wǯ]E|O.2!!&b!r -~ -'g_d;jrB|c⭰HXv1QZL`meVv߻6B#̨g/+\|ZU(ZB$;Zˡ_Ao>~]`7~!xQ -UE`ᵏ -D;V&ZmB_U2Uk9a]A -w7|%_7!GrŻu_p'|`Y+UOt6pG%SN+qz;CYjDCԦ{XD>>A|a=Wx;oM9sFqv 5xW\ &jT - ݪ'!¯u&$Ĥ(c}^xaLn(~ߕn])Ĥve%_(pҾ6I 3C-70=b~y"KqVc]M£o_¸xz]_*RM+e0Dc\AD0NDMA[WM!݈fo?DGśԬKv)c Dix8 z[E^xpj~:t23jvQV@x]^`,;VcB֮U_6`pfCJQG@9UΆ f֜FLo]ZD &v~ELҠLe::?Xevr"AW@}Y"FQơѢֽ$sT:C?<#~A'2m0զƣA*f'E͠mCIbVv dNE@ߪ̂;tTfI -VN2 Py%MuǸyTړ MKqzu|w5ݽ\eK,-~$Pįu HK<-?Xuz:Ʈ)N-"Ch$A(O?ML"ʸn!,oф(O/+/ja'`qI#!Qz&5ygJwoh=cz|^둕@v^Gxj?)}Mk@2V=ʲ #^X^%e?i]jʮ} -rR>+idi9PGb`52BcϪ(Zg{?HzC=Dz.Oc,0vHrMX {Hb0"Pb1l+(@@ bq(@R0yb!G>),7WQb1w- OX@j{T_퓢|cyG=|fDXA( -^](}oU|T씝S$A}~7TwC'nQn]?~o QO+m^׏{ F]+u3C=Cr}ɡ+XO'<4~Q2Tߩ G\gyp+~v>3P5)UclC#ή){]ׯw_N R?oqE=Wof ~^;-_ǧnEt='D߽*UO4vj]?aMx~|gxI|%BEmgu,ѹʹ߭Z=/l{U1=Z)>&"~46*%TW~j{pUom"}YO u\-.CZTPەLw٫uӻu>q p﷤su]A]v TbHXĒ'udVccoWMV"a>GIvG]˳? (ίbsq~qOWVP@s+eh@qoG#W mgMf(7T4\<]u1Zm;bSovCI;2ԏf*vPV?"'|TPhcf~.nf:ᖓpQl^ydRcӡQ@> 02%8:'ø!3眠٤Qk\LLrMGwLY &§#> z{=^Z"uScj 2kS"+}|Y}JGi'qp ~d!hkJڳfO3.i&tܬ`UIO|ibvJFv2MdvDU+5*k x[f=oTjhTRa˩PK -H,OoT~ڬҬ ;{5Y!GoֳP+lZ} -rw;:]ߘSg&}pu7 rstR653o >_;}\U1ԣɼ&lDvC8EP(bԡpIq &qG4xF/XF`&̸&4! Aaj&3`m8pkh3p2&|9'$cթEJA@8nԸqn$RW ~.nJ&؀"sKI5Ahc:V54ǗĦ)NU]H#ձy%s(xī:hekT5]3Hm3:[z%kҋ<Y ;: ma\MmtԐ[K`Gm:őaĨ[7% ,|mľu&Jg7պ7<j/P=楉 1B;[ñϚ`֭cWEfZrn%{j3ƂEK">j u{֔jR ʝ ݇ҭ\;; `HP^&X%d(P`CDꔰY`Q_au΄dO/XDfDe¤[Jr ExXJͷE'\}aP à!060f1])0 u6Y*{ jb87`%0n+9^nMhUNAH: 1T)WTok*u]cPп8vkʉ7o5A< JKjeJٮRōco5}&ޔP?fw?@s'h2`c㱹D !|KtDȈ2-M}z7'D<%/'{ѥ'4s=i.!#-5p˔wqݑ  J1>g+]FtN]NI+1ܿ< ׌LXT7_|0yW9[ ? - ]^ƽ7ۀ&,O?3xkHxA|RKӭgRG3 qrSƇoј3iAS|t3f"AXz꫅Fz@&p*'7nE\'Aٛ &Q0-%xgH̰m5GD1_H˰ ׫bV{Hl~YC źi-‚ 8m{{DPi#VMOTs*] 3@ezF[rK&HgH{ -XC? -=q*k^ZHT`r7WRB:[Fc$y?%}|#1PgT@R9#= !@4 cD]: 8J樮%R9<֋HY TGBnGpGEGC/q8C -bx$Pdi6%\?P%J9md?g4ن2֑€"Ը6وѹ+NʾQtnl)PZ#-Tg)`i -J1!U|kd)|is#@`\j'Ac4^C2Dz%h&J#RTQ{VDgPa< -": _ӈ$ Yk&Qv~F')׍X5ABagjC\|D3)g73IYE`zO4B9(>6YfWKl -^M?lG?G2Q!(|ryY'b0łPͣf"4*v,(&`+)y0FT1sOc3.]D"b[݊N;K.g"TΪԇܔvVYn͑P׸@6e?nMlJ >uL5x3gS+9벎P`:g3;ۧ(YM%Z(/eB.sGzk{=롅]z~7 -|nUfB%+7K=Q=Ns8[ØNhaܷg'p<PZFnaռ艘 -skc4 c.D+!z`U<D*[wC#0t|SrÛd4BF""`m“"&PKsY@?N_®f4F]U"7-ַ݃%/0uęa /";I7b%Vr,X]ayT 6P0ś %arۃǶ +-+pu~[x[dXvGhd = b#b>3O/ =Tb]~ WDBM;T&m* @oH ";N"Bn2ݝ $Q2,ڻu. 0&qwTuFMDy~zG 49y4y"_ ^[& 7sXBo4>m284T b6Q Oğ>ӸH5"6)|m#k2s7 -1!DOX<ا=)Psg)~ '~^*`1>6u>61S|l&2ϯ:H6QX-,*n 88uQP5`jďݥYgdqMn-6":ZCouȻ@9[ 4Q}P'yct蒗*a-*VCQI~Q|(;Q 3% ufZzel3+O,cɩ^K/ϥLza+ ƺ75\h?n1a G[Lp2rbz^S/O@O@Z#Ksr=ft#>ue.6"sGχN~[t],8kV ,J{xRG< Ck=G؎|wWL~Q\拿5a +q<غf~J|7V6\G-kY -I|E.i9~._ixKQ[mXy[-^^$vܢ 5<{sKoÿB>-[!'P*amfnjPE5G@$m* M--\3Ė….&inLT M>7uѱ# u1@o|& A@mTMq`ʊ7ŚP jR$qKTUYcG (0&, F2AAB4-0 JCd@8at0sd:9n+15op,sl$ TMW٠X -IfW6I aF#h4nY0{l6$ X$caPPS5|dxcPt7Ð9c::C`|ܳfbC=7Q -1-CG Gspl28U ܍l` -`n`,*;\4`|{A1Xan>Pk qFQѕQǠ* xoPc2,_@MMb!",L Ϡ ^03ԬR y)U a+F)'`\@U-Zn=yqi -w6U[+y$Z6fǫ\%;;׏+FzN箎#-4ooJ쿴η(/ s՞-J-LtKVӆ,ne4g&/Z Pov7&X2iOcö[FpX y~[iN_/?%6 ͵Am*N=}.?(vӬ1)Yi|}7FmJKQ;SN?BZKTcW~#/bnlUSNVXǃԟy-W+J9c4oӣb+I'瞟2sr{KvoN7'9wNY=[f9J[,'>O,' I~P<5VeXN[!IIT?>a9WXNCL:c%_I変fILH='y8S?رݱ(ھ9C9iػ{HroN&b ^ޛ|Kt??7g ؏_)/8.gXɗn`eV*TN.2N\f>[^ -'|f%ch%ٙɇ2[Hk7ߖ&Z|oNgB,'S^^ު9-45Es礥uߜMW,]~Mէ׹+?^u˗.鑛X2KWKWˇ[ʷZ\c'yJ,|oKW7]KM/YMSc@nbKߚ~T[ޙ14zґ޽*|-//땵ֆu7FeO/R/R~vդo[dnz:U8e%f+ERX}@2rJO[l5f5$o[Q-Rȟ|{_t{9nisPT+OUwp:_ -Ͼ͟~Z -˹统_+S;ɳͮ3Wvv+WٛqXӅ/ if_b|M͹>&mpdiPʹitn:mj%i Q[ƀ]1yD'6u]tzr*淍fhb|m@yB~n."!樚-FC4SkE? U+5rk_tD@vv9ўv7r=&0KDq`2:#7 C -i -hrE -%tK R&a -h:tɈO(*Rp|< 1@h`)NhQDDF'aF:b!҉J3DU0CZFED#CΆ-G fP/0Ȑ=cw2;~p(abrK#/q<ض'"K6XHFYQn> -u%uA#pWbDO  50; -Fi|B"%P0'1/{Px<"O$` Qv`G"ZI]!'䠈"WWxؖs΁BG }4VW:RJd$QĎ"kI[T.d9Dm,l_F1G|9텔AF 1V{_/Rԅ mճ#^qCLC6Y%2v\HE ) T PYe Ddch-&0%!K%ƛaEɰB,nNB[t(F$t~职A/v;ƙS1d(0MR"냩P`jW;F^Lz(ܴ~s(Y^}[k"t F*`"f'sa[ήϳrхaTYZ r+n),ʑOq7yNz#*#g3<7Fvzn;ؒk9HƝXtGǽ&<5<GM&N`Bc; 9++ nOO#FWZ҉D5,8%Dzēiűl^;ZOKkr JZޑZ}Jz,u- endstream endobj 289 0 obj <>stream -%AI12_CompressedDataxkɑ% ?~h@4Sxi LhT0(V,Xs7EJ+mȸp7_ͳ o~'M7{]}ǿ_x^|W/Ͻz7}wzŻ^O߽ы{q+crl?_~w/޽{pa~WF_|]| %߿yz?{ÛzW&PLG{ӏ&ƋWLrRwЙn/eR?Kb61j]f]v~0;WpɈo:xgg->=nϵ౜?h?ׇu=\uzޯoo7x3ݤfYops}sss{n۩Mrn|]#}調A^#=NN5ˏ6o˶n۶oWan>ie_m_7ƫ*]Wz]WWW? 0a>,>X>ttgNVkr4=>xpj6ۧ0]O7mHc2;iIkҞ!]ܦ綌ϐC=e1͛}uu>u1*9iӑBu5cG1 &4Gd3 -*SO8@W=ccy|L_9dޚTiGm.&c#[SOCgβ2376WdRf475f4OIaߚ~umefzb ņԛh5ͤb,M&@nM$^r7MN&S7)skVfx1Ld&{K&&M۸LK47gsGC7}ꏶUWM^R]ddO~k(mÝro%'F0j8[Kg#F:ۥihKt םֹ_[~/fՏڟk{s^xe.ѕss(}Xd~o}JԒc;93r0?Ց19n(p't7T_Oqcu;֓g9@9vΑ)1 Qaq B bSU2,n鼸\7QPATr5Tz\._`. \mr554H5klmv.( \]SϸLAֹsGGρÞ%J+n}?cG)] P]:Pس\\iYB6&# 2RI. -:BEm& ]2v|p/Ł9$:#npF<}Kʄ#5ș:#tŞ!LU*^OZU-O?e}Ց6?Ց>ՑZ>Ց!Hz gD${KF:nt\8蠆 $]p>(Jk:-pnr^-pe?m>YjO/d'ҏ%{$Wz%سwJ?&{+w#7P`q,kk_,^{N+rcku\xZ%}O3yن9sZJ3'qRv;T^r7 :m&x]?J+OɿnM\a|&Sܗa_~Li8k<鮏hY&(/^p_c)mA@xc#_0Wt)ԕ]]^9.91+ B=~!F.32"6QFTlz16S>0BvcPʟ3Vgj1L:>[B[FJNbH͏QTtVNF:5펯4uȓUΓ0 i*ğ`a|doG<=)g/ܽ.)9Rsr`>֓c;{Nq+y`pc3dh<}}'G ~*}jid;<EO")5C=&/1h )"C(?17'/o2r{yߣ}q%W gIx!Y=3BN[l;9ǁ\6[ 9B&bh9kɁzr!;:=Ȓf6.-kc!6”UcF!=Yp:I6{N 泎?5|'s$[n3?ӊô0AmD.y2M\E"߁QX[LEKuKco9{ Y8 8Ge?I)yMg/gmũG#Hv@*T2یMFl Tv0 -{NB(TuE=fPRǽaTd -z|;@.TLv8qJEOSբMPfq f<S:L3t7mWԞPg&lpSSNǞVX;jW5y0o$?j`Xj`n-DƴRAؙLAҹs".\b:}0gp(Ca[RyךeLؘuZ*zWsu'VZIܭҳrCud8۟w 9p̉)B?|d]r˟YreW 0M+9k{L'}2Qq )<ٞrtOMhLc.6Uk嗋aH|ۓqEyO긝Uaaaaaa?o쁟888'_q=9}cq5(~*!B@ԕ*"u- 춓/ym(W0U\oU]bWWMRƛ&uʾ8W|Vle %^ŗ{k0׹F?Άy߄*Ν9($;J7iև2n:$-x6[e+m2(2{7!WLb̹YRsg8L:(Q]FuuM7ugL=0nqCB@(cQ .Qlw|zp4_Ӣ#q|R02`@qE$Liey6O'er-u::Dy@p(KwF'qGE! -JgU1i^\/ -dlc^]W{-B:*S _sU|Xm!_wTTקeY~`җR^ژR]ܗ~Y2؇"h#(V>.& Z5Vx&yAeM!Xz -=#,~ {AT P 25JU0*@*ʸ@ -TH]qWϏ V -w s}"5+5K|j%ر;r=/%]7\nA#4QjN{:'/g ?4Ӓh.o -Kx( B1AG#|-~RA/^p[IZ@d!1]tʒF/ ` B13I 284x[i8OB6HSq]d\ -o9NB A@e Gw/C.p;{ s='{r As^8I4/8))iÓ;ݑgIDTA{zxS;yj7O9kbDkτs'_Wa!gA/ *++'o t&ɴ{޲=k,'}CiB:_r-W;>s("<<v^1Ks/+m g.lsu~-*sZeI/(iϙLvBfEM | ktT+{^#4^?+>j΂ -u?.|*ڙZ~Dbݹ'ut( UڑV;$aUd*?XO\cԩ'G=@JԃOi#syJ5IFM52Z)??O!Rv)oN0u RR;̢ʏ4FqEw^"P_)A(۔5"^hҊjg q]gzQnSTD ؝dt,-\=m$'O~=Ap8~s7y>E/܉&c\ԄcHs`/ABC(/~z=raކeeOaO)w9lӿ~.\C8OƸ>|.\sO_3/k'5%0<:* Q TZX2/v~6#{5bzIy%vC\|0EgkX&yǮ?ZƏ7?ba[5+ 6p -vtǜ^;b)a)uҀjS(;1t9ԝs?]G:HꎴCQ#>-G -PW4{it's+S?#q+x`K?aFZrxˁ_T! R}F y=>-"B[LNÁ|~~yX7a9S3U4QzqjnsRs|;QD,TX3:d\f|h:k,xΤ7ޮu3l;1{,GWc}:=],wmG,#74evO Y_ԕE Pl:} ID]OB= -zˉvnn~+ǽV\uQP*uWJUT*r5\1Jw ɇ:qu8]粸-ĥ\ J먂X7x=nwEsX^7yuz~{0#xB]B2bt'p1A#c0# #fm U~s'UKvy^yϞU]˷e_~wo쟿}wF!-VfyrbZKSfOe_v?/~~?g+xI<;{ƀ~ٓo?z޾yO?%G?Y/oz/mξw__p̙_0lԆm4݄i¬hY2k1O=޹\kVיv|=4aSi0&KqQ/ m/g3'_ HpfƋ !t,6i ޹،bʆ=ڨN76)6lJSj0gglqeZd 4 rƁ+``|:& Ӓ'Q l\)9 6*3N9Q1|L?f0iyڰAc-ь`~M=jzXvm3-|A! Lhb*66[| |]oLfo i?϶tt[E<#,R i2v|ٴ g U;38B¨n2/Mb^n(&L nwI c023JLI6蝻Ĺxc0)ZVqDl1Ѯm^61me\0.2E7a6 2v6Ī+y50ifI؈mq~L^"oKyS3jpj0f6OR8se?Oip&v>Ͷ %j_6ci^1=Ը-^?Y XLx&2O _jTW &G̛ `Iya6a y Nm[\Wm 8.8ʛ`vm]nfe127"#JTN, v7r4RsSɬEbo(O3;b'Pd˄͙ M-9 yK($.20C‡M:k6ҴCǔ"ݵt$~]3W6U !`2u{oGۺpVwFDmDtT<4ڤXv"8a6u˶ ӽ"[j̦oX -a/`3؄>w#$e&)Ûk }G6\9̀Ҝ|(NX}*S?P({td5A711Ok6yڰ{ÁȚ#=w1暠}GJa_`}6X#/umM+wK 4 0|`pdq>Ç^~7ݝ z1.:H7n'C_mdna,u93g]&<3esPnûz#XD|7X!$cjHLS-ɂU7ckD4Dw#A'j2I[a#86QjR66 <&܃x6*v7n;d60vS[( tW -8x:K×f#uJI ΀$Nkqh-8 i 1 g:pe?l"'' WbK`r[2zIw l){46P;[m+X]24783_o<-d F7XNгy/G#oxK/JTMa?)Iu#}ɞlF=i 7˦e3ipG`n NLv'.TN);mNp*/g#/LAK]ixئۨs3s -BB s~}04&`Lfu"3$0ՆL%]l.#2a6/jSܨtІeZ`OÌ'w={a"4/ɛy`\ -v4`aiŵ`_.s`n8/7mOv;x)n`pjnxOɦ s,( ᖥ'0`pƅ.Ӆd &*3!H1~(ch]E!|;@rYBҞ4GUSyaJיYRؗ:0r~h'XR<ʙO@1;Tc@ hUg7jD T+Vhf\i!೽WA*3l {u6"a;"vA/9SWMմagx垒Gڤb -w0Hrz3ȌL7kO녴l;g+U8Jp%z`L?ka#)d#Sf,tDndlcڵ>,!b#ܖn!4#@Xr0I*K -C]0{yc&GNr\pcm lE>k_XMz w`aӂE!- !$[< ӡ$U,g5p;ƉɐGfZ]IZyec,wDrqNU&"G!V9D͉i&a%V-Ǽfō̢8:Z4 $8ܯ V13mX\bg&-ru9%;kww9%g߹$Vx%o<rK\$=.gj!_Ά2 - i4z"?9wReYQ0FJb6N.?RJV<JMjCG*%]SJ#ULiRnokt`++p'}j[q@xb+2"|X -r0KcF!հytYle<)+K1^a -7"2TO@,! MźT!qٮ%lm fт9QPI VSQ Tuފnv^%ܷ/Q\ng)1b4ƥ WIJe%y⾺kc /{?V{uGR -WJyR[-YoRgQکT6OOij/3|]evvzJ cvE.f'3g/Ȟ=78q٦ygyg8NL`9H6_g|yb\NcGE"'ya[lrëhPx哫wWљ,:&ړvh68-϶O[wLu1o|+:mfjͶ5 ;u^dNp,Z\.HuY&򨠥ʚt[oSުşc:"h\<'"eCk z%IǢ5vSoU81[q:a>I Q&a>M2ܽ=B@_z<5J 3p#X"fP#A/+٨o@=ZA#q/Dq|51!ŽdoFEp3!>(]7Y3д8 Zﻶ( :cxzT -o߸-٢ȠS]CQU_3]1qԞ/G1H+ndN?okggk9C5aP jÑY1AfȠvw`ęuw_ G5{viX` ]jlpki](OR>Ŵ'`ߙbZD7_6_>`0X}v7ߗ,(ѱ rl/>YdDo -EP&1\)<&6F2m6Y ;bmeMT6=IĬF+SNo1JPFQSMaA\򘫂JmBw3QX ]LaoK>~Z0"$ZamQ4Br laɕ 3DŽ;]+aWlU0!p7ф^2V1!FMd1GM0iw1(^ ?Q 1Қ/v -|&j77y=ل3?{=o#++aƺ.ܷ<FlXP0 m?|'&?A%ć&mA"N4adR $H,8h@"5"Hf9u_SA"p0u'$fb~ D@5Lۧ'ƩD\t'V (Ym"@*$m@\!4_ R|j;urL(Rx]ȎGy1a3?5Oa -!;/!{-xHxK6vJvf6ŽxΰxpqʎǝMxO#aǃfM]F;q&Xʎ?]l?Ԏw#xhuȌ5&ㇻgVL-+Yu@;CÈ?A2 -G$+$i*VFEE-Pl~˨Xw3`L_ltU@Fy[~qE]ӃrGlϢ6|&T]A eF2\DiMX &FLh]E1 -FhDfڴ)Ăzj-3< 3ʹ j(U ᖎ1=Avz8& (Ss9M,4,DY)#;u -(£̀oj`61K,J` EOfZg]AZUHm,dϖxI׺T$7a!zG5"5w][ OML.ķrji;XSeٴMM(S8_ )hS,W2q\ -qJI ecZhrB^44 GJkA -p@Bw ;.%AuRbKЄ.D&NC:#&#<(cY`3ƥQ"Y] -*(&" L0ʺz(ƣ){|{ ಺ۙ2Hbq*(g%tXr9=N?wIĄ AbE)#t'3=j[I8g{~ A ƾaa%󪍙uI 5|$2>%$ͨoR 5g#Ac#|"ܥYX”ƻT` 8ٯGD §h P`\1's -:Q蕭%{Frg,!rn<K0H~_@cFT⣣@S +y;)}  dPk-D*ȄS62uU42LM1.%'JQJ0MJTpM"1Bߺ&omB d`"` s_ # -jiMQL -ڥ>*"׾H88)D "PH;S,l6)OJZ5))KF5/BA.3FP ->gPIIU (9ըI+VLzspR E]FW/~Ee(pX/PRv"xf5գhe)v*IUYX6v2 NQ+qc -27Vb2FK:׮ZH)#29ʝl9=q=}6獗Wv;Buݺ0WoSC`<of -,n!"h0C<'\$z]A7LB8vd2&ćIS;*+.L<`-x^][;hGJD6] xE#Q5wuY.1/2ʺ\ MiQ~e*Qyr2WMq= W=GgJr6*&&jg -P]@[|]zyl~J{Łeh:4$y^+$k#9@,^a袨)"^BU!I :ˎ=(׬$Ng9/kP\x -5"*C9XohKMVE] ' CJP T84s9tatΊ"WECC?.t0ITc^Eawya]^eQL^>e28=+ˤeeQ_(J浐ue; ID~!_$€V"i]Ths4o&Ҩ>Ӹc76_MID4*F3iVPI+-%j ;up# -*K$|F  u]V4{鼂&GWKVKʈkV8C)kexU+kE^3jmqQ6!"^,. G< Y#GY4WSPBmGS -S|a#/ -KXT){El<(JK 2(U-ruk(-50f.-%el,d][\DQӾ3S&"EgIk6D1ffe*oսub^iDPuDSCAIT -AdC/x -GUȂDʱYvI"^1Ds@:̄ 2mDf",Ȃh A (~H"-vA½ BC1F+ \7o[!&Vd5a{}~ - y~f5M~ųpc£Çr8hrO9G:~B&?z -MSv/~t8\|7z.K|6+0|"Ej45̼Am9/۪|GSsc3~_]'(߄Ə擱r~kOr?|i[y󬾶9-lm&Fḿ?.HwAme%jk1DWsDt5_f4RSs%ި,X%SS_X$>/H8A Нz.Qih;S]5m.7=P0A=[{92>Ӱ M@ , eS$< -{BPaS |0{֍R{Ɂ=!؅L$0E)m*H()4'9X%P/t T~gFAjB 313 G74/qcf쏠NAc(>!P< ?A2 -AB>w)/3{e4!\SzEHju6jdz&ڦIk 5ګ@1,ƛN-Zut~ eB%v0`kyAf5Y4T#ŠF{olF&Ttp=i;X<5Ag7:m0JBGӦ-)HҙlM݉4~u1: M͇"ńoR=RL ^M2[}DՒNT!hIՐZWJ_`[DJKyْCWl+wƸb ܢ R՜t! U:SG۩󙸢s&j5U51bcV۶:I@SOmn('ysKMsc/5SF)DI^#~Ո/zI3/gC1P@)#7(]$Z9Qi5:ʏ: JARFRGr]t]R&RQZB6ڢGJ+KzP6zUJvuщS:hJVFczul5&aChcj,%բm.2 Uf6RlCkckXy*CP=a\f&}jeƪL]uIq5K4%qtAVeWC1 c<6TYe&a!T!ȩDCa 6M(:OāLp%2r5:(Qv-F:! -gMmgfh{5}cj{"O΂|l2mx9B{$`J%f0C9AW ϓ)XޒZp gBK@ft"cBA ~Hkܸ,'(9\5xA7vRW͚LHi쳾[[A GXJ vaZ aI20Ғr6 4~. V\B-$<)Ԑl8qIqOѝF(.2Vˌͥ/rB8g' _~D?i=#c;ͣCeN<-K0B$0Zb$qDQaK!L#{9*ʙuxO0IE]''U,g5p񇃨J:42d/gFnf +K.4\mGd]r"/Dr5*7HZB}v(6CnGm"y&cɁYmF9e -ն˴rM*N"7mqgWKɅ,n^f1L9+*br7\nr1K&.q];%c,j"KfE, "SdABR RE)`L-P""}AFPF:gԪLu6k< -%I)RȩQ*EJX s -¤)X&OAFCTMd Ѕ8^*'U!A) -6zBҗN]•ttE>+Bڨ,P5,6" -ЮsFb= -&4Rй1uXcr7F20zc(=LNETY%+ ܒ=P+YteXnc5 u16ѯvr_+,Gg?,ߢi,Zȍ\.pW{e3pOwOYn2:*V+JK wjiE*ȚA2&mS~q㊶ƺ*7>P^o4#7KT.B)1Uc[o3B1(]W<~`=2T x -ߴgm7Mt$K7,'D~PbyvDBn9Ů# No_7 nu] <#_vPaͣkխYu5Yu>Ar,9Gej*oh ,*c|Jiεq_Ugv^Ҭ~uY>֓ y-rRuHYt/FqZzkr>H:X{l~Y6X쥅(܆8Z:׋)dMZڊnPqqS*<`9.:Y!h4gs hC $Pͨ lm` }%bѢ\ؖG>1#n+Z斑Gg ՁWMz5W̩zjX:p,Z"4pX"BHwܝ\gA+܆G"ԩ)oev »̩H`R+ujc0eXIu%Xq:֩tIޣA9ȽvL'' fPG qd_=+GJm=>-)&lPo9p!5bG LNqwc!@=V"?9GbgK{M(Gqg)" &8CZB{(dj'u+eF6xB'DpB iؒQM{sW!>Q)C?%z HUH[_'H''eGOe E茿-ԇ5wX Wꕜ`Bbgiw3aX/NVAn61FU?;@'C[o1 ov̾ u(v{3Bsx vj_35ܾb k MђC[ŷ.ɚ17>gʭ~^qJ !0~g/xS4?TZhp~cniKpgXK9ԛ%Z`;'-ˌ0Tҳ/Tw' }UX8X„Y< -J'"qv&^v#@ +7B"vh 2s\g4CwdsrB\a ggΩ%3*?!ryx'}$fs kV 9 ti}2!Nq L?̚QZşII 6&;O5;t]u]5fv?ow\uIVs\少:{nR.vu`28vpu -`;0ȿf;جb;gg--#lҐ= lna;h뇥b;rہ%Lf;{fl-ۡGbÈ!jz:ׁmmn뜮f=E mG 9wG.T߶Uw?M@z?j45yOytt|At8Gg!g>l%z!0mwD_@=<ֹk$C1Q(ji/#DP2.g-. _,.koWf7lI#7E{ipζ/<)OPp{iLB0/[uڣsHPB  ȳ# {!lRD^< 10 FCeN u pa`噜3 ]:OGb`g#ц̝f@Yqӎي tH5X$?9?37|m-61 -y,aUD~xv<+D^gLO.;c^Q@H `J N*{%2ÈBȼ Qwu^<+m^ ȁ|-0,o1M.{!;p" Fn~Cаc^o{@?jK|BXe;v:rL<40"iw^7呁*:0[@%r9#K``h%i\m/"w&.O A>#N55-ב2fP=Krs%dasi!y|3 817yR*^W˄FB.xӏH&) 7$,L7 Xa"k*u%^3ԈWH(@!^Q?yipaq#^1 -/{NCԌyr -O -;t\5f(:/1 NP4ddB `PwS+7 -á SnP f(~2Cf(C"k~ee$XO^f(J mDR3P /)* -(ѭlLl^doMul|rPgl"D3dCF"#ڱB[wٕآ!،>(]@Jsh ֲ)aT| ;d4]!YX3X -=s*;+Ae'=͙! ɘe}idV+YWЄJvKe^{{&8j{6[3A­pˍ 4|I܏5)=:P4S&m'l_8du:,62Lޘ3Ry)rf(W'Q&UFdF⃞ia2h;*!mp"+ $L-r(&T/ՀPXϏtvCָuDd(0SQF=nrYu.'\˝몹4gΠuҗyݣQ$ -ca#"8@ث_PQGw=H -Bj8אLNA&s٩ԫVՅwtRvsw-6z{@M3ÖQC -kZMK Sέ޶VNn)zo#/M2vq#}N#M1^H!V"űRx&2yۄl(es][9sG$|eoQW.ފ9C΋v{-7n,e%0hR~vaK2 -HYk|wY==%! HxkȊt/hvhyKpq~bQ`xO$1&а ŭ.g-V7w *g&\XTc˶F/V34V0#_m^ ӓO -T'l.;{s"_#.w(Oҙ:qj䈣p5_<4DB9'fks3fRStQuBc4(˔ig h T!rBЏaˍu: ɔylw~\Դ3P?:;xd nu6.G`Ig#gH G']OJi\GWDϚsfy 9_6cC670lwTVaΒ 6:мc.8+dSf7cr.te] -} $:N>XY2`Yl[)ڇjb h IvƺY+k"NP>]0Aދ d|L6^sJ׃0H3BP@ZlO*0)(MNi3E1 vGL7r @KN -d"rJLjZ^K̖|C -a,9\9QKm^"eO %I-( M,!)y["uTׅ>[b3V{a`ۖR΄VSqՐ< -D,Gִ *R< PJ'c B6b0Cʵ⌧HꋒUp+S H/tb|5ChrVن;I"uY/̦\xoE G, -lhi؂1BšH* ET1c#ʒ%â@wedT2 [FSb3d{ /z*l4~la:zs(d|"-Xeg_60VOP0aL_/=ub`lS `c?CAl>~.h˷^gR-q\*p (Gp(ʤf.q@m;3! -gLrZER'I *\=ejOIl -'T;*Sɭ 1I#X$S.+_:Ơdt6x uFF bP]T!P -vzw;"A[a^,H7(BgӜr}b hUDd]hhcnNW}(lB)՜ae<12=z7k|g~(dڮwE:@ȎsY*PhZ#F 8/*^z ky50ɣCGq95%%P gi*[V;Jh8h IHj#R xKҙp]gn<307`Q}f-tL9A1e smO-[~] r|WtJ:_j&WT,::yژ -/I1B#.Q$+c/idmveڽ 01f^04b*Z#1f-Ťc ŠSycA^4W [gvXڿx@3H+kTj*S5TAE{FP^]F8A%{FPɞTה$dO% Q5 ^r@5{M=j( -T$fO SAj핂(+ Q$Dў -T5 *SABE=B^WK##lv-q )HѻGe$0vs9 <5<3gؙ4g ;z/v3誱g-g xx`\=G-[΄@a?BA - <dmn! fAAg3`"G3荥 -|ykdxqJݧiQNr=C>m$gaL/@ {>r *3x =x4,{ۧ;3~W_jT:#Hh8:đC )u4H@bGvTp:jv$`G;PGÎ!~T:2?*H5?*H -RGQ u)P5?*X -VGQu?:GO"_Ȏ -+c;2`I#eRN~5R(}w^ux»cMgP1#6hB .h@\ E3:f| A0n p3 ATp f +/vNk ?,0 @ f b4(^@N  :)1x.If ώQ@d oXC-QN& qdXL~ 0l%v_yV5y0BA= @TX 7'BBX Č*zTU7F4zpպn3^-#I{bXFF;TSʼoG5&ewf?j43̫I(FIY"D'U! }r dS$;=+ nEibR>xS|f\ь%}NP>)y,k:}قxbuB4oid"D^|[!׌MRMll%MmD'2|%p -P6Sa0`eΪ8 ׮*θM(원p޻\$yW0'$2k3MKG0A iQmi! ޽FDfDUl6xB$jZUYy*]&9A ]U~v M=56qO_{q"&qGHd\NoP~eqjxMeTۤyjgT|»9.˟6R'G\ge%㍉*9]EW6KKv,8!嶝g~dOI/|͊g?lw;R+yBe{ZKuY1װ1?[E&*Gj'j5[lw,[X}6kK({-8/o>֣% ][ûa 1,i~;$Rv35 k_JY,!5ڛvWWɤ]Wc,*e6T -gCQVh?y޻3@Л''uY0^uݷ5@Jz[-idl/=z%r?emƨSc}K{'~!lg+J&ɊY;+0x%J{7,1zǭ ijO@2?S%j^ 7&|^4tkXw6fWߘ1B^qw 8gaOZWxfa10>s]}@(s&`?2rZLn 'ch#8Y -\3^GHVZ$TT^J=]OL_﫻KAv4cQ ܤ:'/Nql{Tw3!M9"163"Uۻ3c_ézn:V/RUKҝXoF˟|z(R3Vp\E+zeX:>VӗcX|梠\Ir%/:$Z$t:\!ԤV\ֽpםu;/vuzim*7G(uӝ.!oKټbzImx+O'J;0^>2nxFqÛ }{PMc@ -f.:ŞY&(%*mur b 4ut:n쨨Ϥv\Tֈze7 e]< NGYJR|D+*/E J4L,Ɔ-2!zy%n#k,̠J(غpW`onV7ѸþxQ-c[7I,gq6Z?*nUGĻ?z;Y=UY/ {.{Z%_^ɀCf7JP۱C0Pq@OBrXh\Oxf=C01~m=F%<#cǏviXxTsT>sPbKگ_/z*C׏&^]ImE/W6/A&ƬAW[ϭy&k.Mz1ELPr3@FywH̆FGT(KnsVL~?yy|vf1*SX TF\3h 0L_qukF&GF딯ycq_uT?iuMmHBc5/4jNPzݎX/z߿ -g"؄r/6|yilr,8uW?GUqDqc UXwxKg~j8iXvܕx TQq!Uij>'v>J9/T#h[ Uaj"~؈*ʼnW3ڮsOpL/cLq -f)߱;r~Ү[;w*~SϺ3 Y;K`\ƈ;P/y#>qy\:g Kay)ң5^D@gܮԻy#4PĚ꓌|"[uDlq1:^#6ύ?x`i8ocD;Z8eyGRũ),gF2!F7#:v"#Z6,#K;5;-ۨ9H0CMU}i<ȑB/{͑j[ҙ]L-B˦`]'kՍȻڽM7%kV+r:M_'% >\l5kqXhAL - -DLZi1{A -+= 㰈OP|Wayę7"b9ʧj cZt㎩mZ?Z$h_Oe1|e]eK[>?oFijcpƯ}qU>7z,/-}H]rEHqGf9B4)[hy=ر4Hl짷PFKO(.w2lc9QW["48n|Ѵdb"U:Me\A|"Wz (V&0B 8/ qx,Fؙĵ| = cIφ1Ja.0THzǰП5^EKWm\|G7w܌v6frcl1Q#<1=33cY92\d9zdAe"3'HQ, $C\1[xګUڡ>oTn>kmh]͔i 7i/']ݼ>v&$*Aʾ\Yhe6gCӀ}*aZ8%mXmwYO>c{$#!>0'|Q[g %ł%G]s=Yo:g?=04NnSfn"nGc]{s:#-)*.A^4MVzjEDDR֫QPpbxBNmn7:qq9I`V\O3" j‘ш؀AF==5d <]^a5=?w1O+꥽_?ҮU -bzVk jD^dcXC^Kחws4At>ܥ$5N54R!5#qkG,g6OK=Vnm>=(f=WvҾ+-rUvPJeħz>'+ Q`Rsv{F ǂMOe;Uʱtisͮ]8OU3aRnv;N{ l#֞ᡩFxbo16.l qcz܋1G=k^d?EXgoo~/?o~/zT3۝} uCOo??B^W8Wd~~G;s_|oog_ﻆ_~;_w;Xo~Ow|odGs[|,.l?t1KO ?O ?o__w_$h#-@oU/hS~b-H~L??|._gv_~*kz<髟f븢O~k_/?83m7m?[\ Rl/ݨ2~GcPWMWheRU&"^dZU$DPT<@L ,䥱hc$B`t62detMZ ٬ZN ϵZ4YJj^U©s}+6W+:;ӶbgٕGJɢv5p=ەj$wx˧t,au)eaQm>ˋ:XȬ\aCRE_: #"@Ce 7o؊Q <6mq~˥HxWKY{Z*Ez0bL"+ . s,` ;EJyp 3^7,ؙa\j7d :7t, bw¶x8Qi(O$ԃw -WF8d@$\뛅2TP_I!k^6>Ko#,mcPg(EJ)3乻 -b^wE(3IL0&FLUo$AaSWHJ ʉ8VT7$A[- 3nV!ot1<47U>F鶻nJ\LXx]ܽJQ}ߏ2z0"BnbqϪ]^uv+鸌2ˋLMDw$T:"37c7JUL۝tra%jVWVˈvNrpx'49YwI Ґm;+RU=޻aJv?eqw"\è (CӳT Frl$9n6p@T*S gaF\$ f_l Hqr -۬3W{_+qY1]Ɵ5#ۏsUa7R)]q AùX,0gYv -вe :.oE8% ^ɀ,07WkgK]MݟI( q3%7)z'IHj<<%WX*B$۶V 5\71hsoe &2iצ5P46 vZSFxdyj NK_s!O=i3.q04z.yQ;7ޯa&vx̱|7NSxY #J`̿X(LhY -95S0MF5E~kR2ʰiiN c~s!~wa4omvtxS_O+Y@r Q=C:$aZg/E|IONB(|%ߛDs+N[?u)1-sZUln .,RVMjڵ_|5_f7+28,[jC0k]bʈ]D+ -X2MiQ C~"h"pv-&O;E #A\aNܣUN,٤ةt)Vca@*oIÌ:Fv[6F@&vḭJ1BحI~=kމv%x*LգqZ, -zOAVq8N/%6WL}u7IrY{t}'7a}@Q Ea/.!gf=k'QȶZyۋ>o+a6{n\ڕ[E^m/G04pB|34[U 8mi",֙Gۛyz50j^YZM n : -> fA -ѽ7!RgnTaX"FVL50Xýp`%5xY?vLC݃az0ps1oj ]m(=2@,Tc~UKtoG i@ Kys%@fW>bIF 5,YG[l1~pثejn,Qy(X ΰ$EYQ`y;7G3w '0:SPl\`廴-B(ذMvQGf,eZ̰v#4.N=@mX]TJ M&c+e=kj}U.Ȓr ]W[*Y#E<ˮlYn"\-v\UNQҒD?ϳ[0X2!gE(hi^i(_ڴrmq%[!º;I{MJK8ݡ,=zv8x&Z%]HCNNV[~y "7@b56D*w.[U21}>Y/kH,:1JIP8 fsUtܶ.1PZhօuBmMԈq=B,Nɚ6`<5Z`bݚS5`ȵ龜ZSkPl?'2˜QVu -(APgI*,x4%Q - -%h-.GZK wRy%lZ!˦']P$B :YQs1V HIbi&,ʻ,JřCWGCdHTDCE;Y~Z -pCHeʱڙ48ǽ= pXD+AP4Et_nrm*(J}Ճa 7@d3/3Gdd N!lw*1JLHDMQ! T.!V!u+i}S 9}VjՄV1gd48=ߩp+=4,N3f1ߔSd&-0͸RۼQ׭IOW -lL%TEVv8#! -l/!7A{(WһkFlwKA?9UffKnS{W+VEBF4Tz*;5".BW-:V.C -#t3XU%t.ְ#Oy(7\]\N >9+@ʞऩ@Wg`iJ~V4%VWWl,I~/̔dbt)ߥrMJ>0 -Te/7YsI۷g=@FDTpLgPN mO"uY5 @ +d cb}g\M3} -Q[&\ -ԈJ+,5rZRIUdHui ndȝJ. n-20#>˴ÉGHZHE))-|gȦ^xr #IlLv.RAr*10rswE:\*u܄mlZZ=hvb6'1&8'~e *m4` c%ajF]-bXԎEyI,L}cq8K#Pvvb}Tz4R]=Jze)ܽ S.;r:.XXV e%NINkIE*tiCyvǘppFxR* C2bfbZ? kW^VC59S9LtS@e߽l *|LE|ڲ7Ĩ8 !OR(Zݹ7IpnR!yoi xqtAc!]HCۙV'*WS1[yg(!oPgTLFnn,v5@(Q͝}B,g u&5P#3sFlft|>QHq*QXsXNO(X -pׄ;m+`6J85[jU,"M8L_L^U [9)zRsfKy_*,,2(2ⴘW x^zڢυ 'Q ˌ#ۛy1ϰ-T 9#ڪ{1R\H mjqV)(Հ?Z3M6gnRlk4dÕ!qoQϐfۨUoQYBjvY!{&7&G"KIӧ{GTV hir^g^k u=K' r)g&fSW -_}Gm6Z1*ƅ{T}?,HV`Bbg$-v& }Uܼi}"ADgZyl/yCJg*|E,{WN4ab\kKM,{%ۼt{T!+35Գ:SuFa9l=Sʗ$>Jڧ~LrGd$ZrU74k'?iLRֲL6@ -Xcm=>iE -*F$r-e_(G0 6e)CkCKޜǻJ% *p p% rI-Kf:isY;N?֛I>]eŎSwg3(:=#ؓ:O1!iuZpu{$9b ;x -׎:%;f5ӯBϲ*>>w.[MKlScgPGE<SG0>=|U^[t|)0ܾOLnqjVZTR -7Go YgW^%kLj阮ΨOw"]5,/?)x87\JN[JS2)}T%lFui}6.H8!,<hN^nt¾+USHɃ2ԒU" -hb,ݩV{,%/v=dQr,2D5d;+"C? #Y u"9y4p5Ë>*/kT;t{ğ)A؂wvЮTڵ͠ێX.Ƌ6,*5V`V5^\TռXa2"1/}ϟsAJRԋAfJD%?Ұj:mPjS2Y(ܖA;_иOf["5ZPI+@+oavA25tJas敤 RQVHsf&=Nph!H|Lyf~n #=!"-Kzh_BKXlА e 9N,LK#V aEf jY,K ϐjڪO=|K֒`Mn(.jjf쵼V{&DI߻o1TC2XBPCvq -8eo,E \uW`=imkT7Q?HNۼ4}GâVZizu+F{Pd1_|iq6wgIi +CĬ4^k^џ-ґ -[9F[{{X֐K#m ->Рg叹<3bIĶp21AacTZvY(,fr^XjTD`4F^O]nr:TRjT*{#,PAV:JޏiإC7 P0 #݃.g$RԚ*EjQ6V[͢.sr]jZ6g{H$.#T%d8j% Jlk8P9*A6@Le=]rsVS v7lxPSUY)6YV_Ta%*Di'aE1f/F)ܢWʭrd'~|LhDQCӎӲ@VEaIWi ][p[.u٬jD{|y4uocYd.wu&sO'&ET{@"L2mh(q +&s2 Tw$lьBB`sW|{GTrx5sm#81-r);3q#G«Bc}&ҬOݫ^zr劺W޲RL7F[y֐o veq2}u P]llhc_`efsq-AkgMs beC -b ^ޮ-T"S}4R, -VP&C[SbAq_BFeR=m`@(] *a7QBﰕ8H#~(XAMӽ*)Qmo"P]:H[tw徒 -$q CO.A^Fi|2vFM<9Q)# 3kpJtX!l]2~ܩx -2ks ܶm[ӋB"&sFh-"-UlfUhe*nm:7j>mCiSV:%cH$/GFKmзqVSҢ\&=Llpc2Sr٧tA'(f^{0#wƣTICâ1$݈ Z\fvQI_oeQVq)Uc `x -UWՌOXBW5Q0@1؉f<,hހ~Ff90 Q&MR1m^- N]^UT q1ߪB}ck^Ϯ)[>v0#TM,"Q2F#<6?ԑr\F%%KTV)o5&?bj4MOٴ˘&A6OYaD"OnnM<7-}ݏ`UJ.[Sgl% -8 -Xh'@ͻBlhj]yfxHH9JSf*sK@1RU$k"9ZQo*riؼDN cUP UR2ScMn>J5]b+D}y2Ʌ͌/"QbӚͼjmIOx=5&gz,wi6@UHquHEo *Ӄ'XD_{p߶nDUuiv jnsbyyfu7O~R5P[¤苨Gnhl0z/Q -xnBaFn!D:E\}qH -#k;>J^`DO|J^c?fZC?X5G~#8 l1|(?Wo?oƇ=hb M C5VXË)4,T~ĀW,&fT>-0T7M(4&e 5v 祮4ԓ&ֆf^&Λ&İm41 &&˾%>jk&ֆFY@ 70Oz&FجĒ%ibH ۑhbĔ^4n&UUgS*q &&KayİV -"{!Uabɒ`b01~wL{Lq2Vu+2&6- ĈUC$Bq-{ɚyb2bK81%İTU'քHK8 -k{'ƢXpb DoƉaDd8'M{a(818&9qb|`Ɖ5*o8u[ I6Ć!Ħѓ]-@ -ĉ1X뾻4Lذ9NL#IOX{ʼnЏiOXS[{‰5>N 'z8˄'‰5Ă2N8a8a X;BxЕ&ɖibfH413cUUYb4%ƕTK%wYbf %4X;ze,1,oZYbMG, cZ/XCy,1KLàg0(YYbM %A[ѬN,z%Pb?#4ba,,&Aݐ%dcgKeiN$XbDpV #d1%Fڃ%FƣĈXnĘk2Kkai.zHj%F*S)< S/ĚaK%Ɠ#hZXb/gRa)da,,1.dxZ(KN,1>kXSyĚ^,1ͬ%ĽN,&0΃%y%ګOYnb)L#S&IuĦ`~UJ3 -$fLS>7IL$BžHbg$1Y -ILgHbH:3IL%$15)7ILgXW.`Ib]̙$eOX)٨$1$1թQIbIb]LFg:^$1$1,$MÚIbA*$1Y$13IZ$'I]Hb $F -EA*I+x$W$1y%E#%,(@b 1 1$gAbHĺF]1U@bI 1*C HĺfH 'ȳf@b8$֔sO 1# $F,* 12H'1 1@b( 1e3HLHcy$F $d 1;ge _$\1o|Qu#$ƻ[vy3GL"#1sd1}΃#|QV8b-$ODGipN4$4W:yaʗ1GfT8bk~pd12G Ë#p6t2Gl+]8bg;qĆ18bdaBI] Ca IϷΫ9a$1dYFL<0Lj񷖔* >80b2FN`x^#&#b1br2FL/#b޳\I1E$xˆYIˆi|bĔ12FL=1b3FĽS#_ƈQP0b;0bP2FL_O#&Cƈ#/1bX cĸ#zh_BFЊq#`&#.R1bpHƈ`Xc+F-#&ksf9F #.Ӷ`zW#b؊1b] -#F\ňMKƈ%gս_0bބJd2F OشFL?`Ę<1Y FLƈiV0b8+FL2/X׋1b+F,YRĴF1#&S+cĦ!cĦ50b-{ƈqbň)pV0b]a'F`ň-1"o# X)Ĉɘ1b*F #iƈɐ1bv#F`ĈV{1go#GZ1bMSƈֿ#&kƈĂӇ?1bsOk"6=1b+FzňA=1U,#f,O#&K;1je -FR1bӒ1bf&{`(}`T31b1 -_12FFl`ĨycĬ@1c*FlZ2F,Y#֎ ڳ&u#&#6ulbĤu #Q1bÒ1b1x#&FJ;cĆ1bĭFG ad.#Ö1b;cdxb*F#6'q#6,#6F2S5aQ1bĀ+FLׂ3cˆz3cz1b F Cƈ'F cƈYO.c+FlFl#4yƈu'F̖τSedˆͿFlKs-aĘ^1/1O#13F CaxaĸSwˆͿF̌ #̌Sl`$1b]}#&֌5(1B/XςS\T.1 -El2El"Lӷ=)bJgBI1Q1"6 -2EoN(SĦ!QĦ)b=RH#*SXWa"&"g%{E"1Bc(b'*FSiX6ލ_]z&:bJ %vU~cu3>L\Ozض ^Q s|m&v!4 Bc`X^g*]̰l T*1L}D5a"s6yax: -g\.a*W`Yn[Q{gal5Ya 0>gkk&I~l?'(lt v1aژ-}PPfZ@†!q mE)a\"H~aԷFqqm䃉A7Z`TxU GѦ8JkG:&k :` [ A]`|(ez×ZM9U;\AwO/4/Rۑ_-^~Q\ U,Oo?Kx/SYeiX+KaJRrq//l- }Ijc -$[$s0t߃,ރQ4WK^'ˆZecP_嘘/{#>1_J.U̗/NKQV0_JoAp{/a{k%|ɢ<(_X>w/'rLmǤ|fSG|\5)_x z?ǯ9vMmYQ9 C#B)_kPL$\K-*v|*& M/c|m$wNR+E|!:v#/K[n⋴E _v;D,x/t~סv3ý[P%;Oȓrbm!X/zGmӂ%r {M2ѻV붼Tл!ӻ1]R-\ ޅgպQ$z0dz4:Ker2{ K8{RV1}$y(dԒ.|)Jƭ߅Qwahbl9 &k3d]B^h.]]}% 4$4zY^!lrB[:b㨻+]Ð].p"%[wA< 5a |`.ՊlK[2REٮ2)#ӻ=Z#7]wa'] -=]ӻtġ)0wn*˅4B+ %mޅqn0]Ӑ]4# |V]$ޅaW]RE.3RW.TM엱$|\w>G |4$|0i;#2-<*x -K1RL:%ބ%Z]˿ܟE)\$ߥ=bQH503 cTFE]SK58ZEk"w -KqgGsIcGwIπ$YHQ[E[]xgޥ[/.2ǻ r+uB_O޳Qf$h{.j8#]T3KmH}.65:ܱ \^A:$ -FmEh@uIGfRg.Ah>7"0]wtm@O3D*Zk;]x-X#ЀлX]X% +cѵ+kN7}?ׁW. ULR¦W ]:\IX.UmU JхbBIU@t̓)]pO]7!@t CFt1]-vˌ.i GuHe -kZյ,N1 1#nߵNR״dRW:k5H]1FA"uzuXp.H]X:+KY -fA겼rLR,ԅUnm$l UZH]cGD#H]PH].3q^LRq R/غe}|#:K%Gu CAuM,rQK -եQ=@uI %.1e2$*c`]Q]Lv$ TM-娮iɨi TBg .ޛleK}M+ &6a);Ln\]xgW.'a4ڔQvҥWrJUtɲ;Kz:Sbt+~ܓ҅7.IA -Jg:zQ4+YkZ҅n-pAߺ=,]e5re9P0?00&KH 5:K%ʱ8WEMJMäqM-+ӟQ:W+R^; %ߚƠoQ̯7'%ig`B[qq[d5-5bluň3[ +->}퓽%q{kCss8[>zbp9kK, lκNְd0:}K0,NߒB/[j; Q8;AzE|#{[5mn sKUҟ[}:z+ݪB2}KV -xRi-=GM²Lh,Am1Pӷ[(4[ZfϠiER4η) o,goz EEA"2OoaU+[:r4/U=d]}¢oo) 6[V!vװ.-XEY&O U"g)1F*YsjT -Q&g3lD˱9Kş w6n$aŦL͢*Kf݋3뺬>4#01뢷l90K^9HR}ac:f ZybaYMY9/VֵȨ,C-ouI`)8YUϘ˫%PėϕeFE^@dQzrm+ZMu7X oIAǺ{e8Q`c36O Rt,N -c]e2l 6!D|GX[:Kk`,lVkWOQ/T]ۀbXcgL,tRD,yv6z.ՑzYB/o4cLh@F-Xgnm6W8w!&:`JE}㺮AxYЗZwptU߶¼YG^6W-WJ+p+ T JބDRNt9IRh+6Wb(!WJ++^Ys܂xU5j -JV(x%bO^^ W=}=xŢ)+e͵3 -D+YUZ+,* } J(J9-0yxW8]]axNdlp"SĆĻRסuJic E]I rs?yW'JtJlJ?2JKbλV1Nz+YT(-*:2WX?ueQSbREi@^!ר2˂uޚEOHv{0.ne9Ҷ[yk^=zaxem+۝9WJN:WJkfժw&JH"JJ!;^ `HE$PH^It#a+øx%I+q{|BfT5W%1Wf&7W- Է&KydjZ@mԕ|{xE2Jxxw[XRRRUQ܂h:bP!jΫZB^)tWKІ5BxT]i¹dڕ TiWm{ƾwkr+!~TJ^>toZ,CA"uW -<+a ╚RpYWJ(W8Z$^L.3<]E;]@|숳ޕ> b0( Um+ -<"+&Ze2 _CxUL}Yp-X+*5tw;{syѵ9JE ̻Q`λ4N9L xI WYSޕ2ixWӐK+'ޕD+G)cVJ„J6w%e0hϼ&skV@a'8xWXQ2Iqw;Ѯ1hWMu$!>aW}0ƀ]@]5_Tؕd3 - J ! -î$aW+J] yzv*8jYiWjV"Ӯdݝde -=yDRiW MnA⨍R^BAA)Y]4 -vHiݗ@ 0VD\]ZdeL%hW -z/+_JQV8J]Td3JF]ɰ[~B=%W3J3J5 -ԕ do)uŭ7QW'9(/Z'DB]QW:NO6PWXVm2JVUJA˾%f& -Ϸ -4VD9"ը3K+[Urﯜca]*A`]a(+,<,+Tˣ ֕6R -֕,uV֕6* ֕Q+ (U:luEa!jsWX4Vyl@Wl83XXU%D3‰u cP,&er% -r%"YAbמ)WڢVx )W~DjzcwӺZ-qxWP%4LkPʝWq%s`80ץD\MC\MkpTȧ>]0teջi(fw-e*n uh#kV+cUx+ ЕϤ+YWXEp%Z֭PW -*6+Y6fin,Wv%2 -ARy=W%v&j ]T@WvtjLzOZuT.qjKD؃p%йVT^|+Lx+OD~StәU+2bTL0vZ 0d6VqXuFr !8jU6Zݷ(f@ IKVK fU ][;@Va -#J꺢 4Ua "a5-aΰt47zJ$;a.5p_EfD"L+C^e6>@WAbб̳Q('U -"w;`#RΨ(`M*j-*4 d4$N4:д xP}\[pd^"Mw&U-8U E*J}]PXq! UӒ!Ufe Hm+w ʌ*lJA:\&* t=[S>PyЩҗ#luIl#MEuU(vƽ{op!aQT5JjA ;L*B]TH* 3JG]/ɃG_ZQA ӨjjEu)ER멒?IfY+@ --N KUT$!Wldo?8^X^WtޯY *mXlL * 466_JF CžwPPm%[ ^U"$yʌpƳ9TM?tE27 32BEevQo -dޫJ2u:o?Be&n(T(v=CbCEJXûchM` Bx=X?f@ \! T 7 5 Tlx -;.vPBw5'w*<3)T(p-)7VY@v- T[*SgAM{*2pXK*kƳT`P1 *lAw4-5 Y3x״GPT؇( O_ *P2J"u[e=_`fP! *jFPuýzTM| ا=)2jT٪]ʖeφW1*|zx@ TK H.E˾A˃:ŠZBPm)T SZqġB*ITfX/>-$1 -ߊ'f>3@T9MRvDu9 -R2jDzN-RnD&@TC)]R2D+ יJmDe O8J>JMe NB$*Z^Y-u'Q ْ'UHh`vޢ(a?QVpHId;a3)oi J(S(NfxgPS(968T6qSpR9 -Ne J_N~fHơN*g%p//ZtZ }3E/(TZmSu1TN&0Tڭcda1T:q1T& 5Br*QK*C̡ڢsHQaLpkoP&;0T. 8C*>E)S1T8h!0T(.-$ C#)E`dž'A*[[P!jw1T,DŪOΡZNЂB Pcͣʪ,B}ZAkmB ANf@K%{~rJ-_"3{JAs㨴KSBZbƲ[st7RWNw+Gu77t tjj蒋8g ;%2RsvLANc涷ۻ9~qlڠ8E5PWlLõz$vALl;DcA5W?`Lw07Nu*yk| ʩ$4s JY|`jAe"R'!WߐਚGK<*s ,0R5JIDfh6k@ cRug_;` -۶JjmժProqGDm&HIlMJJt֯ - y|m8hjG⓺ѩ6mU(,=sX8ZlYK)DdQOU*2RIp8f>4x/wf1U/ʙPUKUL J -XؕcPחxm |GBNU9yx2z2ˎ/n51ZTszj;(_ե Ҝ4d-`၊C/U;ɮTt9q($eJəoKO&kj;eq{nĉJ_U |_%8p+KS>L42^E:X'@)fQB+Q{%:N8ӒOQe_FSV}rny4QH㞨ZJw7ŷhf*Ց<\*T k|2Ea`^ӄ+ՔE=US[qZ}GH^g^״/]Xn[a*c2Z/u9R\QR2|Px#g|!#v[=A 5XʽW[ՒC)m޴R-5K)R}V [Iu8? ;irSTv^5!ev-eɗWAalBxV7:PzA3s@c/Jk* /w[Tw~H-p3P;Cg=Xl^VRO#fM1<558}eAt"<fH1%߱ tT" -0i$SY=K=K)[ej.U.<%6QfgPʅbeTkӣ>f_;at5!`jF&M\e4 yGiHIcᐅ:gxM1RsR~)6_/dE2֑`fZ6<膲=2qN:Y0,[vJ%uSTaJdjDyt"kd:ovlT/ԓ/A#6Gc[|G]aAO!&T~C:QJ.{HUUS%.”_(ƪP8 xLq[,Tal{cKMlWlSWV7=8@>`s7) -rVYiJD{Π.: -mNuҭS.c*Xbp++Gj=iind)qe/ؾ8<Jv/ nJ=7P' -OK~V)qc3NNï:0((|}V&Sg -R˞kn9amoUNJ2ت*>E^ -4}9SwX]WG|շ:ܜYwzTh -%Kծބ>L,$;wv1V,7ޭW=pn'nq΅SWV2T%IeQ}VARwjud)c9K*zIz"۷;i'uNFO+_яdq\uc5# 8 f߼{3KmBeS~MDqXkaλyr[ݛҥu.ͽ)u+\N񘙴T!;r"=j0|cyi, ; {X -;S<><qlC>2R/%[Unu1UFE\D2Īݘ]S e,Юe㖦ID%.wVKqFfZ-T c1] ntW3e2Cq|usQuU:;) 5[z5)Z)- 󋋣'`!B󮊊{>:M½K-3ɛԱPFaLᶔ6eY9T(6z3] zToԇfmlVU;cx|z8pmv&+ڴiQ祍qmڗna"R(KCa_6 "yØUV=ia?M-THumS({Zi7eᾤak:7Aݘ\]FH͎YJڗ~zIl|ɱ5]Gtzd*J+T11Hmŝtz[eݷ7#T@]Kta.mM]ܬqT-F44quY_~Y` R,Ef)xۣD@PXz,]RmYR00|Tfv9{b^ḪȀ% -(BK}|ڰ;dLvD@1e3(Y)jJ7jھR.aMu%hzk`tIڪ8j~lGVϓgHvkqfGFVJ!}ж1ntc~<$ 8SᔳKcW@R~͝cҟ펻٬[ s[0Ӱ+8m^qG.i\o endstream endobj 290 0 obj <>stream -d4ރ,ٵL0}~ĔHR1C!X3rmXK:i~}yęy.Mer[QQ_H2)IMv߲W$pRN{qJJCG_Cq@R={[o6!)f!l$h&hNE8| --V,4:uu^>Gl [ݜeʬ)L>EsmŜj,ZM\aE'eE34DI,h`r7 -LARlI9aU2IyUzH:r}T+lliVy] KN c8D;)cCzV>$AXJۖ_=QY1_2m%$BUr|'c4\iMqw”-phI)6 %O c(QFSgZvS"줲^ڠ+jzBg~l#q{ )m+8*9:Ɩ2k^ynBVcӊX>gS"@0/iHn -{O*jqrV7)'m")cSJE B5x(kota f uqu' uvwylKmٱ2}(eB8@`nNRat a;͠^^+x`TJNgG7NةDE8S?Կ-ҫ%Eܜ'Yr'ydN\U(NaGџN&5J$XHt0NwG!ҥ!E SP"VIKԵQ̆鐅׈zYj(ZS5 - )fM_Wۜ<v$Ll/<8N6HaR% -;0ҮR -q(ykgV9)z` X6 -&ƻ4#h+R-_vŧlpjSϴS2Ah#r<[^s &:I46*l?^q8INP7s}|baE `I= ^%F"¤*Cg,L< 4m2>XwH$ =-( &^zGcbTs &qqT%0-PՈʈTJcpavN= xvӚ{d7A ;%{pXʫ2EQf}vyW -{ dp!Ux$D>¢Dy;LC;ѡPf&qZA=Q+mudR_$i,ִ(p/!ת붏/? B o(] TuZR I?jZmVǿh{+ u∍!Rc)7qJH J UKN7)K!=1?N%3'bL{A ĔFC62=5Ǎ/e2]ܵ]\0k3obWC:ZA : ; MA_yyHC"W5)18cћ6l*Tv8 )QM@tt<`t;f38S7SeP./jG\N& .0.".yrs a/ _z _3qc97T_[ DtK++KMQٓ|cV-tX9Bch'p9=?==H"BZB%zBD2oRRtV, @ RB{{ TOUU̓C&5Uvf΂1.$ԫې| Քe0WVlU bhrAݷH4^|jTrvJ"mo0JxYp - F< 9LvU@_@RK.z*u&VJNj_]:I[w; ]}{SJJ} Nֺ2Ѫ)ZԵ0O[7'u3o'B -kn$ơNlw-S잟}Y-X;T5@ 5.-PFќiwTѬYX%owF7?,m.ZM / =9Rd(AuC}2= #t7h] -Ud@0TZ}/>awJPAfmnyY% /sR3Mv cv>Ӷ0M}|ˁgrbܰp;4rQR^-rp1mkNS ^\̜]0 vVosGׇ;ۃ~#E S_cTڍb?M5g.S^Ŵ',[OIJ*٪lB]@]kZC \Q ʴLn[bK} @q%oI@1uӉVݝ\?mMAJd{hnR2Y/[S\7"}a[U=Jd ˱놈;m= 5漭e汙nRiP} =M'_7nRR*ZGD4^QgљEx>=Ͷ PycG0hW~ITw퍢M6q҅# wT.ckDy(y-`e:z,ux_7>bT|O.Л B7P@RTCSI_W`N7K۶s$"~VmG$w)ig߸ ۸jil~LӬe.?BUw\?ā{r9Y1t "~vӎ4O>ڠ5#t)ۊ|σbUT8V԰ w+FR1k70=UT<YF*dOh?'hFcN;6 nu%x*Yó -_nG$=|fV\fd<]i-7W}'olTR/3IK__1 *Ы2ؗ5q[VhGd+sViْoZ;})S 0Ĵ;=E*_Qݭb \[oa6f`C}S0 ;%ZvRm⤚5]nifҪƦIXC۬8Uy f>{ufmCR*c?q[8gl7見aɋx(o߾z[|}voOGW -\[_ก3.:䃢i&:YV(q[AB77/+ezPmuaţU|+qzE7RÏ١`?ފ[M/W}bUEMs Ixo~y2vC240rʌA|܂4N/)k .c%^lA872:w8zÒxh4V6?8SDFE9e9UѸ i{ o"@δQu.ʆh)RD`|M}Dۋ27nu9pPjGk0vB4=' K1^Z̍3JX -Q!(805`-TY vހ(&,yeHrR6SFR2tR#6+q/wbZyU P ӝ1Cۈr*q{#Z!iMʜdsHe]|VSBǷKÓOWϽ&c?f3,D䕊q*/N]܉݊߶sԏQ ͈\BbLThAab 9ao~ aXo9Kx%OM,lW^4#5oo"`ķh_O@!֩w -_e 7n{d2AVLrK,+PUD$?pAjm -(J֢cl&hs#[L.Z -vi)Q^7G *{{.Zj~j]O-c-)_b CZu[;;iBC!rQeF߆HIحRk):z{^$JARWԉ۝FcP xx^;MS:Ns+f tsFho٤-6(ePj]M(T*i&TB;|TV!X)ԙ|uA}-QǸϭ8ݛO04Yf\: yPGه`֚eyΒOk@ӝZi >ܭV4;&n:nF*-]PÚ(pk ِ:24D|< -+Q>Z>E[_lTfzx$QWR%tZTULw/i Igu1u^8f K+u)p[X'+mjX!kӮ{!H"* S4nV'ּQ֌ A-. -̓3x9j=Z+KUBPo|is6vS[/T4`v k'Nzgi5EZg$j1۹v!}qBPty -+W+< َV>nԦ04Ynnz/܎*h:?p;=n: SظP -Ύp;>-$T-vZtWޭ -;aCJ4]'g vƇp;T -cѦ|Kp;C9gQ]KӬu;~v NCvm%Ԓp;`L/܎%Qa_v5?¶C$>l;¶eIl;)m'ŀKmX]Rnl;Mn_]v6g*Zp[TQ&[v_]V5$Lnᷚn'8|vx9De?t/:Z5nGD4GV]]IcP -LJ_D6snGdʇn''4nY۩CS>Ec^vIItݮ/TP>t; 4nׇ[y.V.F'eXBCWqn':p;[2dP|v=nGkb۱G)nǙD2܎S`ۙ/N -렚2.) nՀu3np;9|vR+sWV'n%&nZQ I-p; n*/83NTXSvKp%ܮ3erp;2NCJſ3.iWv_ -vIIpܮG}p%jIp;)_ɠ顀ۡ|vR+[Ov{^ɜv[ UvM N #fZv[p nnGp7Wv= -C3[ NC^Qx\v[pND혆 N -ʆ%ͩTVnnSWvTn'P -܎3?p;{3NJU+n+nՀV~vz+N/BiV& -SanG42pYd]RnSp7?p;n?+ۡ|vngD g~v+ ܎:I.)nEuIeqnGxvZ}vMvVa܎%g%%p;*kN_Ѡ[v[pNOSHUnc)p;)FSv4p;[?p;zF l2n+nUDvQvt::+͎8n7?F;vWvX~v<ntp;7W¶eq/ NJaU1m\˶SlPv}vBg=mȗm'8,$|vmG䥰|v9 -Jnh;aA(l;ť*ێ_l,mvh;~QA2vR+NJEa\A+h;CVmE)Uv`: -NP/N-mʣtmh;*nOJh;ݮ/NsEE)EIh;}3_n'mRv(Zf Bӗ(dA/NݩlGL!1n|v6Tfi!}=e&~vz -nlzd! l3NJ%ۡ|vlRvR>d; lTvVK^vLKl7%ۙD& z3C. -َ?d;-b*N_?Džl'2#vLd;b20TP4s.edz,d;8_lP!Y;vh; 3&mpsEQhvmmg_)#Cv~vD2Ne :Lv 2Nq/ڎStbEs+ڎHmG*僶a vvfBÿh=O|v\:]7mG3ڎx3ڎgAuHwB~vP -N9#@!t^Ei%E]vd;gv02َJ_b!ۡhvR:(.d;"l'|Vv -NcTkmC4rULd; _Յl^vL^cP7l'vR ٮ"IYiL%qwl߸._,2َLSkl]TlTvBLӼ%Y'^&щQv6+:w] 0]d;d; - َO!۱H09BUٮ/bM}vFJʋVx?!ۡBCXҩl'Kl\v"%7j!I)d; B#]vRd;-U*NJ%i%+v3_oyBc{!۱=+dpd(Pܹv NB_lGdI`*VװP~v2N; -zQXvdm -؎خ -`;, -hlhہ%*`;_?`;̢ ,)3NlkWRf -3%ʉ lZv/n,/U_vzG`;O ؎oQv #v4>?`;lu]-y -NojGۡflRv l ])Uvd3?`; gQl$l g-ہb`;*ɿ`;,g(/`; -؎oY0,v)Vvt(X fSvJ|vYvدf݊wHۍۑ))Xv$h ؎4lG~KTy_``;] ζ RvR`;lGVۡȦg2؎_~vۑS`;eh?`E^`;}P|vȹ& -=S( D̙k7)]vµ#}-Oŵ#cPv\;J2>Fir\;&_Nk?s\;hk`}v~kRvavJdUµF5 5 kGB!|vvz8+׎2Bڡ˵ -NJ ZZ~vckGKiT;6jgm7jǬڙSڡg~vR Վ(jP,vV]jM-T;>T;BC)T;*@>T;2ՎީB#) Pv%j/>0b?T;UAT/Pf/NJӲRrRhf.T;t N/PT/Վ~Bc[v#l Վx@QYv|v?T;VV2.^gB1.}vVjg/.NGݸg'SP P|v n\w ^LR풒*DT;JӵaQv2n jTG9PXvp]>T;+T;vjj`DTjGxPY_bXvRT;ⷙjvv/RѣSv߁ߜ5%vZU٪d]? Sv8E3$'KDP:_9ej3S=JYxjZv(jv!jB35SH']T; -;2NۈBPRg:=vP햸vdhfBJm5v|B}vH -NaJCC-T;LTJT;Kid='T;/TF%%T;Jp Nl_jcm%S햺v jK#WQv=TR -L]Y$کRz4B,mFjigjP(+T;PjGB)%S((+T$VjOT/Վvʇjgjڡ_B#.Rv[TծsT;~v܏B3;L'K+RvDՎ=dک|RRFPNTڙ/̘2ՎbBC3L[B#Iv#T;uH}vf)jg/NKJCIT;ڑT;:O -ՎץPh-T;,>TKIT;vw?T; ծ(Trއjmni(T;vJKJڙvxo+Ej71~vR+BI-T;^BWBvvR+'B#CC-T;,T;>CoT;Kjj76ΖjP; -njG5T%%APXSd Ƭ@P;y%|v>/CXeR -nު@1e+iMYvBP;, 0jGHiP;>P;-c*ԎNԎɤ@P;*}vtSj [b@jG;jGUW7do/VtyJUwO"NT"Ն1 -NY#9pg N݋e.LN@_GL۪UtV`OGDǎQ'vۧ,B6ӻ2 -ӦV+@ӝ 7C5Nx?,.o,v93NAdt -0N۪+Nb`7'ұ-p;ͣ^8jN.I4:{ND pϖHt͍SvyL :}s*sQ9t\UosYec,wI>F_ /[6sUGCk`\kM[NЂwr ufBXt6/oZΜÆ (E?%FpPx&;/uݒqˬݤ1gG^>N]>GZXrRq%qt\YarR6eφI9λm\Tk'^H4F]L~wzɩHn;a\8L2*K(9lAp/xDSiGpI9"F9E]rkr4 -Ӵ[bXNX{4Qqڙ"^ψۚ;@u9NKԃfpEU҇(aQYu/jX0VrqI -fA5s`jZ`%d\=$d$8 -F0-juLkn E)fx/'ńvS6zDVPq6z]oE0q6F\q1`4y{XH8#*rȧ*%Nߺݔ8B@7% G}ύ#s?bO %mφ,W2$8l<1=IrAu&Y$J*oMo)8/]tG9BKf]φā$7X%Ha\dB` q[ɐ$ۗ1ߚ9߶ -kԽ7'dm%C85(8MMgJ\p#$;Wz -WġD8qrd}݁p纝(nb}U#@6|)8qƲ35yF$)Y1qzXN: ,izfJVB/ǟ9ʰvgS *8 7 R ݐ8&]۱La}7$N{`8@Sӂ)"q4jCQq n>;q[Ɍ:#u|@')B"$Φ=}VsęMaP8Q.Bg(q$ۘWUѢm%Sꔸ[;@R=SqG.]$YpQ@g3%SgM67o꼵ϔ8f{Ǎǂ$2 ,5(qM2t%L)qM0V6Akx;J\3-J\,M0>Je9wjղeU@1#_,&z^JW!p 'KTcyé`Kp1@ wVHiS֫ KIPMw2aXH0N#pZsn$fK+ 4g  Um4MB-1XpT>hv\;']"C9'p׎B-$8)R- ^ߥ|8q^βlu;;}- 4V>+)>M~ZUhղ1+ vߋg3&1ôK}Hd XnZad(`}@H/V2cn G6)hmlIV\ԟYmh2TޝEʒIIDщP_6Y6_[[L|&oE~MhSsuge +iMj$lz)=p6Prl"@˕LfS#lNKTLieKG%ʩukWagl)ˋiu"m-Z =cr{؞( ,f `1AfZ(6aAyĦRއ_6d`tU|@z`5P,ϟlf^ܱ =`SjfLKM"^L ۖu!lIwn]s&U6ok -fZ1XgډQx$EcSY+?+66r'5OQ@`eƮɪt'׌Dec+i\X5wN#8ʑmY5toMkEnM(嶻x,֚_` 6p41ƬQ{ߕ% Ԑ!䴟5 -aM1'f#i %R- F[ς 1jYjpơ9YͼN)`iU#m#`[N}D߼2 Ć?c Y 7XMgKUgZC~/RqZIժٔUkQUjKB5j ->kqդ^0(~͝X)Lj<JV-z5S[jzWM -FUwUknY♰j,j ;X5)Z&V+4\XŰjLVMaCMF{.AJ[=j*r`ՔQûUSj\5TTդZT&jRlYMd5( *\&&EVqy= -)t7eD&q 3W JUkd9WsriOWXpLћujXQ\@I5b}n$j\lW7[&dqGtdqԻw*Sj J|6WMgzC?M<$ZS*闯#5Y&Z࠷ V3enZ9oqPYWMjR?s՚9Uk#%UKjjTl\5UkSjtrF:V% G +պƽ j˦DZM_x5-lmx56ߗ2лGTJ{4cvj*7fAWk[ؗ;]Q Ք0\t XiMlWӦ« D@sLitxgn[ T]juԪsPo`>A3F@aT58%T5O38Բ;V +bUS[2VM tX5/s{ɪ~LcդXP6jR2.X0yyV -US|Yxg,3UM.)FT5"h^$F}-jtUC-j(2uPo2WMB7U.)^U`:UKJxm5jgX5 8Z4UC-j(poLi^>#"1 -3NT5*P5/~3 TwAy7:SM/S TcXj[)bT3cT(Tci]j,?L5TCL5j0eQL5D fOa@c%+‪ѩh6 z:09/[T;'%5{8T癖cVp@߂1׾P5RhtT xƆq[&e@Ոjy?T㾧aN,)P5mn.jtQCh2#ݝj,r:|͂M3SMBKT_'ݕȖí,a }Ot4dZ#Gݭ8צ IiZZ޳jDOLH5)H5Ef,HN4KYGFa{!2xjhRM -BIj̄T{=A bH5+RH%ƁTby7RM7 ƈNS T7 Qm E\Zव7"Ι), 1sn7E9#_2L h`jRg>Mg05EU%:iv͢+L-)cSӟ<١&--a'8̽72N->SkdtՏOg\1m+/v5hRTQ<5YQajƾੑyPҨBxnOU[TCNg#4`We)b=)X⽖. -w7ՙ6elsT;;HsMS;u՘κ|(scFo")m**Gm^sxp)(j0!&.whiBPɺ@MpG cԇf|B4>MţB!r#r8#^TnӞò&)hmD禽|gn;wqvC{%) 3m9x beҢraҞ'Jb&yoTVNdTV>Q4 Dx܇Hh+$(b=#g=53!MI| : a.R -#x4c.:-BQ:TO@DrѶpH[t.lΔ6d(Lo@4qǟC욽t; jOCb-L-XhigBif1rAS sw[SսJOV3t$$ԁ@S LSoQ˲DD?[NwZ3hѬgr'[|{v>>_J=øVm@4<[BF-1gX{y{?7RpEٯޣi0Ǧ'0xg3avPU5&N;J~hg?d5ГK3sqgi밳FDlvf>Fn,ƅu5-0`)p^mVؙ#yqذ3SP|q;CL3+H3hg7E;uL,ouy$֙TKtLʅ`yM3 I(s-;3K%vl%ul֙)ܳ:b޲:KJbz?ukj`a&ПYg sC]3CԙTodsf>J:}q:b%':'~+u j9LE5VQgR/PgR&eG:bŌ:CuW@HgG+{Iv%D1`&t֘Z@̰'BAgMQu~9@>Ag[ Й6fQ vt8]+Mu:jx 渳 wh6Kdf)pF/oD560g5KIpfNGSy8Mu>+ȸ -;57>_|ɮroG^:-6[ʳ][M8ݢrϜ9n*cs҄@U>J 66-SẊ -q.XJ!4FRJQ -hHRοmJ,IvMO3m)oOԴ>n2Mޚb;Bؕn͸cPcrٞy 厄xʆ~t1MUNM~_PR8cbNKR1` i!{hff^*Ue~3V/m^fN8ȡCմ{ֆ™ik3 TB2{(t^0LXؗ`Rߘ -,jFs*.5nC*4Qu<=y><<2??3W^R=AX[uJ{MIq?7<^#-z0!84RCD-cO9lxr9Hj ) -c_f5橿oR -cЊ+83dS*,E78??VO1G!0^}3֤ΣyŎ?DŎ6R:I߈5X3S:$_h)CԼ-6FoFӼ&7kS]Ziжgb 3[ۀ (fQSJ eZn`f5.qۀ1;} vQXȂ&W}k T4w3j=\)OZV]863}+ʶn-ڦhn0hYM5N)xv2t-Jx~yQ(C?|/G!KD5>E}8Ra-(gYrra9PE$ڪ +)cLm}IIIpgE- is^c+)#/u=/7Y/unmd-޵%[pBx}ֹ,$*gΝ;ʃt6 ьw+UO z>ꪱ┑"]. - -riY>(ЯEdR3Kk]RXf1)av>IfJZ)X;索N6{[Vb 8f߼{3wb6G8,X0i s\4߸2An6MѯEo=Mz>Twjw5M}n_h4RP5 59ˍ(_:?,m]u}uIw] cej(J_]wa[ -֓ұdEʙI/(ԙ[fwg۰+ՐA*6",Blrh銍HM.عvv~x"ţ -{_|] &'$ha=^SUh) YY/P --ag e #6I, ELC1`nq &'U4@K0OA&Ohn47(TkICA>o1ƣJl1g -"4y1UڊF"i8d"E:`ӷJ):4Ƒӝ?rcH-G8d;y¥I#2iNȉU?󻵋2YnڭuWT .T?4r X*7dz; -t2U|(Lf[1;Xj5Զ2ZYd;N+LN'`I%,(Uq6`<@2$ f[Q/r%,:4j ?N@_'QQ!Iج|BuKusS=]Ň] r˫ͭ$ĬTrw3FZB#/SG30+KN"R,m UT8WxU4̥ٴkY˻aa'm&|`:\MDCa'b=Ċ62AorۙjD&SﵝQZ7-st)ul=('rܰWux 7.fv3][;gDD;^I +,qoT59hɎ6D7/b/gy7rońJ3>ǃ\@kX^YҊ iX~} xΉ |r_y%#S+L|:ֱ\R\]OOܽ|<)䪠 {=C5hYti/7ft&vfi$xi״l9Tb%'a){¨)ԉZgںN3-qhG9]+ ˦N_gSɥ7)]<</2 ;kir(;,в%QPQ6i_㿊cF9법*8҂_P{M㲖!+Q2dQDAIJ=9 ]08Zּڱ&b(l>A ׫Sx;ubhRQH'9P2ʨ<ЌŗH*L@h;rIhh_\ct,ڌ -SzpVe&n*SU&>E(Xg^yT9J;>F9!J M <3GXN,4oPT;^0X|fmh_z8jqM?Br0*"KLbo5-r#W%O>t:HJtɵ͚0W_>CQE%Rn˧e& O[ɒέW_ɺ#1]"8IQ2ۤX6}r{#kcWZk[΃v-*e~(KdTsDG!Fz08yj3S f9 -21【euaIe奺+r^ic:!idi_Pm3Yr LknHq"VUZ:(I\Mei0m>F [z"=)YZ9N\8͔(ǐݠrE[Hvoy5J ]/_>CA(mZb6ASU)>>rOI"ఛM>,׉Èxpz2bW[t3;H`V1N*-U}h2SH**Ļ}Q~BTHu!0 Z(DZEd?}Ѭw6rL!n݊ICOH,c^wO9Vw+"&ƭ8ɽ'<[_hTH^.lơ(*AVvfr䮊 70{D=WTpHe412(8~%ct9g,';@:3Ro|6LVVjlf`Vwo+?-KFΗ<~YN$vGF.DJңT~VsipH %rR-|\/_!阑\J(tvf[d{d7܌.Glz_bk.׉TlwPFɞbyR.u["r7 NFh~}t9oQrEItߓxOʫؗ6zZ{L>4RG2H5"VM.C*u\Ѩ+j 3iR15X]"ٗAi" F&bw2%.[n](? $|!?]Niur -3=ձ&5ԲRv'<\KG"~78OiF:Aq(o-rVJ"Yip97fan*h+K";_Z{sO3N:ku>uT >EQE=ѱ_Sǒ_"!qcʟtJnH';r:U2D~>);`vW<e׌8"XGdY)&oYm=lh\5J*.&/ ̼MabZ}[y@RFS<>VZTehXv\:">YT0 >7Y5IǬ -Idk춙~M_%(^fҊ&zJ(V @,enLv/Hn,GʓZ! Im --]=YlۍAvGMt^ecArsaA'S'4PVޝBƱ6rnFDflfoR,@~ёꞼb-@w%|RmO.(x+L1(%TdHN/)ZCUv]1#EJwWP$`EYT sDyx9 szp;Ԙ̡FfBP/42HZ ."! szs/sl̤m7rfޥp_g?5%BsYXu* ()7ݫ.sȯZ2q'<sZ{Kf9Yɬ:=7sY7˻|BZi@7#jh% l.1[K!a~/ fN7 wg;=psP!ݴC!7-hQTe !hS(JKp_Z%d]+@%Tu!3kQNOv9T)]2J_/활2Ga>uwv7 -eA%@sT՛n;^bui`]ݎCIhk^D_69sS==' 8k}m8 Ӓײ+v]8 =jBЙ8nm4(r3lQrݓ!4f0B85+9u7ZP{X?ytY횬%ZdEmuU4E9okJDQz9dNM-*ͲX/sYQ%|bkwS{eGDrmh~w@0IիNKɓ9γ;ZI*wFH} H09fqYh+1Ԯc?QFc0Ox#e!s4![/L9TW݊[$E(g^*5 ϭoCveotrSNq6W('ů, -B9unѤ~C}'Ю &NKuEoy)FeSQ+@L*UEZ 8kM+ssFNeQ15l]]r{e"9;yωɢE&YJ".h'<r|fո,e'G]e{>nX`5U⛺ėE>Pde=+nĦR'neIIfKVG%k0Sk: cbyNXպ{iRhMP,t(vE5 j8YJGӚZeyX`N:j] -}?e.شuMj]߬u8|ye^z3f5Es^d1W>MV@U*ƏYe@6um)QȗƽU(ʣ#gc KH'i[NJZX21b ;"`Uh XKEA4|lyX}Y3U`ţQ*AvD*PCZjd[}c8T3;Hn9}5=4 UsDjmU0cP})S~1oH Oԙ6zVFvEQegp)D` -RJCaG>݃egj w2 <+u_-@&&Ɏ8SDmFE(;z>TS:`v|.̎BQ~;H^WnNE -)mo٭8"*ttĨR$9Ҭq\Ae̵ -UYm. rxN+BU5q*eL,֖B[4Pg6æ-vfG@b21VOIn]f94쓿mT+ Fqó3صI'͎4OJg?o(t1驆޹>dW)LH$=xh9m2l u@!.Is;m-lo[ԷQ)^sJgXbZwrY^Nȗj~ f -6a_z' %ryD}ZRWkŀ=uGFiӱ (KNOX_8tmN#ɰc=f*& `i2zчJ|n춀-κKsC3!iN[G ; <=v\J /N*uJA劵 Mk48؎{ zA2>jƱCb0-;=#|Ҹ_7X;Dg؇nCyCPI<( C(E 裸(!V> 5+UN(㭣N'D!dTB5])vʢ=MdrG RUsTq=\zwM%r"z =Guβ,PX-c8vV]'jPu;%? A2a6@ёy챆<^11&}\e,㲎x>TL+ -PcxQTDMU=ޣ$#阷pi:h.^Oo?BJ1zHeWp[aBA%(\Z[xp(dMUw6$3լI/v4:&xM1YvQ18Xvmf&qioe7x,-<-T&-DLh2,DUPeܰN -՛!9E0z):͎J.˝j%a&e<Ɏa솀/bak"M6i%NzginU7u 2Wv!(}Bܯ]/ch~(-:{z'۽f]%u{U"Dktn'&nWUv(ngd{[v2 t;!3NL IA2*1w]=nWI_vt;nn'Fۡ& -۱0bNWCݮ\vHDN3qDcDǒvSYvS ]cvv}t;|n7n7U5WOLvut"[vR3%nWFMttDݎi8@tLJL@%>LIv(n/t;D -t;)O-"n7Djy{t;yݮAIt#t;9*t;mf&] W]v -d|X݃n(nFVvZe֧nt;jF>tt:2rͨt;*Fݎnfڨ\vot;Kt;)O]S}H+tt;^'܎uRndzLp;) nK+vd]KOp;Zv2o3ڮ2Ph;%X_m')v$%CNh;Ԅ[nk1ʶS"JfNq{{MvdmWzlzɶ JV~Ķ`UjV]`ɑ`Hl;)mζv( vζy%nWbx*?+ʶǾ̶l;9kl;2ێWbe)dUESN̶Gm7,̶ -S?v:̶v:mۮvhmgwkeUv:̶SVuCTl -/l*^bi'5j`I!&v.l;Ķ|][vʶɶsێĶS%m'WΓm'5*WŸT9l;)"$ҕm'Ǐ'09NSVf)``i4l;f2vd͙mWY影4%]Kf1X=vfX+ێʶSÅv -e݌RNO]ÅPu?|'ILd; N>v&>DIv@ONʓl'5lNka{lf鏉lWiqȋx*l_f]lJ}#۩1T$5H+Nd&J;ٮ)vLSl׶lgJK?d;DvRd6iٮmloI#58Dkvzd;*NUFLӰvʣ{X$]AkBcId;}lG!Ƀl$$َjD#v(d;Ud23َplg~lGyT"5Zd;p&d;d;̰DvO~'hy%f%5[d;َ2Dld; d;CFd;~ E&(QHdDgv$]#e%Dkx -]#~NӉd]r[vvr[elgTwYld;9d;($l}h!Q YiJ5v,zd;jlG8}%Ym%QNe'DSAAӎ2Ng$ۙNo%=d;d;2{`;4`;{5/`;jm{-d ۑʚv`;e=e`F - -SP8l'[8`;u>vH`;yv2؎:N WvO/3p>v$1$׻`FuX۩ v( lgۼ_I`;)O]ѿ04?v\lq!?v2oZ42$.ku=vkvkҧ̵evS}٬glj\vSY9j+x2b^.\;k\;s%qp:=v8bN̵#\;J/\EXvS :eb 6况jāXEYPkgl:v@ݸ $vX+< -6ctC0ځ`X;ZYvzoX;=njX;GX;,CMX;kmb($֮GZvVwbuX;q kv򁵓vxQ֎cU k'NC2֎:2CMX;#䁵S'a(LX;B=]=#X_b]%b.avMX;2W XEuvVX;ԄCIX;)OĄkǙvy}`OvMeYTk kG'ٶbbYdVX֣3]i}5ZX;N'pڱKX;"X;k'!c}ޱvoWŠ-ޱvr['\k(缭k2߰voX;կ=vR3֮2ܬX;)Oꊵ k߱v `vt;NK쌵S?cpX;o%a,Ckv( k1߱vJJX;=ʊ3u)Kh)+kGV҂Z)򁵣oDڑvʜybfӆ]=߰vaX;iNKOhX;Xk7k7کcrUw]b*ٛ+֎5aPV'NXJk'創õbh旰vccZioX;-X9Bʊj`kkYb~bGX; k7kgꊵ#4a9X;k'%aX; kvӓLX;Ōʂb`']b\vSXvIS''֎.a4Dd|ĄCHX;~ڡ&+n -+kGj{`vNX;ޱvtMX;kkxb]ZYVujGA-BjPHIT;OT;:$ʃjRUڍdD"QȆJTEYvS ],A#,Q%T;ՎrjvSYvS rNJڑT;-22ΔwTjGODIFSQQ+vT>vT;92NJO|j:DJbPTv*`}RZvUusjtYO1TSD4v'E)*=+>OV;-~93Tt aGx쮙`G;p_'s撚:־93$:@NtkYu t;=In^Wl­ jк!'Nĺ>YtJ -1:uRJX'BqX'kmdZ2<ٚ8Z U*vT'(TXNL]B: AS8c V§&n7|(Ϳ i_#Gk_@t -QVBNyΩiXtrCǂNd# -]4k/)>Ͽ.Մ\gϝA9N89sؾ=Ș,e.Wes;Wd2ܹBGsK.;bX;WH[wX>&vNkn;'J;Wv3+uX{͘i;W* ={:W*tMCΡuN:'HIR{?&uNT3u.\:WtL9~w} :'o=slNJ1sR*^ە:'&uNʶeR^<{z v\Q)qLG&XQuܡ!h:vquN0 s9:sZ95sQ;Ti99\L9uf,iwl}+in(ÆfDp$){0Na2f9]oE < קD-zE ͷN?WshVƘS -@ˡtdd9R9};Ma 1rZKv\N-(/8D i8Rn+Qn);PL~V9\#uEjWnG0hRт0`r(κۚzM &'i|+l7`rR-0_RRBMNyC\Z4Mi!-KR!2D!J0@6-0JrNrzj+ݗ-Ў+*5arRLK091~Y}bVk%䴐}=i|'qb;OsR#_}?v OeY&<,? 49m2Lh=2prqs\t,NN'ze8)NN+ *0qE~A-+NP'MEsLf/K49Ar}b-49 U7ÖkAJ1;%Xܒir^[ӠMeM5hrEOsNp/K}J<9ɱ w;lT=:-WVMtΓCٜ;Gؠ}<''yrRON֫YMeؽUDvO(^#8pȢj{+T]m7xrSYyrC8k=&'͆R!0?Cp:]Ԝ$',m$VnL%n9ݒ .!Չ;b} Xi}dbJ 8 -S9@diF=1q-Lɍ$Z`㦰P8%Pf\ٺ+2No+*%592(_lB6qR\KW(]"^꾟e $h bpWb\ ыU= -u2N -@Vpݭ8T\㗧1UWd.;qdTdVdW®s|xVf\T n37@iv2pE I{zvëLrܢ,丩9X -n8PúPZ&9N -Aҹc+9N*C ǡ\1q(9N* d/cWH|F]s;5"丩丩9Ύp.8 _J+LmNOs?/2ߐq+1i8E[:n*+:ni2LR(8rioOr&8.|i4<1+GqlLj{[25NʤơΑU3,[8'5N!#lP㤜wS_:5(LרsjP5nA+w(ADʲ -o/,U9W8yU,3>Sw̻G{4Kw`|ϴ8lWEx:+n+*nNu} 3lPmH+#N"7)qCQv]Ym+^Il -757/bwm><|a)׉weEѓLS[ViT9.bˉR w\|BuL0$Ta3 N.V1 Nq7 NΦVdɫ23kfɃfcskoeɿҪgөP|_+]DҌ؎^I$8 n*+ nN,@roY%M"bA{Qip{nƠ,wMkW>rsֶN䗅d88)0 \ 2Ɉ88)v_!@p3NoA+T 8ipr՚{ vWՋό N'>V 6BS5+] P6<8\' 0ωGBY2Yjղ< Thz\99&Zg=WS~UG<8R<8mXipE^{h~n=pi=`p(& Ew-QνȎy(`p[Yp`-NYpb +Tg>Xp/ȑ+'7k R4HK('p(PpRB(8}E'#"2 Ă#?Pp:  SN \ɂӐH+gd$8R*c~$8)lG&i ;OF+wvW.(8 -rЦ4GTP{"Z3ŽY 6jӻNnI~#q4eg5Hp/ǧAcJ}$8 )% ʝ=E(u3J} /nh| fյ8e|4_HpD{[D/h)w:8  8Yx<|c4n=amuJ{zD=o"n-74Yv'M՟2Mg?'e\Qox> Է`@Xzjp\|2o%&Q[oZ7`jm07y3`x7y :+ } }sm@PTLԷbפܵL}әl}btLj _zɗoȁ}]xjط -P[[N~G*@P<,/o+ޓBk@i_o$]k7MTg펡eŽimG7uޏtUܽ|׉zͨ7Nrpp:MʛW̛VL4q{ @FQqwE@&o$ JXG9 gtA) >82Qb׮&߶EuN :Gu=޼,-vnSR`!`,=_NJ,c,85*/Y1Qm2]t;̩l#in0>607 wu!< -xgkMv< -sv-0nmik`ܔNj\׺cr0*8nr^dǭ:o 7 .,/V$In?$i$7Dz 8M]*FY<%HnHH/mr;D7H`ܔI㰕Jvo%3n1 ]z7ƭ |7 PUQI;4/`eP`]<+Xf̱BosKm'S$M!Z^jSlnam/on-2֦vDVXYm:Xm'yE3ԦQ~ &I8J6KFiҶәOH8mZϓf`[li{:Uz;'8[s`)3s -=zf2>&MLyM}e,kBxRL6lUdSkk}rOSo< Mn06KZQlzZ6rzkxٛ*sRD> l^=3 C-q5E&o -`#nχ"' A`+YlKZo6H{6^ lYL j"eU)J6TF 86a3VȔ `bT+Mh6^IM6T&Ixݧ=$V 6}sZ_+oIqߒd\'V4\tq?N9Ma*F}q퓿ػڃVh$G_ShGތ ~]Vh_䯡;Vv%I-3lR ?VWOz )`+䂷_lRIB+OH%"7D&qqy E+6ӮJ -^V qN=V[^闖 B]2[黅BME~xG]lk&M?lE0=,B*~tcH3cMB`HY '-nP1\&ekb؊q׮ `+N[in >R -`#eoq;`+(F#M1lܚwK -jMy4W+Vf؊5F˖D|JnF;+} IO8(и6ip `+F82Mi'3Rؔ#U=lDy+5 lY*')pF0hI2lr1e%)GU g،L`3 gJR2Ts QL6cg&U{$h6~iQ)lnV#F(A2v"N`SdRKVA`+xP5>.6*A`XnW6b˼+MѸJVV Ta@ TqxQF=rޗ6A`SU=Vx -W `4ݎ `;ZlR- l5l(6`h~ ب`"\l>l", lB .MRCش+`l Xlf"M t[R>rWBf0vַ)l+a< a 8lzBJ6} >Mæ1z7Ct{#J-6n`` -bѺa%BZ)"[s -}\9l28lZt38lQb4:CԀ;3(fuwdձjFoy 9~ ZjٝҲ+bD ,I MP?k&#'_bNI!8T@&GrVf4!Qt1~MmR~M)'_ǿGy$F.jRK5TrۂҎ>k_{}y -s*QXkSY_5ׯ5ἕeѧ  _Cٝ1V -BIU9wLI Ԋ}MLA_[6ՠ;MOgڢb_ |M_k& -_!& _U5=Dk²QGN&q(UdiPw'ѺS-vB'p˹䤧Ơǔb(R?2}:} eڤK9}M*ˠA=*uǿ8^ ՜:e y}My'gA_d{ L_C5)ml<! 54zMgF)SzY8zMì@=(|jU" zMe7^c;=^Rd%ݮ^{^kxI׊ -LyDz( -\}6҂NF5Ti{M -/`U]* reQN~XvM~'`UݓuaZe(^S^w7),!xgƐdU%2Jv 3vmN]ʤi8ꗕJV{PPpuMJ]c]X91bWu6QlU[E[+65cQCЂmA+wDv&ӹkSXkx Zf)AxM$>kxkcZZY -^g2+\xM_^+l9W^c]:4kCk5X52o8kR=K5<8$kَ _Ǻr&kϱ{=3W ^۽ *1kUgصkguMb ˲ÇrCx{\#_΁\#蓸FY pޚEZ5| mMqr]&tnrhJ˨5zim59k:ko40kCX)kg5[ igx?'b[i3:k)^k/붕mPӮA6Zxl^hÛ.`BwAUbټ.ɃdrTTj0+J*՚,D5%`O)鬙v<`jwh05RQ%ARSHxd[zn}`.4^ V6&Q@Ma& 1jr{\4YƜ\i۲jf}ҧ{!ܴZ 3G]9P 5 4m*+4TEO K@ZiI_(Ĵ#-<4{_SZΫ|Kc ^IKS[k`4maJ;%`׊GHi7fj IŠI"[x HܠTk4%;#mfsYi0WBuO@qex4:RqtޭYހ aeMh8tVa˭չ$m2M+ -t0&LXxŢ;:UexcѦ~S ,ZLCcW.ĹhjHl۩h`f'(lFZfr(=SLmӷۤrrET4xTEC!!cρE߄3MV3MI-(Y6NhtgIErPPb=DE#!7;hIQT49ST c١h[Ȅib,hRlPEYhׄZ(!htw vM&Z9w081Ѥz%3 vfkͱiѭV9Mi 60hBH!єzcwpl7mQ(T&Ӊ:h%+ :/9t/22AV04R!]hڻ}FӉ hAhZ'cc`4%3/Tm+VhB F+뜩`4S= 0iTh$J&՛F8Muqv0&'М9h@3MhݾDpцX4b;P3ǝ`brkX4_z}mQ,TVgdqgr=gŌ OsW.X4Tr"V,g]IƀsцbцTآ,]Yt șVP4Se7C (SxԀͳj:U[<$H4١"hԁP.@șcRF>7j' m+ mABk/@h݉ ZmReٵO -u=} _h//O7;k~_˟~:ʾKvۧ%S>o_'ej D:o/e54~,J{ï8TߴӮvɀCVB=TOP.JEűVv:U '{5! ƒHmr?ٳ6 gdaX^h;UgD=*;b1\[dŪϬ]3^y L8'LvDdɬDz!WiL$B=[1GCԧTədp~]fؖ<2w)3?s @쀆\k+~0)zH)ƈ~&SPeb=l|?{ڃ;v3&G&n"NIDҖާ4t/񊰒ڳ_>4Yn RR:v(NGs/w{} -BtRClM&^m=q;ʋOڋQ@{vwe|W4U^o&LIuODs]S3t]2]B\vpM-FB=oZgK;O"cDžͫm/g+B\Z ~^uNjևya|M+J)\+n? %]Ƿ1BzqvVq»~ٗ$gW^Qd:_B>e`YlWl|w>j~y?pju|-]³][TA:n2 vbqMxldx Oju8|;Nm>ߡk>|>5˨x[RG> OG??/2⺶DJXC+w\,\v|1GݲZ3Seu~j͸&_f7V>s3eÞCKLo'5_cҒݲxl!Q⸮VI5qqwϿ$$eWv sRфeb]VƄ|Զ_?`K&wX~z|ӣt͂j`[̰۰UoꞜ|kOP61v 9Ph_zZ"1lXiDXIa s45Ƹ_n`5cvU_mBb˰ )t"naLPqmg`X1gyXfY)|Lb/qVnW[<~_OHrٶ`PSn:}vusc-P$u踖;P[9ny[ pbj+>rן?9O~:k77]>x"3=ˎs*sMch>ܯ,%k+fhru0W|->ha|jxxF(O}GA -n1#nwb?rJχ'gLGpDC`?gW7@cMm;nd~V?WON^߮`^E5xݔdzyG a/~]#*sqQ"*%QlcB}@=0 o1sW)Dx<€|"zt,qG⹻.DUJ{G]Í-:,'7m_"4r;uj\l -Npކk1R&rn\z) FӇMW#!_CJJ0vU࢙-hU ZxĶf}t~jeø_]gxOu1i.nvWg6X A`3AyxS{T<~]_yX8X<&8mY[︈f :k7C=^QVUbVkhWDT`.يA]zEyֱER*J-2PB?u, x Q7hs1vH{ -L4CvC잛}CuWG~acbs[㍗C/wW tp3z:qbuE>vzsy "z QQ2GC!:g\Z>۲1c42 Ի͢ezFڼÝAbz=j\sǚDZ5r۟W{ڶ̏~wX$|.yalYP,q *O5l% G0!qo?x2}}Ә6s؏/5[_B>ëxzfaݓⵍKn0,3Wٛ"cM]i5FW i?ab yML{N8{;ݿZ"a-vм枷{=\bm}|+=#R֤/ՊS1ȆR_-Z~cfXF"Er>W<QO5o 1IXuXT'I/Rrӹ_l5w,Nk kI4aޞ٣t,6U:G8m&>vˑGOwIk (ʌ#@dk4 XѤ8O}Yݨ!F6l߇'qX(N&4@F_B`B븚G9a덩)օjkoUUm#Z#Iћkb&g W3JMFs(W:Ϥ vlQ\hS^QmIUݍq\or~RŴI5\wk28a$6@[4#FfσxE?Նe0,udNXnn딇]`A7%Й Ne1u6@0L8og`2ST `5vXU@SRGTl JD&4L|S]ͣ v1&f!Ay -lGYR S]T -oblKjPrE?ԛ Xb?ؓfKPmNG0DdJGih;Sp-weTARI'HIߛYKه ɚ7PGW76f Y/Wki2Cͧ2l&ݲ+sM^`]\羞΢|8װ0"SV,1:gɾb~׬Q_5nZH.r˽8 <0>oՄ{z%Uo&&1SyxL`8)MjvͪQjdtyDh[ΜvkXyF!y<=>тXB) >snɚ2Μ cv$=Eq*$0IzT,` \'Z_`pk [ 7So2>gRLxTwlB^#h3H"B)I"ՅΪX^jPf &*Zs5Gw<t9y,+ R#%~3vNJ! ͔S,*WhU(_]IKc ޙ>:C) ; (i4W,ww5/=eL՟kQN -5bU]L#.Z_t`6JP'3J?QK5124 W'mfRYMVm3Doo€پf%mȲ udk$[ 0K5PS]M)wxs e̷d^ -"1cP049j`3iٚ ->ShI6s,!c_5a UTe[-$,!>'>blayH(6@,w f%6-Z^1gLgcW9oY4ȖVOfUN4&k'֮Dg7TPW5STb-hàRfƉR /%uu"+j4s5°h 9Ԕ%ڻ4T@>KE%o:LCMb9o&e8%\bIi) -6@rIh$ә07TJ$ՊuVUzQC/Zh6YGkz?Mj &Guߏq)'t_ -I r_MZfedCdDaۚjO`JF:@e_Fҧ_j! 5*E)mAL!Cb\>}ɽ$ -p?aF'Ρ(]xl5zQ< {uVyR0 h\qM@'Z6Zzi>!6v\St9i8g;-]sH M\!՘ᴦ3Tݙ킨OT⳹fиiXy@署T{hU'c{gٮVD3`nQ4\ -|WIUSV=.eTR3w`ΨLF؟qc`VW2,&f/%jϪILQt2&iPSYALVS9Sp&AĖ5C/h7SuFJjɹk4ՕrSiuJm)eSj#G9gO Cf$"z]F3TYk`N}˖'a_ͤo˩qv͢)XS#걫 v)rLCgE'Ѵ='+A^i]#}XcFQ]7 kI-aNxtcUtj}Xsc2PLE7BgK k"F d 8 `/XRG*Ц *;Nmh6d+-Px=WAhr -d ت3t'Ԃ:U5 kc?}LȦe2f3Lyy -L<lp tLK\KTHCrŌ<9k9 ON؂hzrXu RA&PÆ$a#NJTg'kQj^ IYvEŴ.&3ߞJ;=l#FӊW^\V^ JP5|Z2P5Hc'*HQyvH!YNz?Y_}" -P7ȧ鮖 j& Z԰HwBf3%SL P3K -s6[.T"Ĉld[&L*ڳ ifHcQ*g -NT2)πfXCGp/[E<:X1Pt2\zXh* L} $aMl#508 I95WaLXzlD%;LnZΈH0'h/ߓz}Vu5O]YF쒂Zgvu5clerƨ]:gO :ּ! [h -,m;+B5*d +g,~QN!fkt}D:Z'VYed;jkwrMq ^'1Jg5m|L5{ MB¼: ,^MY64ֈ-DȪ=kJedoc#cy0x;(1Wa.($-XetJWo&eߑkt3Yܖ.(lc*1Ѣi߱33 cFvNәA9XZ#tX3Dre0"Tv}AZɘXU& 4](K3[R'ͤWj\ Uhh,F(90UMzdze)y^IpU>ATٹMLǪ45ICvgA/R֋ 9`Ә$Sl L~O̝ianNi7lNrdk4=w+T_=wfKXHOl[f".{7I9IuVHGsYzk;RsB:V$8 P=Jr ]J<G ->lM|a_IsUSDIt*㹯e/զ$kh)̦?y_YXc-ASE~ VPa`Z"a|w*{~/(6iVZA -Y\~9[&[W܀_ eߝskBl/^JA~wԚghoCooEZE$%cmCJ5Wcˢr΂;0fC؛;Z> VTmM[kOKJj7v Pᮙ8&`) -18\e ,L $*ZCo1"q$ք6Vo5_Ѷ>պ~V堯k-zYtZPloДlfD\~~+z&d5cmUrAΦP[\ dU$*ռLM dL0#Nb9K~ ^Mu>ۄ3`kٲԿ# k\;ve +T'ų2;xȞo_ 1vXUQj8gM#d͚ki{Ef|nQkD;6ND?_Sdō]-c:ftU&â[oe,l禝m$d;  BmnZ-Ԣ*&zMEQjZN3xUy8Z+Ps04 gfzLxQ٫BiJHScZ^VbPLg*Ly1/_ZeTݩL#bux UDG*\Ô/bX'EgZ갞r *zYWqOO-§"cGui5뛾e{+r֒`X$Kcn0$""tU=ENAf 6t&ԓj01lXKzɺQ.I l,7*-j{Ml Z/6'ݬ;׻n~([2òxw!8g囟Ul1c)ߋ?D1e^ Oڻ2؂ώ(/ k0),ſu=L)ʓYo;{Gj#4m1MZ9ahhP6͠Nֵ؃MxmӖIo6`E hbNiƛ|ݢ>_!wQ'-tYj$ٯ{oZzQ.P!^;4ꃀ#\y,!ή3 -W3Z~(Gyh0"v +BQ0!o m`4c?"twvwjYͧ>hiL5mJ{߽8j;2BCek fXaMCǁ]'")E'Hֶ%ՠkGtH_?)@n|,effԐVKBK/|I`(XR %@%l`-j@ZwnNw}ɉɠ?[u/^]a~]<_g{}?x=}-:)Ӻ__|7Wׯ/ow}<%˻çwoo_z_?n.3_}woůÛao{~꾿zҧ?_#ڬ{^{a\^c5߾ߜ]#3} |x{ն뿿|z?}ppOr{?{磯o۷7x8n||yڥm_ۓ[}po/];/pk}~*~}^6wWo:A/:K]|iщ).+sh,{Fѧ]^^2 +`k.:DŽvЍڗ>⾺~T'~w͛O]> -[y`^/d{)x.we߉_|xfuwvY6]WV9Wy ww7j0,}p7o>|U^:ZpQ٢SvCsϧ˱hx"QOwWg3~[ϔ1=?hG:d%Ϛ;e_h?9xB O?1 {Gή]{2F; 9|zc& nIޙ'n#z.OqnKӈw~sw}-/hӴӹ}Ӂ}ĿR֎gswK:yWp~KŞ-y}~Y`۶3?TmQ9sWߜ^^qy}y~"/~E>0R.*g(6zϿ}~<;~t=:`k32;lnX9/CmT$WHG>c9Hڤl(+ D}}W[G,wG6/||?<"̐~'״p=gr|/ǶK:/G/KɳO..޼}<أ=敏TѬ>.beN1+!O?`pޯw~2f W/}h9g;hE՝mv3Sy]4]˖Pe󺞪;vإ''/-1(d/ )qC.˚~ |"{N>ӏm&w7޽)>B~2DᕭхN)n y$]Hx -mh>stream -~lmb}L h}v9|>CP식ۮ<\K\>W_嫻ۢ.nO,V}|Yik2뢏톤$9?VTyi\key0yvvÉ//o?)']/>|c^郁`?n><GDz~5]^_v25o<+jg`O;)gʍW|{yQƌO EzUN/>wyD ~]إ>Gz˾ۃ1`y.9?>8sƜBƜt#Цs09cγ1<iqI{dBk rߕ]2s'!ϸ<5< 9س}/"e渾zcn ,}g -WB_L]׾sRt8衲ՋlZ}Wt+^| -1rl/H>X.!'4^@G0`8?%|x]t5{%[ϥWZOz;6uۛ?^<W>~l%:sb{h_?v&>aF^rU -RwuGo~nG_ u()=ea$^PM'\Wo =CSk/vDN;afcڀ^Zױh;`3@/]ef:PYnRK@ -ZA A C5045ĽEp*=#Uݽ%/ֺġ*~h;Ux&]wC-Pa( -O—F~z!v]d=/_]_c}{~qÿ`|f9}\\oJv/OKoX1K$y?7_\ ,7;0'[f>-skuPZ¾}pXV7\їu\˛__\Za-;v~.kf?>fyuv\}ouN捏.JZ] |&tLE,YCܝO*^~*A @'47 ==3 /~o_o_VV%@,s"O/~ur(⇛a*>S-Kͷ?u]{u41w}Ѥq4((?uǿ?_;~!??rCp>ք˝8Mؑ+N:veb+uƘeػ ($*<[n 0l)/S7/i9NS#&>%taKz g s#vcYnBcS},/<&Zλ -&\V;O~ /B1~||O\SXLA(τq( -_OTV,ϰ  /\ e rCrU -u+(X݋9es )k؊!'>/x/Q= . FƲ >z9>G}(u9e92TvgW0$QMqcy(r_7,ok~( g\,e'\#1D,'tcT"AGwHCa8%BֱAt'^V`'U ` YgZYb{{\nJtJ<}a>PaG.+l]r"srP!bcj&!a`:c6xޡ̑B]A!ONc=g`!\$ɑy.0́<]/U(#fRr9"}j}߷1'd#ѰCrf L+ aWn( E6)(P 1^ r{el`a: tIR"{^ zF!6Fk$p -0͸q6j' vOf[hQ^ -)$ʬ貒s -(1ׅ5p[d)/@$ [<Ɵ.ppi`(7=][HE7Ŷп"/ /p){[ p KYxҰ8 T$bGJ!g3;P ]e$?Rd/?ZT2My/eL׹ށ0Rv<2[A9VA@r0;b&#,-3A5?f_TrGYbt ]`wav_bFB̏>ȱ7 N=wslƀά:S[*] Fxt9ZJ-/46pIFR½& @kZgrǕ(0hxϥ&r:W,^V vƳ 4栎9DpW(ف -t,׋Pq(wBNjp?y?ݼ3rEQW9Hz$kʙG`縪'(H{ᡑToy#%( uec]aG5t$aǩ-`he!(FrƇ[uP@7SeG)`ė X@ @ aYK+Zj?V;Ջ &|fH82$#%MZm"Zά-̨+++>Oc/w\)ODQ*?(ׂb -Ka pj 0+Zaϫm -;ZۣWU$PAIE{l35DLqmj]QTSaG -}ф9,suVD0Bx16WFq;0eݫ@KhpO™O@  K"d!)̍1g| oVZmȻe[] @#OG"752bg~wBYa,JC.ԝXLxF U|mau YزЃw{^:JoܳaBqG_ԨmD \x@<%HlF Yn ) diMbNr /))DnT QHw؇@heʑVꨇIؔ_'-88~LJ i!;NmNYyW%Yz`.Ն:{_՗t,+6eUb(AhdQ$҂C(Q§N:`r*aK;ۈhlGZ9;6 0q@݄d@Fܗ&C ΫMw=B6z֞BYBah -`ih@Ó΃ 4{bvqdx{^\.<{^ra.Knk[xs^mBQs*D]PFCFGٻˮ,k&vVQ|@<$@B#L?@fHV F44`Vw@×`=?2†04yj᭦ "pP{b';77}qZpeʧ.ax_|!E$2?3y.alCj jQVvPd8Fư=uyd~o(ń82RDg":.ְ\\hd2EܦS -( - -؂*E*0hc >BK%/yS"|X`΀dcܔi7v)㨣TϏe 1D0U 2Xb2oGqsk ELu'=KELFJ'*lvE^B9&X #WD&>9a|!bŲp֣]mr]$:!c.7R93F:x* -z,⸾;ZyAF~2/'J@,joDSy-[貤"|-caQ F԰MAce2, * -_..6-C`Wp^~> #wMD^ݴ}^"3:,C|*6h n] $: %@$5\ADMM/oƘy2msnCpĿyz\G$ܮBi)mM|z8%T`P -pU*&\5q鏓 H%PuZ8*p/B U53~ mډWP#k'ibCbK- Ƒ:h!Po![U"ĄԴ ,Bq*\gгa<g,Vع8Sg, &ZEy*eȘ@u0"LhC0:bX+@IտXEbLJqORb\U=+/DvQ<ήSߕ(+&Z?>҅L\ &/C@vGm$ԆB#h>9{`BX;Vވbnqڛ8G6Zy啥-xi,ۓNYx<.,liy-Lsk_bݤҀW6ja@!/l,0soHcߠ. - OkuXf*R^h0zY?{}Q/^+ Tu `>BkK tl]0s\h-NAe5,zAa.L:8~DzqY2\0ˢXfYlXfj,39f qPBb@6Tc+-˒.sl?XocrcAr m)qG:g3~t'!#cV%0B1hYO9ʸX\T3h\ZE]tFXf"1:Iݣjg-2`ACBP % .%ώjVԜXUJSYH:"Y7UF@D,p%.͟Jba#JwHT1$Fw+0HJ)iϽF\X;)8۴x2T 0GWj3TtA&b24p{au(%#_h|%J2z}k/tg" -fR8Xo*WP)BM2Eh}Q*@C&p:+0̧l6bE˚%G 0@P΢ -8 ->N(0mABdr4'Ʉ*f\Z[@*H3f*i 1FX$ ԫּXm&8Тe@QvVZ#rENLjz˞5H~-1d21$H1/[n 5/؟mسynN{) aBe$gl!h 4ڗW6~svXV3j%Ď9؊$B* H }lW$9iGMIh(d%y̫#,k3XѢqn}N?qN%0'28 rFPG_B"eё1E{ONCʹQ!COSNNV@pfU(Og/rhQF2 < -ɥ'0@4C6c$&@<λ#'3RMO6J܏KXGƙ7c7@L)U?bL; ;9ˎQD=V?qg,B ƃw7g"[ؔPo[}/e&v'Ӵ1yx@ɨXmHIV^+yooon._bm9ޭ4s]uH VD*_HuX~W(dz| >`Rf VjM[G~}W3b\<#+B0j$ rCqd<{_|rscO0ȋۘz*޾U˗V5%_Ld9hOߓ$N P1 ԯg ÑQ ~Oolj"'6+yu[9Wܿ9Zߖ 7j}#^ͮg hv^(.CڱEx R'QKtGKqA^~cn`6Q#4$<G>D6^_"\觟w(ꗟ6O|^_޾.Lw>2]_lc?w^~}w\dwJRxh4VlY_,1"sJSh4IKm&I({tp -M Z6 ( rp  -E$KŔ= Ґ/ѧR,3آ^5$("Fƺp6Lz ].cǀaFh _~lZ'D9VG*:Q^r!3;]vtjG "D -bB^r,q- -AGH(wB1θ3:68H'ԤoLޢ!iEe{Q$爇K@J*3(k3di(jbR` eTZs1HރܢVaGd,Ka';lu3lMnY=II 7q!dH,f\C&Id!Q&rɳӖo \ 8vba.!P>lmDRl,/ 9uHΐ\NBU" -2fۏ 605f}:ABirWƀ5$lKé ^VߐVKDPT㰬#u YAQ⸄gxڍN%JY - hO/ǚ+.~ +cav|q̸Ar.NZxPJh0![Hs6nbi=QF+xdNvzB d9hqEzK`E*et͒N8zb!vUw(,2)+N,LvRF"_r#F,w/Y6gqA !rg= 'Np2bp'9@ }bɠNTnsYCrmZN' C?6Fۋ?A֖e+]rA -v:rj0u 4T%3pw@FE -Ae o tb-];J ),"dӥ9,DzE)%DXݟ蝆3'UI)hZ&RUV3֞!O.02(; f'Ů dw&gdnf20Ux<Ңs%HGJG^!Ҕ9"c9ln롥cHd!&TDbF^üH"T#,"j .WkDFG$!J%l!ZRQ(u>#/'Tl,K(*sO)F8HWGC~"AĦz8(:"k^^!!ұ|ӁѵbcOn5$cOՈUHY,yBBJ=J(4Mb"3f0:I - [MZo O}g~Tk$ f#BJ}!5@/ -D'*ˡmZfR5,P/$itH.ɋcəIYZ 8-0\TD/(%uz&(=U$sMQ{EeA_il-)d$H/$Dqx/iMZ6 $L5sz^7k &ʊtD|KȀE5^S+,ЩZT($"rA3΢qwH 8$Qӊ--<(@Iz/r0 0xզeE~ia2;٨5/\|ېiQ;$*\bё EQ?*>Je3y֒%gD+.8q˽Ăw]!6JJ /xdAj}IIC2x˂;u Efb:R -Uţ9,hG\PD>N%9b GШg "Wz&PVEV+{Ϻ_u iQ&e1}1,&E|/=31CU"T42v^jZE=IFa1^yQ@UFv.ҽE2ȄeJ3R/1V]xوPVV{P#k:s0rbF#li.Z'}GM%b" pkc~4{At"2^c9vp"]P\?Z` wQ9AZT,Vq^Ys-.AR{`# j(lV -sr/uaTK+1^qPIA P5,y)]ƪE,N4)ڱE@Č!U7QI$B TRʅ׃Y0p+ -f ;\Յ Hy!^/"JN ^ASѰaK80z,+ⴡ試¬kh z?N!-vZN[B`Ѝž|e˷mE8 倇jűDDo0K Z:RdE4/AɊ]׏Ɯ6/͜.,Uu^1 ͒[[!gP@dB/ f7ظYt4A M&"6Ҋ<۹Aaj1m"e92U;є2@|`/BX;jfJ̿}Cn n\)%12dyv#1soDc51k9^YNTK凂i b7|ʆjYJ,r6V,jگ Vnh~||`ρ!{@L9Z8:7-8/L׌ Vqtv`G0tnӱՁRf 4qa0G놺:i$?~1錷K5DKqck}q{Y8±x#/@^7-*6"qD@lFPU1'@ZM} }198e^!l&74~{Ԇ!tlqdvNQ@\48m&"zH7&=yNʂȖ,ϱ?!.}/}dU.W?2 P ʲ,~(Ao*+礶Bl˩PQ?s |x1$ǧ0$5Q(7 -W:`mD(JZ}OHO5"T !s~A$n }UM5ϡڒO[L RwKvd>p4+U?'!BXDg7Q*$BD^A [h1w.G -9vh-7K7.XzOC]d&U6`ɏͨ'D\I*5ʫ4)&E4lyi0@I3+OYtTa#*%=s$gRaW$2: ǠΒD DӚJh;JByqx=9ԡCLP2GJUG.qF~+&uL0Yg]ʿpNMV3/iwh ~@>X9k$7@"@~h IW,Ѐ ԩDZg/J1q*NeF h纆qIc"捏IO=: A! -~0CP9h`߀1L@[;ic90v دA0LXJ9HbZ }nd U2f1ANl,@5 )Tr)&bCvv -:A֔2'*TW0(pyW -vOƱuhOz=X -K gЮ^7Hh o4Rƙk@6R_&[DZ)VqWE9cyYmwPҟvGl\4 I,VT/WװTQ@XRn|#Ou 9Q8l ݚ%f~X)NX;\I4Ś׼&|0r2A + &C]Qrdq)J_ٳ͜z7ґ1Ì|" -!+'[>TR T-GGcʍԆ-njݰUl`<9Jleц/As~&EDQ [Y# js̄4LH*CT~!mjA7Q~0Md* -H|]%J҉R@ s'N  WFz.gS~l0=S:9iO&zi M ?97>) aNRL~<8P=tѶ|.01_M8N9I-8¨ 8 ̸qꜩ8g9g8!jPO47AoFc% -]AOǤw)o 1 .F3|Pu͘suhu|534I/e Uu۪g&1ꙁeCBXAgg&ƺ|"swsCF}3qi;Qzff\=3Q N>+d“g'qz_:{l9ZGgkMBwI@Y@i@kGs$uBűfKcX1@UMj[H}. uh}3y.*f0n2JЀL7ح6Z0iP7Sx.^Qhj<1 ѐڤI5B&vGS Z2@|)z?{X=t&vHNvNN4cb&T,"O pJͪ呀-5}yU oi@[:Q,u_jFa VeCB+BI7@si)yUדP^\-}4J{&w>ݍI3Lw\jH~e^ -j C@5ddrFe'i@ܮ -}cjIP,rMJnJBFukiJ$Ln w9gaF4@B1FhUbI-U&t"E|+`>ꁨ|[؀E7U- -0O ?^1:}x\o8g7*"0RQr}ڗcsUgURox.llTv%Ԑ&|QX+2P47Gg1_kiFaxÌ`%RFa)uƳ1Z~V34y6g,Ѳ֩F=oWgE0}Y˸ٿ$/ĄBL3c67s1l?i]1TӅ)\OW4??mĪ]L - C#!x`Uxs4s%-U!] TUqf.:{G,nz8eaVCOFLzs$ ^ [˪Csl fXl#g9 &PM@* N`FFy!ԝtBZj@֢dBzkKХ*{@ dE;I9˙1.OHJXRكh -+T:# A%>hnʴ͎Fo\{~L[ SIg/F0b.HCga(;M^CU$_6(i_y SQS +i:UK H_e&⹬8<&~5L鷳#Āak5]AWܿt*@F74'ؑL-VS\?N"ւ|c>3!_<EՐٹ0Cyċiv1VtPQwzy-h/8;Z[F}P]VC;/YJgVIfv[z㗜9NRn{ `*R'nSOU%7qN%&4aI#tfޞC' *,F%aKI#TF1jft,s67K9ߜMkEjP!hs0P_ ) QjИ AM 5Ggf v5V 5JC\x9Ø=DCT4{rЯfa hYZ^'qҜe[N}YUm`)lT%fN&%@ Hs:DMӻF䯪pjQ@*^M4ŢLl1XZQ},.Ͷ>mJJաԤyus냲٭RA;k!nJ %\[(#3Jsajp(bfTSȸهEMJղI|O&PwYpF FCcԤ<;ٺĤ?Cjadf@+2Z){Ndvl0KoO-I  n9C37;/Xt›ҢS%- Qp.--q1 Sk^ݔ>$v|X O@V>9|2çU O9u6y O9|Zr -iC O@~)0B9ck>9|*çe &H>9|Zr!c\ `$AZr -iӆ@V>9|*çU O9fI O@6r -i@>.9|*U 22@WM@W>9|Q-NHĭ -q*U *yrTKdq*e 9|\r -S qq qC @W>nq*Ç *cV q* >-9|Zr!çU O@6r -iӆ@V>9|A O&x1)>4f5Ҙ\[j>nИ\hǹll<{Y4'Dc^LEfʦ 7 k@kyڧf4,'TmvKW-/QsFIlp'GmrN* Дe2jGm㫮N!7$TQAt%*ھjqd=̤ٚR+k-5zroW}-8ɽfD%dӓ{Y hғ+0ܫIwOD QߌQoɽGoC&=l sABJ* PW^LI.T=9Y!P%+Q*i0 dCSKFȻt2ލ(ͥ*LdK8i/y 'f/E][IQy 'MmK8U3eN&r*NK[SYJ2Nzl [_[ʼnpl# P\-+U꾋 a7-K5FGI jg2Su2S_[ɼ(.s5XE;(:g{FIVkHrkkTPE7-N$(:wv~ENQtD(0gQhv^6Ny-'%M-'?j 2A[I{}kk4nl@b{<71NI?7Tivrm9'BjK8X9(9#(AIN?~uUJ>sΜ9s}WursLˉ:_# ,âNќps2kǩb2(.rUhi:Ԕ.FVdY\cxbdkYPkMYGd+ti_u --vM#q*r^ Mĵ -϶O2ʫZRp -'\tU$q]RI_Dz -Uٗx0Jս]ȘʹXh"%2кD˜{ÓveeѹmXƵcID9*C,MzNׅ{% -jR8U5ueuNdD@`Ǖ^XǀmD89p1#.qX՘}"`uj39X$ZɁk9gg1G'dDfq Y,9]h*VcC)%SS֥pN|H/Vy&@PwxƺBщ.3УXoqp.\.}vÇkj?ɥJfMe]qN17Kf9zV7?Bal'.*Xi:Wr;V=ٚ^\ŵ ŧL_ݸ)^\M7sF2S:+tnV5P&~^+T7rYl`.Eمd09"X$EAY1s'?X*} (tJ2exv4h_܉~H $LhvMm6(MMR7"+2uid,\JȁLBah L9<*2m"1QLYE[m 6(͇'ؚow]q~LaEY#)v4-f^ "{^- -YL{DQ4׸Ev$m@=tQHHfXs9j>5F]r3lJgS\&_-.S'OSg]vnh:\&ŎA7B{%2[Ӧ27sH2/1IaA>zPPu)Y|ˆbŁ3IC~PIԹY25k-0MeHC,;-el8rμA4eF8i%Ye.vhn>\yk;h-V{o38@]wo"ۼ:=Qn$+7"Z ca6e3q^ʼnYr "gE+JŎB#+4L9-ӽQL ܏xPZj]C%Δh`s/G&udp^,5kS<-Qԉ,[[} ȺgENXJcqէKW[}o\dfY%і*摊&A8I a;6E)>yOA\&lC@ "sߩN% s֣r~,š)[W}C8f_&|]?l_q@+DO#uv]6{;Dg#|F@ZoKf.$ 7[YcC73tp1(q͍l݌ 椘BYؾg!,Y@p^WoJ W۵~9E)j6tWnF ;p9ےb>$/.i /kܺcX Vˉ1 At` \mHn|X41Q!Z݈E9Zr{[\db{-}ſQkk|bLŎ.bLFňq^?j9fW[-[f81_h5sL8O89vz5N[2!=>zKp̤Kf eJ|Wӹ16^ _V)[ɗɏ"Ssy7'n:jsfٛ| қ j6k`0&ؕ\%%"[jGT W4 -'RQuLnzwX<(AnEdD*eJ0]DLZMt&D֛';x%UaS[DП$+3؉$$z!( -$XF@ D`G$F,<͞R2fKp8~óUG^UթLm Q ~f8bSџ@_VCnnjQ}3'ȧgW=:%n"j-4xic78p!^ALH户\I KyWUFzǂg) h\ZHP(tA}C}{Ϫp=[ZY8eZYDAdovhhy߱201oJ) $$d ps 5z `` 6T0&A >Dvܬ)$d^( Ӕ- Tb+h2`8^@& U { ) -Iؕ"WcL1>N'B̢Cm2Eu"Հu8E'˃g?ˀ4nCyԐ5kY6c;Y -#MQA& ˚2kUzn Ia8'$$ }( 4Joi2K4R: r"$AbT嗐7/Ftd"O_:YSRvA2 ~?\ -; 1ӊ}GC}9#XҔJ -OCh/cjc#āl`b^eRu K08JVp+TpD;2ObhMO$TЀ pso1@0 -׌i;4$RraLKJTzk*&Z&jv4BiB<~`Pp`.)tA>v#q s;Ɍ+`e5zI,<|Be'kTe4أ@'-.:BC|f0]TD E "^ 'bB@ YZ?y""]M`]"C͈XArѭGE6̫uYAbHg&[leK -dbfdkU!.SfP!3tht:,Y֨[A: XŠg#k&$gڤa )F'IPähB -ɐ):B'$"QfE\ {48HD}?: %ĈH4FR%.n|YؿMXu>G9 ǂcn3I56,! -?a*D&&V{He@ڔ'JTYR -&G -{Pkv{2r#҇װsIcHw 11u@2~Ad9d.س1(V@?DSPޅ(SP ҒB!P - -Z"-skO+KeyAxj^H4$V*!AA -Ɯ1* ޛT Z\{ghH3/ "UQPv2nN*h}U1F(r\`SѦD ~@[Wp*JLA/xxPg*#WqhDj4<(x\o*dX5 `:c  -} Z;j΀ K 7>G!M,$`zWA= 8H:>y84E -f -g#:ƶ VkWjLN$Y B(~x_mn7vt/oM/dK m 7K;TU @[z. \~, `̳xGS37$i[#.QTe|6%uPYD1(mcplj"&0/%3 -Кhd0҄`[|""H)4̪GϞ "tĜ25*5 v9p[OllHm) F Ƀ.F !${x>WYuJiUMnቜW>!&Cl$~%tM%T( -oiɣXYM@ǡ(Q%LHd̋l#` -4ZF(4$]'asJ]NtR@sUgI̥EuE&a%6]WA2qT)fZ_΂8gmE CZ-]/,&U-3M x@e"Ko_ -03"Ӡ|u`e@=DA!, Fymx,a${䣳CdZL*Ϣ!/kLC)&]* |]5r}/\ ,3M``S0%?>!>T\Q$pTcAWjC ufZ -*]0H-y9ۙjqԦi()ĂFBXEB.Hc@d3` -&ʥi =!&Lu@X0)*VwL-5ZT!F+f;FJT.i,kTD<7xqW6Y( -mD'e:L"jFZoֈ-p:8 -@Twta$ZmoptnlhYiZ%<8B)PX7<}-c:S @`ki6)Ǟ^Td9Qi*Bafp"/C -H Fۚ%81cr\"@dFJCA@!l mp{b ؄UOg9~.x1A`OP,:WdL1iXNuc{wP4C8t mz-n`}ӡӤ< F:BǷH"[yf9GE}p& ~$KD3,KiKw8R 5NQ3CJh)V PFU(y)LB68+<~<>Qisj^1 Ƹ྆=C7Kfx&3K7BWDCypp &ʷ $BSuB0^q!'>s]Y3s &$4j. 5~sj;0" ;U砗L*AɊAVa"hD8kQ5PQ܁ 4$Q`ٰT8"V΃й Oݽ=صFcZsPa.-YdGթ~ 8#wQHJ!+Hd8*CC6cXDF3稗h dG8:^8,ew+K4[SGbeHpe}tx*,ZJt4xQ`yU8\V*"'H Q? -eFF$KҐqۉ4P$ZB2Í -+'wpp~;Հ!?H@x> (tIol ;SqG"= C5Oa*Oo1o*A yLڪprgd)j!HW .5Q U5 |&**C9holéY'e.4μ4uҮ:-ӪFW%[ -0izIS&LBX\ Δwgv=7WxF!;P*n),ej d j( "K竰<41AA!W /!PPSWbA`]kw'pYDµ -$Ѱ'h;*,8%pZ HP#%Ds VH/ -=7RX<]"%d?UǪHpڈ2ő5(I@ESH"ZO.BVBbG˘*̝-Pe ?E4ؕ<{G3 AV&eRYBB̩iR4 e-Lp{Nh$&y|t&zIUU3+"81Ų܀9#WpƧ"{ri:Dߡ ):ӹ -pGO[=U%~+Ջ(=ntBD=f"Q7wG *^ȆUj́HY -z"#|" b Ѝ7 "L >OcFK"6"!: qUoSC,4qz:en5TtO -TP(0_|&-8Uư;RQf[o:uݡM -JNe (buͣ> " ^&qH5LJ8J<6&R"*Hb"0eqOF/*3 -. )M㑏YҋYST 8^਷ :2,^&M}fH%"3 DzTyEGXd[5<{Xc8 -8dꞆK(1!hw?m^w~s 7aBKx:(6>;j-Mxš &ygyA J/, lK`aVKO&F QBpOfw% AK<ଔ=]݈=ãxfrNa,fN &mMS3cL?A3#6u-Z܊ulH&?[[b,u/_ԩ5W -18ٿԥ۴|L>HRqމR(xžɤ56%1 -{PVFO֌hqaݤjS&@'ЍW,`pQᵘZӟO iır:Istn ɑAn#bc5Q#朦=?O!0 4\_IE.l U?c#$ln#FCiP%o&$[cy')PSI7o"VV8YHUA]TW?P׋^yVwϝ7?R4RPktvVL:G񻳘wh -h5wF^Nbte}ºY05v[O,@h1Kg!bEZP7'۬EDeMʘ/pmwIhS??WIpwJhyx]N0CjjSci?7x TZ~;;ХI v3'cd7C7?{MMff1-Os/n?'c݌oe8 ~nA -x ctÄc!]Sj`_uS01Ө?KOc8MǷ!^ğ`,? Eri,*(XDϹ=^ 3; [}<'vd%?p{ta=.(Ȑx"ipYye_@O/|xAU?OS/&)LM_/kD -Ŏ?^M}??Ovc0JOj:GwI!YZ?x=x߇ sA>?À+$=)mFǯ[lvPt_9Sh8Z{R={gG bktqLw=. G!"%b>%_r[\] Y~kF_)Gs|I2?ʰw~ĺjo /J ۘyJOsɬ!@HQ)fCAacn(ٚ :aD]aCE"P0|k&@hL섑?Q]@!%xe8(N-HQ:B?wټA{%' 9 -Բxs'̳8Fpd{cp6Wi怑aDlC[e'=d7ktR -.JA@JNH+Đ*f߲ͦ!¢l-!sP6: - - cP.+1`p% ¨3DRk 91^;]N<(E'e*+80Z#P)(}C%ǔ46֤OʙP5p,^'}O/pE/ j؟&e˟ׄ6*,V!Me/7oFFyr4a~It=S ` -S`2}08e =?>?>=&}ܩl+9KbZ) -99{c+o) -QD?AZRIMGԲݏ?ߝ=ӮkwZ5d9f?|1 2ΒȾD2h1x8i-CMc_߯1҃1lD!yۘ-Gg@|:ig5&rlA)9~ hEkԑ?jX)v,3.נZ!K)%relefΔ6#ʓX-ւƝtyNjϧFb:"jdc]gւb1Fh+Ydٰt+ּ!cA x3k͍Iw2afNA$A-m0zG{sO!{c_:%5^5т41՚Z-<.˜Y0~[z2K&w_1՘DB{×ag5ؒucaADbӟŏmר3”pvw+y"S|M{H ۘήZ.`r|FvktaVset7L-ꈥ‰9a> c&m,u6:<p1v)ꛍCu;iΰ`< U]pt}a -6] aNU0G} -o4S"o*32qH6M Z w@uQwnJSr_៥\з?Y4iGp'/6bl$ ׯ(v&Ӊ Č k̘cy=ߘa".:z~N?&&;%UI o/u9Y-+:><^ ľˎC/Eo^ 0T%A l Ma~IbࠨI!U翜oڿ}:&|5߿3?3!FW`~g6&;%lB`hFS{_`GW# >ܿ}'=luC7DZk:>]`(5]3P3拙^|m &nDAUO t~aZS[OM'y:pR̡~*v_:Pr8)rj?S% ^wONWpbxx\i뛷kՍQLO;kc^H/!Nkv ze~Mt*pŲ8ך,Dе4~[Wtqe5"'>5?etf[#'3nZs\BE-+Svv~r5nm> GFa}j86W~]\8$NSq9*}{54~%.=\,[k[uޣI],f^NK䳍OE F|9jdM]d2mfA/ mFYLս/ |3dg:Y+}޼32bv%] cA_; ؐ.P6.mԙuhAͺnOY5>l6g`0wr.brx3,}r9ewjd] 9WOGIa@]OwOzNf"@+ }Qg k9[*;(Y`tŰ?q\6-6s(njz\k.ǭٷg=Ɩ3B$a.i mzq9Nz M\΁{do5SE7.סf&^^`~y.Ca /~}А_| tl/^Nom~cOpi=o[cd6< -3Mf^~d?C*.B!zA&FeXXl7mzcFQ X c "̇ԏooAk:GuO.c8zr4 2e\v'YgTA#@wф yIj_[M:0/6ӚL۪̇i;%e\mb_Z{{~0Ds|tuƿo0SbIUW{vvh_-g  ØvTdyBm1sHZʙ!'}=<9=+{}aZ,͋702?G ]Kg|&;ɬ~__p*c¤C[&%| I+5ø|*J@ݡ|H@n8~c ~Ik8wp\6ԅDwNc('Sh?ے 왅 IRjzs!4#j}];|҇sgWT\ӳ7VYMMKqkcKcQMe{ dWUcۛ[('*[4[ţֲݘ!M"7OrmQ(N(7_5ݼ&~w٬!h}.;F+3֍x|ʍeN~/Nj9̴MM6QO -6Q:ױH(W<7' 5l{e>/s'pPW5*][_#n/y -ƣGE|Q[x=7d?^G%N:Prc.L<&Qb<-/r8QvWٴw|\oy==UWF*tyNx5?^Ɓw庽-/"+LCx&Gq/9XB~×Ӄk"҅na;^]my_@jF H=⩃lX\wN - ^y@{pKOnr==D#ŁU"WĤs0*:~ U5艉y^yN"hS ZTEWb1mOי#]^55} -DB{=xɄN] ɽrOO'Wdy-sn%nEہ9'lA\{ ߁lΔ(x(Lna.pr9ҧk:t_ΞրI{դz!@ɢ5G{/v@ev2DTuTRN~ {[:K*h>&!mDiOr'(.WQFIM̷A[hXB7?5P.2m.z6#Ψ"@(:,dsfGnRKtEmѵO ƥD)YɦzEKn6ߢH]m+r.oư%0ܫ ]GAˆ\z~p27iz "a$RXL{b n!o*bJ{U]@Hzˇe;Nԟ0zy%ѨLFh7[h{gi*KTp=E_?[Wjp7>G{{M픋Zv| խ7q~Vʦ]}N}]k\Ԟ6A{%tI 'f`|j_k<-OW!mqw<g;A,{]m.Y{yk0_p67#<0 6\:$uLm^H'ds)gR/sX6+){oZmMv[^ܱGJv ;}!Yꄲ[vLH{jTnt/&^#fUB'3ȿ.1dJ.gWF9P|Uv~<>i=BCBzCXpL((fd^T8y"oZ%WGc`7kv MX+ ,;ztЅ@S 9voAiN;Ȧ 5HH8m?` |"ֹ'&]I\4oycw*qRN\,uuji -_s.t.jIZX#6jȖϐVMd UsrL&>?89jXYL$Vk |kLs =@/3b~duħI+D&ym,뿭-[4V:릻cyfAF#Rڷ/XKGЫlb4AwQY*.a `6|ŎIk&Nw& 7 KCRa'E{EVl[6 'OLK ddjfCjC}2Ϯ^CB$+l7UYL"dEl j}7 ǣ^h?߯ׄK^f|#~Y)@n^5>l?(vd.%rڴRMo#[{<Z V=5/+}$ԏ*g'+J:TD\{M#A6F sŎsNĩ;sn۳n/+t'Wv(QozZ~r84x~fJ{^hKWkRxta<\m+9&#)W\G/*6u -M;4i=vc6y̡}Jk9ݻ†k"߈]83wd/jf$UX:v2iD2K-.tϗϗc=7JZcT2¶sqEk# .QIvΘwjsѵBN쩽>? c1:LsRH:?s/zO6_?Ue,®^OG}BšzyP`."@j%_ -XµZ7f']*>ӎM0%EfD|\>>SpP c55ǃwiLN)])F bˋG}-gǕjv *_;kpQ1cdzD:Y,M /$b 1VSp6J98$Q!gß|DLAYkO\}74d$e6LX8wHK˰pw7d'c0,> NqAVI>wۜ='1"]e~?%)ѥ$ -%STud^eGvs΀xꭗ-!-km[DzwI7} C5I Í*4{JM}pvj^lQ1m]jmvSAN5אfJ.1}[vG58uVغwDdrl~lE@ ]h鴏pZ8e} |#OUR ;l% #k"x2N - >_fcD^Ժd d.U4ϕgu~(a_iov0L=='cC4$n8켥wy;u`Cv<^^'֣9"x>bIcWv>{obPUݐ}g4~1*r8 wM 'Sy mߞ~\|ҫWr&wķ!Kyu 9}x+ly/cD]vy'ycKƍe;Y}_s ??_h>rЀk~d$u{ P%m VER;‘ ?ߎlN[^EԐؿȞ4]+f4t*ʇ™7Zx~% - Cqp!t~׎^RDE{dh~g7-,kz,$gwt\lwU8;D'qRvRw.k8 -TkWC1Z'b'Фb[bu[g%2h>zZs+9~8e*)v"kTB?v:$B&rWzO^".t7THGJ_^K\# =>em.xb4?/Bk;.&fi,q-ݞ,p'rߖ/r|񊧰s~6g;[^"3*Vѡ6{;]Z_#(|<4bz(F1#^5 -4/?SrNCݸhRNFNdn=EWUjYm]GU mYoWeu_vߒg'FUk;E8V늱a>\=x8˽D"L&hȔ]TM; -qho7{ɞM\(=͵|2Z -/Ż/ʾCqR>o 7ȝV^t,$CջToVjM>^P˟q?ԕt^IKo-'W-\OץBo뿻R-ェ'Z =8_Jv34d\[^etCO|u cOn!wdc9eƽX퇕K?mnynVp蛜אxi^ -܎wZx𷎸arvsƕԎwh߮K@ -=_CᓝMx? iyy.ݳյ?qT~+*GuȕR'+Ti%jVvGڍuOFkAD( -GN:-xXSNnwKttUC$y t~@;'{|X*Nr`|$?ߎY䉘o> -k-jJ'}mrE9v4c#vwNFdmNũ+k+7YKc1|;F5uH>I/;fryvڟi8͉ۯ\9Jo -Up^ \a)i5i~)g*ɫvr\Yh~={Ju^r_L jV_w;2.ūUBVVыucVIHKVޖG#޵[tpɉcj[<Stv+rV[hK}={#-g^ïn~ ;~V'Ab> zfyx>;$vZWyJ[bܚ5'~Z9ڹ%ٛJt7u_yx4y2d߸(<*bh} _)\Iq[  o1<)- -חco ۶r8Jw zNJ7ˋ $3B1#Oz󪿞(bxT[1骠NJ%g/ɓVMWX5Qh>^SHgQGظ;ݻOq3ylt^Yy)w*VGV^>(?wP;KvۃF:{;˹o柎c50PWRk~YUNql. -ڝfN-q6[=3 ?{ |#u2:_d>_ՅFwŽ&HX<קAIyٽ<;w|&J_<+S'X2`O\e`5c?{m>pZ΢z6|sWDs϶0Kc~vyb/B+xubYb`%'>LqΣo}vw?.2;ŃR[ivޠ3yR:WJHJ>mp3~G祊^)6+1+=φ۱z^?VsR-z{ugP7YcEp@6}4߮^gl/"gwv_;MM\Җ+\njYLtj[ToaNW̗'/۽@,r4 -b2ϔ/ -1&-WOJkO튷uޞbQ JmWP/wZJ{șX_Ůq=\wK7qvu7~!JTҳ.wUy:U[?zA0`39DŜz s1&_Z]|QO")єn6*k{%OՈj*X'nʼn.MsE!tYZfЖ%+Y~V4h4,,aJG# -XZq [NhNԶ_w:ZG#eYKѻ1혨+bIwI+>W~ZWm"TȑhZ];bvzSxZ#xuoFCbux2tWkb|1XDz*<ȇ%܊'~&{L~vEMd.p!ishJmmhLֵ-AEF2oO=4~W+?i^jutoC,ߪQ{4vUu5y["®:UJVxy5EWjn5^tVV7֝͟4cͺA$w/'TG3Ǹ|"HLˁn[{:cn -^ D{Xf鳤wʡdx_PVmj}ѣԘfN!$x;+/q&2M M|Pҹaz)l !H;̵4ūuf<`0=Bu}ϕkǸUrg]˹r,0/̑EhK.փگQɴg [k Yw7ʭ5ٯ_֪Mm8<8a,j`vGQm7\U(ue^o?1bulyMD&ۣ: gjQUNl-Xxi@-)mAjnN_8?4VhS.Q{2]I$w$mQq f]o=.r?3pR%5 (EQze?ӶP]&͑S6;w6+Q'k -Ι;z[Y@kKּMکy^&N'e^X *PkZ$}(?.53~ 77>M p2:tKƯ] .w&xu>v+l[{pk2tߣɴa#dfu';}69q>h q4C *9Y1o)Gn~ZxiӭYU>bΪ݌ABOP6*uu 4ek!2XuWO9=佐p/SWNgY.T?1SF:6t*z{]¬OvW0f1ߙjvqguڸv9AZhZQ nn1/c0%"C_Vh;lEEcImlVW{+ Ϊa'/{,(2zp -eG̊g5jF%(yѽj?>2^Lq<c#P[Su-W3TSw潀ZjpuY{Q\#^O{)j[V*@FB]ld"6kdwku23pq]Ahj!vPG+Ըշ`\ P&'QVm Ǟ+ޯa =Z'mҚ_J<[,Ħ,i-U η ݞʗ-Imnt2IDeK՚^ kd`ckT㞒|I,\&Y>Gu<:6,_Ě)JQߓZg|Ao9-C֗kslw5 Q7bls)ceIhI<1OG |8ċ"&xV΍)\g9Ml&R%39TE("FoϰUXSGYj [qr%iCuAEz1p0 Ba~IX'V)PvL}f'7#p8D:B|>А>YM)ֈڵMVR<<Ƭm Z {-P]^N3/U̷F[/GzN|a+N'W"m7r.NJ|S^~A3] N/i8U$W8<ئ;CQ=T@VQuv>W2SX4E\*0~O,Kp7'n{uVPREbSfLeUY> +t׵t9\R H-O#[.Q~UN'0)KDDJib0\)¦[Ld?#=J&f:19I`i[la騽2XE_iB[b>hG1,@$Ζy?ɢpVb?Bgs0E=4VR[Mt{! ,qv\nI Y1I!"_V{cgDKY׻pU|)VBe"A?S£p4$A}(A;}/@FnO^:/O(,o2J)YGcYit%,zLC7w]b2Z*yx٢k,w"j]e> x2QXbՏ .Pn^zM9|cu}Oe㿗^{1U5P6(rj{׵5+?`*j-eOĸ]mU?ڎQm0{9aQ_vp 'l',$e;齵 w)eÛ_ G+v;X $R[La?k_ +\J$QvrMJ9^9Fo!g f,.ȽT?(?DOքUSIh/e -?&w tn P,VR. k(x{-/5lG$V1 hDb3KaK=D'{LTw]í)$/t ЌJ^p) ﵤ@fI!x W%jTLIef|#uʣLV-Gne{qA -l':MUD:C3CNW,T}EAj1wM -{f0 ub9%AXK`+k"jx}z |q^!cALK=,Zcq$ nѕ{WLiFش`~R֗bxR*"^ݷ8vͫ.0 K¤=Jy[owX;A¦,J//_BmS1jb[: Jx;oS/NWVIni1;5|pY0bBY v)bC\ݎ|{d :KPMuc+7,:w͔p/V3]d5uȟïP -u{m4](~PrnMyQbe:XdcA}Kݤ}u>*c$TĂ:Oa-WMU/ 5gJM*U8Qè""TyQ~ 4]uVkܚJ8 j(V%sa,pqٙjE-puPó0|5>:`%_f/,bB~0#1]þL,i3cB|O"X2H/,]p )zwA[+KIV#[>;t liVM6EvѨF!RG6dԕV~[-{R/d!9'b_yBB.jM'i#dϻf4'Z#2KPF06R#0:A>=NweRPSwυ7іp=.6a7CXRqdfPQI->v-"PѬ^1j`k7}~o[,_ҬPN-=6mϗX /7+F-^8`J -U,6jʹ*j=jVM.8pKj3#ɬ(RURl5y7VvT>{ؔ/f+![ѯd0LER zeOPT;"kT)/d>z="`SHj%7@?~&I8[9@K_%PG+̿9u~ÏTysVWLbtqU;jr -\,1WW ]o۷|.xش=ڶN_O5[`H4˾2# -&xyّԒ99+:Sb*I-I}2*-IE}߫Zvi;if:FC~'@N-}9ﲹW=+نo7뒂qK;>ڸk@͒A)&J{i,Y]*]FyRHOexMJڝݓų;ZѷA}oqN;Wb؄ -iAzq.+X7 - }1"^)Ҽ־s:^NZj4+kk-h%२9i-wJAp mڵwNț,roU7llu/{ -ц1ȅ1?ϯGaD\hi[b{!U7gLlb -xTY9Yt&66J޵o7z+@;ňzXt˝w Ni:k -JFU0Rzo]!Zx&|Eo -=67*oTzf\ʕzzf]+o5[/xQ$5c[﯂PA[͍ Y+͵=VW&^6&~&P|'5.[Π ь%RGw]so[JAղ?fׁ4ܰ6JtjDKaS*Wfs˼ۋR5Lgje1VZ_ir۠+ -Z pjƴ;r87_)bR;o7+LgNj'1` $2G9v܌-=w– `G㭨'R3u"At -;M4᩾֬@-tzg: df]#y<{8XK:Rz.tzpAښ 'jT덨u(g-*MԃsQOr @ʤ^"pUvrD:G BצfjƬ"VlwtU d/+~0?ls#V|lB;nEUu=4ҴGJשּ&) jBFFxH-sŃ`Oys2Iix_s[WK8yܿ7%,2'hwУ_'oYg.7C?w/#ފk/_%W3^Fmm7'j\VBukźfJ5emb,Y -Oxj~?l<:t ^ŧhxm/,kn6=$`n-6Bu ZY6;P;P,e^O#R^e*Y̾}V2 -aխ3aE޶Ì0M -#\t~4xq:adl4fرGJ5^<Ó֪U#)$e R - -4͎Zqj!_C;c}{ -_0;]U9"靮2zAz <^Bd7. V8p~\a~H_׿ Pox0簸q]Ŋ8/x_|jWRTXtVm\#Av"쮏5bcuy?_b -eЩpY1Cc+d,3t9u.[`)')ۣnjIy'`' wU50*v@N/zSi^t[xS.Dž/d e)6 ^Z2ޗ">~ZGv⤼]_&e+hvRlne6q霒 $v29<^t͋q|,j :ݥՙy*jU^nM| '-τW,8 ]I?nT͚o# 炟2Q? Ftpev mmrH%DtLFvhn$z Y䗕 ,R3}>,t'֗r( JVR@F XdME~_;J!ѢF2~LIL{5wWD*Lc <֛;~fӦ?^?B}M/.ٻ~RC޿|/Ot\>7( :0ūcg73´J>D^?HmLFdK@N8W[I}#am-+&T+Y$ XF9(fH`j7ISc1 xNF'v᭵ʖq>j!X~LIY-DSlc2BmꜲ|Q PӽNRP"lo74g5:T= -֐>2v3pJ|b}ʶV|g-AJ#Ӥ>[(MTAz 8X6=px5 ;׮4{0ȌbfCoBɧ~ -f!bŪF0F.lvZW֖@q惉'o|4Gf,rЧ/θ 4FXqrׯI-K]yc/GtQW;xmr*$Ict]H#^xKe`;:O$+Cr)(d >)M?E&ы^m(KpH1T5=yX/iR>0@Z;`;Ʈ( vfWOQॱ|tϗIY]UWjN*^t`eVg /W1_v7YkQ=sGXaJ!5p[pمBZZ1FUk -HcbO^j==QP~ rۨ-o8MY Uo!R 7gGJ}(-c$J69p%EE -x5t>Nm(ၺ,Nb6Pq*YFz[H 'G^ VOxti+ؕj.^Шsw5Niͨ"{]%y + lqd('XZgl2ZU'83~<)G0 - g+q翷=s֬] ; ?y·3n}nK,D{W$_7Cf˺VT[ޓh\ubj"H6;'WZ/,lr*L,m`k=|Ͻ"o2ɦ~TOyNjJ@}te8f)2rP&;ᦁ eUQ kcݠ iYfٯD{s/! :ivv)gxU="蜯d[Unkn5ټk4+,hvx3 -f"2/lQw,]}50c;P[+N厼[j5,@abgҔ0[[71ef2-E+gCF~λIZ&eRSGrbn`ʓKmsӵpM7HԤt{M)#PLzv !مtf?]_l)$vUO b>y0o׷Q،N~:A*|ʹP؛"zvo"xО6β3ޅ6X6=˱ 3jeZ\9e"#fp־nxx*K+?>/.*_J_$ \άƢ&P*XsZ^o -+8$XB=>rT@@ZpWaUj-j9X{@潵D ˡ鼈$.Ͽ`eLޔTn-.),i.K(mڷ})ĩ䱩텔ë́AY%Ǹu&e/Iv~ uAyչ5H0mgxVQlt[#_= Ӏl˂?m fm^w[;9j81_qs|A1fe6P×JuQ?+K|ܦ+MTvʟՙ!Pt jI_r%EKk b&"z=e^RMʼЪמR\d2g屷w bf\VF۶Q1_AtPZf-k0u7m3ZEW.I3T( pF׎?9 -}sGYGbz\~ldm٢_Z]2 TfyM"Hn=άeCGRbInOզkP0ܨw!Fƭȥ6T9atTI}Neuqp͟"ҳo'8h'V븹QM2{OEv. - '慦=A)akc+ e?CpJ-gΣY| 7@?~e΍[ٳE[DfM/R+GE~uKE/5 ,f h; F5Vx,=@ъ(SV:_fa.*m@Wl# 6A,Ž&V3ƹdSOGl -IM[4wWQK^$Ȟ#hZ%T8౯,ٱZpX2>ߍ-}[[,vs[ק?i`40iI-Q;#\ mw}ºfYIAdtΰ_FKg0!Z˷iRc֘5f; _3%J{cFto~㼸4M׫R6mY. b+v*Nx+ή??sKU -E0b@ 9 9b{~ͤX֜VU (X,z0@@'(\7y8O⬪O庻T.1}yr;drczW<4|s36en;,tImTĊecߐpfPȹ뵬( 3~.+]|ӂ>8(^rA>g z]n=B1z\Sn`T5$ՋA x ty[鯺н~-;N?*O֙2 {-jZ,Սr[3,Ѻ^A{WI+v3NAd֠ 9pUu6|T{|M:j]tC+FV;eAϳgOg0ڬ΢$N(r"mAu};k-X !rTލ)"j0j $jݞt^M[Ie/]wlkݏ:XHUkhI9ð6VWi wyHTAl)OZFi.XҬ|-ijn]f;Y8Y%C%.3 -cQ˃ɽ!SC9>C.:F,)Nokf45 9RK/Zh'e $o;ua]4H+ }B9%H*&4N_#ຢYI|&Q?Nvc=.nNl.'3ZB֖߳86]YVKu(S*%J;5 Rd,r9zCe %uQ*nƤ3Kb<[H|h95 ~׻wn:uD.}2:̘kPw\!NRL۟,`30K^[w0#6CyMG -lO'UT^E7_ S 9bh]Yâa];ucLaߟ(]V[K<8K"q`n[PqF`KM^oIZQ D*E^z4+։/H#gJ"̹(ŬjyE5 H*n}q$"5z9B780]YW,S/s`I-|$hUSWyT\fvԆ~!_ޯeFdoYpy'{7iV&X9YmQoQ-  8Q"LI>2Uel^"krsfִĝ|J`~{KBؒӚ\oi8sq`7VSj7K݆ܗdvdZiZ9P5{^}&_JIaR/ 4\1\#jcoݒrqu{x?Z#8v_Hw_zIu#-pb(˽q(mh%5a -)=hf:-; \_t$Mވ\lNWp:2kfKOq.MhG_٩rd*@~*%]~p0F 2F\΄݄t{N?"pplN4Ăam^.yy%3N&s: ɾb_QJX=eë> F)4g߬_S`B#l1VJB/}]/:|֬Cױ/T -21*X/ #hMqEOIaMߐE6m:_vQdpz=)K:a"BoNa de.D|]/ |mrbj{": -g̎VQ:8̉E|”3v5Sj1+FezK]YrҪjvA -T"Gz9A k(\/%+pJ~dhJpe͡Z)T _ƿ@&v>@?_(afϏrTW󮋊s_R+Z\=O7aBf7a#0z&,e"yʮ!SَEsд|&Q .EFFI~ ǹV4+t1\TQ5Ԥ)uxgkB*Cu<Ǝ׻W|oX.ƽX.d7SR9>2tD Dpc:Cq:kwG${3ϥѯ:~>vc?--\"d=s,U\FOAX7دUncKv36fK]t- |5ciD0fҘ9ȯJȜ{hƨGy<%.ߩ$YvT$V%2,0suط&Y5ϾA@TK"53v/O=io5i1!u3:8ҹzi23v)H`c&^))uf-ZIO1L'=Ј#[EkH>ZOE\zR^Ӓו@&W_Ez$C6(qkq:8gW\|dr,~r""/,T5D7}:w2"PM ap#UݼQQG`:־KR!Wjjv &pD<\2m|̑֊&ۃz\࿌K?T6R0zQ7%n6m5k qo$#`  ,MuI?tJ*Ū6B1YԤ.,X4zw-+d/~Z3>sjTX VgQU޲]"OXϭbE]?wSxY[ߺ(TV PLq -z]QSDJ{d`3TtL[[W9p&޼?Vv8ijܐ59pk9l7=r>|zV͛:I^^c RJ+mu^2讼r"ϐEΉsZ,]? ՜]I:Es~p -clu}`entbmz>n)YrJӷ"Գg(Ѓ..* &g:B-OFnRBGm9l3۩̗ɔ|gD>ز<-;Wc#8rvƯ9爮ΖxK|8dL-Zzlσ%d3yD5Zx9\OݘOL8H,٤M7ˎS%.6) jX_ -Tz+ͻ*(u`Y3;jn:Ҫq^;R.m/a| n׿TJYx =c -nM׃Iwd˝y=1&DHFE+W.ӎ6k@VU2}I- mٲ12Fe?ʬ,WVWN oQgl^ \e<rpկt4M=ΕϺU] Epd,A5bN&ztz<+s-jD̎s {__]w*Цj ٸ^wn.0@+m L(28ʼU0OnӬv)tvhĺxB)UYX ɳ,M-Xǜ8!0nRNCzʺu'S۷zGnsҮk%b@/v1ZN[I۳S;F~7A]'l׍OJ Eiׁo`cUvmnWeh_j>am 2ِ m`r#o/չm|~m[r$=B -2TXi[X<~ā+JVp0ru[^>b^+s*jqHY߾D<;9?' y> h~j#K$vPc-Z™N7"=uz4|g q2]֧*!clp2i? biw`m[gzd '6H?6s;f;ltq`ϔ,"9zɗF}ꎾ0pk lQE5m.\Cr +G?͘϶,Ncy bS%OqL8²4-X.g:Iܶk`A蝍t -][N1FJ1=rG&%0f7 -wY0·KD(ت\X+jso^p'h0;/g~X0Hm mD2zmcG–.}( l/c-L&r1xTK1Z!"g~N?Ewx^ʝ)=1/ʧ3m%bXogzo@(p[T-G!H 2cJ i߃Rz4fZoGh< yè@KBM'z,j`p옌\L7"iYyzͪմ)W~ c\v?gSBm^/3="$ρa98H NeTuQ(f|m{z"0+'o \_9ˡ'»uCĬv*-2ƝvȼxsGyq^ -UDtJd WjX.YۏO4ubnIe].CIQ7gT!.ykլ>Q)/6C:᡽fk$^T+eK'ٺ7VښsӼrXKnLl>"6*,@ϋz򊬻,da*^Zd1֤ Vw2mVG8ڞwuWx/g|ͧ +.~ NsG^dV;?&Yn`ɋʹAA _-#ΆLtNS^ԭ~{UNNEڻC&`bK83 a:gd79topBqk،9m:ckN -&ou) ^eq@KJ!lZz5]裋(ݧwwG: -,{;q+JMF܀tu:#^ Dye],Y7n~O*>`J>q0c(L1ka6O]QmV EawҾOBRmC笀];)؊;^f]8$f0@e^:ݟ3c$cR"*Rrs¬5ٔ+w;v*`ة_F\ܫ/|g &1,)mm1t@J3NYX!_jX} i3;sN+y-ޜ}xqb g@D?@|&F{xʆzDemeaKxd1i_kc5/*%רpP]w tWT0ͼLʗJ)zS˹.bV8;֥zsIa /O22Y3*}]D-&VE?/rµ7u`sNae.`pl3SאpW3eT-ªNySt.OڭN#=2>ϞOpn?Bg[9ǝ&CnW v@i3G;{wr;Wj34Ea3ۑnX<"l47"^Au_%sH|wnKn3XʧḥU0RJ&%IzUiNqKDuL\Wos,~ha}avɢ>1_u92ASښzߚPeUNZx80@@~nJA?~|rଡ6_Y*H &ɏSecU"(Xf+K%(藙x -A+pSzR@<{yvН9|.ԍ/ٍž_ jLH3HnU. Rk ^W[wc27 endstream endobj 292 0 obj <>stream -XY/xX yUEDpVOÈiVu!ϱ 5}6 |o5RυTXm?w؁˾@`nScӐo"7bAd\yjyrhB)]sp%y &jwuqjk ֮R75߀Utђpvֱn.%G> 2>:*é"N$p?oGϝD@H=@ڦ^ -t.M A*n!s_'M6 q~dVjK}]c53Q$BL&^ħ=̩t۪TCE6t ?U,37(-O?Tke!%c.*4\LV7Ӯ3DTٞյ*?Ԯ[@7JP[J lm/2Y6sHJO%\ԑҿ TmIA1YхΕYŊ;^=xRV# uz{}]ϣ}C76lť|LT!首a[WmgMAqքpy$uLQb&*F 0|o0v9#zc5޵=-= G5 CGWҕVnycM^];,V@o""V<়s*VvfUg`jcxuM 68y{բETz~q%&u8|Ci/ -$"sUZH|0Ui!h×1%f^i+p Af&}R.e =gk\,>dC 'T@*BKR޿6_qz(IܮY[k̟c%V*jl̛hc{+6SM]q}.?ϖ m& M -e} 0>o]m@xQzɼ^J_%XYƄgRHWQo6̑v]z6\-xߍ^joR>o|V|U fMD|pZX 2+˧;Y@3;pOú_-|<˓0ƚ*nLVSyI=kWG T=m+dܥI Ut1ԇjnYQ|p)wciQ#6.3fMzr @t))wC8u_7=b[Aq|汃2`#RtCr5hM5ya2&ԤmEi(7U'vTO+P.as@*wjr+IEzxuP,r^ 8 -%Ң-:|ki3Qiϓ^?kH[ PmoxBD1\<ڱ`sK|e22RD2ZJZ~:A6}vy\Á:DтϩOi٣+:Ë,`ui֤C G̻ e,Դcy|%N0$]%O;:cd47EXYctwPDrh(}d~[j3^ݸĄpXԁZH󔖂EDz'K&ӣ.g)6R?~ ɣ[^οNg_ڕ:CuL!ʵZyAK&9TV~p%ee A6-vS~ЭE.ø#Vhug'LO&ɧU`ps6a>+!s5:6w\`;?8Bhu -Ws 7e?nq3С7ü.VC Mi<;[4C'3wݍ͉*¨gjY lcH|ϒW fxY[_ޠbF/s)9̹f|ȼW,5yzs -zk| 2qCN 4c07@a)O`aͼr%.Npk-~=X 8A+a/<2W"2+XoRܳy?/^H%MCx1+[!GM=c\&˓Ɂbc٪EPjI'7q+cn3fZmɔ  [I#GOf_OUK=ԑl#xᣚk+힥RK:$' /фd| QH.L΄`;O{{ *RܐԷ{BUnjnrq֘YJteI -67mWBu$`L~U)7g~+_lhd'^-~6w2)cu"\-'AbXJڠMٙ3;j%w'ĝ2ʿ;,.w"c֎Q! *޽c%WBȋŵ^IǞxʪb4̵\·ꆏO/pMղ[O)0# >=_ ?|TNYWKW;Cg /<`;A -؊]P7+yNVg}pEj%C͍^ڻWdso%j& kOӑ6KW\{1bUQQ1whlKROnDva`u5nC7Oun 'Dc0W*s/uj~8?CO1iu\~.&=Z|w9)2Iy{y y+rm)@}{]~)dC'7W?4[\7]ͧ>k]F!~3~4K:vI9V0 ܷvRia{Mƌr8:kggm9]l`H.H:NR4L^aƭnAXk6m_h7vLHb.8&wDHHBՐ;+,YtdcWc'Czq"v]^Rj©r2- -܊uc$޻\_׏?@GӒOm?8cu]T_3iEB[+n -uW}󅖺Q8&lYXOS3?Tlf|w blNf Ns4 ֜p;'9 Y]Y1ʦ3دd]0r&|:hc\+,+ t^7mf`i P1 :ى9'eODR 󊬓KtI)1\N aY2"67S4l7f"W֕pz{dO. Xcӷ\ Yo@8^pOni̹^j"EU(;^Y \Z |hwKҷҭhDqH%e7G= h  V]6ޘ+W,qZKtA 9b˞vrG=N V,oZ~`͘*h‹|%яUQvfs = \pi%{gB~Z-{vڔ̢qh*J`!ג&O9Wyf |,}U>7?uү qՅ$Ո,H(IW.lK;uꕱc~e5p$WMLb9G݂Y)ק. \Zy)|@>tZRoD㝎 [6$b[YssUOLxT/-]QTW?V> 'V Ҟ]5b)j86Փ~˲#dZxo҉^;0Ŋ -_A잶IEpBySv3+t,͠zM{M/ +>d횣DDIkWޑ`sX tY*!U`_y7\'[0WFB%=B. A&,@~j"+u#뻶Tn%@s9,Olֹ0讞5guu]VrziFߦ˟b 5B/O3I+ss2  Ԛ*k!U {)8)eRZkJ?g9Ipב&|i?%eMg|l?G*_S>o6 L;N"nW(gk{ b,S ny3zmU`E=s946jڈXw}cϱe Swn#Q->nlUT'V6Am$n;X h ]0hY:1='w͌[ `/_ҏU>l+0ea[bpqVT\ߤߥ0=TSspSi֊{Agۼ=f?gee_(2Gi)˕`]fډ |_7Rwuz%C.^P]G5[/]t'a/%+dU$]ߝ[3ǐF0H5s*!?_sg<2E J~K]~(t)F7;H۶͝M6NT[/@n7C07֒4|@>6>%/Aʙ U!bp^$ u=B_ m^}z9CG!WY28+(Εmӻ%8[ق9sR;N4alS SʖwvmX -|&3_<ǐ2K.:;4fz׃[.q=c/8 |' Wٵ1G%-efYOtBzxC+ö6o9=,הOe'zܶb0W20]m7370U$$>87Kj'^O4Mڒq\C X\[Mp?GKFr됻Ghp%EY3C#,*6:@RY~Zf89~C 0V% Gut5^ *쎈d2L{ԟ݇$?t{zAͭCō ?[-5wtQ>Zjgݝ4|M\ - fN[ѾTB4Iq[n?smJtFyMd.5Qtup -+ދAHF%C̓ww#,qc -Jm<|:}θ͗aȸ wA.P>B_&PAO>`\ӯ엇NjLo4cKԫzm<_LU-vOٽzE"$y "On>@q/b彶;^<J3~]>Ce٣;SC${k]@Zr~2tg֔n< >=v4" ;$aAϳ֥.dF -eCL=+t pĕӪ^] M{gk?^1I>_Cw"E- f-y@5P&czm:RG'#ÓUpڗXt!3pFܯHbQNJ,׻E#_"doFߜXV$@>Ί{kH0Wρ4.,y -7*o4" ߾`Ew&˝ J^G9a#IM/$tsWxZTJ3΀M~׌V`4QbM7J’&4uYњTu<3܉ 33|gFɽJ:T` wDt JǦu>,Qƴ(q±8p Į!rxt8||Obc~ꢁa}O  :O*Wio]']iU^o'!qKVۊ`l/ӫt_:q}9yr$g$E n0o}>Uo|R{>ew^<{gnZvdҽ0y8a;?@#l:smJ y:!(KF>a694pő^G7]qpX)̤2/j4^23:+9(][Nc1Xq[,Vz@,=Lǭa%WA]+TsM'ʭ (Ti\/%7ǛXO)d96+[i" 4@t]ہ{T_p幥o%N˚NC7)b[R-PnfL2NpaC=,쵰 x|xbWkgi]/xw'$Kov&,.=\y:.4k -眇E9T"<9_eaD+Y[L -gqo^̏P^EQcFU#tFK?Q6Kmb,Dv&)zXT"E -_A+V?4p98*?'C~tcQ jPQ5x^6 ^MR-a)]eTEysjߣd?0*4xM/ :SrzS}? --.: 䌆Tuȫs*4YJ9 o9ImQ7vdsI'R{d랖?|͆Z(rt;i6}Ό|)hVt;A}g]s=Ϝ6! ikavN>6xsI܆pl`f$ -P|@9v~T[I դ\qd) -rnXkv?'$ȮКM\4-;+V+wztBe;~(s"%VAo|8#GssqQKp. -;*_ -]{q!d P}zqCɉU67(ٷT/uIgWC̉nEa85 I}kճ]s9RB앆/h;Ζe3Ć[*)Q7Q+:Qz -~j}r;2rIu52Toj 8/yol$J`$\`JXc &HSQP0\Zr͖ȡsߌ}?9X(-NCN,mԋNcXCT_eNw~14}Se7*v'ܾnr՟==f\u\{s12"E?ɏ!V{#2)KeH틑eR{/x4)v<@bsGBD]4 vx#=t͏\o/ -r'G:fn]"M-- q>DѦϭTO7|\k f.oSEwR>y,I2MT߄{0mܷٽ}ȧQE&X{.CS:v]}_{q.u\I3{YD#F¢r]lpo?GΔuKRv^!>)SW ܵg K<$]"洽\cdQk7YN51z㈡ǐs#[u4t#SΛ[),j.k?Ӌ-o\U$a~2F5&֮Dtn)FJ.@jmy۸,\?&gCYFbo"5\c[Y$RSdAp:ݿ, -00tXt2C,7PK+z[yk\;wF2-}#E?LY&}iXLY5KlxAb)a(z _pT'QK]r쌯@wȓIDEv;…xBax,rS8Uc&7Tv|0=zᣟBxx¤zCfh/#v/0@aA඗6ج"sL [1IJd#Fb].mƮ@.Mly#O㺭j{3.U1:_MjzpX ό-DVwx*} =r6k8v%gS{m$W$Egw.'AЈYx#9v^;mz=n/X!߬B1F~2K9NC^lJS a3GrWf[ _Pԥ Wd(1b{m6q͹VB% c m?0;bs5G< Fd ž)1K.*ibdJ13LuXR`YP\{ѭ|ጫ.}?9b7-TYXJrOz@)oiIQ{yǹ=\krRO)SMV^*؅5-?Izk|iqvm5/}jX x/68/͞f62Qc9_W'g m ~ڲR90l-/YZct;]E}OsSḛ6.gUof鼈koMiU N|45QІh`ׄ /O#DG_0ݮ @.ļ uhuuQ*:1?Wsehmx׼<>8oaSn~J sJJ|e8fswd5`Ɣx")$?  nr&*۞wYeuhQ}3^4ja霚,,4rZە/XnuZhQo @NjրVZivbSj&փɈ+,pb|4dK%\^[5ҧ_FYgmhiգW9R,aW *NPiGFvsHH5'l/FD=\8^Q#`ipuK˽@ -%E GUfLV' -.ĻO(x agZI5Un\`C<:hTmUyL8Esxּⷤ.fL/Mxiِ+aK3cwܞ c,R%?x--<ّ;{Z=i_ajjћP&~K̝&p`nf-*6znZ팯y zßH^B>HkQ/XeϚ!쏴LwT+WNA?jk -r [%3jɓt la%Ab* fD+,K!G :\ :ܹb\KXo՚R0 -\SZ}홒(A ֨=s6m00 ,:H.0&n3h^b-!k+'rĐR>%kNx ES7WRL*g@)`nIj[L =/,%V?{w7,Ai1ǩTQfXo2يe@ae>s󌶹lUJCmS[w~{ @t-03G1țBҒZ#e<-\µ*3w\ cLޯPkռ\>HKc} S|w4s}{+|8\!??N&O/X-o뷜Bw Xj ֧cWu\a\c⿫Fĝ~t8*1khw-FqA`Gy 4@)n~q%]X64N'8zԣGS2A4=UW[ G 9&-٥ֻukR+1uFKJ՛咀 P|{85Hj=3ZdOrzq\v}i@`yPn0,5沨M,\iv+h"jݤ+ k,F':ͭ-oF((2`%4C,sEBC1ntrZ(5fT1TmwTmf2D -:%3:aW:-t1ega fsXq.'tըxvD>svX΂h(;K V5\ĜnlCoxj+L\O+ئCOqre&Y&M@وM,[}jo*߷g(tK'x44]A|rdƐ7gOɡHlE\jYSrW'U}\\H-'pֹ5SB>n r^vxOmnN-ov/9q /9JLJ`Y=)|$nI*c)V! )ʝöAt[~ TRuZ G~|% V3K@ ef'( Zr!xK -έ~ -Cl^hRN0m^GL%"?WAߛa^Rr -ȝ~sԁ4TKkb$zWF.+kYEks4&fg(.?ɶY=U.]7U6 x)f97x}DazxR ٯ-o!pE1ҢyC -'oON=u+< &x ӕo1:e?j]Jε^l@֢da_ܽ~cR< XURsn혔&c; O3Eu.F{OLEN.W!\~B/TT~S'c -UtAKꪈ(@rI /͚s.kщsDaOv)AIJ *v;*pAݩo˓`#ݻhvzz?W Bxʫ#%Pf>ʵFA7r@ Y~L >eKfζ澶d{p{,̗]_ްG(9UL$2z.78. 6{~SR.^nBQ[$+sCo:E^#╱]&fnV+V/Z&ɿ Q}:Ԗݷn,ʨt‡W)j2!?o0ʚMky!M|O[Œ=8{Q\C-:~~X)UbvW<{_p;wsx[ Ǜ *hlJFfHo28 8Z% gleL eHqg??@鑓ŕOJ0HYŁQ;dB1մz(+k~G{UFOgL)խ^]ozqB0m:3^y_{cgJTe$ -]Np,]L( -SUiB"uJ_UvU{e}R]5R5ccNRؾ$W֌NfTj}Bф]pMGjeGԷ%*y-k,(,{ gC5৛r~S0;z,z4.WoimZ)}K7pDTy|ǐ#Ece77RYʺ))1s2X$~QdOrB"h/>톐Ts89f#c}N|H*}?~ D&Lj-~Jp|WJIVy[2G.=,E|17Z3c=1 -.nb7,s#c۟{?&6G -=TLcV`:笣11웭'Di&`QL塛fӠďӆy+4~R^㟕}Ip#)N^R5,Md?Թռu i-6*)4οrJui561i} -3-fGͺq_şj!0[/a' -tH$bcã^ƍJ= HՒ3-ּKIudmu-̧#ʹr#s_*z%~/+ReFDL|O>8x^$O~ϘV&ImS!SJ1'4 tꭌV?A(qGʲNNN3wsPe!lz-ej:i~GAGf>T/^WW` (Zb ۵c 8Magtܻ+{6 f[p``Vna'G5xl+,vwN P+Sɳ`r$z'et DK-c`];^)3 FrhVBݩBjzhݨ݈?afޟ\+Ef_v;zW~ Ԣzާ+vD v&+o1镸~%U~g3n ӓYv%VZҾl>pKΓs_'թb+^nkE$dllE0M[帺eV9/ ߊ\yj퓶0~nM#Ꝼ9&sڏ [i[9OEҳ5^zq[Bާh޷Kޠpqḕi9Zw_79OZO?5zstGK}':ӶYvaj[ztR%e`Ù[ ۉ{nԆvuL ~~R'J;m^xW|6Eym@WOBkuqxmࣩlW <  +b~yluP h=c#v8cy;< H) -*S~s|cEOL@7hŴYƶ2-Un#MfΰU-"e'o7lVHln --eoDiM?Š-9-zۨDe@ub 3:d Av*xwftO%cӌ"clenlV5S¯ͦ`@8EkRKEh w Q:!} -Σ2A*VSʃ^,ZD.zb5ݴքpwy-'?jnYq6r2 !CY&CJ"uc&y: -LnT",2;D( 7(> XFELtI~Lo)) 6ytj>pKjD5FP2Xbno=dGAީERպ!B/~>pn=Đ5mUlwMڌ2K΍z/<שYgo] kz { -[zTdzàZ6!~< >9~rFyS;*Lnq[bӝ>* ~<.Bɥ 񜱊*%Nǜ:.OyX*jqlރv\ ٨S^ڸCYH\ -t~d?qv+RT1SPY/v MHQ" -X&B5WŻ-έA9ήF#L<-IDABw^li.+X_0 -nXjԬFʰqSXr jxqU+ݟްi@_^p|hN('uQ'SqCωTޓ f\8!ީVW)}5GGu8j6rF6y ig2-|jZ3ms]%-G8,Έ)fmԚ;[<5s_%pQ<5;s&].DzϧefX@NFR[+e;?|\x pnxG+^V~t Ui%1SGiďZ#c׵"fe"}CQ&߃ -kS<}}br'{YC (6LX ˞m9y"{ݙ@no6޳b^=>ȳ}*o>v`sZK[3d UP.4 * b`i88E?en=K#Ocgj )jߑ: -x<~ߏmM[rI7Z,4X"Mӟʱo0"ZR7plIjooAHjm:"W/p_oQΪ70i#9oXx,tx(nŤӐĆV\[4YVL]m<&kaO﹑BA -X ]m3'T",ۤ՚,έh[οج(dRn^`}7O{eIVDt01 -? 蘲noLSDm e:RORc$Mk7, -:cz іQnh'/2&yotǛ/)vi'C)TBuB#ȈT鴑E.v:iɖAfwl[ޭU)<#faI~TV8dŶ+{'UN~%RZyy;5ŝ]_w`P#ϰ.KyO:इ/4^tNݵ4Jvە Bh$gһ({q[e2 - a#-Ʊ*I`I%nR+a,nmY]`Lr-jxgsrbgG@ػF൉f~t{7_`gm&;Z܎zyn\<>TUwg8':y4`Wݕ#~#.5nU:}fU~sBV+`G]a6n񀹣:cu8ƫ>[$tmfANCbx *95V}>tmm#{;#t#|@؛F=f>FgZ͙`~iSuk9vTo+e[F_\o8[(VQވУnCb('h{~׊xp;-7#3?n~zwp"4ǰP/ѭ AaG 4X^3wzܦy .l-Wbu-_XjWgQu28^CH ξ~E|q!ABR/{Ul|ޫޢ=A[az~uӳeo be2r7 3\s[]uܮ(W4bO19f:!9qQZaL=W_%'-?q9NV`ed\JTSUНg*sR'C0DT@TTb39g2t*&Yߨ⎢I9ubVߖc)} {+3hZ*z t3QPQ0[xgUf,ɺ̘DVozJ;+rzqSl czyЋ"ZE7Y2[@񍓀HY^-6B2K7y:'Wu34sHU=mг=ywT©5&>%_uYH斳⎖X͵1/t(w{u$Ɨf [߬Q!iiЎd cUw1Vzἴt -;{Ęlrh.܇;XjL#m <3^ꛏIݵTo Mļ.mDU혭j6CC8"_ձg]DKg)B_UX#yۏ17Kf0>{yҠ5Z"+(uzv>p?^ wqXAµ7Xj]j,`] -HJ1$rfQ @J/z6,TFar&+(% {dἕWbٮH!o?L/{h}sQݤIRwr"B/a0y[|bVqw3/b-oР|U=ʸi# 挣±p.$W[lNċX_Q. -dc77_i̥gvc׵f ~ܶwO'y$:T{+<C͕QI6t lmX_p.2SVQ:#J'^vFR6h>R{\ʯ)׀ZE)4]m8>sh-h=jЃMɠی5hrU?sf~w]+Ζn2ۃ`v `e+0٣~^=HUYˡ(񇮔BiE{RkxQ P$?>]+r KwŔï.tôQzzRc?MDoו+y_0ʂo%xXW۝:93^e#}HfQ)raYo|L:jun>)ຯaF˞m9933y(7_j&Om\{&Zxa-/Wj5uJz'a,vNpάb)=IbeW_'i1ҜAYtA8]!RLznϯ%5ĢaGmUN(hQ;Ctq o]li=R)D5=zw~;t%+٨>8hmJ*6ٌS`!>jQtyᮣzJEpoo+[0=RSv[#bJ\8w)e-ɜ$"QlGpr*bc7aX)G5/z".Ӈl]בųq79n+G] x|} 4sWNP7_։θf=G̢磘˘n@9?xDŽ_Te7I֭);X]ΕgjW\R -Muu۹&=SMȍbزXQέ7>tPP3,%ދـ hxa]&ߎ_9~ƏI~bJpy OU}t9oV|PI[ ږ9פJ䭆#=֑뻦dkjlx,[ۉI0k֛Y]iɛk -0Qy(Y;R<Aϲhi\9YtG8ԍ/rΖXZ3'NcϦۏNtY/̥l<&S;0JrcΆl؋cqA -!;G ؿ<"X/#T?Y`J&KCix>5?EcA꧒kz]umr‰kJ=&t錥{+w%IE -_JN6>KgA>{[Ӿaپd#<-ڙGu̺olU2*lwLW KY'`vijbc;jgr_`uqPTSr|m\zfSt9{%5K3e/VRJDU?PpGu>v󮜫K~OU 㛢>#qrI"ܔ/1;N'EUBhis҂RŚUu5%?:`bKY&iŹi'xn魶/,RBO؇p仹aVAz-ga+ǧx핝rx[\MM% 9}hPAMSF -v>@H6V - -U/˃Kǩ'/-I, e㾺lݙ})W+R~P.\9.'+sB?wܫ^\pxu ̕Gj4lzXټ#ك 67i^_[GC[&C'To -Aip,;_wE\Aph+lN83xJ}eͩ%{PF~ANvs)\)8FӉR=[5<䠎?k w] Bd4[;]k<בxZ,]Ev۫?6nvG'oWTZXbX,H.*6O݈qu -;|[@-ԺSt0U)}] 4O;J%w/ʫ0PQ݋f@2XG5ZBV -i+(0ޔOo3{'OU{="r}`ν .@m۞:~fN$gaCx@a҄((5a㸝GKKP~;Ė6'F\yYIatS*}oDگB2*Kt6nQAʤfkUDs=W#FD/kŏ,h!sGV|;+u[ 6D]{iurNї'{l[,nA?&7noA´gʙĵq Q{P^'=½*ϖ6#z˜# zU_eZ (e{Bsa~ՂbH<5i{7k - -R'{VkZtI\œ Ů.l: ]E][Dw 2A޽ -`{̀[8ܚO[uj^2&wzJtվ Qݨy9[qE4:󁼲W6ccN{ӣ)TxԍgZfo%Y8HZqvfYBZӵf5ӂWF{Լ'əK!8R:_Las}`5Ө#REjWYeBp/ڬ_?b]x* c[4+쭑lkP)̥^nwk %R~C -uCvPŠip£"6:ZkC)##[fB0/KlRk ۋ׈Ol;43ʡŃ-N ;D+e<`Kݴ;7b~8\yrs^H9k9NzHD;fz(ycY6GWUd\ Gߐ՟ M.=m("ٕw90m./Sb T|klg%c*^0 >+Fchy5Mz |i#`.׷mМ k;66.mP)a*X!Z{W4vkV'?MFUfkhnO&tY'$Q6Rm#j1,ZZ1Vz?T8ڠ:XjuἹ1MZz|Xb ;0I -j GB0ߍ Ke],܅lD`njGH /[f0=iВ@ǚ։^n/|8bUg  Ch=NVP#9N!?OwGVP3d$wKt%'MoթnmoP7OlޮOsa,qJi5My(odN:}Y0avv2sOƨGGE.?QZIM6fk%AG/gF7Xno߄WƋmμ~7Kdw8CeiL4ݫ' (xFשCʬ ? wñݛol"mw-,BQZ,?$Gɣv{IsH__ {Z>GrtWnSë7GLZٜbB)ť -Aя%qgܟcXٳ?n$'/rB6l#mo>dxǬ-Y7XO={J.IzZ؊0Џ2'6\fA'+;[S -O *7T4QkͪEK&e԰B!}Ʌ@xz7fnw|$n% hk+W0~@{ՆD7 w`Z/* \}:zcrwW0OWݑ-m4G8dޖ F2;-~jwR>fX=#LݏįQ'BsQ%:΢Z811O tz] QŭuطD͐#w~էf7.ƅ|Ϩe>f< unK\}4vK*Dq,q&#y/,%/by䛝2ΗJ-s=ݮ f?hʈZn3M -$FC{Ff簰irWh ?Gt&-VgO<}R 2jY51(^ Jrä$}CqW7h<%Z<8y -֝Z4vW2R+jj Hd3E1r9 O@,]=GE'BQ|Ǩ6JرyQjgwzL& Cdq$VSA ^D_}ͱ3..jr'_%UX} -Cbք6+B_3!,SSnBN䮑f? /S! K}ER<^7"6mj9_R9~ZneM&匛zZ8T fMB./ԡt-*Kvyzq>? Q-|>X) 8Fth\jSՏk~Jk^.!YLѝ9By㏔x%'ؑoEٹԶCӅ'?J ͯPW먩L?)juȶKZ -~t4ۅ-)A^bBVֹ7=*-]]1k't ONX؎,4}O>=!y:+WjxzЍk^6yϚZQc4Gc7u=}i96XOBc%UA[z6X24l)GM~K(CסBʋ꾃~|3i|z*&^m;#TkoPPPa=~2)ޘʸ'Tjܴ=bVa]0ˍr}ӡDDD\oMeǟށq5 -&JOh7OԈu^ƪğ\E_kӷEz U"_rMhx$g uV]M#i }sH=S,Wybf qux1d9bPTɈ[~kJS%hbQǎzy7a#m^jϸuj -Eܐ\B~x!87=׺Uv=^6oQk@S:Y~JV8Eaubaz(ϊB쒰ZL[YZrmfmlz`L}^bj2}61^>v:&췱|oA4,A$R -%t@}bts$J~МUv5xA u夨hXR6Htn>WiUR[^oSS~ ׈֤i}0=V_νo&F_wtu5s%-5\ozQ#ylSApM qmG5\MM- WDpz6dY|rw&X+s0fnu!˼6 mٞ7o6WCec;pxF[gI v[3?szfJbq' UndV @޴] 9'v段 ]d9+~ltdǽVwǯ&vkwEqJH. JXh(mX5O띍x;\ź>K⠣`KǶ.Z -%ȯ̲wg?iugH ':buwRBUTy:u* v yK [W!c܌*]jy)jUfP,t˺R7gڒcv8rI-_[޼+xid3LYZeo($?.n2{Km۬ Pv("7XzjW>A9ggg1>lT:,Fz޸^bh{vin_YdˣZmS)htZOM0g,܋j pZ6tVZL5 5 լ (W\Vc,kFY - ,m߁|Þx, 7A'5\<%Vz{'^:o%AOcY!ҤKg -Uz2m/=I1;YMnU`. iTD YAŹO\@lQoP^FWwJ*@EUVh ,{֥v(Ԧߛ*@$LJṶkWot sF Vu -;9OL/aDpB=nW%k[4Ss'.@}W?Ai'@(In_ؒmWcMz;fh3-kAH!^fe4. nF 8eǬ4Yӏ7t,Zb7WU|xt A?^HKRCN{hslc. 7AߗtUQ_&ҖSm҂ Պ&C,XAb(^T»4xF+SW4{4{6A ]/M9}D_$$c(Qg٭+࢙Ɉ#ISY꺂/*3e5L^[\5I+& -HDkO9*ovb[TB\]%p +G1mzVxŽDqd3@c2AM.> -o]n`HAe|;iRPe ),7CU&]1o-7v+xԊ)LDj_}jʆBGuCPg >h}zjsuh}a*Rt[oiZÇ]Ȱ?}7k+~K|9Z`iNQ,r1pko٤VG47C4:0ƙ=L[F=DՖ˪ds&dZ.&c׷xFS5dNMT<jsQg 93Ǘ;3E -gAqv{[λgo Q [yx't^2p\u]6fz,5_ݷEރE&>i]%[?͂2C2nLx'2l?k{zJ|*Ә!x+t?k߂ -)4qF^GY}s\?\+ -᪭F _m%$535h 9My`pƼڦT1)7*cvr}AL&uH *1 }׃͚@{o3%ƒ%Uo~q6"[.ffUixj̹70*5~Ç鵥 ;_֫iyүJ+,B. Vk٘Yslߍ95A*ZY-%)x;3rl ~ FmDYsX­γx%yLpD(mO{LaOd\P)*5㈓c,M/69QZθ-7C!C:h'x)̮i,07%W_LiW:UlinDb&p7[!@;U5B} cKl:vx7GSy-rÐn5CDOSj=cA=}U^}5<$1֝v=o-/eI[)89;~6 %7_3D]ܧ+>&eQPE/:6>Z#YI|=k*!~ -&s[ڑ%qZ𶝿-4 OjhgS(}6[9,6^"7UȜ[Jzcʗć>;yi:?-MKQf(%صVFVgW.8.~@Fܙ(b'g(-w&,lY*p*MHJ$*($Nnt%_C\ie&/ݲ㺂x+2r̵z$S- &Ce+_Hm}ƂODXrFm=EĄ>(丝4"<|SyX@< .lj~0)z)͢;כ>s+}5Co -/woKTvp -Yar/%Tq5r5ʛR|ӺJ!YQRE |F+g寋쮬S0x]t!X]GS6ɣka,6}5LiLex͵`9I~ژchH+Ũ/-a:ÜGBҁEAX܉CbŶ::jv<}F54xnSWf*(6RT ax -ӭFDkձ?wo:7)du%:OccRP-ىZv)1f?. '`fvFU)lV4]ϩ_<ęRgص4&TWi̦PBm"đ"^, -9psBW}k\u?]U;4yɉES>C1n@>|™@Ƴhb-s-ZD_AJ5/~{zbyܡ`2fg,>u G^ON*8#H7{LQ](?m()כ%$1lKZXϤ"Z#ο haՔԻ(Ejeg/J6RբVZvv aaOH +D{^Ȫ/6ў<"3}ށ1x73)hU?b/юH t<{K wUy#a4ni` 6{̄P"Ί߁rs@+ rMjowlheGgW}2g8O;mp4aӅҖd֊{)T[@J5;gnCDkJk lΤѶbB3K#FKA&j`FcrV;,w5#w;8ݵ5`w/1n,q߷pPxkN[C)ё3@*z-Ym K8/4V< %X%ns}=C'%^-x2e՛5o]U{5̲FR2& ]RٔxԪ+떒Qo_"7r$}5.&}g[UO -{ʞQt:+x 3*O`:a9 XB2$캅\("kL¦!5]7Ƈ>yXz!W2E>73I*ӺÚElDB*#E -E -]f?:Sx_5Q;s~ʏ!)A{œ$1FO(yO71PIE07zTWvQeI5k5#dM-fv4>R9-yLg i|6ĝ,{݃Xt7j{+pu#⇧ 6/lsut=,2oLeōU{nמa26g^z/;E]\Ə=|kBF,L֛xo>zK0|2ke8k1|zI0gwtlKfvp#`#_eՕYqR. މMTvXJ>qrp\}ێ0c)1iUF'q/7Jh4;^y'4wCkp(G ӸOT7СhGkO_x#"YYou<QT<=;t@o߸6'7R>sIm,ތ5OW.4?z=Obsrߣ|YX41&Tek(bóHxrw;)]^ώ f5qġN?ci{5rJgMs,5Ӎ܌tҾoN_.%RA &}QtmXZikѻS)JtyreAﷷ+mkOWi(&X/w9-t?dxfcrF1g~)IHc>{0xat  sΔwA8 v-@R#E׳UooFey6Vw$R8rБSpڗGR/{#R^.'}]zU_-*3?t{ F2BRà_g JU31Ug4h[KeWJ9`@~uh2P? kSίٚȿIePY[ z?$iͼfja$-3耆ߖ3p"t)`8ZS{]GX0OpzHܗ<&j$[j\WyYZJ]Ѕwi<Ġ LG'Z:7{#Y8sevy#ƌoF)f[tӡvjco j>SOgU[ȑI~1/X?*gR&:@Q6sV;~& ngaV^F[U^z!n`YzҎÖ6ڃl<̙)F&nȟO o]՚w[rxHKgU"oRhr\94Ini] Ev',Q_W ೮c/mMKsKB'o}=4^7OU7f#m hdN⫽u_h4V+Fov. BcX^-[ À^yUz1 -/pv5m,X$5@{uX)S ~}~27ʜ.Ej=\1[v28hUj;v-dMI\ -W-D -=w,y**yD.g+ ʠĢA\` lw6L~rRgpRoq*Ootos"_mܖM=n GD;(9Y|xW[v -GpAj ;.)ٷ3Us#F|t˭ېKwG|؋ɞ!R)fm"rG2zInВ-<5VpqF(RY=v# vGc^U]o{tlم߉vAo;LΌePx*q{Dw+΄se>hW.˲YW}ULh8n;1m)8EWFܧZkּ#q?nwŏobO]7kط=|>BRk<׽e G҈UwL|]xlOvubty獯X%i(UMܳ+CZqgFqGL(] W NTǣ}pOޏ#[s6?XNJ:{vuᇵԉ)姯 -)ﲳxuZdgh%Ze\2D#"h Az`lOdt7*&DJ^qF55pY|;Ƴ*fWfݔ&c5ے}~|R\éU.=ޘU= Vō<7BK8M]Ch8I94G ڞ3J9) $mT:Q&/M޸}:=%ةn*W֫!L߭7İ ?;lxDZYSPj[l2yds k .inƻ`>r5jλ5(}V#8;,}R3_Hϴ-Ƙ42b, :XphVJ'rrW5BE@{ꀚ}xɥv⪿L(^ EPQ4#̟ë6R'qGTD[pe?Ȏ3b=;Y{3ǚie 3w5؀pnHv;p7G+ v\yݪǗc^${/poMIn\WG};cs؝B^8u fTsq30wܘCSka܂ZG%yqƛ <5ꛥlnvB䆋֭Lά!AQ/GLYŞFlhDmĠYhk폃1|n -+Z(-6"ǡ|~ -Kzz|C={̭Ȉ}ZXZÒ:lK -%x -t\cY]dgI%grfv -:%SQ-њ}HI6v% -h<ZJrc}CU/'j))ODh=p2?e&/b2 tgnol z+O\AÆ֘5 ->8"S'P\{ `Plm!̞ՅB^ֻ4-_¬sY'OX̍-XZn| MUtuţ9mf=-HPd>?B @v7a`fU0C7%qw!wYr%vhnAUKr0$Z8qo.R•tq+ttƭ˟1- -*tGkl~  qgzw߬=Ƨp(1_\SyƫNz֋D$M<R@e;XG.`߮E;~G]6z/xcoqXRF'IIVn гT%B Qgӳ88];*[Sl[^H;]vu3ܽ/^Eu::kt/]KYr4ɱIiZZ+"OUT*9lSBx3EWlTqHU4o9=fL&h/m! Ud&%5ʉfOysS6:nIùaRep656[e) -mf~?;ǾIkiͶR'<4Oj4Kww SЖoS`<>ƒՅ@ -ԅf5`p}-ug`<::xJV)fv"gdbw6'.ևG)kpAqϜnƫPWTsL[fT,-ZHwïS\lJG㒘S;5 ]*Ρz#"\ժkO}˾؎3 w0x_Wm/ƲW. bŏ*<0<&stl[MmePS}o TOXg%ctZU yq};$ Zk%M6M$63.Sc0SX4PggWʹM#Xl3p mv*1%´\7/q$`K' H; C\z:ai``ճ2;owhm0͗Ƚ1 sXI9y]W4=al=1{ E)iW*"O#+/ _fnOf|uHYZdߎ{8s|$kJ<[mSȃ{7[An-߲C&d_2QMAe#&8uvpCU)8B{]KC_#+%̏O)@}"{gNA9Wf9P -d;=%h~(gS>(0q"ҕfY1?`4S?F3 _B:LPD%@*itV aZ{벾 -҅>‘#灧XSIOဪ G@;*nhY|2 f6&luM>3]1e?;BP=P0hWeDý_kGx1 vQqvNvIIs 3S_n s_7|>vz1tOWt.x[/][j%m_q/HɪHV".|r;y]mdFkʲ4@2O(SWض1Tm -lFz$:qlm -{΍D< ^D_o%H7Ք[Hi¾]w@q̏=Ҹ -QV%G0bm٪s4ג^QR<Y P|UJ;5rMō:s0Eľ%UoIpHE酈䃳=n]}  /)X} ׵y0Oe&sR;h-/!Dždx;f +?e])oᓽgoY މ<!g:ߗFPnH֜z|͏Qdݞd:lOPW;RY -uJ]:Ip,:W#z!{ox9gMUVx(xƋ#~;2PqKZ!حwҟSS4C[I>im0w[<:'Cض!!^=rULdȔ -%+'?>kWFUGm_^>ږ;_\&qC~HsMr6KUL+0n5N,f|-j׊藭ho͢hAC&Wögױ&Owa `?w`Q *svpR5[ ܯLu -1oI]ʟ>ptzLKH#vݫvnu.R&#h [(b}Оyɢ, Y,0Q~2JU;P䥝߂nn?!tx'"/Dc|1L~D5s>')B?;.4) ܼ#?F_xҔC3& .54ힵo&VmwtP?p&U3S?M^ } pי.= ֙NiogGCqg87ymqe">rWlVOmF]( 4ǃ9԰zNlN&ځ_~lGNsUk, z\ШKOҞv*|t<ڪ-۝z!jPcM5/Mb!XMhd՜jEЦe~EG9'kz]aS_ |p s;WMU  DVwɼѭiOrŇO病TEڵO~G$8 gkZSfSc'+xTG|]t;gӆ^v80XwzCT sN :;fOw3S_[PnN -;il$ْEú \j\j$=\L7vϮs+R{6شjw@JzyXAvzլqfB̶5gS}Pۥ]t~@@"ӷ49/t틸p2wA'B*l7̜|l"Hw|vZgac%@J:WvޮΌyKإT9.N+"@ ^yЋ95蔼{|js9=Bbv͖k.|<:%b~r[AQm{;D|(]\ OW}^W~- w i+E WUmf'mr娮"ղ^hDPR-/oaD#صџj>X;/+HI}Gxwrei?[{熖?vY;<[c NrWd J>(ul~#Gigl_r]аfRwo3xtk5),m/ T3pܙ $:{˛.v֗K;67Z&wvS>"na+z7[QX׭ l;`Z&q"?W`׻-Uܭާk +m: F+{H]&[+jmI0Ƭ+֘ -˧u[ \n]nba?6h=4|+)Jֹ=}@wyqrPyvw#ޥu"=cgZ>XbNkC/iKʣ -/)$qRP-Uט1V>/N'#9T5g2 U~Nܳ 5mx]Ms8SnHd{i o,-fj6_7 i<31u9j}Q.o8{ wx.8؄BƷt%M9݊^繙Z]5(Om Ʌu˜21> H"V>Jn1oY#8wjUdw Lm^mJ@?" x;j7j@}bAor>鳈 2착eܖNKs?ڷcW=r'-'+g.rz߮B]˲}V}"zo8?,x3r Lc;WG{bK]@[pl=B՗~L5ߐf,E{;q/*ZS+;,1A $UW$H9mӋ ,@]s*)d,JX~X9'S@GC!84)=㭙YZ ,k$p|tN -q ]g;@`0kZvY \*Ӭ0 YKbr@zJNk(%3d -0|*߅5]uBzdԍxyu~:;]i-@t6ys6H7Hw5MzG"5>vGwȩuJ@2Y |RnU{=.{ٶ~)=m$n^*w-yDC{w?>4"Y$ -}n:6]6gɽct&E+;,>v `![g %`k?C]ħ; :k,FݙF& -mGH29iwzUVi(G5}~SOtX l=6wnȄuBǣ&kD+"S2>Uҋc[Qף;M>PэאJkcL\x/6kXXovǼG.[h'hCW%"qKSފ  ]Ǽȗj} {2-_ӷA2 ܟ6@m(кNޠb8-aCtՊFpUKHo&_tsP2f ߝN7J߭wE PnC(DCZȷk5TW -78P7$XҫsEyض@BԑrwHj~$z$L]n+ |FF_(=KgieP|r~)^zG[}:#FG ޟV2^>DJC -Sz;ƹ̽Kpcn'"aM>V[RY -3Eo-+W9JO`d5M4meME=L - -NZ2cK0zW!9洋?ycIq%zK/:|ا F~JRw=ٰ*9lt;'fˆ Q=xhgVxPݠBiՂ7:>e qŘTgs|,N~6p`"Ç'ɞ[rph!Z(c+,.KƉp+vrTHlG|Tɯ{X0ۉ)ZST˖`UOTۏ,>.Q m]7Jc ?f7^zԵ'Kn7*n~LU_j"}CXߋ6|^DwIٗbȦW*}1:(c'խTPf3z72W_ ˭Ǭ'2*&L% L ܺ/ag%CT?ᤪx {JEb 6 !ksġkpYPF~*InSS"7 y}:lkj3{E ܧYƌ;foZ_]ǹ27kYG w" yw0N^kej/_kMc 0Bkp-ai<ژUO}| -ԑ|'qj7Ao;/_oRسAҍM|i6XNv>JT=S54|yj^?[޶G[ְU!-5҆gm(r5o9^VLW^JBINCUf :綂ږ-! @@@@rQ9g1?iu[ս_թ]gg`ۢcNӏඅNB 8ظzV\{|ĴWĪn7;PwGӍmr]B+ZSUVN.!y ѤlHIwy9Z.Ay|iNFN̊}6ߗꟊ'L&YWܿ={OoGo#-ݪ X;}JH+l󈡐}vZ5F^"aO븂(9r׃A-C}=nYv;i7a'iO|$Eyo:yiU1|/_g5K_-mMXq9]J=`^P1,Q !UdԳq2zמB`]t&6oJ1{Zma]}IXu،\E/ycª4sjnρjog-:K5yv }:8cnP֡-ÁO> %kܹEpe>z}basJ*501[@-A'g_?]ϦvKoތ@Vɣ /wEg%8zςCyM?o5]+%OK뙀!WXe)hf欣Q7Df;BSz3jqkg1#sG[窭Awfk|2w_5E " n*^\ٵI(?4ykpwE-ٳRN188ym] -s=dݬ| rSFH?V3ږA 2 s=I(~QNH 6W -!=-TSS:jL! fE/}_rMȡ==JsZz~T6x*xw>Td~X Ay ~-rX`棼:tnv9k]674pgnn'g:X|714P:fh468 ;o`5g*C;Bb'yN̲w&`1T -bck[< /-{[diuƺgv2>i8 -zjFTw 5fN*̠ۆ=oG o %&,̉$onN)HzVJj~bwwB]]|#H͌n,Α΄[2>[6䴓d_ Z}240ɕ Fc4 -ɛ2Y[1v0 -B*gLO -t ;Gw6On-nlfG ϭй98O:v8T%5x^J^xoۈ`lt 3O=K'CM,*4BՒ+>d(\O,d-x;H;kɗ̬N8"Id2o#2ϸxn^F޷~cxn3- -3ǁ+_.,ykA~PM=:8#\wyuJ6-v5qwmo g(ʭVhBNZ_ɾ^nIp}Ӎ* -ˆP=gt~{P|HU;'lR]L7O7O,SS^P StmWi|7(`cnɷwKGBSQ<ޜ ']H?rnPgZV@\F0k4 k\/[啬RyQ\_'tqs݈3õ{1f琻s7<E5j֍/%%VJ BcLގhⲬFYҾxCIp+VYծǹB~$SGdם>gDz~ߣn}~'}Ox *b#۫"8Ge{MыzWOYk&B0 -*>qu *|TxϛcQ3F\{ɀ84ޞcIlVۈ{0 yhs#5F5$aгgzR!R -zMi˭g' -,?Ek׳=4\+MCȨ}ʺiKE5bMqog՗rq:Tc-S.R;[3P ?kQu22S!M88FA&i%nT PV@j|bU{FGX&v֚1YmypqY|I_ڪ.-u[zYG,=ݴC8+_'dW18ʧ8o\]_H-ܜ#uM-/kCRh_3󏏿ճ$tz%G/6u%wwhtV{JKu1 XrEP[5~ cpeCuIki5(bkǮ[n -!v+)QkqǬ|YT׷rzڈ#^-;Al;MgV+[Z#~yٮV3&f 5<[ϺВ&u2Uv$ۛk~\? -?ƅib5fqXMkª2t B󒟳C!Z7#pW'}|ctTopr|EK_:pS):F3j5Uh-LZTMB9Q6k6TBw}%^9vFR7khrv[*ՙ믢Q%J/i}% @o|y#xhnӭS*?ʷ-#⇯N9(^A'P$9Fk -mS}"ktn1Gg>_y~ؼU3y*bgMᷛUZ2eb4a *-Z2i-~*4Şu@}AMuO=(GW1iSwŪ^J__*B# e,u6ֵe,8f%7iBJukIrct_?.ba51.6Cr%eZ^,@+h i?>V jSP -i$$3̎gj0kfS۵c um"Ӟw-ܰO/hlNyj:/IFْҦlU`нiFw*Mg5}6~etREmudZʷ͋Y,uahoRG~g^Mzv>b}1h!\v״{ ۉ(vjCA˞7O^&1ª\N jir*̶1\SM56Ya9VG'}9iPCw,Hmr`lk/߰Wuݬ[n\]R!>,ݢs6޿;Ճd /Mzj8KNi@ZpS"Ls@tvb"^^*/VR/y޲xmv/*{vf6 H-^gqŁ+a^8^Xx\Dur(v&&3PcpoaVUCgM.=X U(wCQo (sr*v~rmiVӖ.Z˓KSzISu9攊t٭W>W !vie'E_[|五8J}4 ,q?ohkEM.4kHܴZغITv: }\ ^UB~}YmIakc`ģjGp'8%׃fvǓNޏܰϫl|[\r}N={OCf>NjiYͩ #= ]w[yi4݋6v]vǹgx5F³zq``*8_P&oź6V^c=}ˮF7nOuE[ ۊ.E68iT_2B})H IK!:]*{0n6YmHb87ubdEQ`^I:XcTPS?y= -Z (IvҨ˙^ξ?b~6Ou4H~/NkL'1cyp+Z2ֻ+dHn7BMoh8H۸?kn?Sh05D]F6YE:]b%=\ wގjjqG"4ƙR'.L1 ;#8Xvuw1Cnw]k -WZbcf׵MKh+k+aoS_ޯNip]L~ͩ`O8}y7YN,G9靐pt$ΤdUrPItg >$|% ^ѭMy"V+{c U澒zCSC,X^M- Z;Z8^48D9F .@5Ɏ7'M|UI`"F2)#j}|SMꍃ5wT`q'ͥF>q~s0&nӢD׷x&Aekw*#NbŲm ĸٶiC`Q>O\ -HQ*YN4`k/5@zlAI@5j%Ls- z~A줚jL$+6=7^{Sa@ٖ C;cIzzG7ET8B` 2;A 3KFq%uVq1Qf:m۽XG 9+t/ teDB -; J^R;&PaA =|$玺Ae&ۢk6*chc0_ɗꞚLZϓ6,ZK8j^Jޥ[tD[1:xIR͡mPJӅ?ע\ڎyEWeWRCÕr3fV4^}=xqp4'=>Pscyk,A8~3 }URZwNfdZxAÅ'+\k Zft|R YS)K0/Kgkr68%zhv/7o|Vמ2__OmQ{;b2LSE;a`k8H(hy;;5ZׅqS\%_tbC>CrnV:.8g0{JbBȉX`'AWU)BpcKg֒WӀk`++ݢP ud Gpc)It ^aIPʻ5CmD; fNP驔ъ{ ގd -;CZj]¢y"MYiاo#/<eK,-u͍EU60Z u|h$o^Öwm}){Wਵn1ʜQTs;MK ^^V,y5VHqs6l0UNB&EGQHf΂hW'~Lp[2%\,q+`:, ~YZ~TQ̎whq`}3kj*Ij.k7AnvX1/G7ܻ.!D]6*8sFr;"wb9еΧZk> yŜEL"lMenMj<*SAj=mOe jwjBi};Wn|Ӕ,x1 -ZT,Q^Ϳ gR?7q.Jtm]2]1K"&\|t H)8l8:zm{?C|OO1-MkZO GJ}vpFږ&Zs&_*4іfgT։ -*o8zBfr[{42:f3`v]Ѣhl9OuJr,3/~jx u@,sxEբ'h{3 7gAC_9ɕFмWTPZa~JCim(F[ѠRZn3y(O5ʡw瘼m#[N,R[ڑ Z~5v/饊wgF| EP*OR;ގeg7d|XG*'/ <ת봪P2y^=)y -`po(!aS;mxe -eZq&#`50xs^Hew=j"ON' -P[qjt߷.S:[VNHZweiw)fj֓e+c{Wl&X;# c''r&" H]2E4RMO3_ .Dv94FT #-Wu5L?zWvRz|h*?#kb.{ђ Hԓ\8w+j% qpC]}Gi` };-(Y-"kﱏ( -V({Y&UЌO_7J@VCN-("Pftmimj=-SfǎcM\ڍ%c&A*1i^h3j8[%,y~ɀ~Ʊc|&6͎J> ٳ·5mrU+k'XpM4U^mިO)mE~% ƩI^ -'۾&MU6.5O*ucL3˻>Wfu7``n{R>O7wMQR뺱.A_GĄ3+5gb orb]F!Y`(&aQ{D.Wo[F9;gN`R['nn?A /EoccyӖ͡)ں-^V5!E^[DZ¾KI^KZw]I8ү;B8ջv`)3>ǭ:v"6t[l#Z~& wU&mbD%w}h?(o_T3yU=66 &,ыAL EX;/:=BN}/N7?ȣULA7e``ILF+5݈'!ICpJ{W/t- N!BQTWj;M"tt)#{ ipv -btMzg!\>IXUݦD0H@pu :8u@PZqlo! }d7Uw-zydf\[BAwKHzdw S |&#4Ǥot]Ͳ./P|1~@#>+ۍ.~P;D{0Vq8C}5>ްC[(X{d1ӷn- /ߌ% ߽;Htn{mN)iCе Ɣ7${[*ڶ7kݮ .`ew ksr*4lQ5~w55̨]۞#<%>}0U1NY4M;r8ɱHj@;qxlYI1Xp .8ʡ8$}+j,KCmTK,M vP^_(/kJX '> ٞ&ρz:ͯWQ>-bo.͛P A`u6Bp3]yWW?܏nA.mzWdʏFJgV'* Uu.mFOqe{R;E;BȽn:#1X/[XSXxF_WwTk6_)iK!!.\7h E.>Mӊ\)Ոus=Nq~MuH12Vtѻvͼ6f֬[rfy禎+֫zZ+j-n B%;3k{)qwcG,oA:3 yZ$|vf_J(tʝ8eh-z0`_vZ\'s3:#h[!S6vШ:*uYa~Ǫ9PrM 6ouv|kK>^JsB_푴jnu|̡S Sf\*g:txyMmsAvi3n" Y]ơeE#>r5Ѝ^?޻!6F}[oj+kh1y68B=O 3&sM52Ø(6*6 gը΀>2u2;f59/'z?.@輯~_@wby]sNGyeJyۑ(4~NhG s܅a^B~}=&?ǿ:L__f1C=O{:/+J#mr}QHU7˶撚> ΜayJ# !`i?`3d,!/gϼcs*?L21?Lo, =-o&9?ϟ<cf},3+y{~iخUbuAߦit^&ZFU-Sv=???`*~WԎ=*>8pu;_ -QL:r¯^ɸ6DtxC'<S$%< 9Ð69wtLmr,#hXWf@@ԑώyޗr=Į^3p7012<˦;_˸QZNCm'FWw3i<3[v"Jb"^jӨ:/X^<2N IE%"[٢AWzE: p\xQhơ6A0$>"#rX72ʁ:p:=ϕ$1M_Jx˵j/-尥찅n€H=&;"?~? -ְUçMnν2kl6xp0_ A{ :`Ĉ_J:ڳ1hß<˫ =2a7uשguեnA{9?:gNjQKfr/4naqȧg -wZ+D#3vIV,aL]{v󌝸߸Lf:{??:sG@@Cc4?4?Cck|K4Ff?*?L?_Afe3P}3-eI# ?i}讼pE9lx.ݧQNfe컏q- -S-w`yE3{ɬx|")39cl^3 =蒎눝^śzi5?䊛:~T3 -i ||lg7/[t͖H,;}ge{W;j"j/9=!wrQ5ωׁh|}C#9hvwwmfFl -`.fq+O^Sw۝Wτ?^giP?@u@Ղ)-;ɪmuokNLTs^CR8 λ,+'/uk9m_+4l}($flo6`YR<+Qq zd<.цz-R_ -Vo rctkp; i=0 vuŻ"|΋sgoX򠭃ͽ=!/:NM -OyFW`jng -O;mj&6: t7#~b_xMJ~mԏlಠ:t>nq!_|gpT.VۺG6ϣ޾>KN'Zm6Bz@Fq}Is?LoQJA c?,#h{uU<FZADQ@P=;y';7WΟW5uWAUy3M%o OtT+J%M1Xm5Σ5#c~OxN >#Zq -q?yՠ.sq}<[z"J_ -T 9UVU o^D_|A}*}֦]\'Yɨݗj8=&z;[, }gV:EI;T?;>ᬘAoym|ǵD+dȹ[xkl|Fg2 +\[bTZ  ];ems~'YY#ĵ%5mF~@; p"샯Xe!%VuU(.yDžj8gE6ks92FrYz*o!V.I%,: d!7jNl^~ 팽iyjUp Z[# :T.BCqmuɁlZu^˼}njz{zE\ż}U2#z4Z£ދ昆\n2F~0&-87&xBv~L5ղuյ,*cE~?2꒿.fD]!mfY%֠J8pFԤj~}zƢ9ך{] u> -n޵k|U /47(Q5z*/SxW5n>>frg*@'@sQnsh -"' YB-{/NQ.qȾ)ja{H?bhN7op:Nە(}*ك{St, eXjAMM NC푸uxZIqsϐ_G\y øb5OF*&^AOcq9f[r n]4uv=l;*`_cw-&*m|~ ?. ӢL@?- &:%_ _fL@r.^4_w n/shVWVEY-we<&T(8Ve-fl8F+S:ۯVZ\VhN4q%<q޻_qz? /0Krt9c=]X1YߵF z؞]r7-?=E5mNH@WQ D(kʋ 5/ >O"aHQ+Ph@ﶉϽnE ~D`Wdίk:lغG>owaxu<\dhw=im{WYҞӶn -47Uѩ\^WXA.!v3 gd6Sv,{aW͛t7zl$zzvն'@CG4pN7ؔZ<u:Pe.lHǜg]퇆ӟR$r^Du'\WۓwWOo*_@k:X>,Dž8}F̭bm!q3B{+.?׎|){b֐]VLޮ/$.w~|8W-gUؽ%~<ܞ:86}{3kesujXRFX<ē&Wݍ"YEkm< q}F*:6O= Zl+Y4;Ahr2⪲s}Ilm>Q&Q<1Jn6s-7Y6D3-y`&crwCC7DqP.Ƶzr}yf>NXv~٫nҗ5ѨsHg:\_.CM(-du;|񙆳Cߋ) Jǧw=>,wSJ/$gW}gX}g]]:{9yiо>kJmuEe9T!͖f8: A=|慸@|xT!2{Vow޼ك^2F$YަS7©r--1@QYyk% JП%l?}(JL@Y*NGaO95݄~/[WqiWZ.fqRt͑9P?׽~ݏ -Vq}kpCwx-cʻ8Y:.Pa9v -;˘9ZW*\*bcş/5k!HN6]ѮSӬTJYywˢ=ֺBـ`yqm^G@.ݎX&9Ig"I.I.%@ա? Aҍq{vVm^PB.QuF?6 3l ]BV%TiJPhkݧ>8$qsĘdۭi(Vi­;Ef5YYХ - KDKәAч hшj3kZexK7yzLFLkF"ֶ-Pr12Sy±E\^^4=2ʼ Lgk$?icw5L:kB -^En)nɅkD4u.7 h꿟;gdzI~1J*DvOs4cS(F_¾xʕeT%\2oy)r_~`{twЇaF D<2s1ԯ?wVCkw%+ozj{ʍ^Π\-j."n!6#ˑa25WvZv=5,#uAg 18'CvQhnF'ar&m4'.U#Bk6~`RFWqq E(-\,Icdǔ6?0 {V+{tw(sA>ܨϛ-ڇf^?b42.`ͳѨez?{|t}_=!D ?+ 9~C374?WWci&9s.ifq>п??Z(9@oZ,o AТS}ύfo 0~kk1cYZ&<˂8̹|4B\)z{MQ> -ɸqy:B5ӏޥ]`Sf9ҎemlJ !Q+;1*׻ޥcv?Pgصrk54X) fp<v{w91Dȉwbx;amzuPrc;]%APH2aH#y.̐&2ϐoham7qOy#RVrKTS͹٢a4:}awFim;ow_-?zoȨ5YO#ДVU&H -;hC\nˎr-n=!y-mQJm%Qȹ@by<2rd1zH@UϠqҵOF 4=/R&^1=F ܸN(F}x]ʻE;X)Q endstream endobj 293 0 obj <>stream -&XtXbps]'RezuZݬ5:6 v~K q=Kݕ\o] ɜc+ {%Sة,Rfn☡ߋGMMF"g4Vl[ -=?ė/Ms"k?y+T>}.l8=FvGV\V#AܝݛE=F-L!JR `huyD^ݼ+( -sʓ|<[aXxP[‚ $2&``QIkxrNEnˋMni~Bz<Svew(*2܆"`YIT"fK54q3*dj,QbeT]p8@ 3 -bu^' -vuL1+ -Ȫ wY&++4z_ŸF\ShVE^7YҸjLڵ܅KjAjm"ƒ -´2b;=+sXl3ܤY3mX>Y %ɢnkE.iF]n}6jG|e;tݩ1[^{2х[ S#|wH@({<}:)f5a겞\VLeeJ[3"!-QO%aq9K>稨nv(в}VBIYfGFl0tBm<}f3;VhpCstf:2 Cuway&ӵ@U(fd2p0xuVdu%kaSݩj,!zʆ} -6&ɦ7{,WGpLN3D&y@'?lb<|k;'F/G|90H@Vg+0!Ǖq\!"(?O&nw^m]ymv?+X\OlvƆ4 ]VGӗtB+}9RdڴCH@_fioh+ϊ~Coh&9˿/Oi&9ߊD+Wѫh%! -4{5"<_ ҉cN2s> z@T9|q|i~q;!ĕe?]-D\ǍpB2!~92}1Z`x/jZTVR\b8vMJcd?i`:-%R gckWK{* YM 4N!Mo\_-U[a:1vH@VD@}Z=r54WK hњIT\1ڛ-4YS2sCL.鎺~ 9tf?_4w C+[lB4FWrkq6tGE:~$.ݴtTU562|ޤmR&}m~q2_DCa'Rkut{^pp}%g Oy7$Vz\W1kRㆤ7b'q5QDU7P{ѷ4Ҡ*Q *ᓛ^%4"$.GMcʙ*CfvxaJbk1ܗk] ׫4Y[U<dҟ>kSn-zxԳ}!ٸj& K6bhm?Q*JQR\+h29B>FkV2@,}! ĕ |qRqq={ϖ enɇP Kf ʩB-( -wQ$ .fNyNy-z+zao+! -X[Zzxog \Vf&~)~ ld(D<5GE!t`-h={ۮu ??2RT% `[>^"M栊f$Nj\/0lKD=& 7eͻE0Qo*&?KvKG?CC_7t?wYo1(2]U(AhRk637tmIY ٞ[ǝ 7OV eiHF>Т#T*8@qA}"7u]`B>jXWd}o6婆ÛG55 њ3j->rfZ!RrW0s˼ /"/D2uZs'pDJBDCN钽# ugkmbZU(qcK#.5vnj wp'!ܽLt7q&[i`3ö *p^cl.16|ZpH8&)ط7 #J8Y Ҥ]+u,F1Sz2yu\ɳ b1iyR̄gJ@ؼPN]!?9\C+JFF2Qj9X{$?+=ﲶm8]A,36-=D85 fH{:F<;;G^qAv[.Fik@!V&ì3,'Ek>v=?^b\00| |(./Ϊvr^t}K&{{O6{0 E~{eɜ~DqQ>`:A@@-uLi>qUyӫypZI1T췝iq*oOAl8< w60ػKYWyߣO+IWn#{OK䨱ughrW7$Yv]&y2~qyafǕLhE@sYzkk;_`fWXee[+greeK`}㮷lmi{8:WoH@(3^[+T|\Ǹ݆2Y O!3U=4pG~6J,t/9=4kaVKVozN.uXN^-iM@CK ǥRiD{Ixkxds:๼z)i=z $j$B -)J:=, A4q-۠㚴[2U'?pIcY=[}߻%-,ongtPmKux_m b͎ZM8yu}b#@_ƢW[<{F^|1q=t3l"qm%5#{86̸j])-Ã{1f2m3tGWY Z~-gztAQ"nv4W4d[ևЩ3peþrUY!DkҪ5G+s5KF-k6E\dXר3u*rG(lW[#:{9[BhVu|6<1dZ%_kd*r:99o Wdq=GǴx?6226˞v qf Y9=j? .v] =P --nSyJCU"W;;ax!\\-t*nh3ݹ9}0m^RL -k0܈E(>51my:=937ް{} U~>a G\eJUmY\t 7L*l~)Y0J`)(f -mlk -ռtv(a/-`R<!,œv\͌j]$ ϵy/q팻F 5^2#fg-L5R4/߃Cm3DN? -ğ"<<S^e/g.\TR] {Iy=V6w FJ?+ M0Yoh&fiohK1qPz][=lIn -3 ȾC؟gvgI+w,WKψZTKwsŚ'wFz#JǥۍKW230!(|߃:ϯ{ˁ1(f=< 5y호ЇR%y&e-%nc3ra֧8f9 j'qiv*ǥ9K~wnd͙kh[D -1't!䥶̀Ѹr69\Oû 4EX<|q+q#4g)~Y-V\AJcЭ+VlCh" Ex..KE^?frJWhrzw 5<^6t[en]"X4aT`8}+qE>E{jhQxhӢ\pRoHν~00{>AhjckXK$?%%UtIG@Ԗи{q5ٻ?|A%z|3.CèW:1ps}'+̻ة88XN5$:  UQM\.O.m\2e..XZ!"qu |q{2t[cr(z0=jͧlDG{:Un ޘ$f/+uC"%0U@.~6@ԑ '*'?I̩޳ίkjRZWYj;ФiXK + u!I_S#t8[QڬH@L?};Pt.x帪\ǟ_=&v8?O\/o--gCW587 7')L9^L^,++uVcE/p}-}>2~z}M=r/7+Ռml9<=ϜT2m_-owϦ(U '[$Dٰ.^B~8Lh9k P) J3gܒUqqyZl[>ydsuB+4jq?ʀ`o5S$T( ]z#.׼ϳd'߲+ptǔ|E”PtY -Sn5\{FE#׆U.>JަK[7ыEeifޑ8$C V-U#Bp2ll;[y{|tݻ&K̡$_)!k7 -LK՗SOoz~Rb_Q3f]|~Mu*uDmļݍmwqS 0tlO >;kuOs௲p#imGѯ^PRHm38ڢc j̈c&;$?:5 ^תL\O-^G2}NqVmj?lYs{n3k4RJ:TW n}*[nDՈ9 >[17&6wo#.O^YeЋ&^\^鸾Xo )ߒqoU͜3vNF+^2.=p$M/w{SNߦ {~1ϽU!0ΆדCںrސmUoDhfPx\y ֫Fݒ>P5d@dp.Rq%0q bΠw%zFٮ)MPZ#J -I^s`Ì5|^ϤeޝN-:)`zvtDJ]WOvzRcA4.*-eq)*B&"$6D#f|Qݚd&;|*?>'sƑKpE\I׋Rm9wlcg5pmnd0L@1(.9c*(ܽivJun0'W6=;z`gH@VWQ\C'ܥOb(fӷi$7Uӗf6"u0& ppމETqāc)$qArs9 3 rXeF-FI1'&*DX TOUwXzH%R!b <4=Ou1=#z%R?\Xxխ3^Fv+8 w4"U黈k$]P7cDK,Xf)o|_i,It@??) 0Zv08ɵ+1E -WG@%aZ0 % -r0Yg輫?ke%N2uqO.I/24Ozi1W;pGy&}y_F0L·{!: EJcy#۾9 4)ofU}}hir $W;sa&~e};9GffA6_VFikbe=0`^G} }491ݫc>jd]^n"ʯa=T/p œl:;ۍ"+XCvrSp 5kna>}VB~9Z'?Po -]OYH㞷ꄻc#"#l=YN mײʄX6gݰ=->dܚ/XikuO#׽W׺\;dvDdwiiߖ1?j=.₳ -½׌K%.H>qdJqsW&գ4FMai8T4N*E@@kv gf!WF.` s7L@?- _gD F?+M w../.I''Onx.7 .f(݄Dy)N7|P p8Anx@clR;Zg[|וim[>߀=bZboU(q೼\˃4.7jb\z\d;^M:sipFr7܎08hݽE26D:R6RMg:vͣbtE~-˘]L3#F\vg5k?ܣu˗r\-tCpH{eEua -Eؠt-*=( -"*h:{~{ƬU j<͑$so1Wް~/'/AWe7xuttP;Ԥ5X5Yoܿ^&rI}y$*JF/%_i%0^F=rPrvOvOz3ɛMp rBm?F]/ +ڝUJ!,Y -#kbLD͡$vZfۋ#oKSɈKw<[.]nhV?jVwײpQaHm EM(*N =/j9$PDɇ Bf#a(?t[u(J@'`}о0z=<]7-uM/4'M@g!U{jPm*7KX;VGsYZZsgc87 -^nY͖ Xmbp~= 1i t^y馝(}Ko^7cQ!7E=aa ݪGrjُؕ2/L٭OݵG-JY9YS^'K^5@0E~{mC w$us/RfO>oWimyzi"/ y/.tw{jTh?@GrAMM@Yپu ۋ3 YJ+L{UM}G1mz2F})k!SEmw) -zHx -ta]!)/w:ŬhDiwTszE|*it9yDZrg,eG-uֺ-*;ϟ<|<1>5v02mz,Oīˁz QQ|ӂ}4<Ӄž#gKcu{1MZX.)݅=y -mbPԉp#OFouQ8wr6IXSӺua(q7Ւ瓺M!W[^.j=v|  ʷU>P4OUlHŢ? -l/ W9"uFݜzݍvNBcqHY~;SL+4۾10};l_ZݡjaS"}SctSUWbҭid\FBFf:"HaY?E'R`q,}ݦvg,Yۙ@zy,em) *i9t}Kn_kZ0A3SPb L+~>! -ǁt݅V0ݜo!՘э*4#@:~s5cXP\9J).*O # ??=0ö*:ohR# `]{QY]rd]?HR؍.a\EUlV[ ыG^"ižh(LeP M7 "AK,@Mv j}^k_KF'E%%٨ab:t*uE:E+n| ^.s;s½uS@m a ]"uA( -LmUW p{ H <'FM+u)5W%Ganэ5VCh" i|؛}Kԍ`PO `zC0_vp -4e|q#\;wZc5?e;G4N$(aV=<;' ?@_O( ߰j\/5Lx" "p* z?ȋ,ˆI3eyYBKhF -%t„B-BmwVx lvJ͑ou|P00gJPC@6DEx#{iv%/RaApl 2H[aiwCXR97d귋>*,m᏿jvYl{@Ihb9w0 7l92PTX@+S@ >D&Q\זYk!nu;]c{Ì&Qqqr6A=pyZާ{`%ewy,Ogb̆p ;FR%wQʽ7aP.ɽ60eEw:GSm_ۿ f5JqOu`03[P|C__MS;=̟PQ殻 akvt<츏|o_['Xq: n~1.nl@>a#̹`5Rvnkb_*I%桤#mhm͹w;軧#kGi .]ʖJv&:ndE E7 {h(=ǡ0XS {8h|qwpy۽)3SxFۑXmamhr˞U;?wؑ, nAQf&).DiMn'|bZ>Bki>6['=}Mm3.; mE-j ovBr+Siba".^6p|1\wMڂ3Nz{;n 5xBY*߾ktJ5lVRIIecn-ˁbά ?_ҁq' -n\n ܼAxDl$*G}PMVkTڑs1YF,#]tS*x![ҹtm`!(4o>rʬq(c:/m4Y˓TGJSX1I˗3rNϽG5 -bRC'տ_mxDEO~?E;Y?o_!>{ :z1gnٚeph$-&Xt -࿚k%6.mqwVaY:vIZ5; m{Kf"=WÞқKI%-+d>ݬu9] 1g9'<d,<&?}5kӀvbmz]3/rKGj/ O9<CTx?_ 62_jeZaD }| |h*!-|3='{jy j#XMc!Lk~Kr;o -Ov@xrF~Z 'eO2`D P$< EpR㠈 $6ݥOo㊑zY ]2<{iE̬uƔl FcGLgd+^| \N>G?; ëSs=hoo/q{>/W\4~eKuq.Gj3g+آ{}.^:ru -zs^-gZ' {pǻa#KR&#/]ʴy-;YR",ӮEa-6|.Q8 8EaNqXѸ#YevQ`gYs-jRrL:Ǽ 8,=e}#OIaԬxq- _]dOK>箬9-ѩu*||{hMDf>(2$JxVu?Աֱc?cmrpׅ|,?|"1@FRoҝGr1b #Goü+vJL/ {+TAn5swvwdܡ]=ޕgRmS6lЉ]q#^2aݧ|VxS^1id޺5`N+&r -`kވn~~Mb(vx$3k:bz }{ - -p^Y67K5#\qz(*ҝ~4BO D{x,L+u /} j@u8SS ->xFt=}{y/Zw a$MF^l1="] !p ^X# 6oIwh{f_VI>L˱( LEd=YuSYTw&f?иqSekZlO*5mej-V_쬺j-HnEq]rr>Wo aw:ΪQmΜfSגb5jP%bWݾwZ+{T7c;D7Z^QaWK߰|s51Ż^F.VYW~rB@jy7itM=+_eqR?럥Rg-3W -X?T6cKy}8m;$c?.sS,{wd⸨OIWh`#Kesu}07KlZpM -(}=,hwPT?`P jIC:ҍkd7ꯑ>^c Oa*?HryܹXi'\|nHuYSW&<o5kʫWWEAuǷI#$, u{Plσ9~$!ri]U"Z<嚽 Ɇ&[)L6"Pˑs]h(Y["7U*2?K2R؆,`=%^gp|nk`[fk8D֡hno (5?&6:v`i%PsyNK@mN]8ȶWhF@{a'DVBV=b4|N]o1[7Sed&v3k\1V<%|uR}cQ0cqe~'z@w=V=txot~*hO}wE3ɻC --|nECku[Zrsl&~ -潼Ư:>`W4{hs3fܬ/tCtѤ;nG@'(ΛiWoku9I|t?YZ[5u@Lm-+ջOu5s ꑑ&_.tNZڴCC*UcYd]J&q@@ы <niaM/+j\]ֱŦ㠻$l^n;>6ݻ&M.ޤjD &3[^4䑕s"ĤpB~=Wc2;ͭ՛oP]}YV=`fw:lDK-SVt+rL-@vj3N1oJs\ٶeLY/fGfq]1qT cu65AbYb('89U&Wfv4JIߙFrwT.:[v={NxfrU$rAu^Z=(N(?HM Z<IYcqboe e\jodvvPnaö߻M~'PcebӶ9df@Z sm OtS}WV\ӆLrx%jŜJ+K5j^Oj߲LqmOI-`CJuӘc@ z {LuhWQNgZ+͸SΪd 'Al%&]DwlTe,s5뛇w=93*\bݛ-3˦;3g~(ō -?u:Fjnx6U1_GoL"u9r3vBS,s3{PkZﰭԬt 0ۧqI]JX)m..ҹwA$W+6i5ף7 qOAl 8h==hf@̀J Y "e+ =0#20UTC` byf$5e"{\ܡ][v N|ɁĜ my{df-WzjIyفi<˷ w,*  :PRn@}nPcnA׭`+O {RkPA|& z1m=n͡~:ɌU^_Uܑ]5G . gkP1uotN0,@i``mCKPU *<@Q8%5;snoBW]F-}νzthVO 깋b8imgM yeP -,/cJ>P@ o׺Ж=al(*w$-FC}r)ԙfrvbޕȷ<#hO;OWwjKp6LyӺE)'S -.'kЕ@._'t 󍱞$h\۸%x.NFVz ^{EݦO>3:soc^em^p -MWhcʵa7gI9qu܇gz [l$ho53ZrF]xu%n'ǣ{vѳK~Ye^7zJ_- %5\ nc |g,SڈT~)\Ǖ^~{vmeyqy\l˷7}WH(.ͻRG&mS ssSj?={9s˳-G@tm/hua2~V -8J< KwpV$z'L7U_[hѕT[WN緵;N ';,'.f{(xў7ﻞ<+dpk6v %qF [LXIߏm_k䎃'>sǣ+HPtT~<a*:kj,yFra=kU}{eաZh_ȋ @r?N&!+U2_A, Ț{`KvelWyYEF/~Ev˒| J]!WFr¸p %SX(*8Xo^u;ۃ$236#,ٲ"MXKU]eDmHYŕdȥen@ hmaePOO[7ة}:QaB}wiv2\Zr=۽JzjmeC+32cv_eN[atwQI$Zyru`c؆bS)e.BQ'!a/0޴&RޞJp8麏ώXnlfru/OH(`hG|cKb[]갘MT3! !CoPl_.6u&uxƦL܊,RN̴dp7o.җK}firK[ y3F*ݛWt2 BGIWB(:*3 Bz_nEF:G?KY8-w=؏հb%rDl3ҵZFs;*ku6M%7Wu<ᨧ>IS8Ik Wn!/0`$@BVydZPscZk>jVcuZ{UkCV`9n"r7+(;S;K|x$=Z"G\ v$%q[>i rA>?AA~U~$Ql0t7.6YE&7iev{!\e7SJH .5uzb*' %`ح>&n8FJp5u { \9^o_ ugL T^#h?ȺMȇ:2ŷya)Ѥqo 2c'x.UFgd#kp?D~* ~a9P,sQ7sWDtr AR'6HJ۴Kk%7YTx{ۤḁa 3 3tHl,gO ԶWpAA k~ q,+(|? ?=3jXz^Fz'B3,PX1}\~< ?F5X]bJG]tYC;WRM^7) Q(dSq/n<y?썠7R_Gƺ{0YUmɜ17hK(#_M/C}d+Jڪunz%g4wQzC8O0`L?ȯ =43N~hE-/ FҲ?޺ .ۥ-_kC*; !?jyҋCVimoNe<g^ԣ|jVΕb}0߽r,^'|?(\|ơkgqB 7[OXW5ׅz&A.];@ Xѝ>KnBϏ2df\o8fZRq.i %92Y_}{/SlEvzfsˡLԮ:he;eigasMR:)\ʅ)T"uaFqZu"Z -9+{r}a}@Lݸ:2vA{_v|ab^w1k̓obnpvtA< -}]]iƃ={Xrƕ!u+TKu3%X_MBi1]ѨW.ם )]$>I;IX7 -F.`VDͮ{ѧ5{Ÿ[Q_~˸ m‚M'ǵϬPtpkwzg  ?H cƢ -ց-hM7QD?ĬKaS99ZZZ}&Cޤ oakHAL\ K -ըgʘP{}逸&"QN+ߊ62liUo -1T HzA,GsHW2ޘ,SM2eiW/7 u:Tj\DW7n]_ݟs{Uu^3JlE~mG˯?at'Q"isGvs(h {.zIeYՏ"˦[3f%R<*Y}+t7bXt _ϝj)a֑(޶JnB5 WF҄a8ʡ 8|g}J$ Je6:1t<.tCW8񨼟|(Kb fsJlrqƲJݵBijԂ".]V\zcǺS$D-2y9@Q9&>ę? mk 'e&[eJ` GuM#XQ_{ؓ·BY]J؎;>bW,̎O58f{BR!4[;&0 0 ku|_X>ZgYSGv]/[B wc:a!t]=+ -uK8dWd6>e -2j $yz*$薟53y4'sG%au:igN+@X/JУV۳#FF&S% dzd Ez:K\ DgK}ܸ ==8|Ǯ]J9?O cȡ ZeIn6 -?jǧڻEx eJ#4)'gYK)ܧ}M`Ts6N0Ytڬ -{=׻fl% !6!TZ?ӂxg:bT.1cD9\äxhSM䔭?}0/O $+\sjs^gPx=?IۣRn.4`7e+%ya{sV8`XȮV$|>ܼHT2f.Ni auL=eO 6_|K-ܪo;m|wVapw@,ӛJ^l-T݆Ry1+W|I+\|=/~.=?zB2v}&,b\69dLe1R"0|#T`zi1ݟ-{3m/h温b;9~~CV,/GwH{>v>kLfaڱ[ELf#F -@4= \܃\{}ˡWQTƄY_k0::Ųꓠeo'x4qtJ VWy.):S%&k|bYr|ٜ`R`slgֶEJDW|LPhb}/@N&rhÀ2tf`"ό/Үd 3wԜffnY;/U0 -ݧ8'Lz.j|ڳ<1fu8k+Zt=ˍz.*) SZAʼzOFT55亱쉰1]q?=p,QݝW6ձwIO[nӃ.g먥`4fRI5Z<&O(sY1/+%P(C0H%&wweV\o}+e}Ͷx-G5-|7umz,lbUYɩeCkqbNgA0/4u|uV 6-ŎӁ˕1Op <{mu|-9W؜'7pWNȝHnۓ;tzH)1O;I' $ '. Fع!᨜K] BrՆ[YUᵀ[\x4k*jE0nJ:KoR[b@] #^Z&ꈹZ(}$M(]7@OԘlm -H[bv~5vuBlW/Hk&"W'M>;z; `bg.cIUNVTvΛc݁M%^lŇ!^q/t/ G!2r3 fILZfJ޽xᒦ{XV&rI<6NI\23lҰE B4|q,{Lj+~nLVVJ_ܣWT_i&l.-&M:[+=czzlovA2v-Id{b91eFWXf7#YaS kC5L"G=_E=֢Lbm,+@Wc͌\`Y-y쭅e];Oި~Whj*61s׋l+1OE4:>JzJIb+:4IW'u' #^RЭ=KwϪ^mWWySF1 qCcj0sy拽iCUhκaRzA}k㷊Kk@p&5_hO퍍u[ξ:4+6M?}/e!ߏV 9s'ĥz/!Soau`Ms6OQʹ9֍gwomx7\m2+RRM4lLg"SGNW4[_#RZ܄}N*&&3/Qʑ g܌Ԯ[Vf—=S>a4;à_( V -Ǜ mGxTRlW:7꡺BX²5I" ؄~&t:YbcOO9^Tާ{>9|ڣ ka҈TZZQbӞ9Udw;UW$SYVyar$}6$^V55G*ϐ-nǮؐyBiIad.`:m37Fz%;>Y2>=ӫ`LKϫ]TʦXFA!߅6Ni]n ݑ5Gl^2`܏tE/Kq}#b5y\[Zu^&yE9%KT,3Qg@68Ggk4IPfSvW9.h?bf|g&͝N-+>( ,$h|vڂJU&߬TrYʿb3G70g&Bmle钞9xra@ 2D6oݒc` mllU_v`γV1t*l_~pfaf@SV wGZȩ50ω#^ 1!.%l-\nMjT *.󜌛rʴ4(e[WY}~O 9P^Nqvhm@W9r -45X^y0ڡo^0ۍ?n5d7@< -ճS=p4ZY(ӵPZ_AN~eaQPB/ bEh_B}61I8V} V,.ݸ C -x^@w,B7}D1BWYO:09sU{5 u<@ A]Ndb ?+,bq+=Aj|~7+T4۠SP8:8N U_ pjćBo&z~`k9lKz#!zK4R|x^gq1c]4hVC;?4.E`IT.8?Ai 5d]  o6f\%z1|;>}2.?pwpn,#>|sm]O`[JJW.8^׳~Df~4)rFF. EțdHvup)?[֫pܮ|xDq~J(QP".SpumCBG"VQnS#!Y:ts|i -v4;8Gh%3hn=!;LO%?a3ǣ۷T繎Rk|d{Aï+AX=mshuCw^}S Jgm7M? 9׮10R, HveFŵrzhQW&Yw&]#oG}30 ܞ3ݎ]f?Rڛnsm }.C - -%%72޿dO[!{07\|[GD(0a͉hvmV-Ff'˞h[XpFodѧ^^7TǵgIޱ Tax]#YrYdgvK -O X6Ȝ率8KfٲLZp-`G }5&;r^n*sY? -эߓνءAb%b)5Kb:.<j3 hV>>v5KVf@;oB2dm+r,6%\scO|8bvATڊLR -0'u벏y&ZD5+D Y_ZG4*|+fϯjF޴u ʫmpJ6Զz-e=]u،^G>vyF}T\K7=TG'OM⼨gQvP3$?y -ap48oUw@n^; ":/b*ac(ם,_ -pRť5GXT_ WLI:wZY9Ė`*_όEΣ9_!ʧà ;Cg[bO˻9*{ֳcMj= -IHivVtƺ\dc5V)wy=cZƋpHxHha8oif{#ƾB-^A8^ty7@cGDhCi&7/8/i)ă@}MV_x~u\}fi+~(`KMؒۃ;IYMj}kg혝˩,S`|.9kB~u\8gsO6Nws`߬ +aZQrk_3mgvbx!8cuΒSaqwIƣD?/_2dÞ} V=?VoG#}1G+;0gjL~j^&nfYB2wjsxyᔠ{Idlg:`Č^]5~ckmw,60Z?mHH>LWjUʣ3Վ̲<٬j,t wS z)4L'lG&X7d9]7NZHn+34( -ΒԁH]lf^f4N:]heaߕVtȂ6ejKoVa*,4^S/WWƌ.]_E:3{QBA -OWskMS-,5ZZ|nɱO_qJ:$pY;]30 vIe@yx6R1]Hozkb1ij۹T©6jL["_`ͣ0?7LY =6S+)x[^&>/$BjjdpDA5]RFl v0RT3cJlvۋ2J[˳io3VSKmamuZ|5Y,ˆNbG"_GΤzړpgGyT켓i,&)[oyn$RjWyPlaVSznPnelڵLuR6ˁ^ihU7[[oZ*ʡ{lØOVS~u. /n27~U<4Vp f,t{hzSk:ڹ越`oVskCGݚ޵$5"lT]YGWVAPk!}_/-EXhaQ.osCcT2:6;]iJ{20(Jj4Q`Yl7o2+x{t5Us?8!Fn Si Ml],@-W;@(ŴZȸ3@!!R,!k@ 8oC}|'H$xľ_5Є ^5!-3htD Q|( =V2͖I@8=X"]*Xc<>? ~@S e\xG`O.RhyZTjp[ee93bXfjɍbu *)GnL7tz@n E(gP!}NQh̓ouQ@ -wl?ee5R0%##ѣ.'A%.# {aV0 -`ظ_j}vM7uقBay@# iɪczcr,-5 - H^}Rz2~Z6哞kx;7n=}x _{> Pic0r0|ߋjnfj0P|g}]O::Z:9.r9~fѹ/xVt}A6NM)=o0|ο`eN $G -G3@޾U2J,D"Z)m:6Ǹջ'4cb'y>_x{.mvresK2^=Xu1sۆw[}doͅBO2IzO=#rts˸©Cou| H~:0 ֜uu3ϟ]NS^VNZzX]⧋$8?,y!?Eq;_{i}@K -ȴC<=w^n]nU}\}g7 -m]vʳksLNe{eܬ\fItbhl~P J3Q }vM,#͸ޚ3$s X _N)`6 }pBo_[o+I[`f}TGb1+ߌ];)',99qcAF]#׷.@G p/JQduQ{$kus-wc~C&p*.w8^[GLfV9DeeƆI t.;g&e,t -SqYOsB⪧L4 -36O`RX[NZ)}sot$s[S-*Zyr~vlJua(3ɺ~MFStlӲ4Rϭ9rm\DE\aRLp9(:- -. '2+qlm)ƾ̭za -v'g]>Zu+tVkȼN鸄 >V'`5W|4S [**9Fn8A? @0M(" "6M.FfgN4uRS}mQ\W^:c-*pí:7'K?͟<x%6sP5Iꎻ"CJoW] wo6@IUF0_tg@hnAY/ցfq.wk^iMiĊ_P+'S7*t$OcCĄ?""fš=N^CPn((Qڄ¥Z0 职<^ȣ~DrNV2zx3/Lg&\]pD6b}BI]mRG`8˒P ׆]ƙ2Lsɀx|y[ dUN]Q@<+rUWk]*@G9(dsf8RP?FL7~aз;uPt(tRuiFUoq f<}CWn3o'^)AW.hiw}R{|ӗ{STC~$֋:omje% ź9"Ϧ/[?XSb3'z1)_<,Q[ nFtæ2sRM+nۡtF̶|ď2jo\'AI7cuk@k֐׬چ܋R}noX/l^6&sz2a\k#[<2XJ/vբtѴ%ySQGFFYMKl?UA3ߪ3Yau╪ ,*h;+VUο'v"wHkzG-KuOW=Pn?")mƋvY`ۨyn~ZŴg7_uW֍ѭyOY les$O*<(SFv0ECN^$qW,~fsj ˗NI9hפ?Z}yv` r*;<)gY'yQ _!E9g?\$8- ~+LT38)[Oִuf}Zq[};(D" V}t0\<狅*J5Our&:˔a=Ɋē-/b؛|O^+0?loy,`/ĥ6 Yb3mQ[pY]y -58Vo0Ɇp^tq8: "@!egjQĥ)\@ce2/kvD,@I ͊6ed?Fd HyHNKRi/i{8i1 +3[) 6y:`3A &׶/~{<}q }B¼ $(!@n0AVώc~H_p{ -zy`[ -=bH})%U8w0V, 9,Fn}6@9z Ўs(pMV@F; 21#*~CvB{<ju=ec|x\cPgˣJ/0ο ] P,2\[=t}/9>eK Vv@މ -Ci1Y]6m׮rHyeL9>48?GXąN~>0K(.a7_\8 -Ԙ,kLwT07':o,>O7.\n0j5QsaMkf;G^uJ Ͷw7tr`{ж(pֿCgWUlE5"F\TgW>%tr7.FVa5 X6a -q77,*n_ =I:ݸ{u6嗒O#gY0m:c_sMUv8ϒ8b!R|OfֱomY^qjvX\SA -Н{6X0ѸYBpΗU86 {QU%؅1Vv'/z2۫.r15zd3~+> Ӓ铆Fx=o*mL=Eu馧3V(3\6Mp{8 -AF9PzO_'q\򍽨{Ԕ֝x;MÁUEh=|ɴ|\_7VmKȵ\{īŚL&jܒ4)E(?wo>qQ '͋VNm.mCyy,8OM?+Q޵#^;iMO}TOLirURԗ|4[5=bK& { !}Uj 22\Mw%̊Eq:\ZNtu׮ZY LQ"'? FmzKAAJc:Z/?G/u7bNʯD@GGE|N?+cdIѭ9섢y<gլͶTRpt`c~T#ZC~FgljYJbQ85'Cpy ^_pC|!=ou_EOT@|-#;y#gPZeVdgun?IGj+wwug~47H,18}JK_P?~*Ti*tAD%KtZf?1]S<6;}c -q` E&g̏rۤ0.K[<+łLq.df<Ž|ڄ&q2c3QmdgᙝeDB؇;aІjү6Dn 3Rm}M#_?HT1S4@5/c%49$*8QP7}}stn` v&}{k^k60=i/B(@{o+땞ԍf9'fTM\\1سoF2zO$K]$cޅ!4KA^D jzEj!4oک ,m?8OW]iMȧ[B dN6cU -F2HShCy,u4楙1kw*fF~{+پs47iʗ2+' Jn['ܢ7N"tԗ?8#as?jTlA-=ESePTh>?ʝ(7 n=VW 鮌.$˥HނY؃5Fp E6Z^}#Ys -6UFAeYk.)NOv,v2[qo 9-X9{OD D}yo6' MlDMl.q=P8)qv>g W|on{ŋ}),ֵ:_u rӆXAxխmz= NGbulJTqzTm`sSv+7ޅk7VFD_~u/:q֍E|9}6Ϙj,%\[pѢ>wSqF*Ne+6]OpZXX+IہFnŗQ_2(b#N։-@Cg_,v949;NQکԛYr0G5e^JovcFT{ֳym3ҝjx{}/F T1wu|+@4yo+%_i 40?rm`=PWcʴB1$S7 `>Z $(B -өהLTU]3A٪D%O_߫Vũb8~eȟ@}(jʯ]kX~;g8]FWmP6+Vauqu^eKnKɑȗ:QDx0E5 -#5G/Ӧ8'*5KZZ3/ӎ_)7RH -J -F -"M7q -N -C -lg -,;l~I).̏2 =c)0 [CuR`$^ML|܆*sGƗ/^ZC@?t5!FƊNsOC{(= M)Mf -KӞe͌M@8e,\ -z #^@΅gZ3^4b>j|T)',. IsXIsV4Ҝ4nKiD/)xSpuz^Vg3'=["UXI_+{BwQ_j<i -twboo?hwx?"faWx^]2΃SU?>Yk+>Mb" ӻTR3Shz^NRH"%˓YMziΔk'Y$oq-b/raIKkշεv7*KuʍzZcFSS+KhZ_yH6HcBẝ TL1^]"X۫? #OCo@]vJR:T?й'mti?y.[>} -ym{iHq}>PKqI*E߽}4v4}=vv,-6_e0rŠ.+^®oOZ`fBv{v_k67@O^^ZMZ.0_+*ΪE;Of/641]Zwt!"Kh(W@o')'g!^ep‘*.{F^lzGъ6/|mիYO7H{ =,q)"{1<[KđF(=[4k>E -Ib -jZ K%n[ͩQ`\5b:Xn7k>k]˭{.,*K6W6a]u´dw@fe0!j0f{Vw)/RhWFRطiIc* c! *75eK3N};u^:~~ -K» h0n$v1hꫲ=5d+/PRBzOJHZЬ+Yr礿E=`CM/,:nTl/-v6ۚ.yMb1dZ*DZb-VnfcuK*aSհcS"Q* 8ة\:Zc9-L^Zf]딍B[+?'LgrNP]3>L ]󩍘 8>FY VSţ-HX،:OėNѪglTFނBm9`^.ے{m.eJ΋& ٘BhNEq'`)s?MT`+֮ َIAKk!C -rIl8f}ZeWݳ5:܏S<=GćSU1ҹixL Wo245YCKXobhYVCdUBFg?2Rk -Deh bfXr:}*V94*g}[ys^GT6{;蚷V:JazXrYz$uOFJ@5yupRJs 'rwQ|,}{AzF~ϏJ:Cם qD,q7IX7Z69bBk( -_KDiaLD~չFhޥZX}flL -AJxl֣#m6<4KXM?yW2Z>nɧ݃+/% -ejzOZ8xԧ%BCKmI6Og",#˝s^վw<Wsg,?Ye4m]{ TFHF^{]7 m}򜨼9;+xMNh]a)ȵU]SpRTוf=V]ăE@mѰƽ孝eԲiYBe/WyfU𰘼A%{:y3 O0~JωDA*B ϝBy/#sD#lLT/;T Z/oѝ`SśSR)o,P\ٌi,gmtNsIY٩E%qS wl8b%ןZJoDp! -=sSGs4ChLZ [}[P!%"@nNeDÌDpNlL~N'Z/]KNnv2vpȆܭQlEjRl*t~V3ޫҭs",!T?m9zS'QU,CX*ׄ:wE8lu9͆7*wȗᄫ}JnGK٘+]͠$;ƜiAEmTBD_F(l75~ǣHy 3G+QbTne+9.RpȲlzc?wJU˳ޝ^; !˓Zzx AI&UhL5'߱' H|`>@P~|S@Sg;)WY٣6IMA!Xd@1<Wͨ14lG$1N7yl?0c =EbaT 36XZEZEǸ* -1!e? vۧh+ZSUs=b<~6ذZ̴KK;|]G-` -JV.yiWQ+,wzULpiR+68 z!鬞le= [Z@R o.ǝ0[pdm8QITzPzYZ8וH}Y,,-Oy+u2tqQ"<ګnD}LÃtƒ7d_LWrx\)7.ONH>DuQa0dD^kV&[%dQbUo" -Rq- o9 |ްV/?$X9C#j&/JeiE؟/*;eX=.}L9􀪭  : fpz%.Wߤ gfaA֟z!1z[e^4Wj)x)V)ox@fswOY[s2r?FQ޵|ɛX{xSQb -;czQvuB;wYLJd1nieh0_i4w`9~m^s0헋@qMbܨ(D/6$|ytu貙s`'oUlv@oǎNLh ͏TƷljRg.Ix-`$ĤtKH -waⲅt tک,Zy$\U_z[p"pvDkw| -j -a[O8^sgjpVe! OmsrLRt:vwB -"SزW젷. @Gم+ۭЛNZRW3o G53NNn &d[ye~|tIy낓c%{StgY4Fk6D~B4mz_z\/tViү㬐㽷%G,QXOS:B},*a3vdFDej7e,w[tT܋SAOS ȎiY0Z?O1wa}#U?{=lZOWЛ/ [݋ֲ$ͻjwLKiZ?dcȞ oR(%V|@:VvH嬯X=hv~c#qYMewnp%CLV= =0>{>ZrBQoԆK-hu TI& \埤pK:8ӷ-ųd9[M*yV#(^y8j{g}YgJ(L2-OG\mkXeGI=4|>z'nz̽fe_qؙ-nm$?\|d|奺QB3\w& FVeR0}8iE݋Y/2^4Ao$^-wiLf23w=Ěڥ]4zg`5Iu|ƓV6Z%ǰ1t9.#o x*BXn5=ngǘ͂@M -I7)N-" , Dk.5~y YwV*t13z_o67T%dnd7!n)2-U+oND gRh]Rs/0;C{;%NqF?@ܖ"!tEb>;bf=7mh99 -vuͳJcd{ehbx;G7+Da/]0.@6|\BM@;ۤ,w!Po\ݿ<WvsڃjٌߟF&&7/f.|ș#!RyRBĆ 4WsK␇ -Ȥ~fcez9G>[;*[f=yDҴme=fܢ7QABxESMUd0[z+[!^]ߊ+`]Nh^`E)F 0z*$0ZC*vFXa]c n]Bh=B:aрm(>ub*\N\ޒ\Czҿ/|Z;D`y@hLOOV-ק{ |kWY9`jŜXmdKM^7gPЉ6H0@"|@ͣju5^jiѸu ~ hu{֦jLP 'Xld L?Ř*7Y#01 -Bx2<ޔ#lv\-/<4(mbrI@C+j/B \˭fZN.x|g,Kg՘bb)pU#Ev@I'ʃXu_6'ɛ'fo0-$Fݗk:|?j[\mǥQm?kbk~eۘeӣvk:ؿQ.W{|@Y'5B*6GMΚN7 >B=mb]l;qk⻶|qW+37zZjjRJc2Q#蕧]ɾl#/6qZRVK=c-]0W'@gk#b}SJzX\Y>_loXɩQ6*S&àd>R$r dVWfER< -(v*-3m'<02jzd w%}"NQW>K1KƏf3w`z*Dȗv(ۚr'#z<(z۹m=+w_U8+,_./t$OT{e ^Z_l1<B"z׋!CnzKl6Ke⎁sEA)-Lu -Ȥ-C#Ang_V~¬mrdtK6ϸͿWNvGQ*dJ[E`5dQS"ǝ -ƼV/s5a`Oi@*׵݂A+Gf'B1`Aq4K&ɘֳ0KFs%ۖ"${ -[| vH>|>yl-y<ݣɻq(cdlXHfv3c} ɛ,I:+,~u,#C~oRda -]͟H>)&_H>e#tNP}:\;dwNޗF%ȘQNbLP5p^5"s=|V*/B`DPsYp>|Nm99"L7DǹgX\}3\H˕4/a&^~g"طG-9q}=n5]֮&.;r6_` 3$G -r| -yNOKKHxyѳDt_CՖV楋Jڛ=>YEAnl/lޏC:}wu~u|?tsyON -|vޡrСbޛ8/~s$]d}:Cp= vm#Sܷuuj iAfv깭0ݔ6mȬ*fȻ5ɏGo|_d.0ϛk\j[R|tKx>;v̗߿vZki? =E6-gnJ%]?m"bk-3~#µt699ZڟOlײo$Bb{?xw~VAkRɝ8.?-\KZ S3HD,DMF=K&M՜l7Ar612x弘ڢV1f|rQn?@܁..{5t-c\]$kLUZp׃ka~;trF6!eMjNs=dWs'O6Bbvhg^=Da2Oe<9"T}vvpݎ @ܲ%ml<<1i}xJEkГ>zNpA-,{07k봿c[E6fеіjɬsv)?7l66P2Wy폛N>T/W~#f|__D8\}`tl}Y>4/AЁ##A- 9EOSw7ZEmA7 Up,X?j^8nٍOl| %'?0 T_E%NӲ>un%mHuغN1r<ԶToVru?b6,}7FTT)`%h_ꭞVzBWv0^=9G0IN ڵ~u̠Vto)c[)ŧҫE@ڸZw:P=}{3}l_.Ta?DG^?={+-f[鲤p9ube;;J 2`eAV_.2Gwy/GТKW/=L!v6Cq›KOr6&f]h6IuUȯm+NyZ5DkmQL%DrТȮբ/o㬯=mo,E|b<4ȏu娸8@S͈(7 [2Yp[L;qǝX|A+`=w,2W,OUvoS -9QmZhW~ ~PY=˘ wryӊ]ekݐC N{:/3'+Q9`ʚ=!;б2<ۤ-+l)wKT^ןmnOH!$d hL 2)7]bVVKSG0ђ^4}G:uy] BԾO88> ],oawc -$ :d255v_dEW>V >.c/>iN,75^]u؆ё[\h$^8}"[YvV:h- 9͝r+G=m$bbp-NV+8 p~;Mnգa&&0Cyȶm٠k/;0KnMS!ΊD -)Qa'C4b1@)B;*%ր,m yYbIR1gZ 4u e'6W^:FݫeY-(lS)/?H =IKBF 9SI9RW<]Xn72R`I2`&wm˷nyKTIqyE;ȗo.~toTYanYA3A>rBBHZpۄ`X/CQ2.MwX*d4R`illJI>,hO &o'jJLͽJRi˸T&:#8&e4$8 C>mF :c,$v&{?>v =Jƣ\+¿|,e/ tnPX'~H޳=yw]/Ԓ7,fa!daw[)I=f#zTMGxys|uMv_/z |r@rk׭)I_5ddHsY|ҽf|}%rNGM:x>0S8nPxyA+~n -`,ʹlPH++B#]:M޽aBzKFs~͟W?pOIڥ0Y@ zj3JO8,~gs g! )12#ˋ8ߵwEy'zU(2rDx*({垷tlUЌ&0}K -YG7 teRS0n.[%äVQ$.Qv&G#"Q`ߪŻ!RWw:<\qlז0+@EPHΒL(s7Zkc<Ljքl_,a[U^[`M'Jտ"r#[CW֓]ʉ蕋C-.'wnJ\A㌷8X8t}倨znNS|uPx yOY=ŢW|"W^ᜲz^zd ROq:_u^YCvHRߵ+7*wiuϊ^VX/Ҧ_~Bɥ:gho;RTJ;imʷW~߻mռfeOv^4Qkao}Oxm|ۍ (w$]ϳ=t,}γ3 b ˖h\écO'5߾?zsEhE׫ӝ9T\9%lu!,C_'7[>^NaΜK<Й,S"GNÍO(orZz"x^_myhzcTM)-!;ܨ,:=ݨ Q՘hEdSJև~KZĝը.]0Y̞`{g|څ1{zֲgCܩZ{4;F_VF GQlFL`qQgj*xVf-gð ]y/g6TxoazѸG6o6Ѿt-+6L zQu~uеZZ{N U:MDeƳ/?^9ޜsR4^ K|][szTMb]62\Y2q0,y1 ׷iWuF_FmJ][J&EZ,]Hh(hKfmfl3㱱zq=NtQ -~w. -P5]?1Ky ٞ_ *YQb}zj]IۂTZ2QiY9)/>G"kBRv d]dez6x8H.1? ;ĨLN<<P7bNR:V`\*AUzB8&(>32/lv+04fpsv]/6ebeN=UqL.vKcjJU8VGL^(x dum&G(/6.Y4JQ`0,dkطQ^X_wy{0q.Y>ʵ(x5s3F5rHs!$ʖ;bB2PHY7@İr>lqI}ZWK'KH/7Q -7g<Gڽ`g2jC T]AZ71;ֺF#[,P 1?=k?W/ +LL?gRe](ڶBԤk/GH3BK -t8鷬U05;RV`EyiVR!1&kcndeBka:SRU2ޑ^+ kbn@E{^[f]qD -3:kɺ|ӄ2N(TS- - -\Oimu.=.pZ~a^\>">4xdʄ:D MjE og-^4oDWEv {(?|%'Ĵ*l<Ѐ3)ڟL;pyxBˎIYb։!afӻ2f]vA|̬}Kug6ZӜ#EaZ;]-&8|ݽ/ 1%y1ȀTI삟wz_:Y;,L"ĭ$lhpӑ|P2,Y{I06ڟo*g,)̌-􇫩LQ, /&9rNPǭn=nN7;r(~E]"9}餐e#2(ѕkU4<#yR&rVULO6&![װoJ.urVgc(eUὴ>&dkΑ*{}恀5{P(pmj;bpMp\Hpk\>k#ա1k4r_T6fn_.Tuu'[['oE߼:r_&/?RO].1o{ -;gq;|%mYj=#iͤ|Y'.Όm.t?ǂ' '@\UgƼ%cuB}5նag`nut.ܰo,؀^E2Ѷ f -օÓ1 VPNCkXpf㙺$mR\ܘ6!+÷MQk@ǦMz8767E6ʄףO 8mmC1:}nTN@Ub׬1V%~cg4}YVZ]\o 9 ק}Mm]ƀ)y նɔum{2jg,o+V*y"P&nBoRN -qG -aaWެsؠ(&f'sw[;e{ ' j'o[9a/qʥU -C[z^;ն[^;܃ Mn1D2#gN>%?J 5ʲ2Y;F.n -Vw[{_oۛ:7N_/=M7=)uMt828MJK3>KSgPqlDz$~~:iNtEּ8}-}5w ;[u)?=$1Q8~ĽGdu^ۛN}r&x/@',IGל<t4wKgwh#:K?z6};?up7-ԟ`߹GW{ᭁm9w5/0so%=;Q%-O\!muKrhQp (Ǝ 0<7r}pYu޶υ[%~OzvCj59[ n]|/N_Z_>eiNbˋrt^9=w.jM1I7xK,,}.Ơ("qpH_uxmrƮ`kxFvrYwdYxۖ$WFy:?OXСn٘o㇭W0yE@d!]s+uRXР}yV|~+.i\{&#Gk.T[TmV [l\j⽍/QKHcqTio/W|^0 -QK,Y) -V'RzZv\Ϝrq.L7=6Cuǂ;Zn2[`A`zwu]rTq6.ItxWOf b#/O!%9Q2sd4=>sqyڨԳީp*,Te<굤Eǥ:ExsD7š+_s_'/ٻH3/ / p j4y_oXc7>J:gF˱V%iɳJ(R+o*ı^k epyͩơ1:UgW2mBhy"W[,L6^IةV8*7kШcJ }TSXDzb'ȟS{5+q^|v\ҊA&r/d{2arP1my3LOV k|} iƣVVUIq(#--|Id.mI`z8_nT`)A.NO؉Lcr0lazE .?nیۄO)Tֽy^@֋ s;zyv=,(7. ȁP>CIײZcָ=LW0)Rñ?NVX>/6bʲ ZQup{\@ݩ;qQI`w o.- 4nWqԇE?ǜƫz2ivʈ WA)&d$d$R&3ԗf~wx;Gf 'V9)l)x9J.rWABWB(k3Ed6 -c8)=[d@JbB6Ѡ=@5BHxx@la{jsPcYLڙc(.}AAɇ;#s{y}:͹$M0;HSVSxbRߌ49&~C<˺E,N lXގ$x~db%6YSs-5|(I$!=AJߜVE>4i2tâQ>QdgZ*)}r.~kOuw?{'PHB$E2E$G(Jj(ņqq\Z~؂[ҍ -~ r m3ЯJ0="ATrh-ixX_}tȫdrW~/!(Bf{a7BX7*{vxW.I<:wkWlүq{6 -<嘵Xt*q.$ PaMcNgQ^s>={`/a_b}فŷ@L\0)7=uC{x4: -`W',u9TO8,n ѩoSUlXw4EQ=P"eGJaVo=(׈ZvUa\6'13bKng?Q{wR曜mt!9%nqY -2"}<{;fFIxq@>g f)F%nU' N+ wFWsn[w]ܶ+՞߻[ccOFޏX %Oyn*fѨj)(*cfyGAGgEnKiqի(;. s ?RW}3PuLGv`ZU[Ohpyjܮ9w63 ׃VԢ>RD̕^?`A@|ǐ] dĨ[y:0ily#nvKJ_Ź6[oIli0oިIqRGUS&MU|J8A©~&ΑTş=6:g6+^w;nޚ[-Q"7ڦ-kV¡@\D{xt*cCN7 $\񩌗`YJ 4]Ҡp*C["CgSƼ6,&쬆B7?]vx^dYǸ8ԞVxr;$)&9c*2xXd8 )@yu@ -O o0I^}n_B2/h),AEw+sl.]:5ZoBzº[ocvv<{͢?XJs5k׼oч8w*9=LB@&%u>]jq>`\p&\.=/gkZ| q@]:|TBk(8@8*Dugܜ `-Cl,vRoKlx=ە.||~(4 $x5XB$(l+@|FXNSǦ@R2n4qbƴӔss %g^_Ef=t;-K7\wD˾6Hɷ:ZxƗNp!}i+}׫ZRl 4vu{΂+2zI:xR}0t[{uK&^[mRZ]Wa}m8 ϗΊ}xEiRՄ=T+.gq$ҷMYe[OoDsFjAJBW?ZsKulksv^Fw,.ܴsoNw<9IuqLed=;,=]O܋mfgn>0HNϢ-w`wE̬3*ѿ[} r\(vN!"@I(z5{.Rm$VSɩq~%;=Vrv\wtV~I?QM8 2P[ ;{\_89;PsyKӊwLk;P= ->]s)}=€=kx]a2cV?fcc"N|l~|V,ș΍ v'#a&z2Om` -Z+?Fn,(eN~˓Z'k1WCteWmoMhZg> ;=p}='e-M._3>p=XWڠ2(:$j zʋփ^5o_~vgID1n%j/d`˙f2O&;@,I,//z V` a.7+9 0]Yv1$855 dhC2tc23"I9(:?6iB;NDڞmaə7/bUrD ݹ/mpcfE~tfM"fPd3ъ ߃=Y7o5BDl'BBIiKiߐ`d!L{E{P򮣍,E}@FbG&Fl,8mGI"GQRq? CRyjcG0E-|HᠴZpXWxwMǿO;–>>*c iґ)d]j6Xr\q1sBbϲd W}g΢}:{ȸ1ms -:$nrg}>siμIG;&x)Cbá8 Pg{}W`ާ]l%B %ݖ}ېZGC$mZ[Vk9rrB!`[3#D_+dAXUջ]% גҊ~xP-5L5 y'PWkW ߕuIswWۥ?`]cTV#Ѷu7'y5 l,^A-,A-iRE{?]" U;XXg # -2UPņj&'t 9nͪ辒4׿4_ 6ݢoWmƣ(B=@ټ_/?A-Ze+U7Uwժn:,[l?'ޮ/ޥ&Ԇ9v;NZwEF*Xbԟ:wɍejPIjR=ժY|Ujq1{Vϒ -g YPyB` GX/R/V:"ʸ0?P{=7>z'k7|ZS݄{d-FzBm %@oW2dusz =Jƪ6/i_2.8ЇrsxLi,7ϭ!G) t\զIָ^:lE:RAؑ~"|'K5b 4@߽|1@t7ZEԲ^(!^ +_5>^RoW[.#ܜ̎~f*F#]8)*ȩ: ӏ ώ j(2(}T#]ݺw˗ 3&WuU]`U" ,8X{f/Bg9Qpbh2Ѿj-Ӽ~\;ڠ&߽map;M0Vp= 7o_9f@6 hGMeCoҕ,A_O*!͇_ǜE]aXIrxÎClP]BQ9_8br c#}YJ endstream endobj 294 0 obj <>stream -g^,}hcua~+wJva!n ڟ8 -^:ݺtaOyG?|˴0M_;e?T59"'!NM>W/^D^:Ku |4)w'4F㼆 -GbǨe1yc&[p+F+BM3Q83QyIgs|9\YU2}M(<~`JR~ݗϽU;aŹe# g.h6涶p-~ud]"DՍՇ"ÓSH[:k54-Q$C3,5ur阮YSg⎻M|zE(9nmN؞ЯhpBCy3p}ݬ6z٫+%tyJ^?xKfJXeJ1m,rv)rv#ZTrBДMy]C5q,]Q_vjs:Wy{_K#~ }m!w9ݙrS>zrI>ѿX/*74]]~#< [ab//UIq;|yղNhgwqXH!a)^V99c<]?yw -ǤH[ZmyKCFy7%,l[5c<Ϗk5^?/z;*zki& ;L~| yX촜_Tʹ&='^k[sM1.k_K[ɚhOtKIFI!vC8|%zM<#Ni{=. nܚdZ9{{)dm|i gՃ}zCt-hrf8nI#e[dE]JiErSnz -~x/!9ϸ}V0>Ųs}56֬ޡͷ92 Ll卸,R>Ҷ -iVSGSySz-q --'rP^ˉݹԾ+i:ͦx4?ӓ4cZ:< -s66P AoG0T$һ㧖R"Ks3s,~,RjvggQJxu;MnbL.c5g9{E@^sL_˚Ɵ1vnᔍ͝< (/nMYaoIX^FyAnj|dps]_ b[A,wUb<6ܞ"Cmt?~0(2]^בH^&ĂB6KBIu ^8noݣN^@mEK9IV̜Fʘu4'lϽ>ȞSc+(R^8z -\/k1GtJ!'$CM(/>pN!s, -a9̀@;JC#>:7|j4Z?2>ou 冏we{ja:zx+b:ymdb'UI!?{"[TP6|61ټ͜R13kF1|ˋ!p;m 264S|ʍ[FP9uc -hf%/Su@{-dGo,FmJpe keh櫟۞k<6yq1HٴFe3IM?TUFa JEDA0 sńzk={=78=/J]55Lm-wYyT?Ux@[TŖͩb+5jd-Mk[۵E U߭UOfZ}]Fe--fL26FwںB}F0}1M;\ 1pMUS=Pc tz$ђ$q.цQCf y7 | 1;pς(txU]~F̏4D5M]HeZ~.|Յ1 "{XhLv~&b[ -WAPlKYliq ]YHhw){:v4!>u\5d(iFrlz; j^DZl-=E{S)Q -Q@U$`!G؎pЩ[~N| {U3x vL{Z$D -W~ѽrl!zö^ˆ Dz;b W+},^*st8IJ~!/""v*.҉ }p's('S!TXjsʻ܄wXLk+ s1_C@wFJMڇubmYڨj [JrcTȘ̥J׋)Ls}]/RD:uw,$RfqƊ.Yb>c̤xbG}452+{g#5j,UWPQ*Q]SCk.vYGdD4+A #?^ւ.N37v>S,{JmV)[74g?uX*rjBBWbY1C>z9jYqd{`ۣ{A=|NSdE -C͸eAšd0D`Hh~d[܉d2.=0g-Ļ\eҼyl~]_5OCl76dx%Z{*l12N\{ `-~rNSB5q𦈘>١%,7:P ػ`cW Eؤ4gsui4x_<^;?48~+ߍ" -M_,C5wTv9 i@2sO5'|5}`S\d)UЊ+;QLg-2Z'h)PQђظ1#_>ՅgҊPTL}TyLb*Kv G*GpV"T֯›nu*3SXm()g̙5mͦ VVWLp_2Vǭks+x zzrd}sy"Ru!o~ZpQ`Y<)g#Ȉ[Ia]A^>bbͽ<Ӝ\@\EWjWAڍ>;~EN YnU03񙷇O B1j[~T -y鍆Y0}); 1VepQ耉٩=2;&п;xX>^-π^[07UГozFrW_I*e/2Eph.p\ozܾC://m3O0/>xwճ|G-i}_uZ -ƕ]ڗ_]imJdzvN NϲqiGdzjg=;oSΚ9^02")ijwޞ<쳿I|Ç-vz%,pr<{Y=dY^qp5g9_6|۫(oBmHߡti]Z#.ݽkI,kV.,X@gޜpDN}>vOwzڲyl֖Y9{wr/cUkx[8P^ =q;{C@?bҷ3⬵i]['hG\y5]cϐZᘆ1N^,ZZ.D4^prx@܃_QiҞ.=M\+?yFI8/OmkO{o{4dk Fd.Ueۛ urҜWKwv|>!='Q{WXFWM{':rC5 ?cf1zHGhTH#a CpsCPo> -e4'|* "Rr-o/{Q}stH#F|4W9k2\TXi'?Uhvo,F0.uXr~(aŷA#=1 zl 't[܍ -8z}[pϛчsYʆ4D.c "# aJvBaAi^5Z?P}JF^OWN+#tݦ^⮵WD?돇{{e/S/htvYv&~~9\)8snt^zCwIm3DvBLݵt|\?Wu$~TĶj\?5OULk~Fp%CgYkN2wκݽsWLGg ֡YlmV10M&5ϛGE'~߬OVeܝL}~T<^G4wxO\i܈)hꓛd#diһuBL7V?h^NFf^w;h2nӦe.fz[%-5(F5$xB@Sw3k?ӨGzna -j( lۺl%MDhQIY6R+;KGJfJr^5?V~+֍?5XUy)l\ٱEZK:\pѵfAεԷvPsn< 0>&>_wؔ7_uf&+ߪIzxޕO]{'F@M=Ǭ_|l֮G-)8D3ZOMzrRzIuwϫp/j\?K~Ou}O۝oM;xP)m :ElgHm݇=ZHSxiKW4zʑt.kM5q IҔ@phyr2xW.vR@4}0J7J1e{a+]eדꅦW7ZZ{ݶlV32&'~\u>k9I0]krO>qTG:j!rIKmR^bT CFtMxEVS^6m[r+ w#Krv%$ #I2o0cnT{1jÙ>wT;j9jVg R!qJIvty5I{8IIe$5}s>ie?Y4Vev -wslv!CnIxLjFȩ}[_SO:Bz`I S)-9-MJreW˪xn&%'>u6Tދ0J$KBr;|j{_C^j^ck#iO7ܳᩆ 0Td*o6Q:\7r g -H7IN W`ސT=?8 l /?gîL,&oa4;j.Y M - /!<{gUʩe tBNlWW! @* :ƇDG΍EݖNF~g|;eίk2"o/~®N!,+nnêW.E({~TUK=f*J%~ybS4 nNo'<9W -bY+ WFL1fb̖`?f^5 }]/V$yF"²7a>X`9qhҔ(̊Sudgz#a,s4]N- j>޳,Ȧ1e8IY[S7+a{:E]ѻW__;A%!O%(/qGd%VjĬ -9cJ;d_tTt&(E*d3$qW*J Z" -j4r՚s<5QS^بI sBMZ^+tI+qㅷ#gZf5BJ2`%(&rU^ձ[-Nvh7B-9]%@+T,]nF@=tofTt)%}ҖɖW;ww|g_(;ěN^8M7΢.n(#~a>&]Vv tH .J@۴XXasPjM:zQ>f@Ƌsب9gx@΋D29\ٚdϵAFoH'\O]Mb>}b2ՖY*+g O3^͢wVB"rS?G\Vu2. UԫbfX>}hXeW@˅1 @342I 2sEPd˰O %}3eZn8W|(]- - vWmlE!vfrw{ 3y^;@IK\#n:`TLݜsK3ݕ|=fE^̢&L `FKsbKZ /7w8kRדŵFIZ޿Vh -u_Xm6$\.&`ෞW0)t_R2f-57#f7f2\{xʸ=!_r:^sB:#tf#?‡S6Up{= [O֪l p'nC1yp.!l@X- C -)d|4 '= |^> zD mHօ=tRZڰqqۚk`[J^ͿYVmVpsb}vdAS\4] [S ]HOHd$g؏;MWQUB4ՠ(q̸a\cdѯ[Ʊ\{pvy8zV -BxT Ɍ6_%4a:3iÎݽۑ$jBE(yMjՇ%qjWvO}0?Sh }P?ߐ^rW+gWkOc{ٸh7&jr:v6Y;G贠&ܛsX>fuԚ_4]ؑI}o݄N;b-ߓְU$FW'ϣ_t\1ë6@O$,ɾ3^?GUy2d>YچmbW[v7nNzLkz~gV_G)č[5] A{Ů?;,@g(^p7+4]+-,+&1x^:wD^iGM,<\BZbmU~ܥ`V@g`Ӌ&3|GvDK=_cep^+t|NNϙF5"qN8ΕEv_ w5kИO@ ~suno{bR#fGm[Tzn͕PR#3vkt1m* ||g86wS>m);K}2:3#<)LԴ?XyvǹzBW*hdG"L`|憁͠#7;j/me}fqVk+e>\]%ęuS9K۰-kմ6تG½y.9Nߕq,N69<@+{dNZE&4BSK849{/_~S,o~C剪?DUz6xnw"垨~kh~V׵^v`CmQ9 mY.fc00,Փ~Ӭ뚐Zڣoژ3?w9DȺj~WՔE(&_ fGH^O.Y wX|.% b&h4TifRO`BkğWQyP8UH~hZ3Y Rd~1Y\dlqm{#COTm$XȚRNX^G0c?ƈ_~ Z}nI+{ƃI&?^sW.}Nltݘ%lSmX I R ZkNE69AwE! lh¤Ҟ†r =0ƣh&LMR.9^X'f bŕU+0{xUnHb#ě`n~:|5T5LtN_~oQ(~lT_,YpڪדS,Ʒ^OxOk^N7/p_!;[goy$ 䅍9dT^nyuj5Nlt4QcX Q2RṂ駼:X=2ȱ" #^/.hG9樾=b-ڄVNQؕ*h._ v8;W 錚*snR.^eoU!ZGyiRj_ʻ .{@.rAODFY4 NAc -?ڛАʅޯGTMo 0 : -t8)P~)ui ?Pf+EeS -0VaiVYAS@zCz/sc/{A~j-F^lj[W_n7Mٶ؝7D)'j[}=rum 7Q,,V0N[_s't܎#">;pno8gx?N p 2Vc+}ftDMlNG$< - "69Ԯqc\Jp -/ T*āA)cqhLY Ͻ.$ Ҟ >θ^? FltbV zE#}wlC -. IIdkrG5+"R%_ n|ZgϏo@ׅ*Xz}[ʩ]2n@\(C?c1e6 &w`-g[ `56hqJ4_w r_@W g(k#ޙt#'/M|@ -!M&")PRƵht*ߑ菻؞KR8?[]G3`]ZJ.SJ뉄Lz|@zap1*C]WM XB\O;d]n߀]U?5`Pm~U<5F'zţ?fqt.M Ur{! ?V Iyl'a/[=@[ nnzK; /<R2rA@PdR=c2[%5ӻLcjIStDV+]L\k}qiߺ:`+no?]]6 +3NH$- )5H]x@)D{&???~+*χvsOxEO+?_Yg?}G{;:7?-7|L66 [ 5/Z\BdxST9^mwU*Eпr_%oEܴm\ۇ}ޞho>cpM1tecfd{xwnڄh]u-_*b*?- !.qr\8q9jnvt8d*jc:MHk޶c3|h -F?~wVqj:;m{}#ߵcŕv#-]$e6 JnΉhş&A5<:d2rQl>M+ZeKz;jZ>kgh~^?^5+D}Y<9~9vܰHM(QnTe$w]J:CO:R^}'iEК}3sj.il6T*>&S p+y5㯨bTط͑\wG !~/ϿZgxAOvq9C[Z6Wemٴ.b)F7 ^>Eq rk<&qMwMUn2͗ +[?fm: BI.Dh z&JV9NRhMQ$0X3\bw\Oǽ.k%G8`m<`Zvh9ko!AE5 - oVb==? I.4uMk\OoNu:%qĬQWKۉfρS{..l!zO,=ݫezƩ\ֳ wltz{nTuAN:[Y·[yQڐ'd4q}NUMڇSK>K]aUGx*٨=ԴFF2 m֙llί|/B: ^M[`B-UO#LP<#K ISVmv_tWNBLJM$)nt{g{XRmnj:h1d1a4PFKl,:f]*IwV+ ߣ+TzH0jRVtyaSޱګZeFјtZlXVwUIB -:s\ -S -f%Kd%4Fbzږ7U{*W! iH1d&ry]; Kue;ut_B]8+왢YS!4o֤ɮ:{Y B6\)Gyˍs+ôlE|Vl7ާWjaDIږ.} {n{/V*v^%W k鞯C.HAqqe@5j 斘Qn!x[b"ޕI y{ydKEv"X̋pH -&,\-(Иΐ|ekWUօWsyHMH-?IY﹠vADE#&LńYι޵gZs0]mǾ@dN8i`+~We 5D3FV>@B} -]c'6N}!%&4Wir^~fU83zf~- WxmH-N)̢7"29%lkf¼4G`Y Wf׉zV ;" -k,-!dfAzpX_g֖ >r1>Zj3u"qu5)+@jYPm P wxԈ )J*4 -=xł{q徊W'ݟ.d_:b#η?%lV hIOV 9@] ЏO b`)~ )!`0 RD^=@Jv3-PWvTD?OVU) H}l7j\bqBlg0 -x,RpO -nI؎;)`)QNMYl+z8*q\HG 0D1׺}Xȃw_HlqejjB^t~8gI܀7i") -xy.o'w;a8OGGZŅZNml)OXf2H+-' ;Z1Ee-'307_$K`Nj}zR{ocsnhonZWeTZ٪r^g@P -?~՘Q_6xNZt1DkԐR{1a9Zن[]o~[ī>;-9Xo`sTlSʇ3bOcOæu@G𺷏kW}0-= 7'խ:ֽ0/<92QsjF̼}0Km'ܞ?x<{6|x+3OZ=>b4 G. Z~0ܾQ6&bAɱn'xDQGr a(?Dw8h~ *62/n~m.lmJFXz:q9 -yIڏ]G^[?si+?-#C͉"R3vc)=~~/]lY&5_+)1pt-Gx$8$IZ ߾uyC niJCt֚MY]Bh}/tMn?+N9ꢱ_iu_[AqY^W,Uۨ.i$9sZk)pו'CUan>><쌒?p(BiqR_6M/9Uϳc|شݢkjbR|[A}L5wkwZ**+9+y/(] )벓%/ΦW8ijF@XtrZX)&(͛]xjtZ) -zgL|7j֮>-WwPύ[G_LPk莦ĩt`&5y״j<RyΜ-=7[|ǼbP(<-\0Z6ﰪϫ^">C=w7WZE56ij-x{Ln_r*bST)'t?¨w(ʭY*M9j3(+1LB ]O.ҡP0ݻ1t7,gK'I*騻㫵ULisf;,GdgYd>qmwtNTj{ -qgT5w)@\5(s1÷sO[t>Á#4)t;ԖE:KV%!> G[Xԛ#BU#E"@GN\iryQGD9^Ci3kc矵FBkX9qGl 9zRoAR.h:0>%§ 泎 Ph4lxdZ>*Z)HN\ǵ,.D%nVRcY, -LUTWkp4T|+Y.?,i1W3~§IbV. -оQc]Zgr[>bpoKmhyչb Z7-vu{+}zWx\_ -F,@9ht[3^D68 -E}Dx!apXH>6%3OK7jÜ7+KvFӽPnyz1#3i$bVpT4ŗX D8*O9\ns+zva#bckϱn2{0 Un2k0Ok@ ȥK]L t/K %m}ѕVgF՘ȒwKZ.)luLFJ{iG.X9ɗϭzD5W߰V=23n V~3t{Yi[Uԩ0jK>TMs'֎CjzDjSC#~yF?9VFKr)jabF#,g=`mf9Nc\CWp b6IT+?)f$ɡN}81n{ɗVDryYgip[;ٰYm_Vhu1[j3zl3o'*Yѯ$hQlУRkH;5ob|Go97yZX{k 瀩!# \]`U+11 ?> ˢ^ PR |:ȝ8|/ -rAMCI/,\C_ UXIK-Giu5$Is[t.IVP9=;ĴR Z."C1Y:S0ʚގ3e2~2`)\j̢s)m͞j+;Ka -9`Ä/!7]<)QyoDQF+;=(jXa+̲S⊃mm`3/@)$E) @4J{KJFFo@,T"EwYn.S:MD'[Cs᛾iqfb7'{fv̪TyF)*-WI1gɀBz+@7!Mq) w^b8?i'j;ʖ(%R e8'!<1_=Y?2sm|b4SOЮJhB7RmM@˟$ fkwuÜvۼN1U+a r]p WuDsx8Og -kk (n#X0WOZ`v707fit3. -g1}sZ/q6%'žei[0zWW%P!c:WKP~00twf'xr X7z;BO]7c! p47]-F=-UW] t=dt\WNEj494OCb(2@~dy\<\!{v*@j6{0~E4~ Y7HM -z?I[-BtD&&,=u0_ F< -_8U#3F_9_A)I5|1.}wէl)nIY?!s v2Ydz~~Ѳ\"tFf"uih/')U0Yn,^{15sMysW6Fo9:eϫ>{.C.K7gv1⌈W}jMwyx@#j-PO8 D \_VeYE/ߠxɁZ\ńh$Ǔcp[0e` pesCChi$RSަRt~j؏]x6vb:ZokXYcR"44l߅<\[=6hўIZ/aݗ'sZg4?nNIQ#* }GDwZn^M&cXT஝*q(L:?|ϻq.׏IpBjN -o Ey(r 8Z*jjxn-ZrwXMI5Wmr:>ʹ:ʟ-(O..gs(ZNM)Lb#8kCx[+<4Sipzmz[ߓ߯vxd=^Bj0'TRJS6ݗ,F߯7,(g+QɹW\:;,`gkbŰۥn_R#D"7T/ /MמF9}_ɯj:Ys5mePW곍vp(ܝ=p)$ዉ>Cɭ3y͊\TZXَCVm{m;I ^V7oH^̿ -OF -Ó/6eL2m0gSE'PёLkA{J<6-%#^^)>9%1TKy!4V.{]{{uxS–ǩՁZ$*re.LϲJKJl@nGKG^sLs T7[Wup+ Vȭ)]l.bJܢ'uCr2ŀhbI>_SI9/67?'3,Wnӯyݙ*{jXTWD({I~({90fN>̯wt +YUIήz⠉-^LZW 0,E Fq#m8.2#;IԚQvF;_/36mP(PwU\Rjl5L{1e?jS4^BnK.Sߠ8s9UVx3 M%0BFTos<<,*€ܢ?8߇^ckB{=E:2fT(]}|mVrӔ'6Z[ o|H",dZ7 ([u˿]0[rK:KP#[;])SصJ~Jhue͍ҫXVfJ͉|nol[VGDMalE=!B∇ۚ[tW; RG]e%Ef Gu+ͷ͏GCIh /:\| ER/rҒ_;$)vuqVPn+Ozc:/XL>pPn~֖ -Kb%o{nKI&*]{}٭\`Ikn m-'%&)eIj-˘n*Kį:.C>ݪ['I#ȘST:dj_/y"'KF/(Y;ċ#/Z|y&CiPܹ^C89`kiUwx"n W68sn>ͷ/m*MȻAݓ%^KF O$@ĵp+?DijɃݮ{w-(躣~Nx݋jz}o5~%na y|Βlv^LA T.TIM4Q8 - DtmqW8L_ca[@יcD 7zX~ f&x͡Q7>4hG>+| SS*QbE j W\#k3/6kZX;A -r_twJ6[+*O#;,[^YF9sL ):ilC9a\S1څߴK:&/Sv ֝6?گ3%}Z]*&ѰP@7k);7~N(\^yw$mh#f+÷}y9Ӛ7NqKݔN+⒅CE(u|WVeLzr}MxRM"2C54HUj]3?XhS%^NƠC'RUfۯ'\T3kDoe\Ioߠm[E3݄±;,M-Mħ=Вz;iʁbB\fp߇a03?fRfpUR|k}O.n#*78l`1=Ql ;䈊Is$}ܙM]NXv;ЬݬdO  )=@) xtI! -tyL\BAQkvO~aN L'J;c #|/o֖S/סdQ8de)fOW!N3,$ j}3VeFy *L@XKRTi,9##|3݄␀.vsY5g'o׎ ̡%Zc@9IYOMJcPP|Hj>(jBNjC *nNoR}N8JiyƍѸ sH#We3dԙm:_ZkRLGnk@/Ї  -L8FRlѻ4`Ҏ0:Uz0ZLV(zXJ=%yol#&nC{<ShƀLdIߥk3uE\~= X!6Jvn[C`߾ -Zp+)Ò_/7=[(\tN&4j;l-)z:%ؗzxO?g ۂom3$ (!\+nׁ R9p¹r|Vf3;@n+ Ol:&:~SQ9@37HYecDk.Tln+m\YN |AS tF٢nECC+l@~S%qs|O\i~>%@<{" - -\*3bĻ_OljfMvJ%@,FUD!QU2rv=mbΟM u@Kf |u@!H^7]«xwq|hMvUmB~gjB݆[uխF=WA!OPe}#Z#(raXW_1V-i>Iη_|qKDncm*nUR]>Ycb"d_}h\̈Ev2rrx8i x>Q#Mp C'f@C9Uo׺/;\| -ܾÏil_?Sz'6΍*!G}ȍ&ࣅc?C<4?tm6eizFzwiح苴c<`-.jrɱ-2wPN,qO?/mp׵qϞnbdɠYB' jz'mpi9jEw2lY|͉ El<௽vonPs8ǹKH{}鞗n\:Acĵ: ڷ7lezb - }LmsbYFT՗ލB7j'uPVW|~RkՓ%nNiw YPK ,"TȪ]/+R Ɵ}^kqkޭ}X/Rg6*}WTİ~`7t'-mhj|Nvop -8G6P'"b:=rqō.zIj2&m̩3Rl7tkzyR""*98vr\8*ڛٞ\mOK~uV(ylq|V%]8IVŧ7`>5ɥ<)O"%<%de39.G&`bɊoK~V_f3XfnR?;+Pb'+RXe۽Yj3`bo(πִh jav /VQC+:*> RL_ù72DTYl?l|'~,#ЎۖՂYΜEatMya{!緌w{old>~ƒoZZ~j51=BSh͆ȜvZJq: .VQ{$ c>,A5^8Z|u2Zm|J3`@PRґܦ`SCEVH%T.Rv/sQ>͋܍_2׻!R!$qK2Eh -Ϩ sOmOB.D}?W v[1p7[P`r:59`Ff=J"]sWU73QS%s+%hK% lt=*/ބMKi ɑ+V|щsbrǐ5;g9LJ?Ssbs -BϛU[QNg@OfHnJRC&^@ Pi6gГs9UqJc2P35cajPcjyJgi4˵ןlyװV J1\%U4Wi'ރ$!QQi͝y+].wΎUY3S8Կ2A dtcSӬRg9O/2aR4?4胖%l -ar:Y8̠k_ox)uwYԊ ^(dcAPd+mUcj=33&I;^1 } |Tu ‐yP1\.+mX{'!qZi9~ a} b"Bi!m!IgŨ~"9dgOZ>TyKZrO\!kP,Eɿwtqv^I] DY&t>þt`c L{X Eo}찝OP@뎆}لLu*c;cK}!3΂̬'nt.+(qhJ\eZtz-a?0UW[bt8Za'β}/eCSCfhCnSD28eEo\tΧX(i,Qv"J9-ebOmH/@|=jv!v42ImkdtׅQưKBߛ?19g=t<+"Vw=MףHҴBw4}@q#{ #v ȸm{Tc &* P s Ęrk@)@oI9Jvc' 䤃!(M34N_gV.*3JX{\}@u&rPZL+@DnAcS<Ënh]xt3ovg1_l>oWh> jWZ oO_-n _F>0LfsE]# ؎UXCz=`k#W`fU}rmG՗8 GMV1|:Ng#?~>;B5hpwV@~V@Q4P{(rYy[f_ Zn7fcDх@=wgqv4i>Y-6}cXc]Bwȇv1Dn]6-(xU-,1d#%ڌg -zmM5\׿ -7 0=ky a1S`P$5Q ڥ(?@ʹl[kqR#ď̼ 46]b7ag$|v{ߎD݃:}n.+6pƾWm?h"浓!hFG|SWZWOJDO7\]@mOkX=Zߛpf wAXݸt- {I:}Ge[?k+/zedl _u9Q%71/ױl`BeG{ -l]GQs9g1g1kgoKfPFq 8GCNkạn٩RO[:A-꽽=niUN 5f"g4̵sMj[w^;a +8d'b'A˞tK^+AKw=3s^5Q ˲=U⮝DLdumYTZ/`CAN]BkF:â428ѩKkR.uYnII]n`θԣD2͞eFuaP7i1v74hZ]l7"Lz+U?lE#3+')yGq Ƙ3b> -NҘp$.qY57#Z#^e_9Ӕ.y4>R^)- ֔3Q_T`d#auB-߿7YUv^`X:`Wm jUdbSM>Ul8S[ -khA -{;B5B* ^N*QΜJG̒$lzˋK^i 5B9XJ7|EyJww8ٰW5l1scJT| i8y>7\״MYT>(՘'3AI8b, 樦{V*y>d]2Μ-Ƴu<)֬b:ZlVL102R`ހaj1!|h`,/ck±Qbך1SbO@*/ ->ᄲR1*#aZ (y -I:Il@#JM`ʯ!^yW8?RxCCR6m4ya9Ŧu&A?#{]00]h+M(2>)6)Ƴown;Sk+m=PQu4>Uq C `F;<X& [v T^:fO+@8D0R|jp @o'Ndd|c]OM̪ ^+)demk r+0odh/HHaBEֈ3L|(]$$ԴR@l5EH$[HH@r%$6) > I؅ylڮgo -ejg>Zx#*&]8vmZaKK3Krd\E@zwrG\o o6 <}v\&\f$o,2ZT -e_O:ӐθL@T ]^'BYϜy@U2zoP}uS$@3NJbz=@7'@m鿚f. PP}8k#"-%+?·RgOŤ5,aqw#a[@CsQV=VtYnW_=y2}A0X#cy O$Y7 1=.ApK^q{[53p{5dLFtJm!$sCQ=[פ[7VWӋjg7Z@y3,"bx8Y E 3E^+y'&\o3C]Rؽ u>Akg[pHx$2@z4 b.Ŵ[b8@z/u M ŹT|'tx9PLƸvQ׆ӽs8 oW>6K+OWʦ$?˩]84tiYO_j4P]TT(| -)l:ߝ+t\2hfi]cB.юw5u~>:1З!z:8}OO8ЧOldLq၅ڭtZW_b0:}gz6do1sD6HRvݻfI1Vcrr(ݬEEMy̑Ǖ>,r|#ߴNVwJZ蹇t1) 30om+H^f阼2^n9"iE&W!7EKG4BO;ur -D:\:"6ѽS]+/.5g/uozmÏN_9'mc6Y ؎K8#-=0OOCM4 6({GC~С4b[Knڊݐg]>MN߾gE?U\ H;OkqDZos?\+c@ -}GfΧ&!ywݩOQݐh>NguM6j8+A¬?_{\K{;eȨGwC<:Tnq7aKk͞7+ݬ}45O/}- Kujm`Mm)TvvRix<4DZ͂S2ĵ[W}Z r[ͧ5Tkz5s!.{uZV Z8W'b{|içj׊ȓ]7+sى&|fȼ p}?z5ru״6\5J"jPLFٶVyњZr_}&3S֞6F)`#\V[-,4YI!9y#iʊ\3DZm5j3ITmh%mHMC|V{3&;-ʣ6G1JפeW.h>@wGoYʤsOԤm2cQ7M; [oz Pq<͞oN'W(BN89%e[.j(.l(ݣH|s_$V!`X<182 -3"t #Z =w0ؿP8(xyW+LŊ;3Ylϒ^M0hڐ~ފgtd'v$t"Ob.I$6v LI&|%O,F?q pNRnjaftbL%YêasVM^)eg2Pfz?~:DMcQZyZ»z31xT. -:NJ{d|H,U0O_7HoT[Ĵx7Rm ,Fմ; Lx$Rdh Qjg%Ya N^w7j^ȣyãe  8";S8@DjRDK@{ |ʞ>B2  _ٝ)8bW3KjEABb+HecE%iAJcACx[19PkWhjPu@h:|U]6z11 =,-~^;-Ki.}9 vUgT+{ -aӤ$%!pohiq -#"3gmzB[٘fl'y4 -`6`N)`. BZلuL `f$?|\O]hv|d')i dw$xփ i!WDWڂ+VJ뀽] JshuXpa8.@/3/Qp_q Dȹ$+1)2xhh?2,W^lӓRWgn~ @z; Q7;c:jyIcMp*ʟ A{G-[7Z"C&~? -W== {H5|fi!Sl@' XH͗z $xαRXy$s:C_Z\Oe.~ "l?Spnrf?uS@tĆ-ZJJwgYd&dU 0&$o]?.?i ;xqX:u^O}RM9:K^17Zʡ}#<|m}P=/Cɜ3u8:(]xV YTJ(IEbnS7k -;JTp=?nM|w.Ghn5N~*Vy^`PIQ%dUvL7 :l/"0Sj _R?\칉Z4a,">Spp>'+;{û0Ulנt靛~h%O38I_/'v-2zxja>F2ިQpU7̯|`ydyxr+9`>e䥆Z~Pw7W{k{1dXkdh8hU테U{u/I{VX P6TxMD/c+*'CY|}'SJmdװSOJLi !\i,ha56oV`0ZYߏ;uvt5i2lxjԁ*()+,~MtS\nJY:v+GXJkn1hN6WG5ibƶTN0@&^uaX N3!h2Qx7T;}[*rܢ*đ/G~APaJbyԠ(3]b=LE\wO'7_^Vw4W۾N -:{1mLL7m[cDS¡R -2Х2~m>rE'.MJ5V%DǷyU$I(5{~7|6JMh sȝ - c =d-Oek6>a|i 2+죛pM%ռ;ՆrKbxK+."­Wȭ!z8ma뱾Am M’ -|vHTw2]z:= g-ʥgwƊɵz^w;oT/#ڒ[;^`upLk,^63Y!X?.]>S`y ,|+搤?3U`U!}>8yu{sK8jGv_7QJ`B##AG vq\?KTV졉6ރ(W?R:3XphRr)FM<p&dA`QկB&PoAʊ6 0OkG/eV7;LjZ[Tds܃?8<7;v|/ .($):EA'Eu :JƦ^T|ޣMsK9Y8{Wә9_ o:/8N=oCCSc uLWSt2)e@DA?EUz 1]XHQjgCP#[Of^Lp!Ebrxcxԭ] T[ .{t>0 ]dQd9*K\m-@\j#}IrUu@VҾD G -ݯ[c1AO!J:WSGvw;X4W@_<= 4 -(73WO#A6$릨,uŀ:Up@3ŵҋP*r(Q>튡֋QwWbd#\@;[?QwH@3s78T@OBq S(R&qm 0MoP`j0h -3T:)צ(-ǟQgރH1Kp*K"aCA-[eɱ;ɸwߪ{lYcFk pH =C23`GUdoz6yg'MO42z xj|OQ_)\b)=+u~?߼ >w~mEW -A`@_7-RI̫;'?Eqw@ӓRU|X/ʦbp?Y?MN(Rݭ)Uz%mJ@] ԏErXvYdu 4`o]߽-髎s"~'?˨J (Ú 3(hN>xC]O[;O]ildsVYFX/ms]z'nMO__OLt ߨ5/{;% ->׀vo6Pgf^}>,q Kfӫv+]y|ϖs!閎]>`[u1Ƶީ76HLwnJPdD% '~E䬀BlLT.~ʡMes/%uzQwCĽv||:6빭|`ƛrs"?8RQ3cf̘U4]uʯAq\c(> r<^z${ª+ЛnO5^8ߵN%VFpsGKa/ jNM zF#,C5wdιfeyK n -9lluݐFN+n_K-)t=iCCUm8$Z]֙ve7kd}Lӯ7WJ iܿe&R^sGm/1ATŊmU8X4N5HW)=[עyrz){WV[WjI}si_qe]=,+\Pŀ<PF~ͳUCYgNk8ś'+OPFCǸ{_9$?Y:u;9!3{h_mOM~_6vS},_)[^ZLS_`qg_o>.%OzqEhȞfE'G $ZXTR,s.ĝ M7B̧_y[f]34g7Z#jn'?.=Uc[5W/^Ç^_Pz-o/X,|Pؕ5 ,֜Afa>qW[ U^1[V㥯BV5) ʋ:ˎ,ΥZ>J#yI(hјً$#TL1 Aߴ\ ;ٛ38&]~Ur_JI뀽Sh<9%MZ+yj!I𽪉Qo舁 DTXLe&Po6ć̳diͳ VJ:^{Sl()^xʓrڀe7`?ISB)8>̮DE_YZBN?(olb[6_,b)-}3dP+!1^̭إP +ȃ@ i/oÎgю; #WcNmYL'Xy3+LٌvxGl};h 1F5U3ŭF9ڒr>Mrb$QY-o> nz&(`sڒ=ϳKˮX2{dt|΋WgݫeH!jΚ[(HCQ~|!扃HL"7Wp(A}9Xz}F~M9]Rw2>lc_-O=K8a8b"1fg-4gN[ے-5z')7 -rr02qĂjD1uzN{] 3dT1nsY`bs>n2zK\"L,0nc%j7gLƍ9mz=~w@akBʔDD]bq ׮ V2c! 7Zo4TRxQ]:0jFXd·Iݧ1_yt)=#*} -J]w^>'dc!dvX%\J{NzB}/6Z?%TjzH"[ Dt09Qp7Q^]p^k8m,0կ[*6,aS`V3sYIr֔J9jO6A-]1u'5\ $FyĵuEv@䘃ShNk?AƖ@wALZZRG@bA Ol@m/hL8$WG|Z}nϩZgq'Hϐv ^!ǿq+RLAo!g `k`XSM1@e IDyڵm繨+"^@" -5?^ 0ew V5qs.x̄9ǜ;.RS#,SjTmDZy"zpx}3wXt!y8H?޳԰7ښa)nCj^5Sl -DVa49Uɔ9łZH$-Mx|?%"x`18tq94H9VEUubLeBq2ͶI֧*@;D]h x,R.(LzUqbkdFuU5ɮ(4ǣ9,DR.>+s1n* -@9n[L(z -e 7z8=rPd^Nd:\cpT"eXgaEe6#BhfAwbR򶋵S+ٱ^N- rQBFޑFou`qX+ظut& nl2/~1G4f|</V{Y˽/ -Uh -ޱɮ -7ۻk8r&xXNTnVVi h] 2z 0&G^# \2KBV X#o'%#K`~`tbռzEә=~ى@P6xJBM,&Z,o37J^-j%2>RO@(Z +t e=D$ U/ ~޹ͣxTl76QbsJG䎸ihl  K>SO> eA]´@ܶ *4w{Teh xUHE7T%3{IGHf'Hxy|:T~Tŷd1 1W a; u' 5iSKw\Q1u l YhEA2)aS7`шb!'baՌ|)@ -d7}?90om $w$+ܿ0o,H׎k[݃Cw@@b - -% = ݢR3hlW?V&sj!q"QH]5ur:hzOZrX~~m`Q(_:@BA.{\ς [c ;w+/jűܾt]bD'Y#Km{C`~~ㆠl~umfVW^JKPXo-PXv=PhcyP(f oeމȞ0ҥ -$!Zۿ5M^T n? -m7(aʂir%'#Ai'Cht|Pᄎɉ\j6 zQʀB,کu0[0hbK+6gF8 IoCᆜ=I&(RɨT)$.s%o&hx't\'|qׯ\Cͼ#]lᵾ]DÆ%ԛjw}?I$RwYCsJsd%: AGBDQ+v$IC({ 6}CL&纛C/d`ѽJZBjڐʂX5d{d&qJ|wZOv-!Jv0Zsm&>NmfK{IEGi,2X4"\ydC>9)Td$y34 }Wnmd5{Mu~lz_J2Y/d͗cU J#QzQ8ƐClBg[fJYI΋LlK4;rq$h:'V~o -ޑVc`U5(at[tM(ɞ%ǔ^ߓF&9猏mމ9 WO]hk^'eT "1ۇ]ް0G{Q'^ -ồz&b&x~}6={x,Lӗ CFj0P)ʊrQ$rE/.۝WYM᝴WbQ&?j"n<Jy V  -[;n_+a:RNfSn/j| Ղe+EiV M_U5dz}.u߃@=rDkUaЩZ:j W8l5z $O&ZMG*D+S󷒊ǠSP9(J=rR^Nj0W-f7Ku]WcR%.eؕ3s+Kҥ|j]eYd^b)[ uXdzTy:c˖.QHlǭ譲NJ⹹}8%iJ+Q΄Y -Rc\h[ZXL -(Tq!<7XʽtNn]\6G'n[v>K#UyOZZLm؛bgs8 } dƒR EF49e9E1qzVl,*2KazĐHo{>=PdXғHOqz&bÛo2~9E:罥̓^)D͵`o7#:sJU2,,3xf;#$UhzQ$z,haitbG<%exKv隰or2_j.wh%U*r!$9w]ғv\J'FL&!L(}/DF \-5|=#(M9`;ZBݸTv-] -8,(C)QGB>Ns,SbA\/cM+(ȁ!k+P|-U|zZhR9vG%6U,5SBR{E=ŚBnźr cAǬi Xe$}{i3&hfɢb(|]f8G4 MuF¦=es7z14+hV){%rCd"8pZ"r+Fxo9=R><^uQOh4hg#rF6@VVv91H$x""ӿMaHR|DGsI8_gA 09i XjTh{uKC۳"8Iް)Qm71E.hQ;I5O:Qߕ.rA13GJz -{4a@dr$d[g Cecu(@O5_\&@PS+Gr= k&^hovX~ŽhE/5A)Gx:y9P b H`^ -O``rׯdSq(r`j|EUq`XߔV7ށ\h\Nll{wƐq 獌'w3ѺUQ{N)i\b]|w<]NM1w&4ql~g;s-9椰;fH=e;~8rr1`P^/eR<>k7@$ yD9AtpX{m[+]:vOH -Hyը96K&c 6߶(ݏ2?NP"T>-|uѩնf҂E2 5H4VHlTAl>Q#ґ/RV_->()ic4MҘ֊\-9bV7:Ji-e/ ik2H4\4.Y;bv_TKRw6 j[i}eAs, |a8ٛš@a P P@Z-7 k,Z}@w}큿WGWkφ䫁Q#Ж*awt©^Ʀg7yyKJ%z{_yݫIC{7B9~%j!{_ZޣWBx_H]i\~#>zajs1!z~j$I8Ȟgllf&0#͊7K[lqn ΉG8i\Jx&q9<ͥ/Ms |.6K?0ʢ6[?oô[>PAZV87]τ^7U'B(RZȃW D x(Ҍ,&g&K?!B+l^+x;¤T+G'LY̌ -Q ]7{$~߁+feO~&M%f1CN/+l?'we;0CNw'M|BpC7!'ڗx"p gkx?ؗ}#ńW?}Q;WR{V\!>T`1e (\JHqWLe\(AwWO%cھ, iѱahΘkoϨ790ic)A@§YSQ6J_(f[g.pxx,Bܨ蝦jo㜘a(W*~5xBa8+V-</@У.yԇ*o6 -]i{Vkײ/{<~jqWq}pKVb-B1n ^'(.jwV= .ЯYHx8*?6i}.g<@$U{ͻ "̹{V%cUޕf\m.\<.G,s^ ˽5~^R VymTn>m~JS澮\ʝXL엛fu%ެV? 9 WU؝⺴:۬\9a('G 'GiB<}yh.NUB?t7F_B3'!0#ZX[H$y v* ½Ֆ3`r :euzf{6w8!fԶ8ݙ2*tP#W?x+|휸2^116n4zYg-n -FNekiTKt&[U<g^.shIl+23c3Vs-͗ XQ?$ۉ}/nɸzx51#网8$xGfnœ3t[)vd5_|fԟ7ǒ\daLNEUNp/*|x/|qٱzXnJL\,Rjzp+3I2䓼,Zi^ 4JB޾?TR8ZLxUå ?g"K9&34)sPn̂lcv?)p_m!-ȲK]W0^'+e?ЧּJt<\e4nܺ - %7'Fnb֖M}2=읲GiuھfNFٍۺ@oMF`UUpjY8V!_A32wȷ@;0&p+6&%L2pg$>l0}sij0f5?A:ڲUn6V6-C?r8҄"94s܌wW[sI\ҤS%QZ f_7G黴ti,fR"_{$u@P>Wu\SQAR^b@krF<$:sXsJ -=O[L|ʯ@B?)vfff%sc'3Pu"³[EsB <_Үy{KI-SB{:e(}ϭ=)6L9BP! 뚀V9NR~#XJ pỶ`W5#Q::A=JM5S4<) LDAM@ݫk|9imoJǂ'/Yh>ɍV&>BL3 1K+)4ն21y1),";hz2 ?$_u4ʑ>= #{of:7z*OW]DTDMH,YV|?R~s9rT.m@&Nkބ[lAMbg&0T4!(U>xLOL<-ka`!lO/Nc{w=#':N>ۣ{uOs2|/8{e`(Wxv^j韝O ƭ6?.?^{)ljD[={oCɤjE\Ca(_~6|=E3f/]hP:eVuӨ{OMr^ƽ%nRYҸn&ktI׆ в.;GeXҡe`tZӞEz'bɾ&Q\U%?/U"*ެ˾Yh\f Lٷ -鋨ꞹ Bc\wgKaD3 eq:uDž^,8/lޒ͈͎ #kvu0,llSy1XZ0֗S^\ a^ly1}ǑO\MrPy/+I/׃46>.}Jl,őf9<؉k5c4m9 -MʯvQNg -\2*0b׻An/l㡬bI-"e5z)OKř=C9͋v$[%Yܗ,ސQd[$Hnb(y y0XN2we<#y):a(~Re*?EvբUFXl621 xs}tYSީ)2hA]NDg~<9# %Umd,ft?w9clCuezXVxhT3#1f܍r&d"%XxMfOrs -MUrAz!M6V L".u~,v[hSj7f?\h {9,Xfޢ@syR=%%F$9!q8t!IΦF LChbAkWo Mtm]m3SkK*{~fy[]3W˦39;PG-',0Q6ۇo:x>#9twyrtֿKcaa7be\/w7͡[ (BSA!|ԟOLr,n A_!>Ov|ēcē&{%c fble nIslKݞ~Ezx8<'3>"gDYQӨ$ OVS"oG -H; b,Dnc)2t{azr]yҢDf'3CP@Lsue›%- -ɣ -.f+{߲|FfL0F!-e/sgxk>/*/i\KAIňτ2hTq9~4pr~:y?z ѻy1Xr7ZY4nT#.vhD04\Lq>ӻLQIrC'ߢB{} l׭nTAkͧ\>QyOm}!A?"•sbU5N& e3.NvetyAm3j¢,}qBw2UV -)4W:)ڜ>;_-m83T[gfӱYίDor;FPp#gLgcYPoN@OW}$dn8r>#%<:@Gí՗cuznqu[C+'+g4l~^Or)l|'t5/NT,7n֚5|܈ p^ޭr]=Lim|<%j\'}B<5TRp"&d>Ws{0?P˙2_V1Dr <' - -Z)ۮlƝ+[s*mK~hIo.әpd=.΋K̒|Mֽ=S=k_cnFmSC*Ew]bVEP*UXgĩyTa{BG_nDRWX,7绌,C6M> M6j"lT*un|{A]ujF8N2:u-<|<c -}Rs[KҷH^ T&!̿WG-Yu n7hl -FB*m%x^i9a١)R&#Qt-ZXyT^+&¯T"#"Im'WӺK .UVN^㹻Yjt+I= *zFkd+4g]dјaslM6E=$>{lˮUB?|뇳7ͦo:tjIyCtYnfnƶ6]LgZyl|hĐa bGe<*~RPViƹ1ŕYF\/PΆ781c@%}rso]nܻ} -g|]"q;#َ J+e)K߉f7*zb*MͼA# gxuJ]?ier$VIV"Wۀ -Op;\- }I_x?˟K| g`9Mg g/32 -snj}C -d_;3fos19i( 'V;&OΪ\T>j3~tBvՇ܏H8lN^&L@Yb -blI_o{3Jk}=M o⹙*W\/j^pp32~ޤ^0+052W3wmzUkٚ(L&Y _gE+HWMm3c2+x -r~IөF4NT!hֺ{9u yfP^&l^1mU /j\MZ_Tڲ;oq`VuIY`< )O`& bRfDgz}W5pU**LXMOS^mU+Gl[B迮LYW?Ak/:隳O{َo BW$mTպHixW2en\vq5*8+۟H8y9@@wu -1v( .mѷzj'g?sev6uĢӝ(*u;VYTc -0>17CYs1GrH^նqI -3 !={U}fcsrbX?@'~̱o2沞"VM.pD2t<8#l9L/V}['R_0G*~^rT[Z -#:/F]bXm\1%LG߁VpxfU}ˡ\vx':''-ˑ]vh}kAX&]uИp)u#BAyxJ-E'm8ڇid6+! JT {xLڡ,:7{$D};4ۡO^H69 -Bmc:F3{9M~R ! 1Ϟ-ë}/@E<%|meʴobx<,<;"CXΧuu_/Խ߻P&s*! [TAk=!;n3jf$.kj2uPϱ׷"vb`L]薩;oHCeWMRKgRN?$;;ddG^̺PњanP&q'Jplqޣ+`-ӈ-殢?}"Vs./>dXί+uY2f-9@b^s1փ77;}49Ttz!ۭ.Wr5xLИTw]%ڳ#LCB跖~K,&A A&F Sw'QS2WU^zr͋1C喜)tzg[~yAG,=kTO)&/dz z^ru;FtrE8.Cʕv^T٧(r]>0lPoI> Dw=grGO]*:U'BVŭi)vlN9us[.%4Qt楺hw E#r>Ckz뮾)0bꫜ<8SAt)YDk:-uNMWDcǚSYf]/E]«^YOx/?.E1.g7 io>ǟxn2;Ơnt< A]6Hy5u\k\\emą_t9 "S{o'dg*:xj,1X?6Iw{;e%cDzc[\*;iڋV5)TRvH^vaCj:Ddjd&e)7@vނh..Q_ům2{r׌EF/>Dwb^{%~R6 ^UED|LbՓ[Z[mתd%Ɍf)Q5=o KOS샦&-HSaЬL5dѰb{`p_oC2'mMN:,qEOU+?NE C߁}0&>:g}P3AgؑQ,rWL) y C̋ 1-9>xYN&U/۶^2&ֆO/0b7G6pl|IM"le&\7g F2^ O{C1Rջ"wYЗ@B!dG`O/Q뺥AL]۬AvjdetcHֆWK3;QQ{LzGY\Z/l4FWivw/Tt# *Z٬c>u/20|1JEI{؋&'U&H]Z;4J'1~\9=ܣ@!:J,1~e^e`񓭻Ϛ%OZɟTɻfsm{(5rQi!oJǂO Pνg[u R*mF[Tě%ldW/߻nBUBj+ߕNW}INS|\]I > c ({A'X (mbТj'μ7=˶&OL]iĢp$_eut<{nGi|jiƳօK6k`QxyqO#>Z||T/ py,2!)++کrb唢CK!x󔀠(g͏,`GģENK#tNG?i}qXeir!ܫTf_a[h2ڀ~\-T'?Aã^nW:%_t׌;SSC=XazdU\.=>tli{=Uva sĄ,""A2J+{f{^\k򮢨)JBL~o ?:Фz>⭾x~!2,B1.FQvRG[ZE'o+N -oP~rOމU[㯾cPM&"}k]/1XLqd*BK_s#dsO&k4"Ņ[P֝% Ω<\ '֓K_4M>O~aDEᾭ `D8w'Tɲ.:Y{]Q=VBsJiEvUjyTym,nYyV%ÞUu@ -gA4QLbA+re!,1]ŊX'dƢNμA'6W?/tzۯ6>ӂRpiaN`<"5_oYԦU>3jl8+s)t":~Z˥`AP#)i{6~аkUoe2J;zC-ڐI23E]dWqpϧ_tlBQLm -Vxc^֏wPȂ/Dqp%s酸kzU][~/{aD23Ȱg,οQбE:m& uk-1=^n@UAQӁbT!uKՏ4gͩ#쳿%}Y<[t-ޒlrYeY}d0N z!~^!EṬ& !h{FjRy{prvqAk7Er4ncJGg?ZCEY̭OyyɪiJg!uygkg3ǬfvSSi>0{~'e6nI(sFaj'#,rd#r7Lspbљ}&Axst [X_~!cq#ƵM1όi^%j;j iض2v_LJTO/fo^GNup:#+"tneJiQ-Nۣnv8}~:P6`Z,Io'X*zTv*U ׮}j zлXw2N;ɓfsǠkǺkЌgTP?ng\^s!u p ./?>P_,/qۊԾPtCQ˺G^#}ME94'bs,c04?)O?"_?ϣoH?7RO@籷_ ߢPAY%@%2ɋTJXͤ_+/:_M{yF(\A#ot.oꍵ}>mW">7Ty˫V+oK;sһbt7O<ͩ_(Y\:؞x/ڵ-d/ -~_ַF~PVNDz>Y -Εwϕ2Չ`RnV9`oԗ_u_o^j00a͕˗BT|A|D-LgNjgcRJ2%ԣ%|˰K(z0+/Iwo'1/7MEؽ Y}6] UjI]b(1RK&-]yߙ@DGYdZ(;t֒8~(p*MLTP3(fK2UwF85 1coETxUguoʬйDwiK;ÌBRJm(J+<#eBQ:=il_bݗ.p.B59ply[ԔPⴁ# -7]xulUKC&?_z^a k:*f-!aθk'=.7#MQ~fȯ~2D,{^dY|O^?Š ^=WDBV\eYVX 1 M='WmC^DXzpzۯKRh$(lGfH0>lcL=B<hh&f*@]02~.t]_w|Q_„7oyQB=NԮU^#LX{lsvs+|Vzf=W_ta! fTG%xH\T \KUݩꜦ t(.ӷ@{ِkRKReR.￴KPǤI$T?PiK8xvP3@nM}62MxGawR7pʼnQZn,^=) -}k'xr$4.q46dO9\Hr~^wxvT9|3ᅱ la뽽*|vkMk{ Fr'WZD WU'&p%|%Xpk__3P-g)XqF@@bjܪmڙ"Y==f#K8%.ǭMY3a&s(~ /PSBMA[d'6ZX!!~RM.Xbƚ 9{t8Zt}̆i?S,,[n1J3YسrieI=N/ѫ4agF~>VgTWBO'жDZtdaώ21nr>^sJ%_)ku=+W=uKA|yu33Z]P]RJ+0b<:VMhtLcJNQ|}R7Axj-to|; g{8(ï@uQ*}6mOk, @&lҴ]t\˜S%iOÉK[U@&S{AE ɻI;7\N5Xfp۷eP}~Upbv.>t%>.}SGp]S츌ʁ*5Tl]ؑaƢin܎'Kpkع\zÀGA ڡ:F}\;pw(yJ}{),?D9V޹h,Ui.;Lf15I{{ܺ(_NaiU˲ŷlMvYן4a@^Sh~!gRߚXG)92P.5Pҧw+RAWL];/3̹*8Cd"jQ|4,7L+sY'suOx>M7>ӠXo Jd ʫ7ۭ:( 1x%,ebf~Hɴ&/_%Vwbov:ei֩P\}eMA-VO@tJw8vb !pw솨Zxϸjz$AA`RBžL8uq6VFYάF1zx?l(Q6 92Y$cC. E~m_,(dO+b͢tȓYOAAAO~>{uS~ v26# endstream endobj 295 0 obj <>stream -Ⱥރ։#eXcgdp/dn=dVS۠%Ϡ3ШȨbCOÀ@/OrF9)o(/cP,4{>-tRYSycAsǓwj݄8:M?Pv\^O_5?4yjڱeqF󅭝TxZycv46;H\޻l~E)؟:CG&IsG M:BR2'@5?ss(zPXy}{,[A5o3դڹϳ0{[wun}?M$>t/s97Eٕ* -ˮS~dsT^JJ#i=.iUs<~_:ilB8Ժl4H!vPS/[ٽ_iu#*-ߢR,f^x -Tӳ&A/$jXۓ=O͙r{+'PoMQ*P`__t&+TW%Ζ@/J'6hi](*'ӨB.*aMq]td6]<ݑbݟf6.u)ziCf30|:?ͯՍͼ܃YtUh|ߢP 05@3 pw7=8껔s/gsljc^"Al)VY{u6u=rYZa\ZfWZȊ{n! - Egx -ݾ -PWD7_Q5*d\Y"u2*~)ڻ|Oi0cHGIaI_f/1u6y2L| -P2Ԥ5;wovjӏBJ߆v5|N[\#gvHڧ}肎L2Mr{)UꙂLDݞ3'6y3&gAnH2nR=/$1I֮[GnZv|tbȯlֆ hzrؐI$-TvwQEwgT^[#MnLcD;+!'ggk[YTbWU/tZYA[B!rG! a&kʩ!qwGs/TT3dl\- -UZ_i-1gkd9M k+.vwWͥ7j>ۯs Y동S -~ˁCQc|ޢ>:.=ʵNV#'z$?Ƙ4oNc"Ͷ 7S3_Lz.;G `ׄ$*'9P<P4iP -6(jCGӑWXH'޹S0bXQZUEVG_ȲFpE9qK>?ΤLtS:/ZA`|L<,) >k;+4SI$}`@f^wQBj`ҝ=p[O٠pEq%RB? e ]ʙ&s쭐.pR6p,*!SNb@')mJ XQ/c`:KWxlr#ȤcU׷f{\/~ - -2Tch.p%nycfԌI%kwgo~g*5)wؕzѸrGL^p$5@.;l,nBA ijOͻCg{x K4Xp@ -:O;Ӡ(KP\.(& EP\G~vhYU&E3Sۓ/fai^Jh0~ g -gɯ׃_ۦ F}-R#8jPLS~]vXoH?w;L۹q3}2-OCـ|\903(e(]jιP}!EfuqTWmow*n۝=8!N7zg=Dژ汫Q K f%@ 5)P (Q $I/Cuo }燍 E]\Lyo\ t.WN; |vƽ̣oe0N\? %Ct6l7Y[/23^3G<^XIscWCVM^.Ym9(U!t,CQ$AiG N܅8'*z1ŸRرDvbyUNQRM|0{CuUhj *î*Ă@'(͂ɍG *|ܯ3z9v G7>S ig#p:ew橐d0_U$;SA⪻(4Gg?H@Cxn{%P2ʹE *ORCM:DF}.-8kpJpWug6/T3&xɑ;-.q" -n{wҶ͋x/JWڀrd2TB"~l:%6HhdtΙ+2ף=IwYgǐ3]4z+[i /- ùu[H5kC|y|gG=@Y_ls^]V4dC}UPZV-QUriY%ftm{"?9Eacf//%B]:@ٹHp9?C1=5g*M}qCYey<_oRMۤLj=ki3OMN 5mUB4~Oo)hL -qV(UE(z$P-fW< -[AgVzGeK[7z̢Ax<6ǢD,ZJ|\W`mA|q$SPM~zWB_sy\ Oy`)v X];6K1~A̽H$Эy|FgL<peyw%&J۶o^=,oo0>#re9@ٖL );GG=K nJ؟{e(VAy4 T_^k>sS}{ȲT:54%$ۉ|gT'K*/y]E]ldcǐ&Ȑ$'kx+fIPUN=:@hؒ}hV|.o]ܐưD rQ:/I<9~YUq\dVC^Ov PNM}hBQEa>O잛ˠb]_w=*]_%G)~!b|/벎Zrq#Wg*oN/fT_ԲB'Iؚʅ7WraIED`0 -+șKm2:rxrh+`}#g>Xuz.AԬY?r1k~8マ݊11o<yz7{u#NfËwi:a(`MM';Q:=*&<4`XWeqfI|x?W,FRq ckO2L拜dw|!W -Kʯ4Ϯ83l=$s'~o)٘KbxD)%5iveE0bMgkR1*VG~YGuۑ0H0#س]}ؒɌT}:x&՛Ҫ5i:<$v,XaM[@jNވƕM9Q;Jr3dK]8l2XPѷPgi$G+bK,u2o -{k*NaҊųvbdy(a֨iUa~;5p0qzBTp-Puah^Ax4kq~GMXC(]3wmx8HΧVvT*7b\}Q__ȰmaϫG5U(ot3Bzޛ=m_EIo '5c(b^Ԉ _H(6 5u*-O6mcFm4i=6Q$ɩ'd[Ͷu^/dDX8g~]v0A]ty^^^b (›9tD9>B&[r}k[qҸ3q?u7#!Aٱfj׉B' iERyӥnSF^hYPD2 -aΕ5/d^pFzmOHYvj&4E|k(6l8wh?&à<wU:袝/$X6'-Eγ9`y+,\Ћ+x`'[u-G[:nIPMOJ -~> 3 pVFQ}Cvgt|ܜ6"]otAtyv]97R5=\/db'GeZV5oxEsLAxR!M"e%(ZOn2 GԥrņVSK}}vZ&p}zkВ\Cg1:blly†tz^pmrJJh J:s%zw~L/ŕkbɴ/wqy-W,3AeA/?{z>=vwPܬLw'N jtS<"IOmrY2 -KN[ ?94RM璝 objZn|pK7k5rχ].OxQw籬h#tKz(X`K5PEorCaV,! P;POEgY(B%6*f =$iSP~޴Ay&ȢY5//iCqy3aD*N9PM -Tί̓9Or@`N^Wdo۽Uyl -F4B&7%ɂٜ|v% 7('P4-wA>b?-Ey.۷!E2UNvk'シm(ʍycʅ٤;9u2*.[-_p"զݜzLj`8@IX8]A:O?#J>:|5vڞ4,`?#C񤟤 ,lX=VtgޙYMѝ/S/^jMl/jML*9^^qq$']Lߘ22 pm- sqŠC|o`(ӇhsJة`ŧv)F#V FXZ{N%gR^wF41y䙫0t.aU%&xg74 $޿sDz.(UOqJPG> CgNiژlWBwږJy(nj -/jUO˼Ce<N_p[o1>4x΃y̨/ؽTUOPvX{${:߶^@ĉn-+ĵ TJvjq\jY3ʒ6VQ}AǦ&>m{„AI{t!OwOrLdo(1ᑥ/[EiL>ܽiw&i9Œn'xZ^qȭVocrZ ;5|3˹]eF(C\mЩlv5GqB< ǪhJJ1=oX@9,Lh7Rl6Ӓk Ło ea~kW{s-QvwVˬ&Z-٬7o{pEk d^R2[_Lr5HS&6u-nYg9AC "i:ij$)kAG'Zxotg:A7r[}т0.%R9E=psz:dFq&.Zh޹t]"_(<& -˶z&qtuuAL(?͛66{$(Ǩ?kx㒯ebV5C b9__ -8CKV?d4tl]IXsxU7cqr.Zl/#:dwWhS[dBEUadZUj]BSrG䔉d0 -IOjynƣ*щgv :ζeO_΀t&.Tgg ??m@2LE B$rxl-Ps^v`ArGh|:~).{{?u)T:D~X)5)Nqf{:` ar7厀j;izTy;Pm<drE7RD'D<.lqag9Wa5lF5]Œː*Lvנq<G)x#V'sYzzKyeԳkrTU5ٌ`!vM [@1Я Cw[[lũ`u~s᰿*z#NSoЋƄyi>ECnLֈs1`(s\~7 %лV~ԅ츽 f3ǃ.{ݢͫٯ4~Oe~."3fyc hCKiN-NU<UBPk SlxVȣo46E9ٶ/pVxw]sq]j(ڳ)vU/q#6Gf%Ò>%IJ:]2l;8عd;^|q#d\/%1DAMf,7ϼ>kc1޺S5jkUIZR3, vU}?A?'g) ˊ j~x=]EMo]HkM{yaНs)=`&U -l, .ߕѦ퓷w4˃ͮXwWSp}^<m#g|8_9 }{lLM+_v́oh5T kO[uR񀘧MenNBLd5SF˦KJ}rm=A-ީ]-q?"30";9݊)/NgD'P5G2PJcUI>k,սqno2VV$YP -^`6W·ʨ>LԻbpuV/;]Ђ)m~=1mCێ.ڌ%Dk,DR? x&/~MJ_KL+vkiW&nViφ0^{ˉҖ#n5PH=-űݑf84~zl^)Ӝs06l)ҖJܿPDZ}n1z?='EO}:^!-a|12% vw_= -uiLDq@ڢrjpA;4ԜBN#Z+h OP0.{}sVlC~~51w5|%cEʍ=/\UZ(LmRɧ.|9L9zmKajZsR\eZݭVz-gxAi]xIXczϷڲ_GNiIyIŒ`?J)N={|]vs͒# eN(NH}ٞ/x(龞5i3+N+DK/ΐs?]b_(bBQƪ_((0d0 i3\+L5a>ʺ[ߝ -_9ΏleEqgy5NYk,[zWryݶo9wngI|q#s,8wDu]=j m*UTtIpP i_Хb--t eWW=tz|HI+ ŮgmC|>m|9ߡuEeh֐\lzɜz%hy%4"Jk});VWrv kW󃚉k8?[ce_=w@άs4Mu7>keUC{4 C۵қo*^te]Z^qE;_PP _Q][eS#WծTqN'ᑣz,5\^6B 3.P\ΞVw幑3e[)᥵dKk\ ykgH:F*w٬.[˰_WØ{]lcv`>\hdv6\+7J:/nǙU<2z;ۯSR(c(T~8Oiz]1 -e+LJzm!*S pJ'V5:e"Juo$`"+ϵŔD3_ʜ傫ǵ72w^8ledeG?!1 e&RʿY6}s;- *J l6uщ'=_tW`v|hQ-tYPClqnZ^F0r ]Rz+FX X!Wݭ/tTAa`t`Lq -kv|jT{{t" IJFaՎWwmc\Giq_mY`~~ (V?/ 6nM>P& -&,3C5ky%9 bLzyj 'ufhv=~9әhC;/yI@Gբ Lyj"2jxi1t.j/1@)/jW֛zA\XVK`!mh؁vϹ]T6akO,}PF3(V w g"/-a A;b Uřޞ3h/"Xm\{w"`0Hmӏ}غ+s['k@0V]N+{wY ]JPn2A@^ e]bv̡w;yNS$f^$y0,nWg@ΆuҶ|_p/P>u & *a/[@Pȅ}̡P]P-@/EDsU}x/{zg@ <:܍}e3m0כߡYZZC@0~dU@0!d,L rL-YޔdaͰuK[YvSC-(ܴu6- ~ -^C; )}#0u 7҃>^(2բg^>.x Dt@'UOKA/ NstGiA{д{afUz zbP}TVm:`F}0VLUJJN]<|24:4s88ʇr ?t՚cfv jDXD}^šU̒= Aҷ)=Y(|fZ IIrȴN;>IֽyĚhn/0 +FI* -]:  -RʙϔVrҬ1E MrTe&+voH5y]'4]|mh窩xGƢbih~ ~h}/z7'gg6Z\JO;;dWH: 7 #K3J7鰷Z#)Rs29Ֆ[N:=fκ|6<|Ru>W.M\K/Lnӽ%@4eu {>= 0Qˡו'&ϋLZ_wAcQN²FW-B7lh5:N{G uJ`Y+h:F>h6L _e=PLʇAi DuVA39av7dms0̤ȳԛNqf*sq*o0NqzBC;ylw$w®C{S ԃB (^]xNv`+$/˓jR1<R&tSqFQhGF7B z̐{uI"#~48P9 RiѺ"Á1l^pruyn>R^k|3iveD1?|{\j:~З{>O&A;$jg!EW@1 [;p dzGgH0ŞzN/1ǽ<X3T2eV6ƠS:A9)Rc$Qe&}9~ IЗ)8[\eX:oOd8G.r3ʼgBZgp/ |*=Ӓ˗2q'fe{? 9PVpW⿎{Wﳤ' --z. ;|z4b\!s]C)ڕ~rRs<=oZofKpFW&<>--eXI!ֽ4D.Hlj˴;|$Q_xuR1el[˕.zߦqB}bw#@IsXXր>τe-f.1mQWG% ˈJoiNQ/0gޑxј}lFöWjg|Ii=>(}S[SyHY{{URs2L.5UQ(C u1q46r7=wp^/upwv~ֹ]\$͸mv;6-?{Tezu_S֯)ȤfuU4۩E!Aƺ[xLeB2.aJ -qRw(E>HkԞa<!Azny6,3blϒrx60x=ԁk=CZ$͸qo?`TKg1~nWk]1Su~Y]eJ92XSiwmrznnPcAtqŮJG]1rCDSʞYEDNٖni=XN'7:DVEP,%ejVլ~x^ !9H5nr>4oE(Hɳ&V-v^[b dTfm]J ?V=zzbke?zY]^* 9k+OŻ5wa]Xb?h?Z0&LJ:)vw|Sd˙p9Z({ʒkZ$3juw- '?r Ekt$n qf@o@ 0ȓ2Zmf^"@OP"z}$ ) v]kDҌtTL eEy5x*d0H&ʛ?]1S+fW4kPxtKKPIC3TbyjPTZJ2H÷vT$@C lj_W碏35*TOU7(w2*@5+LiFi6@fz6U n{cIXJ9Єj -8ӊӢJs6A6oh% -1T;hJ - Gs;WK+@#& Ʒa緜 Cׅ +" }c@u c5ݙEe92:Խ s[W|-VP@yqzp\ k`B^Az]w1Tr aP|vx@S,usok%eGb]R\"[vܯRPfFtt]etD 2i 1 6TF_Ӱ##%+z }EdUV"ޓ+Ccyuz-溥wWS ! 3G|ؑg~2K8#o@w9}󹤟YqnyE6[q:ϡ8=]x_yA(|,SKygxt ns@6R^Jf:baܰD_; e^F߽roQLŀ.`kI{ˏ7ms dozWslåz]]a[Km3V_IJur9+,_i2QH BgДP^9Vm+߭$(VKlpN˭Mk+NFLd+cG{󾓐̝u}oN:П#q,.KmZr7nmPm{3QF=ȌuSfpBһpBbFYmK73`u<*Cxl]9I83>jbWs{GleK/ Ɩ.>DyBTFFAF5cƵYjg7Z,?&T2C"RT&3plWnl#Jy-JStX)TT@ԻVSa%c6[mDw1dɀpTs.L=rC]ku™z Awش58^lۗl7Sz^/q#EGbԴTYûw_}~ymSIgO-kEkz]Tϟ[dz:^&fM # _¤Nu\="?=^[ SI?r!\E|uܡd{ǒnuN~UcDzƎ_s1Zv8a,53 @+-cw7t c?+Wvu 3Y, Uq1b]Hl.^w^%W~<ɗ|V.ꥴ4d \ l̯8TvxF7QG'ڝ;2(^XNeXK?•`ٖnHv4;M -58 ԫL]pUo2-vYp6U AJ{+hAMAA^-9 VdP=\; wwO՛ -^|:M8wAd_5V,IM\>ɔ.^΍Z &[&sc)SY.+#R@Lg8ć`WͺI`, -VVjh)t=OFZ]$+ewz\3ϼ\!eoet}f 9iKE -U-i"{צDlBWXMh1vfHHRʻ`φ,G)68Z(͢S9WwUs-dH9:f>ɵ(vpF8ؠXQٝUQOL9w%&BP^կS 0UJ-ޯ &m}^" DJ³| }s) bQorwngD,Y/BY>d Pcf4ZrH*Qi؂ M1UYZ bFA5M#҈neωEt\-{45(t=2V|~7J^`)LӘ=_GS]"T@ L q_x]NwM(.Z-*%ר1|"O C1`תϲ*\W@@}"@]+۷U>@nE8wTn . pϋyD*iFk\U9>$?ldZ֡)PW3gI>y8<: [ FkK#c;9wNbk& `vgl2ٜ63./<@{i[^4?5 .nUɯ>]/45>3_^ :K -{rYNog4~M sNmu^r3v -DŃOq  DRO|f=I]Ni_np9zɷ.Nd%tիXZ̲7޶T?f} -H<||c~D`=I z4li)8RUY`~ͬgOzM6<ŏ|d3v[۽7}w7ljyZ_qj]|$3`^pNЃӀ#'LM@nG'].)3>;7wSa{Am7q)?wS%-;ySĆiutRز腊WPi󱟽M{F%3m\(f޹z'ɞ+{; ^& -7>5y䦎>? -Sznyvֆ\n -.zvέjE*B~FmVNO77G&^S$P в6T;^|I',nmayú5M-EǗQɚe,)7=`R )zؿ&2=ӏCo~BhϠ>,.M:_ѫB=EcN'U=kdieI{|콷/WĦ99g6Zԁn`ްӄL/?lĚ0ob 7{|Wd?T>:+:rt㼛 Wߞ`e fkZi֤;7#c^7zKP팴%-5wcsǥ9A d;;Xhk>ʕ?詭cC2&κW W3Ԭ&_uWF;]OqqC+0rjt?YC0[9~w箾Nf}C7]V&ϗwgsd-=[28b#O܄,Er_T]y^;Ì@8'qΩk6g| g]= A¥.$RH8ԳP/FEs2 ڎ{=m2[d;OT4lg`10ldz4aWTC*L(ڣsG R;wh@פg0J[5K'58IlA;2FaWn2dhC.&y4:Kd>KmTsڲW: -.׭ܭ|mZۗ,_Iɡ_s. -p Ucevc\8=1֬lۤz"[s -:kiRFܥ7>&᤯B9ɭ\玅OɦbgttEty[x;O:}[J|{,rޮn*rskpK+LFM{~Om**}l"Y[I`hym2"qpW:T{%v۟.K.I9qQڊJO{74gOWt}oVf5eL ctz2=^f#^e3r~hJ6޵sԻ6,7VA$E'SIsy}(+qt&ѭ`1zM,\Rb?; -קGUQɯsM]K7?"ltۡ/dIPkfĐ(ϪuO+YA_+B!kT~h5SZi>u*޵{ :d϶w 'WoV횏=}* 5 T\FmC>{_? εD#Zٵ[IQ֊hx[bJ^q ^z\f"jMu.ʼP1RY!5~`K5˟Ңc| Ò`AVGʥҧ'y{}Gzӭ~s4IvpbrFZOVv}z4]R%i<œN4g-~t]Q]k̋lEPDQATlPPX{]ߙOㅚ  0MWݩyгJ:>XUK嚝E+[*ݛUiPO:hdкUzvQ+{heA΢<>\Qi8>z Lxze{ɰz*kctLXQvVn%+oKrN})nBy|WM?ow'+)إ:ˈ!mUD [Dܥ$炼q~Cٸ傑^y66)hzVzS}(>@LS_ Fjw<]UX狚y .W3T_Q\W(w7o6</^jSl] @ 隸_q{l4{0?U u?T.}ݬ1[ą8/1 j,V1Gջkwl?p^uwy8HY0L<|~lxhu|<3c IE~NB~=fWΫTa?f,O{ GƩƞ=R["ߊ;"6irSj1~.adз -A2}9(Dؼ㋯WmPKAaS<L0=s#黢j"Y>aRjY!HjdTh'ՋHox)5(7}#D04R6(v^-RS8QcfgyRZc֡AZTAߒzCt`#D/HU"lғ*k8",VCĊj b@fBtN)cWV6>@m -PHrB@wuSd >2a0I92ؐr GP4}h$D? 7vK0F $H6Xi:z*%Ms0<߃Xs.@) -w+lI|<+$|h87 ឦ )ůn ceia #lpo -ܟ[Ci&-0h0t{]tNH|yEXʘF_!r b;vgy -k3wVe!ߔ>kp8̓+7]".q[ -`<.Z+0" =nФ Mn@ozL6wfMN<$| -yp߼e2 2G \~}F4wxH;H[ ;`kuޗY{M/VГo>a/mSLE׊/fLY_- ӃU<;ma=Q)wVwW'U^b JLW$UL_c= wJ~thy&ܣ>XAרg.|''JRH Xmۜ9 5\qFG|=ބ!Sn[xWnY\wzy|xh Ԁ(xk)- -.Qs1:_UN;TSޮޝdLէf,-" nSTP]7:?cZ~GW -_MM?E?C7ca@xOv=sג1،pl,rIT<8. X}" kx^Фm3@}KO{r)m^}hOG\9[nwgZKre&Mm|2۳a䑬;tD_W>>*:R!^ 3ћ}\mwۃ7Uk׈LW)/,4&ϯKƖ0ʹ5ůcbp̶Iܮ1{xR1{w0Ae@] @L r? -O0_ITs-[֍S2 }r괭xv<,gYy=,#ݚY`t_5{a_aB)\{g+aݯJ՗/~?@ -s# -&Nm㾻o+ז8Vacw[;>Z/zڊp'?ad5Ʃz=ϔ14ʧwNu?c/xq~O1?Vz;|YyC2H - ZlGHNusG/-&E@}sN$S[M[<\(偙ihz)S}w>)*h{V1U|]h $:ڝ9Ň.o[RFX`/R<<p߲RmE'Ay=uSMK9YΠ:b;͵66mUkֿ~^Q$;{ĘO!ϟ  UXgS0|&N-kA?1<ԩhh1KvʫEV߄R %@]97Uj=oqP#1epq }4;:_^)K([boKV>@y3|tO]j@}}]yQ~CDo'TsX.jta>gCbc70Μ54->̚(KC-5ۨf4!4vPq"WVyweNaJzӋqf|Vƴh/F!G({OX_w7 c$Dk61nӣT™1iw QTUӯ轮q#g|.OvvRzLjQ5|BUy|4>e_l~,.9uf2hļ5Rs,7)[\Z !jD&2J\نRŧRLϊZuSH)F|JE9mg=-v˧B.<|s2 7\F?Q h II`ˆ|K.(4Vb%(YDպXW|>|. 䧻Uu%҂RVaEv3Ow΀) `9U}R#x~ $ֈ<2DD "V -:Gj %QȪ/*)<4PZ{wȫUȠeJ>~|&O)@n3Cf|<%\3gPBVJ80{}6ǭLLOܞٿ(}u8~ +0ڱc]ٽ'ֶ/o)8@Z@P\&d\]` @ @/.pi%bԊ;6Oru|ח}ӄ o^X2%@Z,?s|H2m `dl"!Ϝ9K+]`oFT ffh5n2R?]OX<8Șn) ;eѨ0GB|g! U0q+ϳ)FGD^=zxS*3K]+78)=X -tTR[p4w4Yi__0F - %M/cB-?0Ye^ kֺ7 xo{{zՕJ5MkǍs 9Iϧ(և&i;N_g\9qM>0D 54) ?*\} &iK>8sG.ܖW:NI)g9Y80r u#6΃nYhJ/)Skiyg2Y:e掸Tg xϿkMSe'/ 뒻b\Zshn`cvKGVR%fW;ȱ||GN3?4 -w&Lh:ʤݐhU -m~h3KGsK,g@ -19X_>t>_>z.~lG)9wpMLtg=nZK 9l)?fDyO>MonҨ> -UF?D/xfj=u0zdEE S,Hql|ڍUi}(~Iogse-#S5бVMAKL)254,;(aPAO`K걻A!~5u^m5K l0!EZ'Y%Km=nO,{諗V&M1Ydp`aLl?x<*Dg,RթETW~QBC=;YЀIGn/6 A%W/wcV}ƬIMkl:(l>S|ݔW#Z "nڣMbmQi|mwت/L9>!G|2ݓ|Yٮv`/ݴ=ZYf۰`lbxy/}y -{.]6{eU&}7w-+o`٪γUKBkukWUɭ#k<y= V}S(4"yZA[J5_D}K/] -KSD̔|+֛jjM{Yˤ"oXZl7-\Rl߀N諃^ (q#jEIS&F$?㱨^S~ WqoqdS^JUT^7X+@3tyjIwչyۮs LGSˈPt㈾9Ŵ7iGA\b}4vU ?knbFY*>O{p[ {`t՛t[d0p#lj]?C[ ;\8S~nI'&it ŒQ~g߅ZTfZ s; -g[4j}!"\Mlؽhp2yp?rk^^瞽T\Ѷv`䨩Lǣm#'qT?\@B_u9bUUZޗJ[vۨ.Glѝ*Ajrou/`5@m5ZvV=Щ ieygEp,k+1eP_ԧvȗ@id*mxtt4r3q;rViө8 Ù(yYo:;=*E3SVwQ0ɾH%DHhϋ!cYh5i,-K+S~|wf\q(h^-Oɦ<3}&8*#nʳX*_XL:r?-]VضY&U|K>l)%F[6tw9OO6[# +]Raf7e#`:kOcSyȷNKn.wX+S[LuUS?yVwQCd37ɨ\q"ɅOmf1*WBm']/#WٍÈNf~>!R{#u)`*DOHwQĴ+XxUmlbvސ /`c :~?/6EKYaS1bjǬt܋Dr3d'}'cu&jZ̩=Z.paJȌ0Z @!@D|sEJ U؏4" - -"EX_[m8; ۧ2ZM/YsDQȚc?oTȨ“ CDD툨JXf[V2!%"roXk!X#GE.m~< "F8@fP`dOF/&VL'o3C!y -!d@]mx-pT ^K:n֪/64<۩ء/`U;{ywv:ܖO$lHgԃhO Oޗ iryBt;y'!*O I:y[Z?_:xS_D}@+ l܆ @Bk&~&rgА^r'M}1c'$ylq.MKd%CV?{KUg@WWͲ:$ ЉT58_id@lXbplE9ڛP잤$\28Zly6s8pgǦ:vX͸*UHrh͌ǫw۬Bl0cΜ#i/lV~^)z  HɹJ[`.kc鱓+~#(=<^LM*YV%ctfּoGkYqpp\9=$)I}1*(0PJؑ}!qoj֞NT0{Ҩ;TLgknCElTB5dʹuVUg\8PVn9$C|3gt,by5 HSQNjiD0c.3`N3} 4;ON޲mgS޳n :{ 6 em#Jo|.?C2aNy sQ#7țq+O =O|LUJ_qq֗__&ɲ[p0tm}E45vZF|72F4& {t d%}?q?mi~lp?wSBof_btEidǜ \/Ǻx^z{vsdvU}-[{Ӥ8~nMjڎ̰19G\WQWS}}]I1yWp:ߋ_:;1gA x8sŊn3G]i"k{ίĒŏ4]ئ6΅oDQjolS'{GՋ[!tt ]bWvw4` ud5j>RYz$w?&4wwޛkiH?|'}ušZt[&6Cl d<zɮX~ţ%GiՋ-p(+zwXXpN+~roUN(fH~Oc7[<\J]rE`דyF97!:ZDs8hͺң:؜ -g=Ѳ]6 "Fx l&վNE%4eeRS{`#׼2iEeRJaIp\?D0;~:<z7GMњMq6E{4_h&`Id[ -~'ʳ^ ۊY/|#rY=H|Uw**Dd~m^R7uZYgy8`yP*e|OE''Aj7*ԖPjBVM+˟I(dhk>vCSٯW o.zX&qm(bBg>T˺Rx64_Ut2;횒оDH$ڡ,<OmO5!vrq8_<^z&>'!?Ķ2NkqX[C6 j{X|cn^#.aT;,!P[ 37ɊPq$\96B$*Q/^6)ڤ j j,Bt>R/†A+3/Rg7绋_ߦp693GI=}_]V/҂JQ')՘ZMԥCVYVP/#̽UT>B3juقM}e*T T*#$?\Dpr !7wfx<~zA]WgsЙ`GzЖCf˹d7NOM!ġYdzV-e6BaUxWZaBw=j8\oR ];WqqFX5qqEz4%!l |_YekOM?崾4+f>5Śgڂ8* r+ʰ󪮽8}Isz,gDޔ-t.pv_xVsi&=oο?ۉbNd6Ђ)`}emW}`r{;uGe\x嬀r1 -5-t]r̤-^˰d#TvB1MŨ+.Uҩ¼[5vom3T&[w;N\J9s]GJD`}{ilNJkGGH*偐/su_>?җňɥ9?aΘ^썤ѾS,]SR4^d]w#j9CFI'y Ŵyzk<|׭}5խϱS -YY,[ΚK&]߾dZ.uj;2S4H[_[FK=䉗 Z#AD?B3B 3")_F%ՙ٤_Kby>lԺi1.YStH]Dh㑄(Uc Cr+ "Y` _H,TnMjy?f>ү$K3d뮘CHV bI2b!"!Y|K<@}7vh+ [ȟi#:䳿F|&3y&I)|ZDKK@B:[wND  -ѐ0pe+3c#ɇ昙v& -h&*CFcs` :ɖ>ExEskGmwSy\2~x/t@>4@yWHX^^F9Dio/R >\7_=kw}gh;Hc]רY#`\^v(l!7@ZY4 uhgǻO{:ڧ~<nzyFhT+w^;sK{S[Q>]rQThۅurӀ?t V!'Z7,Aה(*j+;|=AƧۇE7ngx\:k쭮9%On>ͯJ~K}g{QuEXw^c@` 7 {^ !!oFۭjIw<՛ޛXg]7P)ޏ<ú[%vfȽAw~=Ο_^H8̮' -,Z%7708<~zb~3Q -{^n._[s(/Z~2Gf]}ouwRsa⦗sGYt{m~7R)M7zӻp%^"r.sK|ekLVnWY/;Gh#Ey nT*+2)L`HߞDp$~،W=u+S^tsduTN^|T]5<\ozcn}fAL[֓ Fi_ӣ>( Bm?^ b_;ϩiN#7⽚eS;#7ag__^SJRJe^-Y_5w3G93̺t*Ykl;tPYO+, Rj꤉D#0v'Jr qW\YEwD@DQwA0GLD48l{7 E)[ -Vs -&2Xo݂ 4yj -W U0řt9"fbCUS@#7֣78[%l=.N>U䛻83YgàŐZׄjQi!hdޛ -c|ۧp6c[kQs.[~#V̶ZL8HٷKnftIńvݘ\b1je2P )'kW+t|]޲n_­y^(0\6sm=cZtsvܕӫ[]0ުiW}w-'gdI }=(??+PKz<*}ߖОPa-O}'"?fbyǜj }Q Y{a2Jv3#۳/V3ۘ Us*LO|Wg&-1&ek`qW,d)T*b`Yb${(放zMǏ{5Jv3L`*T~)I(*xRLcG'(ͦVƧ=xU9]}[^76&MV=RW$p1GoI3êbceDr;q~vV!1;# +:ȓ#u 4V|r +H\9>#N͙{lT~@c>0MEc'>49k4~vxAwr񈕙˼Ԥmcw'@U%V*ń䬞:/Vq8 ?,Q׿1~GN<^?Sԭ=Y}dJA|B bgB:}N},]Xͻ65>e,edE$I!667̗Q)ioWqO&qwÉOӁnךڟL)XbU1[n9vAgn'`/`3Nu7!wbkŻrI#69ϴ'Y n8 @) ('uXqdm0ѹ~R">s;4'&Ԇeh)pFnv{z!BPȩwRJwg&60sjc4h:z#>üdzWv̢WiM'Uh_ܹNǢNT0C Bү9*LmwduuFdx_ubzGC>f<<(NDԄ^]ǝZzwhW)ھdRle8_Du| Ȼ]\nښN* H&` p:iUj1'tޓQ ;H̖~Wq'uծ$k۷a0V}aPwZZ;I"7ˮ>{Sd[K뮏46?pl.6Okrq vl)ך|ToҡD7!zMH5fƍ[Ku+USq٪mՐvPՠ+Zsvוin+;" 5B N Y3U^MP^(SV?nJZԚI;v1P~]NPR&˳-(q>oy3Kô+XPbT%Tc1FN|R]ŭ)ޮ@eA`t~4X;/ - R^i>e\e]\^aE1悒ąy/+TT}9dKW~ JvVN`-OE6 4OI~nwhupzŠƦk窗;- APV(/  m_f^eK4pF9Xg?Hf7O꫌S -/Rl- -}ߡpDO6L^j}da)j vz/'An^\]O%t8!ѭ2X1ccDUZbA(@eFUY wg2/%Z|0"S=Uo{kznN)!_w=p}<%,S/b[Jߜ_ %gt6*wNRuK;%& 5f$\kd|$83&nj=Ne|DglzIT OOpӡ09n|b¤ѷ{8IA$mIruΟHX(1j}$(creʯ$Iv!d,ID*eU 3[+6Iܿ_) -*>,Hl*QAݠIz|E.<d_T&r!cQxeh1H$WЎO5?/_3I>KtabEKesy6p$Eh;y#.!yC/2޻]2wƦ˹zB`;[\F^#@l>6`q6M_ J]k8w%hvpWK%{t6Q6kɇO]}'ɥū[mxzCsGﲍTMD4om_{2c{gx_ϱhC'>R`wݦu_^j3O3ѳIxn5;+ogq5g4Ojy OR=Q}>^ܯ[>V~mA:uJ}n'w#87)nҜܥ|M|Ťڣӭj .@uʝ}A;.:PmB^+jAUmx7ckNV68G[s3@&ޤRyUm[w^gbv-GiW+ 4gn{C#ofB_rz8=n"p?q*{p]a -n~R.??GgSo"٦ye Wi9Aǩ9SClnžA;XUwL/5CqɟO|qOO>>S9uV-.NO8N8>|!pG/0-gA>-.8xx3Jm{UjUQp+- -`0w%{DhZOe{ygwEg 8UOϬٝmhYd>eo:lPW2\y:줣+ !2Fo{HxdRxj%ͅrv0=BGm -ǩm,^uKs;k@YȐ9tBeA_lu/?d^W;֪q&?Rs0Kk&"imf=1eő:D4'!X |x6l֪QUW3uWV[Ev@N \er^LYǤk=V'-zi?IUhikw`b_wEg6NE솓8/ZRIRmq}W=KcH~|YE|r1,'&Ut GN՟ seX[`z9 @0ys 0P3-t*L@$U$Ps%Pն'KֻNV_H šy'e5DsAW.ѴK5˹sԇ[cy,_H4 ]Td}KhJlUFHLqR>i -9r8gr6rmqY}Y~ @th}|v0⑽v3[$1/?kdY8֌,f.* p]U?:G|(}֩ IζU' -7CUvoZx#eZK~YUfsQW'1c1 ]B='?Zϣ8B3>|fdl2b{8Gٿ.x\ECP?ki:%=vwѡE:^~ԴIU,Dlz)LBPšZTn,Oϐ#s(q9FpLX[f3O 6r y{a? $ -!upl36~oG 2*yo~=-bwuU=ԕG4/R0%!|`hNg<=Főujf>BJ'!~ᩈWg9Q{=Dxb#o;Ѳ9is_B妃0t(c]Iʵ_aV)~t8,,ގ_yW|[*<I~Jxk:*9*7aâ7J|`1=8zf.k1m5R!y#Z[F-c#(1l\ -g]`zŠ>*^mX:dBADcOpxM`XwAs 2-dVI6ЁpgLcTq6<Z6uw{6'iT/Ukz1S8ٍh -2Z5f윌M|M䄟&'vU }*ȕGx0*F?l\WIKEcFCk/I?;dh{YNBȉxnC4ꎓu,(LUkq +τ!럼JXqY|:GփE -.?q/En";eGCk`wϘٯyxδL"aǩWDd2¬QƔ⓮ûs4U]C|u) --񧻳Z8k =prM`;'y#gMxM3W&V5Rt,'* 0훥ߘ}\|\?Һl?*ڋ'Ju?gVZvtSܷOc"Rv]P[y,M -i|$9ӵa7?`@{d\&%-fX{kSQ')} - ܻܷ-~w; cUn-L-y :D$ 漭7QN]ÐuMٚZcq`U+8cV5mne:U: $]W5A\9蟲7Mk?z v'9 ~}ھjIQkJzƭ^/caVʨl5ҡret(RKiu+w”\Kae yҺ+X|\;IѲv㧁'k< @K#]Պe4DhmؿMLY)NT#pSͫ  ȝjC`uݬ?-DVhVQA®%N8f}c3o)=IqYJԀG:KYW8=L3akaRZʦмb3Y o`mp0$X${vn, <3I uEhBIw]3Hyo??n -ʭB5s|q}-F{ ϙ@Sc u -廔X|Pd|Qd[jOF(k*eO?[)~f}#nh^+Op DYO6Mٚtۇ2zwն]ڮ=O.Wף0KC򦶋OuM%$& y%ɐdIBao ZdTe(r)丶)}.52$aL3oY:0w)d߲@,Pљ%3MRag,Fx\ Ne/ ʐߥ$ }fNrߨk^;/^Cʫ/~SS~fa^׿`)JC̢Ų \2I/Y; e3Z2o#q%pW>ǧZuO{ylyx'F?䣷/i?_UY랤ZH'Wh"I+;@ P/vx~Bi_^O#W[a5??s3~r3K9u'nV.YO7U=Rɻq(&b N[y^- }:]Q*(צP?.ί|rv¬HrѦT{nvi=j_dmRYRXzrmc|)U,Jc70:ao)RbGDZC9`פf|Y څe4AU"l.cA8d]t3E^N(<@ˊ a=֪F;%4W4%&iΘ0-]q *ny~[>u\hD`/Q wy>[k7\ftq {V왗3X3ˎ _9+ͥYS㊌~1{&Wyvv7 X*ͣr e^rbp-VkAv~Fl ާlP\/_ݱVVWGSs]ejU4gmYs}:`;9J br~7 Oe~|0x{3,WE!ޙq;'zΖxaڧ:~LT'a6m#;130ڱs4ۢY0;DIxz={lm6={ں)m ̺u̎տh:9=Iս2!.kzO}ښZ؝[j}1U|1яhu.%ukCh=./eer`9=NNL+}D]|0134ɡ7R[^vm*PU/]efKf~1fR,䍿UMeI2iΓs!Zr9ȮH׆"[UAY"bOպ˹.ՊpInK9$*_fX~$EL|9VN^xoeS6En“]]c&bO"џ'q 8+kvD$Z1 Wpu.5rީ -(zv Ԣ EUBE'^g)/{ŏ/iʱʢeƗ9cs}Q(azV ȻSvsVtj=ILޤ@/i}]]*xlUZsÎ"ٜteͰϣ s]"eXlm ܙf L]W~lj_/ -`q?{ɆF\xbqǾ}MuK ֳ$LIc5d?PեXPOy"EV\'}k -al/㾼2el [fK94w=N`& a8{7Tmzַki酽ݻBp=~yE|ijE pfTV)?Lӏ;Tg0<(_d*.c_?\c≺v&p<鱠?pnE0Jc,,H6,6uÚ-Y3Ҏq_m/f4}O5Pa: #084/CKÑd"B^U{+h3~d?Z:)=xs#/~,y#hr®rԴcL =Y~tCpz$[lS%;CTDDX 68_Val -GZ*F-HFijlL*>MI@p[@|xRxSkv WX۞20-|K_D _?k?fύw)SIh*Z|=J9q vNNJ)ǁuȞۈQabޤT{[/ ?cLxVG޳37:0,eU3%HezeVZZ< =HȀ~?kqb?@f!TA{ -ųޠ~ 4u(5zs{8~P4n[jVZ*%L -#dF[*asOE%2S j Tޚnά+GWh|wәdTdX[~t`̤"hR]̟05b @ήSKi㥒([,u0_z >=nz}vcwiAި}t.|.m}D̵۳!nkHﷵF,t,57l}+=tLljvUd9i0T`/ݬwѫȬ!%]–ZE05)=fk\#tӫ3 -W35wk6'cBj v,3SKxz!rcesN{ڗ$mOVr5}[qdpZ4k~,j(rX*Ou ^Y^z#tm3)j!_睉CtRz\9sC6B4ug׫U}z?`FS ?ZsYLHm>5fUbnWmw<˵+O.6kݣ9?*Q^|w,q 揂hבPz&ȵ0#rشK<P?vDZd~+K/gf*͘󹄗+)Ju*C(r/.Nsql4Kű(9`b@ROk11T"!\.r"}G =^L7q/ÝVllxƮ{k.W蟸 i` }O_ԿCnƿG>%AX߁Jm,uƋVឣ*[KO匝$*cyK -l.ÿd\^IBshYE&}Q_ƺS3x;yFo%IE3=}l2NY !տ#W%tи8ÂC*[+M\\H5R}}xW/W^agFry'z$yF(YmX{,Lfq~3N\gS5]O>k3} Osz֭9zᵹI:ַ<'U{PH΢]ٶݩIb\|x} k Ӆ}̧@h)y{#eĸsE~ /r3NfYU:y,+)gqK,d}rM7ͱogg8y<^=0kﶁNmUvkĆ7W1 pd~O@]}nfRaX1J_T7m:g]q6oY|pGszQy㢈A=4/t7dԺl:DoECG\3\eҲLV/*ɧۢ*Լ$?%"G@g"FO--ײhbsx8~ywqMTVD! -4%gPaš,Jlsou՛߰79KHGypz+UAqs:8-'Ov)<ҳp,U5m[_B({˵Vz[Ypta1(B;gIz"ʹb Ӝ$7Igd̩t{- ;zз;5mdĘd@O^z4kiWcy"" -?^nfDQ@B"C}cufWp6pԨ8d]뭦5YR()#B̞E;1a=_h.Zۣ/nXi&Om۹.(r ^sas܂nN3 QiT\|+ /Dup- -nV)l55I)YwN?;>x'j|RZd?~*sgo3n|;en'#IJh1^'F13CiHYUbJuUޗzu,TF,8ħyD 0!]Cc9?S/Z_]>0 nI$'I^^2_^*].rV -ܷq:Z.J$bFKBܝ`py18fg}(~+*afNi2\63kxr={:ID"_\c^u {UvL/;#l -fnJ>6%t#"#9f]SQc|q)JPTFC@(w_LgtT0 {VBl0o8L9dt=I"S?[~Q8}Q9`}iCt16ϝxR*yнpCJU2L1^:,_BiAm6= -;qkdzV9wԩ@FVfы_)ĭBsا$vSelɩ5z ltM9˓r9"$P$#{T^O/}{=bݳ趨EEL] 'XzW@knSGSsQ z͊@AFt8Z!lĦp~UTƥ93YC+=15 -K!ȗv8e*yPW(KۂFoʤl:|ɗLv7 B渾ˣ=213l"1C*_a$ee9[J1x;w߁;hm0M=Q b>}n3|jbW'-g;x&3j2_#˥6IO]zzmNP3lj}$cwƣrGZ|[&COڇi&ܩg/_c\xbߔIE"%'5WzUG./v#E*?Y# Aۣ/^TD^rg}*/“# =2h7UmٻѲteteܲ[&eiՒEN(+55J/CI/^V:wZb'>׹j[?q֓-t)ϛ{uhT hEQ`bzxozЮ 50Sak4$e٣ݼ>ʆn9#v *Z0=`w47 zJܸsm,h$:szik4ԪKZkfqȱ:TP+r -pߚpY_VzlȎG qD6[[^om#9Gj,7[M| zDgF?U6\/`c३e==(ϐkEe@RXl$6o{_ V̰tto$` `y@תWC?\PUYE*b€b?Ih83. -Mv_Lf ꈇrƼ" gY{IPfWuTլoAн3z`pK'ЀFcgpQ:':;_h7HXį:Yq΋PV[N/)&O.h=Ȱk UjHf4Y<}ih X4ɱ#{ؕx+'x5{k,`Y;AZ5ȱ+[V J/g1?Y<0=;?D_d\Qi|-qNO߀u &?ۀ_3o -] | 䀃|tKV/*i+ ~Dx^` p-&{iyCxe:|u=r~x~(Ͼ:g/㤒rq 5tL/qpx7@|r9 XHY~=|pkJd8+e6K'k -u - -:`O˾Zԣ?}IzbH_opżaH9'7!lȘLCȶ] qHU~83ʊ%5y;Xɇ 8dR_.n+`U@%L.g,6,̫BGQDP)6b +DD8ğ\4.7ɱx71ԌsiId4nsJ޴dsv늛[ȴۥ?qQN9O9H>=ۭ_\X^sw<]{@fںwGwNmWfmX=\gv) مtgfhl;[&BbRF"5~4)mYҊ{ t[_<( vW7M;2?ո-ۥ.?#Lo=̣sWpw~\NP{{jzu[;lmndy_~F_tTIUKNI:7m .[[/hs!t쥡![^9)wh@o 6چP/4WĒ>O7'{_p^a\L==KѸW;N-}"U6~rҽ]59 /jW̫'zAVʽ١hctmj~y>TK?K^QnD> U,kj;]47%%, 7q8?I֜x!~y5~">~-G\uG.1 ?gҶAw*' X#5dm9cU"B2T6ϩ{#&aa 3I6叩Q3|tZzt:={ GѓT5~)/[E>}׻5q_~';ht+#np; c)5 ibQxP5@ys9+N6.^\~DtVq5 YE~mE ky'"7IA882:lftrW0M`Zl\:9/`o -ZO&d?Z:cslyKfK6hߗ#RV ݉w( _1wuydtzΖ|7-4ĵ|twPƺ @K}Ƚ:ײ9qlCB_gםM{PFd&:V"Aki1Jq͒m/߄s*mI.v;=3E+yi;Pn&ۯt=pVvLXuot$ |W*M_[g\3mmu#jf\Il̥ nhⶾAqʑӓKq=aߘI%m=Y>vM#W/OA m͑$c,5ITOw[VJJ*UInX7Y8̦cKGT{svA2n^[ɾ+S,8LRGnC񓊶Z:q:ύJڕlO2PVELO1e"?8¹[fJqyDpN9VqbYJg`bi(EWyИcTV[TIH}S_hG!T2ͬ>zۉ9,F.0:~j}3U^eeRGB˫@/ⴴĠQJl1Q'eP8ր묻 Q~Ps̋̋E ; @S`@ -; 3Q<p~k?6ӮR}2횢\amr晝K˅v|!ZV 8+۝-] -otJ0"F! v H#zL#^L#DW?]=#|μݘ#R5 ԮjJ8ddYKB sqCA-Ԋ?gnF;_@)=Lk{4C[rU?$X[{ wN 4abzx:Y}?h ^ClXPê/lRzE}V;)+z;fR^)9ҵ;^RQB6"v[@KqW;Gᗖ/y/9Py *d~Kr]nZ[n7miX`T/WOκM{B-SMaOKDn܎l>kw8CD+5N鴈_u^4(˒p T[(kWQ/~8`A>+0Zݨ* BO-&?U&(%-i[oLzT{Id/cGZU5Peb~JYywy {/lX.fG凞l}%#LI7QRc^.WUmx,,zfn5Yo -9粞Yf.w~j6%l3f 2L8ygna,kyi)19Obj},V rM7NaZXP[&i>= JH̴!:eUBXBFAԮ!j/FP~Z[輜#(Al"Y[>KNAMM:{[ϤGEm"ul\:(v4XE 2TPw. R#~1z8Gˀu@2A -Hi +X _EuOA9R_/uzdˣ`1AȖwqqnrHȑ6l !1څ^ -PE$΀l@g*p|hOJ@Q%g]߁" ߲-sV˽a!4ө.ZG2ڿ`Л. 0 SV7 `.M&EϓW`^âl|*+dTex U:ͷ,$:d5,u` l6jDCO xVY^-A!8H*>=*2\FY|m1>t_r& Om!EOX pvp^n -W~1C@_@|"a 2['W@X &} }ƳM[C{`8]femjjKa_6_~>z_myN _e· vw 1CHkd~8^(Kː'h;qF ߛJ7RBw˿'6Ah;kA_jz APv]/Vq8Eg-Jv|JvTW ַozF\>ѻxrU|bt? (z(kt}ZTwuC91nڥ$1+k؀|էJDy_|Z۩_8wrqFQeVns޲^\WTǺbݾwrޥ,Ft9hzz !|/<紥OKp߳oɿ|A5;o+bsl|':ڍ٩g 6\vjZ="][E-"\ޝ)x6xNv\MS$A"~a?P)~|L*8Ki;rVal5z;DiPuocI/΢y;#z~ꡛsM) + OJ,M4:25 {߈_A[۝d?t:ٮ >UGA/Φ:=GMi#d/ ^_wGǤGKߍY:; xg`X)0?Hf6ܴ?[=~%=Fzy dE.=k||M#xo:=&e Aۨ0VdgV]ꝃi9?H-ىF/"m\>$(x S+M3?ON~cdw%!x,oV$w7-0z}u! wF}T?ͫ:D9n5Z3[us=!n*E,oYe|nz#դi^n/VϖxL B4ʶV,E;Ȉ=ݝs;T{Kr^RɲǭwVT['?!UBxk"AMͮȽM=/*W_ru.?ZNinM h.݇DWKWڏFdunݶVrR9pR}jMH*>#1x_+DWMcO kszh~{R_kx8sc~řlƦ2ȵ3޶v^tOddbmgء*Ϊy..x|E |aTxQdu8_5K~ZB)wnr!Y]d-<%8ݪgx8&|f.z#j{e4#sgN,%۶E]XS3cvO/'t83n'##B^ըrG}Vcy P>2R3ʳd?/E( y\īڼTƧKDŽfhܨkR['-Ϧ Ջ"9c`V& βUXV1RFK܋\m@;!У\mN_ -Pgқ„Hӿ|ZKne MxcYkLfi9-XՋѾ*GW޼Uv@]3z! /'Z1mYz\_EaOti৙o]3brGT%_N&NY d7hEml{\b}b"J耓jP%W5I-HQAB]>2I9Rϊ~~+K=E)P~]j$cyooK'un3tjfTF"gƍlj8~bTK2zx8s[Jk[2[4X`$seZ֭|zN:8cYK n\H5V o$yiZV _|<6zGFT~c%[L c҃Ey/B -*2XT;VX@KW icl: [t^~La-#}Ȝ\4̩5XeQ`ɖ[JF=g,r1Љ=ܭT)TFeI셸si)W 4ot0 YWiY  SҷS0M!WW48S9g7TF3Y K=3xK%um幱FyLWː_AToe-s0X3K;x"˩/Az-Cxgdi-S3a8II]j.Q8ˀ=.~oSMۥ/:r['d̪=WNahPؑw%Ł\)k}#;AP򔁰RD 1KsCcqˀ8oO1 V; C-i | _|h=lo_7d!>6VU"|42= -6Q.&sTLBw*h*RST%eei%P+/@P P%XA9Hf y gJ%cR]'ũ$7v]때oIՓh R4 "T0k ޕ+`\& d2J -#'<`tV)_ٗy*Tkm<5ݐd4;fe PJuR'3t:ͫ -.sy]DZ+yƖ{q;8. ~=ri8Ã~Qe=B vOfԓ#?oGg~x aHʗ-@̡ <b;F .:) !.BG)|h<{o{M/ ?n;,/=h`?n߇}JS w% $a%XwX:ϏVVh _:m_J;XX$h8Ht,.ce ꠧs=_E+_|EFXv? Tyigv]1$t5=9b7󡊬aWU.~W(ſR;|:xs74eu7ո˖݋R8Wt{ǛV Y^9ݔ%d>/snzYЌӟ\&wǿcjiun"1nv)31NMwv Iב_n= ۝ f cl>WrP/Ygfn:t*Õ.O"Z~8͎2d[AJ#%bܐ p@|(=܁Jkcӛkk/{Ю;v`~r?zS ng9>̾g輪rOL/w n׺q 1nmڗgtmwF= wGM` -?Pݮ <{rjLp_^^r8q%O&,]LڙcAyE\ּ*mqR%hDkdg6gmեUV7?H?(W_ܖm(쪣oTZ;ب5~QB~]lH趻g=[ogvv.nMSiWƙ;}]^\ /MwT[5Ie0_0mxcJ?lf+yf)}W;G+UnfIUs+vjiR[`/CUcWΚyƉ5brS^ei5&aܨZ6;t-C.z[M̿8lE"{򯛡*#Ɲ bkfhG> -vVMb+]lG,詨oB4%jiZfAkլjtUm5VCCi}K*ira"Ża]L:аq4W2op=bY!܆7sʼp -PJh8)>*ҽ8@l؏~?=@Fu/h ,-m#TտXeRdKH\z3WB(>ZOvrʱe$UqZ -Z8K8UR8SxS[P S cw1L-ă_`XBE9r~婢99NSf^~P}V_p΀b`?HQ*KcPaKASѪrϙ>ݬ,.wm^V=O`(7si>JOGj%%9тp%4C})ElqVF^|>usEtY/:E)[Fx W3;K2>w -cWt ڗ>z*^7ReI*cZՁYdg(m/(:B鮿,-` RFF|2v>)ƅ#}FeplBY S~(K5Hk( - -_t?:ZUx&t)GN -=P=ݓRg \[.^rv2 -q3 &|5>C 3x>$ob:pjaelJJ4 -D#W2G)FR-3y,{YwJC,8SA+mŠҠ|ʖ,(*(6 Gv &ym(?. P>l|ɇ/* ̶Nzk2(T 86jL/If6Z%ntId^P!izxLMYUIeCף] ?""ii,`f XWrE'w\` 8H(a4HIoEs*BÐa|dP̨Rl&HE8pU endstream endobj 296 0 obj <>stream -t6)s@6B)o 01>a!4D L^~Xۣl47yRS1= { ;6W_'}wQ -/</[HT$}`={3VD_98'a'8VK:7x\l'7%'M` -QBeگW[4&?ad6?3񮯥\WqnQnrw˶uEK5_/=͟>amoWd~PYeF[~Я6&,ʢVr˺ոf+[o8+4sgtc[]̰o+p7NcAo)}u"֧ƢG(կ0qݲݪMUMeZkݓܜ5+{|Svnyy.d墯JKzg%cW7eX4s AnVK/5f#y;jT'zlqIM9E++>% nHlʍÙӹtM%43LzRZK[쉣:#|FՂ=NqZ?/qou]SՍ:^B.Zz֋Sn-o\sJBlR;cb#Gd'{] hAxALze7V L?p/؍ίV1ngIG9/I0sVMAۆyX o8N=o`4|fS%]4ћH]0rw.]{۷ASRz<$_<"rkjVTُOsO7:uau -vMV-lT ]3:[wN쓙%M0yz KUoNRNz8Fc;ru+7d :8IO"5wᓷԖw?>"O^kw8T:smMԫ9ؙ][di/dn57U*vwQyfyTMjr y 5*s>~kNWz&x rGs\h1s%)F I;CCvA/,KSvV)k-l6C޸e]iU=f"Gauq6 -VC{} = pӋ>Ӧ S ;ό'nU e//8ìex?sKU&>>IsAQY9hZ߳=Km V]sLfqZAd+߶󤬱EzKļ}'tP?7Ĕ ~zi qw`!vR㲽l/j萭xaѵלt)tyo~Zɤ07FAtnf`̢P{g7 X`䤈>udFwo~e`fr[k8˙ymNȹ"չ^Giݽ-vw;'nk[igl_ ;lةw͠i;'FiЇZ.by.Rw^3x8tkr{j?K^ 0G;W뽊ְ$l^椿~`ӵ -_zյUm@^`?bUOuʷ=*P -T?Qs -ezsˍ͟\KܰR)Mvv9XܭfTn=Z&RBx `gK#n?p7p9m*A\Ȓ}29\gUӭl>TʹUQ~N%\C%(ԇtf2hoM43;S=k,<3hYWάF(1Ǎ)" )+1=c5:qu~ qhcVVzf&/"w҃gK]QQyW.%țx/Dj:fZ_(rӘ744ڡݦ>z y}Hp+ p3ŽGk 징4`{=nQF)G?^QN=:mm7 5?ث"ܕ˾) -n[d]YwAJqeKɒ܆dF] i`i?d貍tnNdǼkA;ǹ[m>]7&S@DNNjӹqx6FSjOi[E.r\e}eՅ4gb\jp] 3b, 3 Ra0dzxʐaz6ro$N9]}vFil3FV/T*XZ.k! -u'Gr Y_"Wus;܎[;RdVص-R[61YQcF1@+xӓ>=t_dv1)ɤ}}z1JZ?7=W='܉~+>c-xbO?PBw7;(7 5DW*EAIچ+):G y|*=\S7 s\:̴Σ"HQ+3l%!UJ'=^uWtONɸ$f֎('篟 -0X< `z09)V`b̉[ؽs̓ũf08`bb|Qam v=56bɶO QvL0u둫Z zvdnLp/m{y^{8$HHZ9V?q | +&pܒ\./i5>mq; &_ B啁 +"8p.aW{WP{{6|8À1n:tꯞxFh ~6`^o -{g2=v /{:8NsbbGNfZoZ"=Zפ>Y&iWJ~WMopk2m富@< C^Ҩ PXE@qb(JڜŻ3@)D6tIGK1^7O|}|L} -~ݵ ٬*j+_'*P+ɯwo&@k5IdhOh tX:>/kR+-[=ɾ!O1Uks/gJmԷ)C@?mGvO 0umƕ,t0&S}S7v$0uSBߗ?i mS__%W#|ݶQ-Ūg;>BN\Z=F9=Gٻ{@;X~:km}o 3+WOʡ>wa_GeE*+mx,וXdoVua`YO'i 1(-?P4ٷ_?I!|w w6\=zzIJQ]ġOSm{iDNr YY'W@}X蟛fr1rwwy$c0vEۍ=T\⺛+3X:^״[j< u~<}"w&zU"e)p*ޓ2r6(ѣ #q~^ -c -{{^ \Wߗ̪5gu->>c{>^R ;nig,ѡ|ueÈf(*@uK}FNYWIx9:f׍`G3M$&Afy3sįc0:(7P#ߗGB)2{pvt)ي}L͜NvԐ݈ߗ_QCɮmig?w֋x?b|v]nk#`x-cu ?S*y߇/N f3 ao.fҭ4G|kq8r:ןL t2$؂Xł^MnpB9Ot!Wdpik'ߺ4~3'f[-WZ7]ac/xEa8XV<ґwskƵ_S)_gCX !u8}}3W+.~8mO6x3[Y̺LWzʬ99w3g3׎eюI?|/LGDCFmd#""TYcj,={1>pz]O|IUR4k8,asS3N`) ':V]˫W,PXPy fn{_߇KD~fJ4+Ԗ^ uqJJ"B^<7$x诘|S2alE>+vj.Lz֠I,%vxn=L8ÌP L+7KC - fh,:!ºtnߔ~~RX=<`ÇB)q^qKsQ*r>|{` D2mld̈́{FǘՑfk}Yo:jDI׊?ZϏ*$oGGrZ=4غʩ9ϫ|@u6B B9QrY< "ߢݓ&,fN,f)Zd8PIҶY~1{I#RrWɕ;-c*SIx jz{sqk2_6nmJiy)ۏ7Ђ8me"y0_R'$itCԆ6oyp*O[b؛|d~爟;$:&DGp4}.]iMbϕW.랏.=e﨑 }z;m;`Kz41UPnjr~$%Z"|'UHzdKt&[R)xM]< j* 8B;G@vt+.2t=fU՝8̘.C=6{ZoOzR.IYY՞j@%0ϖű/7|.Jt ѹUhTYsԻrhspbskn_Og~jio.ͷ5DkL:ӡz=p>eAԽJsR11_$h-IkP˃_ 4EsjӬF?կ۫~ `hhe.+,.tÄow|դi%S2"Ü:(dN\ kil]Uj{G#t*]iri\Z -ˢwZ IU -ǝXuEZ W5;^̅\63ROEvQ$Wl[gqhmG̀G:BYqtx!}5k׵D!oOa=VCa`B9y0!љz/g'z2Fa>eEϘ~ gPPGʢcl\EӖ)GvYĔqwVȉM2}@v5 {2 D+xfA W:C߽b0i^8ʭUg=_ jK*'pnři2Zpy,T e0K1j>RGP{IPHR\@-@ ګtScJ/*]-ZVE֎3$[.mJkj\|Ϗ#4 م-g=J1> ?%EL.K`b0dfb kM@?e '3h iV.-,{d4ҡҿlVl̑k53Mv` XW[3M)ZH -ؾy6=泃_/rq{l+]CF#uA3֪1u7٤E(mԥ0_nkt:~w\!{C$1W~roX SK2 xS}M3xVJ/(20Xh){N2Pb%+ -|"慾g -;v[ 8. z Fk"(qpt~]䀨x½7K}PQwO,7:Q+Vy YZLŢ0Zz;6wB{Zag$Wqqn`jU2 -?W5_?7+OBۮF׀qH50vDzAH `x6&?sL/-?%>()B|X۸4fq^(-:< 솷qZ~f]~i_@W]1V/d_kZWyG;R]aI/'U֥x "X9px͡O>O}mGj& |]3k_oWOϷW4Oaϡ]^Gzgy2?.6ݲmnBe@\KiƋ]V|O5VӺ.+J63s{NhCI>ˇKeaS~53f?C¥41lϟ77l$~f3(WGO$@xo1QKl\ss}5گa79ho|h3ꦻ^[.nY?g;;Mrg}lCw]UbH.9^?fthoqץz7?\;8E:? @X5x0x:xKѡk ?]d>b|>:Anʷ2 T:iKz"flƹUxU6=[}:Fj\ͦfЃ[KG{PuQ+ؤa':A'Vz-4cuo7φuh;5dj~ݡR7Ta>kCr;ai/@cHϾwP#sE5oKh+ S}E:KS^m5gV2S,0r.gB/O@xeoo'*L|.[d$DnC3H<غը;sHQoqַg!,Z}l96G2&- ;@2xݧ7ڪ?FB?X XI[5sl*98 -"3ߠ_P?/;]w;\fy9Zط%u5I[[%c^:.Yɍr }6"=WJFښwW?j:3*;,散 &aKkKE- EX Iſ$/5PS"&WMMndiߵB֚eNjšf.IVeU=%@*Wk\]4"ZKnObJz%u@҃Q'=n؀ _Om(.*.,[Wa˻jfX(P_\ P*{mo]\|=FڅTnlJ .芘#ZqiHPX~aò!rܰ}w05?Tq@䯞l&:+UokL LVg,E}OEGnD? I< -(_*s|j.pFpPuL#C%:Z6 t4):,}XF J;{1;d+wϹ?vtHw&d4>XH._ Ƃ:W.5eh2s6Uzli+rP(ȁ+}/\>,_8Y*K(r⍻7?Ӄx6p[ZF(:yI.a/qȭG}=v7%,GC+LnшK|V9=f 7iV[e"}!`7hG҇ ` -8"v4Ml%g#b, ءpQ!_ hSo;xZ#錱Գ墟.  ǾG6t;(gs4f[ ۝z -ѹSa:^ouFyD_%" :Gc]Dk(TBn.a3<䱐.;^7ff:3\~ŜbPLiV|Q9k_PQ({87.9xݹO \kˢ u"e Pa%ũ 4M瀖.{@;3t>'=@L;i hoA8J -$9@UЙkXƤ`YN4n'k1OI𐌻lQmx@_"h:j6UO鵢 [Oc`0 -=C -``N`lӀk ˿uAk@"΅{2?Vx &u G166N6o{9G0\iEza/Jn=7Dxpp \N-1P%y-?)_}GTyCK_)yfആ#Ɠ'w K@`&b0e?2] o0j@hs 绩@ϒވں<[<ϕc<\Ⱦ>ַ0 g:)6$= -_p">zz27+t H| AH;dbxңRS c dtV@\Q޵i^؂0Jg!=R`qE3G6+kL?_?73~mk}Ȝg{>~V}p{wwm7:^W2.[=`/H :~CZW''0 -W*eO#P)V0f̠w1?~1:g6>i1tP۹GRXoX\SO]ʂ134̾2E ބ&VCG. #HnfbE2~j^16;?ϴnߟ٧tޮ&ds3{įG>"W|AJ7o_\z9 3^W_Jenlf2fc}s-+ާӎzP.2cn;bs!W};jP"T{έԒny\S}Zo+'i6#,~Ԓ 2j7k^j?=Bdyϊ_v@߹~_@}1h{[26 Dz盷v7GF3N6֡i2yX2v;Q 89[ٶJ#8t ha&r/) &kW|v!smo}G5ciwl>Z.ӏ]WBaW \m:]+{JT>V;e;_<|(?pѡs"?$qF * V\xp_\g=AKcx֬[p^,%%mM]}-GZn.iM$拟y\b-$O R/(K> 4o<)ԜC⟜4Skb2RևGmv7U;-_auv)6Asg^<Ь..k >8GN+9wܲ/al)`k|E93LK]0Эh yزx#F̴,Wja1;4 2 -sȭhE~VoiJRn/*݌ Ko^lô1v}ιXvI[:탶+h - Iyo|A 7p^Ly[ɯy*.e.g|혩; ܱ.=G оepcXв>k\3j2+'K*Sx;V IqEӗ{t ?pg{zi}gξBmJp:VHu: N+):?J9궰IdY> ߛǩ,};k\B7݌zWK2erSu$m(6Ԟ{gY@lD?0?U)?UIBlXIʭS櫵Z20ha;qWlY]3N@#$ەUw6PΡ=i˗嫻E˷#7X4qJDCƝ-SOʐLj[lE#صƮO1>/_P2lx~3\[Χ8N;[O3?kS.iWw7-_~QVFUz$ʶ/Tȵh퓘1!?2\b Jj(.[EJ;f_!۔d6 k=n:}&3Ɣ!*ֹWO6>ԪQR<+b1qW%}zfKbgօI1 -.Y0Ey=͕e7eGg{gxӡ[̊ R-!(fnTf)벑p[+3 ]z^/_閚gs/_7q^9C*LGb񊭞''SSYza}SvD>ki'<1R1bH뤝!ح/܍qWzR}sp+bpdؐX渫34lvDyNGen#4 fz{L-r r}KvGZ >_s?H92|&S#/mus#L?HwPVg_LE銏 KaYVm:Z*](?/8!$͍|$A5xΡ Ɲ2/ܸPfK+Fmy2F[?h$ /gh #|98RdJ/O9e7u)*-_NWyEb&D>o lVv(_ӷ9Km率GyC8WdRN>11rظ1c!gMr.!Ҡ^o$i ml8iu}53 .3H}\>hJLR[I AR]/7PQ1~]T0ھ-=JXbNťzV"&V_-9O?Fy:Y ~`KM(k{)2h~<9x W u *־sFP,朳?s}gk5.颟X ua%~Dȓ8 ZҮRc(- Dƣ`uxm){ING<ޜ.5ȑD8?[Vhq4!XF>S7h*ZꀶXs@ӧXVЎƲqM@g(h-4 *zG$8scGU^z,r k=z% -QVk*6kЇgӧ Z,v<"Oim3}3ˡ%`P70 f#L0:&SMp.`t->lJ\J[)? {߄uVjtx/mlWB+- --6s}S/+p8c雀Keɫ{S%p5ğfk`/2.^Lv mgHދ. ? ^W렴Jլ\K >Gg3u Xjli҇?[)eY"?3Ŭ6LMЧX3ۧ Ej9vG0 ÓYxKY -/ D|K}=], ~@b % qv$n H$x@$^Ju*]4x3##Aw}[)*'«D'6qH̷I?/@>@A( *J~s\Nq< (n3ESRK2^+Πb "$jB@~@''%r߫y$' ކD h ë+^H<.N9 1Эt;e -􀧁^B}m(tDJ=B$F;}py/NJҀ_t7x_ F_mo j fW  Gh`dXLĿ*ljb mb]MJzd,dKa6o5Lj{v UWcب:a[gee Nb~$ٰ M֝Ǚ&sjx7!Ɉ=t}J[\~)$:T$9歹}*2#Og[h 8Tk]'k**I@30YBCk*rw7써kd.\+9ШFL)gfgGtޖn|a -zy ?_Aͦ&'LcO> uBKLBgmVn=gIg+v mvuV!6ƗA??j8]X2%F1 `rHf̭w9Qm t¼ާܔTzs+8X[ğkcaD{gs)NEyEsD17̇!X :t6_4~^jwcC,fl; R޼VcC5CshIOJZ,΃K{u5:juldm̈́aT8gFwvcw|ksrkWlc -S qk Y\֟ڶn6ʴo5h>K_:3ur eZeZW%+'&]|i̝Sh$ zF-nDͨfPz5{A}3GխwKPCzXɪ, -%S|y]n7vnTڌqZ>s*}:U0P~ o5.]$o3ZOem xڰ΂udVy{Z!E9`jҮڋJy #T:k] "`x\?'O{h:YyhksWj2rkUƬ߻klf7sĿuaVƕFzcBR Iy -֊ʓ  j'<ʰaVKh5b^Q[KUh}fz!,Lj` -DVyqy {P4أu{ q-k0 E nUSnB7+?ϛ@SM0hK4ܪg'zEXBqߟa$mg}ᆭ+&,陭_g$V31\ݚd,ftR[ʪ9h$8`ݝJ./zjY݆,{BzMrǬxUq cO6 U ۓTzl=5W|VPy>|FʩQsy;UErz$$}eE<ۦ^ҥ)qL[j< sm+_smi]Nm^t-MQVREfmB`|ֺ%$xAװc"uDb<ӷcAUfy=R7%aU^|YrH!p|6c1=r Fw.d&?TinQ5QzIAnDfg RV_%cEƵ<Ƶ|[9oγ(8{ -*I۪=ucpp|]3J鹴q7M0i uE(p)tX֣)<85Lx6 wLÙW| z#]_PiYK*!-{ -66ܥ2[n:#-bR$[yy3H:_"rS>t[!wQ9+֑#\p[@oBÁRr#Le*` fBOB,=ڡWƘݾQX $[?dܠ,S?E'묋w~]s[(70jѡrmCIjǧ>Q>e3w~vƛql,fe'>^>̡."4Y;Yltr-f$ni~r4 m_xkR[]n;!VLd_&׺zVY\Wӟt3ڄ⽌ =Pٝ*[ksQYg:|m'ձ Q:y6C4n]Dio3S;j3}k.^|sWNZ6n[,jtX^7wQ^OBw)A:yui=n -65T.l/ȭ4kЬҩzxЯ,Iŧ2=S(U O "SNgQE2ֿ\*2:BtsownMhm{]BqY՟s^uuEvUמ,uLvUuˏ֭SEbУZplvQy­_ P_ϼKSiGss!sp/#"fv]=3f#'0'?p,$߷TxLnݴS+,_?f&+yhsEQ|oe dmٵסgv>upu%x9arTdo36Ȕf?7fֶVJAdAWWvW!w|٦T Ğ:ʹY*J)|F>WYLnVCq?[ԇ=|Ls"%c'zzi&uE8:KG4qUnJ Өoٕ{e,J*IJu"f^\ﲀOZ9;@8WU9m 2Y j} ܹUM3BȗF+6;m{jyHҖ %B'>WϰK+R'm!f0_&Botm ϖq+&^h4#Qx4׃)+OF?%JQFL%$:.E5 XZx+\~6p>:HN $91;d-,!?@Ԇ>U>PCV8u -%0鎍թ8\7;EX1Os1t]$Iۀt^l5!2Z%7>y%h~xh"|q|e^o{R ۀ2s"iaQϢOߛ*mm5]MAQ` ƉY5عT *}6(wm؎V6p2Iǭs(y;W՚)#){Z w)n_ͿӐ{2$U1~2H;xLwTZ}j}t.$3␘&k^/ -sP*T/Gh\yE -c+2_m@.9j&s%Pr46ʷ;}^Ի!Tz T3d)$wub.'|U:"vq_`e{xF􃠵lMFE*"`(zE8v0 .=G1;㖹AsѤ̙פxmG-R΍D1 B `;0.ѣuڅbvB@%7I{c -@MX5'}Nf}p<~Z6,ہ<)A+;měݓX /~'Va2)͡h,TDkE."*6kzF'dN -\Ci 'vFQR%̬g6ʄz*ulw-O:(ywxRU:`h8܅2 lL2f4.d%5Vn -t{" },Wb#Xxh=VYVէ$,Γ&eZL䏭:Vo:{&K3>&=aȏ/k) ,HW̮pcɥcna, &2nemBpgN,u"|;])T;ZWU -M''7 `|T2j!MR$K\&X -ڗf. K֗`7@<~m/{*(ގpJ$ñ^M?yށS9IZ?9; * B C;F -k 7R%lb9< , S%{b3qX>q7~x@\"L&LWJTƥ9*t(L88r^ܻ/Q`@<5ICBʘd$r뀼.QP,R -: (lP۟yq\@n@Nsh"ltGj7 - ,:lRE01[gdаaT -+vx PЀPj]M3&>meBjKb -U+k@k; p^hDy "eN]<ɲ6V:&tS\Kи IFX\ǐmUT@[fSrы`:`` XްE<0O%-ղ?Ti:8M2QhkQ^$m!I皅ńQS_E̵'VoFDBp?\gΆ  x&bcppp \N.(QNI2u| j]Mrr)%ULudQ-fa%\cj7D6ⷤ@/EWzK-oZn|m4fI, {Ի?uXu]{fBT|&x,-!bnٿܶ3rk-`0f|0-xk`2pLjd $d 2|msXQ,o@5,L>\ӫhz(3[n>|;>K'0zXWL~q&2bi:7ٍӻ5qt٩,:9L-֧~>Jtj}{6ehSXb]daRkŅu|aiVdd&WILD=:j)Cge4O,]QݮHprmgloa|$ǣUfhlN}&OƻF%66߷Զ;~W񺮹1I-/5TsΓdJ V.ۻ~>JV@ W Ty|׃T\C,~;VLc#{5n.F@L!$d/s85TWOľukOF:U袣sC6 -=|7i*զѷmFYA Gz0SYF8vIߘ8Ɗh|ϑ9Y>> -+< \A?u?4C4#towԟ ^ 6rJR VU_*-x+Jz\HFpl:Ync:ov!*RcZFn({FUUQVTέy? *</*Q"wV~@E TO6Z#"]禥~:鹨=qzuҏ3SlO{V.$HAs$!bō`]\EK[TK8 6ucy%k߽[OMX #}[rjϭ=n|[c}#Ƕ%$2&!&sRalAбrټ ͸Ͽ(Jv];J]3}mu3D#ᨰNf m~ _,omnQw\~, ڮYK3}="z =:XV_YO*79-oD[0 Nf/WʩXs1?fX2.^2t9c%`5cbBԞA5AV|9m j(f_ -}?y2?;!jqI`Gp5j03[ -eVe_xEmDzXj=@<_OwQ+/!/[N;]00pRUپ'eSo|)J9'6}aPR\uBk7Je - q:[˓7bdQT˱Lm, 2YY9~ 7`Do<֢hѬY?NN\T7r|ojԩ2EB>?$~J_w0. -{H\+M~ KUd7-ꀬŇMD0 -,~9dH1lv;y66'W"KbOA{R*5︤b'.Y1_K(6FSЀRrXꚾ koٻm@ -B| -P컎,)akXK3Uk3R9L!r/u?)t2h\MÓCj+wꤏYL43Lg|L7^RLƧ `$ щxؙZk(U<2amc Z+=U_0(( W_f_p>&ׁ6ng/- p6u9p -};zNTEk۳4Z\D%M<|lTN5 O%%%m9'UbEՒ48I_mě]lF# ,CDVցH gOG@w UP_P -|j3̫㠈x*CﷲImbHN -IjH_:/t~ӳib,mrat\v@vrHa -c Ҡ_Rz7nz>\ -L<_?<9ihMoHHqwմe6|v&6q?F[+Cj8붥pS՝ TJ@yEmhq$ePa?,q' II3m˭_o+/!MRmknK/`70>0.90&Y\750'FFH2bXmX6$Y>RwoCyx\ylcyt(UޮY-#t%~CT2==xu$x7.ք= *cJ7hs[֝$3;XOz[zP=eVjgm"GMtkȸ M@1nڌP[~{:'s& ѱMGkyEq{}t1j,7R΄uăKUec2)1d'++x2:KaTilgfz.5Ν(ؤdթ&ф&1ņo@< -ΡΛeo2%$H1`ܪxΡT=\^ʾwY!9+UF(F|3qu pmV6&6%e&ę&xm$ojϹS]tG; gA}it;Č0Z3Qw~SJ֟u޷gt\8NsU]}uCy!** ?W˗Zi-4ueX KpIi~Jٔƈi"5jN4<w%ʌol10b*xk -ZCը٤ꤣԌ)kHǑg^b2 ⚴ݚRh.%<Cz_bh'U+lfs]tR,U,]̸$[~q ;X޵PtVR\]xTJz^ԋZ8 CBr/Ñv^>7YodgDZ] }ݪGQ y -d(<(:*vpscsxZ8*R\BPMfk3+ U#3,BS-F|qڹ=`n?Jq)/D'8Ka4*ynjnV||5R]ݖ:9y1|>NL\aWT-;dӸ̉n>{p ӽ%7H}o)pJh7 4p)@9(Hf䏞Rt@(8<ڌm^68:{64eq_rbB4'÷o5 N-v+Z{ CM"ɹt΀xퟀx"a$# zdc+@"' [@[k{*˙M$\(|wM ɹ3s?To'u)!:5vkK,08rnTd{s}CI{'nglsDgf-arjٷ¢o(2yQ>p~i/6w&ޛ>5 b_kxY{j6uG8(+(&:ԲԪJ>z-}՛ZH4I^DpfBAq6lQZ)ި%Fv!ylnK'l/Vt0PCROY0obaxM rߦvnDF -Ei|sϞ~%ј|b%Cjt 0=;ջ菉ʆy/HRSk(`y5 ؆Ypm~4fzal16q*K[۷ÚY\ 8:LQNI?IhjoYNPCD!dM[ fKiM2$/ XSaܵ.<'|V\* _ԥ],K$gutLx -cg)i _zrCO -YHi(O֑onsDb%"$ 2nw} 7u(B'f|)toв9+7 -e3L%_"8] ѓN58|݆bǟOmuڭQm;ϫ_F -y;}@n@ FHg}QRYT8(ɳI64c!Pra X˸_u_njۏmT? R偤$A|WTUzĆ[-a-6 ~= 9؟险=m|}vh%W sPԬ6IY"V䏗D~J/D̡)\l/?ؐ^T7~ٙx}dګ2گC14sQ柚[}t@/މSjj"R2wcO;לosSq9Su"q`U-Ϙ֭ҟ}|>΃iTGdFVZ -_r4TkÛân&:eSyOatkyml0vb79\ ^v7F4{ߐ-xO.e띷stMk;k%$*5o-Um4*UW/Pw8}?57DUL@31Hu[GυS:W%hjv?U7$0ֹ4[Ѽ8 ur1$SoחL橯V bk/6C`<KWlP鶉9>W^C:A] ffKNTbWOj_;3Uvb8zRUoP%Ssg})HZկcz4045k5rb -NY+8D 0.UnaQlDۂ;V}Ο&{Ȍu6Es‘z˗5l 2quOݪkO'k?T)U~kdvBH/[-GSɡSLsjB),e=ǩgg&5H~9/v=yTIw|6Id1k'~K4sܝtq P a xDL%P6k[b DpG-N:ŪQzm}ݘ= -LdgARIkIi'ŔZF2grP3Pּ -ϱ!Ƴ# -1V?i{.U45V;u2Vw^PWPe2R54XĮ۹#"-꯬ WIjj-#Zw[-= pE=:G5[@&RLvvgG. xjBxj\$"8)*e^A?mYh2u^Y-~͗XsPeMsc1`X9)7+jBX0*.RYvr岕YKwG-6͹7 ->j A\^R.oS'^wߚb\,Y%h9dAN@Gڶi:_X|"i]6:E8e)}S/"ԓUeˈM#3-C$ ba&taU~V5Mes'MIBN&4w{o) v;(#}avB&xiֲiyHrBӆ:Rݚ -y-ߞ>EYL.QŌأѣ*1GQHnF1YOSbo7-w[ W]9zz8C,@͑D r( ӎV5~>!VlX]ޢ~o5XsQvƦc.ZEYmKqGػZx;΃XH9`T @F Y"˸>NV!ڭ 8E ˾; -C[8%;3f/{&bDȰBdqq#aWǙ`S#jvԈ321'I0`[0K7S3apKh4@ޗYR@b1Ũe.Dlż7K&&!X=m ת1&$ȶ,Bs+?. `]`џXX?>؀ $Liߡ'1*TigxQ7- wq~dم7h9c6`g&S% p 40'T:8^ɼ `:l1ÎJ&auz4c[8G7J.iVL.RqoQZ|Rۇ~=s5"<ΎNIC6A|ٳAc v>$ƆI[h'48֤fc4WvX-& gEKj\?4| vUhek]'_FR5R)9|*diW4){3d?l)$}zlyx(nG ʕDanUؽ,XRsͱ[|#3q&"/\y\e+qi1rš*Omn7~.Y ZNŸ2mXtnCP95OSc2%9YY.an}cDw9rֻv˞v_n0?:䉄Xuk{6>@z|ֆB=+UD4, ¢P -kjm7-Nnwap(ѱsvJ&֔Ҫou0IRrHK ]{b;<^?> -[;ʢhܵt\B|4/1E몒N+N1j6hRtI5V3j|oMPA_c_vfr Bw\ XSa(Zm$!Bi1^EzcMr%s}^jFƀb0ԓx1\JVjjvU[舍EYeIOquDwPw~0i [|x eZ5@K 6 #/2lZFs* YTM?NMl䃇[p2.*YVŸo4AW|%7*>r*=H~rOǘEt$31ֻV*8Rٞ+;ܥ'δ+J 9Oׂ7ȚW9j]][)/s1fdEbb|Ye&mdR=~Km~쒶 -aU]~EvKvRpj3ń6>e,Ѣņ -e=މlR'fd^2xeG m7>Oq rf4U*M$v'W\m6P6{Y\r)sq$GEi0KQ l{G\뱣}`^f a0Y302 v2iCxϩMV;Pdr'ՃǒLE;z\!;aDőmwϱ^ܽEWrE>XRYga|WǂS7C65/vhӳxiQǤM-UN>RdDrΔdQwAߒBͲ&j-ۍ^jV 4E@7 7 N/K *oCnf׏%0"zZ`=p`& b0d[?Cl֌]lD GT}Ty \ل'iѕX?I6Px4lQslygLI BÁ\<NSN}r_8)،qduB>ϰޛ ŚkMވwbp۫!6ryj5X5P-Z=~\c -v!O! 4 -Ok^3o+˱ݔTC>63#k`5Vl4!.nll n&dn 95' @L- 6#M=yLbbv17DY"G},kGT s~|y|doz…SN֓]`q!/J0g$DkqZ8 G3e@Y6 y)dϋ2!a|O%H; Q~r)&sbhY2-9 [ͭ9T\~I'G@ w@o@OQY4یCiAC-4&)jX -M&(|R\Ћ a7ދOX"]!j} V(*U*Hߊ`.@B7t)`*3`29!o9wŽ(y!8r be`|esҿɡNEn%Wyg$tU#-p, ]x;V<<,:%Kh-qovJ\xǩPpZm1QO$+D&d WE o޶-eCWhof ~oAUvAlmmfZ ~eNEpfo|0T=9mC'PJ64iuw$ ڞg.@*ށC:4>նGI[)}RLtJX6iBMg3ǐ{\У4)쩥Vnq=A"S&- p4˧$WyZ/v<>& R甙M'.37a#"4|o>*E`KO$FzzoE8ZD/UܝZҙ*xJ3)jSc\pwp|tk,?!<]zӍɣ"̮Ҧ >Su.WuGF7xzW'<لVp>Te4D{nȘ(k/xJ9 q(|뇠 w6=ig: ;H맛VSlnVvŸ>UDZNs2n>9c8es\0@sȲ] >-]cg{ON{.&`E4 V{{Qzmp=Dsە{M{g=JkuhzotW_wqQ_wq@x"@8f@>@~:9uS_n8nvt6cu 58CXi ;]҄%4#Oć4#oN|Hf& gC7-0!͟^~407sy<#oN߷W'算Oߛ-c<#oN$g?d&gsܖߗ_N3x[ =p{R@,P5-6?+E}Ӭ ezNOҌ+%$oPA!)>~53gxT y|^w/Ϊᯏ mFFgK\TD&Qem.cw#3MifX}c _嘆3rX&.(Zrd:ǝ;09D>LFt(IBiV?jצGviu'ox>]a#xoBU~譱%~547gϼUgelm^.;KǴ.ޝW*ѱt&80N~%-?ʨvxϿY6rOOo7EN_7 P̦bOR/5BN҅#Mft{O5Vi߂D,;۫cCw* /٨Y7t.nco^,^uvUe,)4g\[ }*zվ -L+Y3)ai7FWm6z-]k㥅بPku?BGf&`i}C\?w!ˬއY+mU=˟'0${dlF~--PkFׅKU{ ݫ8(i[S"\L{@ mۺǗ`S-N36]9;[rH-^a|VS&YJ {WC xj'8Cn:lκp^v8kqS2da1Fr)5+R;3Ϡ>$`AfpLn+62{gnG'OsL`ucmtGt bz.Ǩ_O/Ae,UؖB s(o[qZft}&N$v&]Y޺wC 3Gڐֵvck\Zʤ6r+ \B$ _`2mQ*m9[=֋kz/Ok񳽭ꦒrۗѡDQ@OH R>eVѵgo) ZŊPl^JpDɤ\[viff%ϋ#,r5q4o^Nr6Iw1w7W7~m;du,ɐ* W6Υ"wXW -n{(]+yCuC4BJ"o1I?ꨴ9靗6Ӹ-tj&mw\,dfntR b ׳ X3ݧdxC!G?@34o?'5?ޖg͉֖ߜ_s-&7'>oM/o /d&sK[L4el29m(ֺu2%g?mV YZoa״O6iFpo^I5>l_h{#*G!@uQrg=X˸QavRwf n:#DےkiJǸ{};P`?3gzL510qo%W'wS{#Sq '78qdye0}<5Wrm;xRf?f Z40z,z0ɽ]d.?oD^ 3H49UX>vc^Y|Xz됡W#S_|ޤǩ˝'q q~ ]f!rۃk1_[zjB^һ-QgS^:~vܶt.uzufnگtJVViMr+u_W@a_$$ dum[3cgCYg&mܹq"7҂ ɱWQ<*үLqD^E>mDoy~ygg5XZ.D?IW4֎u j؜(5,ME -!?B bjf ׇ[J.vMWѮR7%mKMbFJ_xBg1-l!;RA} *IwoVQmCx9oݠ+_inur9$[3E2{mMdOֻ~EWpA9m_Y../x˕Xi%g-s<}c,+EBLw2!{P|=ژ{4=^72{M;6A+QQ*깠\qP{u|hϯ$.u8tM}hq{P:clr^J|)5^d?H[ZB #GJPnrN\j&/N+mWD) (U\%hlaW}A׬/Wrۦop%;XʚxwrD_o:INrt/VU^wdQpۏ~%?̂xyLv!<PW6"u[#=Vg좯$nj3#Vx;dYH*+Ox4xrm%Ӧ>.w&M%-kԙX,dPo.L|!CR -].`d [\-{@'3d־V9erp- p\sla gNAnfp;2Z-ଛǫ1~BLf3 !HSsHWPy5L8;jlņiZ`;|pKg9I8?y9Npy4/Y +ISm5/Mlh;mUem_a-}"4bC# s}>5V7W^ɘLjfԍyKOj{'x?&xp JZtʫ6_K /З/ h#އ -5IGnO'}!s~:3kyo} v}e"_@K`DToT4!+ єL|{p;Mnuǣ,I< o-kS!|=K\åChʤi=f_WtL+GxCe/L wW!^>/iۼN-JގPoPR/ A8&aZܳ})_MUkf N*:6Kw /sf Wۊ;8Y50Jf}ТJͅD8\ңC¶}_֮~Y.qk0MEVV<~I y[oP:~Uv=]>'g[gј&yk1y:g:ssNOٻUbo)ѽ-液G|BEm!K]!(t;pJL;KD$/tRn>sUmwL9vd*O[rb Y5#qٓyDiNL s<6?\z.INX?$]ӨKV!,Mx?:f$9>YN͞1ƃZ - M/  Zʌn͟C0 ZM)j<Ҡ"0k)J{uUQZcѭ1!yg`=6gzؘFЦiO539Z/oJi7tP6@ Or]øi z k}('KhSȸj= -]@)ӤJS6w$J.Dž?Pېu?17A ܛќ~^36loD"1P;i0r;d'"3~6r9R(ϥ - lC~5JcJ̝Sy~|-ȷ%_\ >#g;B:ReF.]ӳ>L(ˁq:r\GoK ~R5ghg"Bw|qTă$!N/}PWwɎ]Z*n4yTQJ'' M[[j+RrenitO_jTBc8]"߈Œ񹊻1dtVOuM NY9gOr| -Mtzۜy*1 -њY5KE@K%2';QU oCt\b__kt Y8ۆ;J#s-K>&uiʴ -fmLQ5RCOφ|1lj b;74Ɲ&kċī{l\n*ZybȩXz\s~ܧO*\7c6+85ǟg0bBy|1boʼnXN{ -GzN'yM1o*0ʓB]îL?%a_ń!AW+"(^{>YYYW>r> js%U0M5kp_$LD{{iٻߒ?Ag3X-k;MI2K;R+aOԣst݁qΒ3wwwVoY[ytq_h%en3PH.۰Pޔ>wH6I%`~9p9qy MSssw_gi`\a l:2]SYiX9 :Ӷ=jp2q2ĐP2w,  V_hd%HxoYyxM[IImw\% o&:-@Xۿ)8UKpFО鷼9\w*R9UdQsR .jC[Q|8PRn' -(`4Wy9> ^<2#vuA8Lf}pcٻƲ/e"n?4KPt8?>\[&!۬G|/*\a,6_pc԰ZQ&/ -/kyPY+ &X{jsBg4el֫3WĐtJvTgW-͊nVag\Λ8{-"pP;JjFif>+Q2ibPղȣ|EtA5C]zV8^ݒt 7pBHw1ٗHoա@rwgК 9WSM㎜&H0]1do -(TeY>Nk/m`w^齵bR,'Fb=ZYeN"]M #}%RI`_\E'*UA7'T2(HNBq764 |+ ^zHU%;R[7f–(Cz|'{)Ba4ͯVG]악Wm8ˍӻͭNF~\yLdD2<3sÞ%gLWJL68NW }ԩڅ".Gh'cd^1:s/%bs] К0JwyZSfn@u䙷.&R㨤ގ:'sǦB̞~_yd'h Nސw~=̳s15Os=7v^p:$nT˜}lQ{M(C -w3m +#8抓CQ5W{Y6QYtGoʹƩoLLcfx(Y $j(dμuyFlVK YKeЉ_} w}ړ|ρ- -{&ՊWtoumOKL?3J37^޺lvIt=:LWJ-$@`0 *TaIB#,]fպd΋gPwiq-QW_1o+&ߪvE+\|YMX/m<=b @I*4@ُ% -J$1{;@@[Đ?%%Ie(,n%hyJQ0̂%sh3@";M=rg}1_Y,핎pLBޝ ;ڢxLP|b -@%m+P1c*`-*b%p; nOo%[y!{3Y(FR5iX( Z{4~_HA{b5hřE1w'Ipc^5v@ 9!x #a,^=U[R狆BFi+uHYE^$эCvS>֟ `[ RQ|t} ))ejG3!'SLטEvy6OjxH>Dp,IBYtO}0?$ o]޿;Zg G<./dxr +BY ;NpK@ Y6kݣ4}WAƶۍcכ'-0(twߠhRuNJ;5ՇW*lj&1uy}yKύYp:Ju^Fc_Fn5vb=Ck|[b}TA}['89tVJ%Pd -Rh 3(5-Co ʯ <Όr~2=dJvMJaO9{ bǖiDR2lߗS3uDDZ'yMKjyIU2v[b? 6xΒlf3Kc,.8%17~' + PiPg{V|y\&?\r`b(Em90|  j9bZL,d[Bg Jw%^2הS9'jW`Nw,;׻H{$1Ox6ӐtqRZOab>e 1.G\ =3ZtH j ;f?[+3oQތ&W̚L7l-RաVo8ϒ8qA_|mC!s3ȃYYcي^dMLJ37p&fy ЄSQ"^^s:qok 0~M%Hw5)RgNwAB'7av5VGtw (0N=Xax.v,򧗾y4Zf2TOP ddtLU}wڌ Tw3oN[ C~G%sNYet6hՑqa2i"k$bםGpש*c^31lNJdoS=G6FA ;tӏ0}E_7YdG"iuU0H+[FENrE8f#-A( Rb? ;KDa+Lw7Q%Đ?S2N -%P{Qۯm"|"q$uYb떶=ЏwO|_QoK{s:U\KB7}ðδI}Qm|)m>&Ϥ%"GW,uMyjGGЦkFc뺹jej@-,J:1iKizsi - -r -L|0t3?~CbsPX(T7i(aVV2(M*#P3(ŏOLu/F't&֐V\m|Rv[hY?QTqP!6߄O/)ղ3az('懾`'KgVo5|[Qo~zg#;ZX?$?>H?AZ ͂W ی~AGQe,5gkr{OsuW9'IS3fd#UYaoY^Ew%|@A[BPA~ Jl$i\.;B_Ӱ{j-=o wc7ɥ90t1 -mثM{ɔWHt&M lC7hJs?Yq h0ҟ޴ -Ry({NO"Q(x({%x}nW>7vW9O!}ddڦ!(s`^dӸ̚aȿÚ/{o] o /Tԥ"1d>7EVBsQ]mt{[_~.pY75(i 6t%s)Ԭ\I]x!?&OKaz@sZ U]%>=nr?PxJT(.i8_ϛU ˛v{e=$?m:~ý^F쓻ILMoGo*'c\ -=Đ_*@{,8C/z`%Qes xsQ:OQ[si[a"C&ޑz/a=|3,Mk"G.yHoKXa~.ońׇQ{2dU)~Bk"9@B㈬\Jl⣩6jUq(Xl>9ڧ!Y0 -s[|@gjQ}\{y\KFC`zMnCG+g#Ve au} NrY32%,Ѽ22-i+!z= 3 ANΦ}^=W $p&y 'qL}UV*h!d8^+8Rn,Eh~,f|DgQo@_U?( U%K],ajTm=kͶc^䧯ﱼ~?*q<ϙ sd[i8h vfC( vm]L5P{g_gv'*lzQb̤j%mN>8Y= xvJ&V0^x:|WL@lؚrsHػExOTJ bs)OƓ?O@_1T:EE$͒Gۗ/v`TFQ~ACӟOchv`wvL]*ӜHg嵝!lT=0;/-7~te6eOW|a<2D:Qx 6R?o (мҥ3]zL/cɲM xoCZEfKڴ}0`'\9&{fc.8Ї.ÆpڊgKr3LfȣxT(*|âNeN3ԡ㴶Ix9LbmH5tU?RƛD0r3j0a7Q9rN>aNfb9/h6Ef>Yk_RtG[e{*gC*=kuMvDGgL3ߒzD~7ڷqy;6JpGn85|sU<}5Glm=t戮(fdkRLsz̡6]mol-dEtӖ|ρ_-Q&Qr]ޮlS~Ӫ+{d?2I)U!h5m5/cִfYN6sK^ X!- ȯ(LX:U +_h -W%*M3x.stx4pց+KA(1:?bFv;I OAC170c?&_~g7yJdA { 8HH\`mڀ@@^0['&pu,/ؠ޶?мW#2ܖm^C~5% ?;]OPadJ <@o<PpHCb {ш M!~=2~{8;%x/rJ6Ly$wy" іm6("(61D~J]e]ZJAƒM<5;~lv;-g|^\8tv>gf/I/4mO855ڢj[ VxkCZ - 6Ii7*KW9GG[G]z}VYQ1lM;h%U%1W?@Gq(&࠘\H?s2(+4(>'Ps>wԛ%mqrϧܯ Iݝ*nx-}z{/'+Rw%]yqy:kzwNBcneP(Q*((ehx6KQlcw Kڴ{y(uvKGʣK4:0= 'AhO:B*(܃Ry^,}\E 7zE愂wʁsLsJRqrםig87r[Ӯ9O0<)s<7vO8Nӥ4 ?wChuZtJ0|(/Vǯ&!l7Fk"% ൛wLt&ck&3QAv(i+і}Zwq "~\VtȸiEl;sɥtgT)&fb̭U. [G`c5ܓ%OR:{uIdCFXo6VpvX=_X/SPUhW?pH.详;m7i&6h4&ǂf_WEu{g0sǻWMN֎A}`>QUٞmd}Q%<q@\{}.I@i7>_0V>< ,oVZ qTLv J$r~d՗Z\7qqmƏf1g:])W? x"rv1>u!ksvOPw)țyfVl̒mFJ/U5J`gί [$0_o(TО^1icDdӿj -i͚fٶk@7}aa|h$+渗ؼ5&ER\yeznOq.N]OzKb?ZAX0 9@}jxtN!"[9i${|޼oÊ-𶷪_zDs3cN-W2`Z.9%|'j(h$(N#OB~WIɔ0]:xI- l7o^U[Z4hRGpYio&p쓔tpqbIM`dF}y_XZgm႘.6>sX99~N-a=%f̧&9z Qn_^װD߯5:s3MDVWIZ3qc[8,GԀJ7pm߳$jKZ|PD((ǻx>h<֚+M[/1 b̤5E8 +o7I2 f|z3>L[7E& -@7n= V⎴Wr 2m>)la]7Ke6&ḩBQΐHQ /|YwG̴ 9"lgBwnfO^+ ajk:u Ox{ J;E\E yhcjHޑi0ڽ'QQEyFjcEDCqdee gA-;vJ?۽࿒QPR#w}CҹKVz]og %Rg̗9ם|ITz֌q&~e63a0n~Z_"k߼(䥔ArTxYwCd˫ZEsOzDO@WzM4lD@/y 6re,e.yNΛ^+0 -.ȳeYAWoP]Z: ~J.q)}i4{qO%͡%QM_vG_nNپgNO麍Q]m-;v  i˽ɟPFHZ=f譆̗Y46lD16B;'Ů:U:jL>2DkLZس\n - 0:4#Zo4SK=8ܺ0>#]sg{j\C ⩙1f :t -A]e{p sW,o*ﴮTd;7{L\u0N^IR50&¬-ZV`]NBYpY9)|AH -`gA~{|;@T?wzs2Eo29\]7 jbs7g'Z-QwO%<埂~s~?-=d1hR -s²Y!/<ȗ&9O?L \݅Br$ -@o;z8tSrx&lݼvZ`n9@P}F/B_@>@AKM|mA^. ٽe%zm\E͢2KMU1u ZQYv /UvaE4ƶ3mFmgW&yBPohz>gP*|b+[rAx]~|>싔Ku ='l赨vRW[K/k^w C`dgڝkC@a4m85 O[p}?w$K~ 'e˻ubJ Cm ڭfO:_TY#b:!o23֚}֘?)1?cNSyWtσ5R<|&HS[sҾ6Orı='$Esw]hs)6yrF:.G3uVFUmoka)uQC[40-|Z}zO(?(S6Y4+om`7I)*Od/+۝?{ew<;w4皛CqL_ݷ7㲉#Me#xI@QEAT'e nn2Ӥ+/\UД#(tlrivoYB/QDxPzX_з2,Nr}sYZBHXM{ 5CX|ԝaUC_+A+[𝏜VoQC&3w2:SSfoX\Iy^Ric{jiߕc'g?7ƾNO&U5eoժ[#ˮOS[ypq8GIv5y!Q$JBPO]9MϡЎ̃|pkB -_KD$vЯmZ .Hsr8Qx/&ڽsQ>JlSI2T;R-~An] -p@JCF,vxH16Ycr.q*ܙWqoݓYDOhet7#UZf듊kJL @n c@"|?YytNu"RgɣWAkdmzd4mOgQGR/Mzk#>JEb*,Hw(gj"N18>o&c!'/@nJyx~#溣 ɪ|[Rk4`C:RUb|}#Zo+e  ##dۇ_;W+3vֵO:H:,NǓ^-\jk=@`\%am`Zv*$[mVJ1"31Aprs91zz KVTc~Cb_zn>i0_c/׺:K ^#Ddo{Oxi>`\~[A}+Ա/S3<(͐K+ - -i+ʘz-4-F=i8U&l~OA*wT,YZevǭA_` 2׬еkiNo' ZpTAbۄH+]M+g ^?byV}O!2?w}=vP趗p 9(4^>H@|)s^V0`q=%M$D/ՈIL;i59QK^y(1 f1g@B' Kr(MbJP1l|dZ慦ę 0Q%csEOU狛o/< \͠Оp-}rBtN 9ZA'V= 'Pg r%j -PCIjlGqmO+~Y.e#: ?ȿ.Cn!wyq\\ 4Yoـ2@hi~jJPHRAR cjfOnM-g|s>Ξ_errt[@gȭV`c9*$*da_z.Уr4yV-TxW}O}7/VAjm_6e4ДD@n1:0w -1K>AAx|3;,Z@~ćs!\V}vnެӿeWx:۠7 Y-~} - -(>"F -P'Ӭ'Lnj8u~Gt<{O|ڱgü¸4~Inrney!`oro0M$PKvGti'}+Zd<>v{kא%|5_K[f?kqDN^QmT[l}zbޯTqa$@<xB/1|Aޱhj| N뱨O ݷRzrTxpJ)\.uw.n&CXC8[Z=tӋG}svS|Zn4g=qz[ J`7y@>*]@,Yk=6eݿ7.5֛8ׅz[|W7o}-Z<_Zۥi%]#տ rf!.dn9~X,ɱTb~?BsЛE@8޷<:} mpnGzPCh{nY8&;,Oik0HxLd+zkl?x(ZŝۋU"g/~}6? -9wn®s.ok:>W-]|mHK_w$~1V&ZpXfT\7~Vf/}(#Ck%)yN?PNoY(sO -@vyx~Żgvl͉ƹ1 vVp1952âi]½5l]V.w;o4 OC/8~װYFn/jL/_?W2ΠمrʳO8ޙ8űTŭkECWLVO߹ǗNdՂWԂ~L,ᘔ,I=y8d5G(uʏo 0\F#bmqXjV3/rFK^sU&ɚZ*NX? >J,>v,'4]Mp.liVHC{AܿXnrP^նĝnpLC3.I[GtQ7ړNBSc;S12;"$Thqd9W[ѳE> ? -G -r#@ ʭNekvru6q+p.nnku -=t9U: 5kj!jf] tw4*7'u_v(<|K*{S^V6fr;ǻGK|vET(j(vJY)͡)nyjY4t:Aq5]o"?$LN]7Ω2N:jC5p=^9gnD{gt#K&m-PsdF^ Exm y ?> endobj 41 0 obj <> endobj 76 0 obj <> endobj 111 0 obj <> endobj 146 0 obj <> endobj 181 0 obj <> endobj 182 0 obj <> endobj 220 0 obj <> endobj 221 0 obj <> endobj 243 0 obj [/View/Design] endobj 244 0 obj <>>> endobj 241 0 obj [/View/Design] endobj 242 0 obj <>>> endobj 204 0 obj [/View/Design] endobj 205 0 obj <>>> endobj 202 0 obj [/View/Design] endobj 203 0 obj <>>> endobj 165 0 obj [/View/Design] endobj 166 0 obj <>>> endobj 130 0 obj [/View/Design] endobj 131 0 obj <>>> endobj 95 0 obj [/View/Design] endobj 96 0 obj <>>> endobj 60 0 obj [/View/Design] endobj 61 0 obj <>>> endobj 25 0 obj [/View/Design] endobj 26 0 obj <>>> endobj 261 0 obj [260 0 R 259 0 R] endobj 297 0 obj <> endobj xref 0 298 0000000004 65535 f -0000000016 00000 n -0000000307 00000 n -0000042669 00000 n -0000000006 00000 f -0001091216 00000 n -0000000008 00000 f -0000042720 00000 n -0000000009 00000 f -0000000010 00000 f -0000000011 00000 f -0000000012 00000 f -0000000013 00000 f -0000000014 00000 f -0000000015 00000 f -0000000016 00000 f -0000000017 00000 f -0000000018 00000 f -0000000019 00000 f -0000000020 00000 f -0000000021 00000 f -0000000022 00000 f -0000000023 00000 f -0000000024 00000 f -0000000027 00000 f -0001092812 00000 n -0001092843 00000 n -0000000028 00000 f -0000000029 00000 f -0000000030 00000 f -0000000031 00000 f -0000000032 00000 f -0000000033 00000 f -0000000034 00000 f -0000000035 00000 f -0000000036 00000 f -0000000037 00000 f -0000000038 00000 f -0000000039 00000 f -0000000040 00000 f -0000000042 00000 f -0001091286 00000 n -0000000043 00000 f -0000000044 00000 f -0000000045 00000 f -0000000046 00000 f -0000000047 00000 f -0000000048 00000 f -0000000049 00000 f -0000000050 00000 f -0000000051 00000 f -0000000052 00000 f -0000000053 00000 f -0000000054 00000 f -0000000055 00000 f -0000000056 00000 f -0000000057 00000 f -0000000058 00000 f -0000000059 00000 f -0000000062 00000 f -0001092696 00000 n -0001092727 00000 n -0000000063 00000 f -0000000064 00000 f -0000000065 00000 f -0000000066 00000 f -0000000067 00000 f -0000000068 00000 f -0000000069 00000 f -0000000070 00000 f -0000000071 00000 f -0000000072 00000 f -0000000073 00000 f -0000000074 00000 f -0000000075 00000 f -0000000077 00000 f -0001091357 00000 n -0000000078 00000 f -0000000079 00000 f -0000000080 00000 f -0000000081 00000 f -0000000082 00000 f -0000000083 00000 f -0000000084 00000 f -0000000085 00000 f -0000000086 00000 f -0000000087 00000 f -0000000088 00000 f -0000000089 00000 f -0000000090 00000 f -0000000091 00000 f -0000000092 00000 f -0000000093 00000 f -0000000094 00000 f -0000000097 00000 f -0001092580 00000 n -0001092611 00000 n -0000000098 00000 f -0000000099 00000 f -0000000100 00000 f -0000000101 00000 f -0000000102 00000 f -0000000103 00000 f -0000000104 00000 f -0000000105 00000 f -0000000106 00000 f -0000000107 00000 f -0000000108 00000 f -0000000109 00000 f -0000000110 00000 f -0000000112 00000 f -0001091428 00000 n -0000000113 00000 f -0000000114 00000 f -0000000115 00000 f -0000000116 00000 f -0000000117 00000 f -0000000118 00000 f -0000000119 00000 f -0000000120 00000 f -0000000121 00000 f -0000000122 00000 f -0000000123 00000 f -0000000124 00000 f -0000000125 00000 f -0000000126 00000 f -0000000127 00000 f -0000000128 00000 f -0000000129 00000 f -0000000132 00000 f -0001092462 00000 n -0001092494 00000 n -0000000133 00000 f -0000000134 00000 f -0000000135 00000 f -0000000136 00000 f -0000000137 00000 f -0000000138 00000 f -0000000139 00000 f -0000000140 00000 f -0000000141 00000 f -0000000142 00000 f -0000000143 00000 f -0000000144 00000 f -0000000145 00000 f -0000000147 00000 f -0001091502 00000 n -0000000148 00000 f -0000000149 00000 f -0000000150 00000 f -0000000151 00000 f -0000000152 00000 f -0000000153 00000 f -0000000154 00000 f -0000000155 00000 f -0000000156 00000 f -0000000157 00000 f -0000000158 00000 f -0000000159 00000 f -0000000160 00000 f -0000000161 00000 f -0000000162 00000 f -0000000163 00000 f -0000000164 00000 f -0000000167 00000 f -0001092344 00000 n -0001092376 00000 n -0000000168 00000 f -0000000169 00000 f -0000000170 00000 f -0000000171 00000 f -0000000172 00000 f -0000000173 00000 f -0000000174 00000 f -0000000175 00000 f -0000000176 00000 f -0000000177 00000 f -0000000178 00000 f -0000000179 00000 f -0000000180 00000 f -0000000183 00000 f -0001091576 00000 n -0001091650 00000 n -0000000184 00000 f -0000000185 00000 f -0000000186 00000 f -0000000187 00000 f -0000000188 00000 f -0000000189 00000 f -0000000190 00000 f -0000000191 00000 f -0000000192 00000 f -0000000193 00000 f -0000000194 00000 f -0000000195 00000 f -0000000196 00000 f -0000000197 00000 f -0000000198 00000 f -0000000199 00000 f -0000000200 00000 f -0000000201 00000 f -0000000206 00000 f -0001092226 00000 n -0001092258 00000 n -0001092108 00000 n -0001092140 00000 n -0000000207 00000 f -0000000208 00000 f -0000000209 00000 f -0000000210 00000 f -0000000211 00000 f -0000000212 00000 f -0000000213 00000 f -0000000214 00000 f -0000000215 00000 f -0000000216 00000 f -0000000217 00000 f -0000000218 00000 f -0000000219 00000 f -0000000000 00000 f -0001091724 00000 n -0001091798 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0001091990 00000 n -0001092022 00000 n -0001091872 00000 n -0001091904 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000438601 00000 n -0000438675 00000 n -0001092928 00000 n -0000043138 00000 n -0000439085 00000 n -0000048730 00000 n -0000048616 00000 n -0000438985 00000 n -0000044388 00000 n -0000044819 00000 n -0000043391 00000 n -0000043824 00000 n -0000043874 00000 n -0000045077 00000 n -0000045140 00000 n -0000045523 00000 n -0000045586 00000 n -0000045839 00000 n -0000045902 00000 n -0000048552 00000 n -0000048767 00000 n -0000438867 00000 n -0000438899 00000 n -0000438749 00000 n -0000438781 00000 n -0000439161 00000 n -0000439549 00000 n -0000440565 00000 n -0000443748 00000 n -0000509337 00000 n -0000566504 00000 n -0000632093 00000 n -0000697682 00000 n -0000763271 00000 n -0000828860 00000 n -0000894449 00000 n -0000960038 00000 n -0001025627 00000 n -0001092963 00000 n -trailer <]>> startxref 1093160 %%EOF \ No newline at end of file diff --git a/node_modules/materialize-css/res/MaterializeLogo-3.svg b/node_modules/materialize-css/res/MaterializeLogo-3.svg deleted file mode 100644 index bddcff4..0000000 --- a/node_modules/materialize-css/res/MaterializeLogo-3.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/res/materialize.svg b/node_modules/materialize-css/res/materialize.svg deleted file mode 100644 index 903fed5..0000000 --- a/node_modules/materialize-css/res/materialize.svg +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/robots.txt b/node_modules/materialize-css/robots.txt deleted file mode 100644 index 2b08a70..0000000 --- a/node_modules/materialize-css/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Allow crawling of all content -User-agent: * -Disallow: -Sitemap: http://materializecss.com/sitemap.xml \ No newline at end of file diff --git a/node_modules/materialize-css/sass.html b/node_modules/materialize-css/sass.html deleted file mode 100644 index 6dbfd64..0000000 --- a/node_modules/materialize-css/sass.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - - - Sass - Materialize - - - - - - - - - - - - - - - - -

                - - - -
                -
                -
                - -
                - - -
                -

                Variables

                -

                - When using Sass, you can change the color scheme of your site extremely quickly. Below is a very small sample of what you can change through sass in _variables.scss. -

                -
                
                -  $primary-color: color("materialize-red", "lighten-2") !default;
                -  $primary-color-light: false !default;
                -  $primary-color-dark: false !default;
                -  @if not $primary-color-light {
                -    $primary-color-light: lighten($primary-color, 15%);
                -  }
                -  @if not $primary-color-dark {
                -    $primary-color-dark: darken($primary-color, 15%);
                -  }
                -  $secondary-color: color("teal", "lighten-1") !default;
                -  $success-color: color("green", "base") !default;
                -  $error-color: color("red", "base") !default;
                -
                -  $link-color: color("light-blue", "darken-1") !default;
                -
                -  /*** More variables not shown here.. ***/
                -        
                -
                - - -
                -

                Media Queries

                -

                - We have 3 media queries for the 3 standard screen sizes you can use in your custom Sass files. This also includes media query variables that will define the range. -

                -

                - Small screens are defined as having a max-width of 600px -
                - Medium screens are defined as having a max-width of 992px -
                - Large screen are defined as having a min-width of 993px -

                - -

                CSS

                -
                
                -  /* These classes can be added to HTML Elements
                -   * to affect visibility on certain displays.
                -   */
                -  .hide-on-small-only
                -  .hide-on-small-and-down
                -  .hide-on-med-and-down
                -  .hide-on-med-and-up
                -  .hide-on-med-only
                -  .hide-on-large-only
                -  .show-on-large
                -  .show-on-medium
                -  .show-on-small
                -  .show-on-medium-and-up
                -  .show-on-medium-and-down
                -            
                - -

                Sass

                -
                
                -  @media #{$small-and-down} {
                -    // styles for small screens and down
                -  }
                -  @media #{$medium-and-up} {
                -    // styles for medium screens and larger
                -  }
                -  @media #{$medium-and-down} {
                -    // styles for medium screens and down
                -  }
                -  @media #{$large-and-up} {
                -    // styles for large screens and up
                -  }
                -            
                -
                - - -
                -

                Prefixer

                -

                - One major goal of this framework is to be as adaptable as possible which includes cross browser compatibility. We have adapted a prefixer script to Sass which will automatically add all browser prefixes for certain CSS properties. -

                - - - For Example: Using this Sass mixin -
                
                -  @include transition(.3s);
                -        
                - Will Output This -
                
                -  -webkit-transition: 0.3s;
                -  -moz-transition: 0.3s;
                -  -o-transition: 0.3s;
                -  -ms-transition: 0.3s;
                -  transition: 0.3s;
                -        
                - Here is the full list of mixins -
                
                -  animation($args)
                -  animation-delay($delay)
                -  animation-direction($direction)
                -  animation-duration($duration)
                -  animation-fill-mode($mode)
                -  animation-iteration-count($count)
                -  animation-name($name)
                -  animation-play-state($state)
                -  animation-timing-function($function)
                -  background-size($args)
                -  box-sizing($args)
                -      border-box()
                -      content-box()
                -  columns($args)
                -      column-count($count)
                -      column-gap($gap)
                -      column-rule($args)
                -      column-width($width)
                -  gradient($default,$start,$stop)
                -      linear-gradient-top($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])
                -      linear-gradient-left($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])
                -  transform($args)
                -      transform-origin($args)
                -      transform-style($style)
                -      rotate($deg)
                -      scale($factor)
                -      translate($x,$y)
                -      translate3d($x,$y,$z)
                -      translateHardware($x,$y)
                -  text-shadow($args)
                -  transition($args)
                -      transition-delay($delay)
                -      transition-duration($duration)
                -      transition-property($property)
                -      transition-timing-function($function)
                -        
                -
                -
                -
                -
                -
                - - -
                - -
                -
                - -
                - -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/sass/_style.scss b/node_modules/materialize-css/sass/_style.scss deleted file mode 100644 index fa8ad7e..0000000 --- a/node_modules/materialize-css/sass/_style.scss +++ /dev/null @@ -1,979 +0,0 @@ -/*************** - HTML Styles -***************/ -body { - background-color: #fcfcfc; -} - -p.box { - padding: 20px; -} -p { - color: rgba(0, 0, 0, 0.71); - padding: 0; - -webkit-font-smoothing: antialiased; -} - -h1,h2,h3,h4,h5,h6 { - -webkit-font-smoothing: antialiased; -} - -h5 > span { - font-size: 14px; - margin-left: 15px; - color: #777; -} - -nav { - // background-color: color("materialize-red", "lighten-2"); - - a { - -webkit-font-smoothing: antialiased; - } - ul li a:hover, ul li.active { - background-color: color("materialize-red", "lighten-1"); - } -} - -.header { - color: color("materialize-red", "lighten-2"); - font-weight: 300; -} - -.caption { - font-size: 1.25rem; - font-weight: 300; - margin-bottom: 30px; -} - -.preview { - background-color: #FFF; - border: 1px solid #eee; - padding: 20px 20px; -} - -header, main, footer { - padding-left: 300px; -} -.parallax-demo header, -.parallax-demo main, -.parallax-demo footer { - padding-left: 0; -} -footer.example { - padding-left: 0; -} - -@media #{$medium-and-down} { - header, main, footer { - padding-left: 0; - } - h5 > span { - display: block; - margin: 0 0 15px 0; - } - -} - -/******************** - Index Page Styles -********************/ - -// custom styled sidebar -ul.side-nav.fixed li.logo { - text-align: center; - margin-top: 32px; - margin-bottom: 80px; - - &:hover, - #logo-container:hover { - background-color: transparent; - } -} -ul.side-nav.fixed { - overflow: hidden; - - li { - line-height: 44px; - - &.active { - background-color: rgba(0,0,0,.05); - } - - a { - font-size: 13px; - line-height: 44px; - height: 44px; - padding: 0 30px; - } - } - - ul.collapsible-accordion { - background-color: #FFF; - - a.collapsible-header { - padding: 0 30px; - } - - .collapsible-body li a { - font-weight: 400; - padding: 0 37.5px 0 45px; - } - } - - // Only show scrollbar on hover - &:hover { - overflow-y: auto; - } -} - -.bold > a { - font-weight: bold; -} - -#logo-container { - height: 57px; - margin-bottom: 32px; -} - -nav.top-nav { - height: 122px; - box-shadow: none; - - a.page-title { - line-height: 122px; - font-size: 48px; - } -} -a.button-collapse.top-nav { - position: absolute; - text-align: center; - height: 48px; - width: 48px; - left: 7.5%; - top: 0; - float: none; - margin-left: 1.5rem; - color: #fff; - font-size: 36px; - z-index: 2; - - &.full { - line-height: 122px; - } - - i { - font-size: 32px; - } -} - -@media #{$small-and-down} { - a.button-collapse.top-nav { - left: 5%; - } -} - -@media #{$medium-and-down} { - nav .nav-wrapper { - text-align: center; - - a.page-title { - font-size: 36px; - } - } -} - -@media #{$large-and-up} { - .container { - width: 85%; - } -} - - -#front-page-logo { - display: inline-block; - height: 100%; - pointer-events: none; -} - -@media only screen and (max-width: 992px) { - #front-page-nav ul.side-nav { - li { - float: none; - padding: 0 15px; - - &:hover { background-color: #ddd; } - .active { background-color: transparent; } - } - a { - color: #444; - } - } -} - - -#responsive-img { - width: 80%; - display:block; - margin: 0 auto; -} - -#index-banner { - background-color: color("materialize-red", "lighten-2"); - .container { - position: relative; - } - .header { - color: #FFF; - } - h4 { - margin-bottom: 40px; - } - h1 { - margin-top: 16px; - } -} -@media #{$medium-and-down} { - #index-banner { - h1 { - margin-top: 60px; - } - h4 { - margin-bottom: 15px; - } - } -} -@media #{$small-and-down} { - #index-banner { - h4 { - margin-bottom: 0; - } - } -} - -// Latest commit widget -.github-commit { - padding: 14px 0; - height: 64px; - line-height: 36px; - background-color: #5c5757; - color: hsl(0, 0%, 90%); - font-size: .9rem; -} -@media #{$medium-and-down} { - .github-commit { - text-align: center; - } -} - -#github-button { - background-color: #6f6d6d; - transition: .25s ease; - &:hover { - background-color: #797777; - } -} - -.sha { - color: hsl(0, 0%, 94%) ; - margin: 0 6px 0 6px; -} - -#download-button { - background-color: color("materialize-red", "lighten-3"); - width: 260px; - height: 70px; - line-height: 70px; - font-size: 18px; - font-weight: 400; - - &:hover { - background-color: lighten(color("materialize-red", "base"), 30%); - } -} - -.promo{ - width: 100%; - - i { - margin: 40px 0; - color: color("materialize-red", "lighten-2"); - font-size: 7rem; - display: block; - } -} - -.promo-caption { - font-size: 1.7rem; - font-weight: 500; - margin-top: 5px; - margin-bottom: 0; - -} - -#front-page-nav { - background-color: #FFF; - position: relative; - a { - color: color("materialize-red", "lighten-2"); - } - li { - &:hover { - background-color: color("materialize-red", "lighten-5"); - } - &.active { - background-color: color("materialize-red", "lighten-5"); - } - } - .container { - height: inherit; - } -} - -// Grid doc styles - -.col.grid-example { - border: 1px solid #eee; - margin: 7px 0; - text-align: center; - line-height: 50px; - font-size: 28px; - background-color: tomato; - color: white; - padding: 0; - - span { - font-weight: 200; - line-height: 50px; - } -} - -.promo-example { - overflow: hidden; -} - - -/******************* - Flat Site Mockup -*******************/ - -#site-layout-example-left { - background-color: color("blue-grey", "lighten-2"); - height: 300px; -} -#site-layout-example-right { - background-color: color("teal", "lighten-1"); - height: 300px; -} -#site-layout-example-top { - background-color: color("red", "lighten-2"); - height: 42px; -} - -.flat-text-header { - height: 35px; - width: 80%; - background-color: rgba(255,255,255,.15); - display: block; - margin: 27px auto; -} -.flat-text { - height: 25px; - width: 80%; - background-color: rgba(0,0,0,.15); - display: block; - margin: 27px auto; - &.small { - width: 25%; - height: 25px; - background-color: rgba(0,0,0,.15); - } - &.full-width { - width: 100%; - } -} - -/********************** -**********************/ - -/***************** - Chrome Browser -*****************/ -$bottomColor: #E2E2E1; -$topColor: lighten($bottomColor, 2%); - -$border: $bottomColor; - -$width: 100%; -$height: auto; - -.browser-window { - text-align: left; - width: $width; - height: $height; - display: inline-block; - border-radius: 5px 5px 2px 2px; - background-color: #fff; - margin: 20px 0px; - overflow: hidden; - - .top-bar { - height: 30px; - border-radius: 5px 5px 0 0; - border-top: thin solid lighten($topColor, 1%); - border-bottom: thin solid darken($bottomColor, 1%); - background: linear-gradient($topColor, $bottomColor); - } -} - -.browser-window .circle { - height: 10px; - width: 10px; - display: inline-block; - border-radius: 50%; - background-color: lighten($topColor, 10%); - margin-right: 1px; -} -#close-circle { - background-color: #FF5C5A; -} -#minimize-circle { - background-color: #FFBB50; -} -#maximize-circle { - background-color: #1BC656; -} -.browser-window .circles { margin: 5px 12px; } -.browser-window .content { - margin: 0; - width: 100%; - // min-height: 100%; - display: inline-block; - border-radius: 0 0 5px 5px; - background-color: #fafafa; -} -.browser-window .row { - margin: 0; -} - -.clear { clear: both; } - -/********************** -**********************/ - - -// Color Wheel -.dynamic-color { - - .red, .pink, .purple, .deep-purple, .indigo, .blue, .light-blue, .cyan, .teal, .green, .light-green, .lime, .yellow, .amber, .orange, .deep-orange, .brown , .grey, .blue-grey, .black, .white, .transparent { - height: 55px; - width: 100%; - padding: 0 15px; - line-height: 55px; - font-weight: 500; - font-size: 12px; - display: block; - box-sizing: border-box; - } - .col { - margin-bottom: 55px; - } -} - -.center { - text-align: center; - vertical-align: middle; -} - -// Icons -.material-icons.icon-demo { - line-height: 50px; -} -.icon-container i { - font-size: 3em; - margin-bottom: 10px; -} -.icon-container .icon-preview { - height: 120px; - text-align: center; -} -.icon-container span { - display: block; -} - -.icon-holder { - display: block; - text-align: center; - width: 150px; - height: 115px; - - float: left; - margin: 0 0px 15px 0px; - p { - margin: 0 0; - } -} - -// tabs -.tabs-wrapper { - position: relative; - height: 48px; - @extend .hide-on-small-only; - - .row.pinned { - position: fixed; - width: 100%; - top: 0; - z-index: 10; - } -} - - -// Shadow demo styling -.shadow-demo { - background-color: color("teal", "lighten-1"); - width: 100px; - height: 100px; - margin: 20px auto; - - @media only screen and (max-width: $small-screen) { - width: 150px; - height: 150px; - } -} - -// parallax demo -.parallax-container { - - .text-center { - position: absolute; - top: 50%; - left: 0; - right: 0; - margin-top: -27px; - } - -} - -// Table of contents -ul.table-of-contents { - margin-top: 0; - padding-top: 48px; -} - -// Prism Styling -code, pre { - position: relative; - font-size: 1.1rem; -} - -.directory-markup { - font-size: 1rem; - line-height: 1.1rem !important; -} -pre[class*="language-"] { - &:before { - position: absolute; - padding: 1px 5px; - background: hsl(30, 10%, 90%); - top: 0; - left: 0; - font-family: "Roboto", sans-serif; - -webkit-font-smoothing: antialiased; - color: #555; - content:attr(class); - font-size: .9rem; - border: solid 1px rgba(51, 51, 51, 0.12); - border-top: none; - border-left: none; - } - padding: 25px 12px 7px 12px; - border: solid 1px rgba(51, 51, 51, 0.12); -} - - -// Carbon Ads styling -.toc-wrapper { - &.pin-bottom { - margin-top: 84px; - } - - position: relative; - margin-top: 42px; -} - -#carbonads { - max-width: 150px; - display: inline-block; - position: relative; - text-align: left; - -webkit-font-smoothing: antialiased; - - & > span, - span.carbon-wrap { - height: 100px; - display: block; - } - a.carbon-img { - height: 100px; - display: inline-block; - margin-right: 10px; - } - a.carbon-text, - input[type="submit"] { - position: relative; - top: 0; - width: 150px; - vertical-align: top; - display: inline-block; - font-size: 13px; - color: color("red", "lighten-2"); - } - a.carbon-poweredby { - position: relative; - left: 28px; - font-size: 11px; - color: color("red", "lighten-3"); - } -} -.buysellads #carbonads { - - & > span, - span.carbon-wrap { height: auto; } - - a.carbon-text { - top: 5px; - left: 0; - width: 130px; - display: block; - font-size: 13px; - -webkit-font-smoothing: antialiased; - color: #E57373; - } - a.carbon-poweredby { - top: 5px; - } -} -.buysellads-header #carbonads { - & > span, - span.carbon-wrap { height: auto; } - a.carbon-text { color: #fff; } - a.carbon-poweredby { color: rgba(255,255,255,.8); } -} - - -.buysellads-homepage #carbonads { - display: block; - overflow: hidden; - margin: 4em auto 0; - padding: 1em; - max-width: 360px; - border-radius: 2px; - background-color: hsla(0, 0%, 100%, .13); - - - span { - position: relative; - display: block; - overflow: hidden; - } - - .carbon-img { - float: left; - margin-right: 1em; - } - - .carbon-text { - max-width: calc(100% - 135px - 1em); - width: auto; - } - - .carbon-poweredby { - position: absolute; - left: auto; - right: 0; - bottom: -4px; - } -} - - -// BuySellAds Styling -.buysellads { - &.buysellads-demo { - bottom: 20px; - right: 20px; - position: fixed; - padding: 10px; - background-color: rgba(255,255,255,.9); - z-index: 1000; - - #carbonads a.carbon-img { - margin-right: 0; - } - - #carbonads a.carbon-text { - top: 0; - } - - a.close { - &:hover { - background-color: #ddd; - } - .material-icons { - font-size: 18px; - line-height: 24px; - } - text-align: center; - background-color: #fff; - border-radius: 50%; - box-shadow: 0 2px 4px 0 rgba(0,0,0,.1); - height: 24px; - width: 24px; - position: absolute; - top: -6px; - right: -6px; - z-index: 1; - transition: background-color .2s; - } - } - - -webkit-font-smoothing: antialiased; - position: relative; - - .bsa_it.one { - width: 130px; - position: absolute; - left: 0; - top: 50px; - - .bsa_it_p { - left: 0; - bottom: -15px; - } - .bsa_it_ad .bsa_it_t { color: color("red", "lighten-2"); } - .bsa_it_ad .bsa_it_d { color: color("red", "lighten-3"); } - } - - .bsa_it_ad a { - display: block; - width: 130px; - } -} - -.buysellads-header { - margin-top: 30px; - - .bsa_it.one .bsa_it_p { bottom: -20px; } -} - -.bsa_it.one { - min-width: 230px; - max-width: 270px; - display: inline-block; - text-align: left; - - .bsa_it_ad { - border: 0; - padding: 0; - background-color: transparent; - - .bsa_it_t { color: #fff; } - .bsa_it_d { color: color("red", "lighten-4"); } - } - - .bsa_it_p { - right: auto; - left: 40px; - bottom: -5px; - - a { color: color("red", "lighten-4"); } - } -} - - - -// Footer styling -footer{ - font-size: .9rem; -} -body.parallax-demo footer { - margin-top: 0; -} - -//About page styling -.image-container { - width: 100%; - img { - max-width: 100%; - } -} - - -// Mobile page styling - -.mobile-image { - @media #{$small-and-down} { - max-width: 100%; - } -} - -// Waves page styling -.waves-color-demo { - .collection-item { - height: 37px; - line-height: 37px; - box-sizing: content-box; - - code { - line-height: 37px; - } - } - .btn { - &:not(.waves-light) { - background-color: color("shades", "white"); - color: #212121; - } - } -} - -// Card Page styling -.card-panel span, .card-content p{ - -webkit-font-smoothing: antialiased; -} - -#images .card-panel .row { - margin-bottom: 0; -} - -// Pushpin Demo styles -.pushpin-demo { - position: relative; - height: 100px; -} -#pushpin-demo-1 { - display: block; - height: inherit; - background-color: #ddd; -} - -// Valign Demo -.valign-demo { - height: 400px; - background-color: #ddd; -} -.talign-demo { - height: 100px; - background-color: #ddd; -} - -// Transitions demos -#staggered-test li, -#image-test { - opacity: 0; - -} - -// Transifex Styling - -#tx-live-lang-container { - background-color: #fcfcfc; - z-index: 999; - - #tx-live-lang-picker { - background-color: #fcfcfc; - - li { - color: $off-black; - &:hover{ - color: inherit; - background-color: color("materialize-red", "lighten-5"); - } - } - - } - - .txlive-langselector-toggle { - border-bottom: 2px solid color("materialize-red", "lighten-2"); - } - - .txlive-langselector-current { - color: $off-black; - } - - .txlive-langselector-marker { - border-bottom: 4px solid rgba(0,0,0,.61); - } - - -} - - -// Thanks for Downloading - -#download-thanks { - display: none; -} - - -// Twitter widget -#twitter-widget-0 { - width: 300px !important; -} - -// Search -#nav-mobile li.search { - &:hover { background-color: #fff; } - - position: absolute; - left: 0; - right: 0; - top: 120px; - margin-top: 1px; - padding: 1px 0 0 0; - z-index: 2; - - .search-wrapper { - &.focused { margin: 0; } - - margin: 0 12px; - transition: margin .25s ease; - - input#search { - &:focus { outline: none; } - - display: block; - font-size: 16px; - font-weight: 300; - width: 100%; - height: 45px; - margin: 0; - padding: 0 45px 0 15px; - border: 0; - } - - i.material-icons { - position: absolute; - top: 10px; - right: 10px; - cursor: pointer; - } - } - - - .search-results { - margin: 0; - border-top: 1px solid #e9e9e9; - background-color: #fff; - - a { - &:hover, - &.focused { - background-color: #eee; - outline: none; - } - - font-size: 12px; - white-space: nowrap; - } - } -} diff --git a/node_modules/materialize-css/sass/components/_badges.scss b/node_modules/materialize-css/sass/components/_badges.scss deleted file mode 100644 index 1c9f951..0000000 --- a/node_modules/materialize-css/sass/components/_badges.scss +++ /dev/null @@ -1,46 +0,0 @@ -// Badges -span.badge { - min-width: 3rem; - padding: 0 6px; - margin-left: 14px; - text-align: center; - font-size: 1rem; - line-height: $badge-height; - height: $badge-height; - color: color('grey', 'darken-1'); - float: right; - box-sizing: border-box; - - &.new { - font-weight: 300; - font-size: 0.8rem; - color: #fff; - background-color: $badge-bg-color; - border-radius: 2px; - } - &.new:after { - content: " new"; - } - - &[data-badge-caption]::after { - content: " " attr(data-badge-caption); - } -} -nav ul a span.badge { - display: inline-block; - float: none; - margin-left: 4px; - line-height: $badge-height; - height: $badge-height; -} - -// Line height centering -.collection-item span.badge { - margin-top: calc(#{$collection-line-height / 2} - #{$badge-height / 2}); -} -.collapsible span.badge { - margin-top: calc(#{$collapsible-line-height / 2} - #{$badge-height / 2}); -} -.side-nav span.badge { - margin-top: calc(#{$sidenav-line-height / 2} - #{$badge-height / 2}); -} diff --git a/node_modules/materialize-css/sass/components/_buttons.scss b/node_modules/materialize-css/sass/components/_buttons.scss deleted file mode 100644 index 800fab0..0000000 --- a/node_modules/materialize-css/sass/components/_buttons.scss +++ /dev/null @@ -1,293 +0,0 @@ -// shared styles -.btn, -.btn-flat { - border: $button-border; - border-radius: $button-radius; - display: inline-block; - height: $button-height; - line-height: $button-height; - padding: $button-padding; - text-transform: uppercase; - vertical-align: middle; - // Gets rid of tap active state - -webkit-tap-highlight-color: transparent; -} - -// Disabled shared style -.btn.disabled, -.btn-floating.disabled, -.btn-large.disabled, -.btn-flat.disabled, -.btn:disabled, -.btn-floating:disabled, -.btn-large:disabled, -.btn-flat:disabled, -.btn[disabled], -.btn-floating[disabled], -.btn-large[disabled], -.btn-flat[disabled] { - pointer-events: none; - background-color: $button-disabled-background !important; - box-shadow: none; - color: $button-disabled-color !important; - cursor: default; - - &:hover { - background-color: $button-disabled-background !important; - color: $button-disabled-color !important; - } -} - -// Shared icon styles -.btn, -.btn-floating, -.btn-large, -.btn-flat { - - outline: 0; - - i { - font-size: $button-font-size; - line-height: inherit; - } -} - -// Shared focus button style -.btn, -.btn-floating { - &:focus { - background-color: darken($button-raised-background, 10%); - } -} - -// Raised Button -.btn { - text-decoration: none; - color: $button-raised-color; - background-color: $button-raised-background; - text-align: center; - letter-spacing: .5px; - @extend .z-depth-1; - transition: .2s ease-out; - cursor: pointer; - - &:hover { - background-color: $button-raised-background-hover; - @extend .z-depth-1-half; - } -} - -// Floating button -.btn-floating { - &:hover { - background-color: $button-floating-background-hover; - @extend .z-depth-1-half; - } - - &:before { - border-radius: 0; - } - - &.btn-large { - width: $button-floating-large-size; - height: $button-floating-large-size; - i { - line-height: $button-floating-large-size; - } - } - - &.halfway-fab { - &.left { - right: auto; - left: 24px; - } - - position: absolute; - right: 24px; - bottom: 0; - transform: translateY(50%); - } - - display: inline-block; - color: $button-floating-color; - position: relative; - overflow: hidden; - z-index: 1; - width: $button-floating-size; - height: $button-floating-size; - line-height: $button-floating-size; - padding: 0; - background-color: $button-floating-background; - border-radius: $button-floating-radius; - @extend .z-depth-1; - transition: .3s; - cursor: pointer; - vertical-align: middle; - - i { - width: inherit; - display: inline-block; - text-align: center; - color: $button-floating-color; - font-size: $button-large-icon-font-size; - line-height: $button-floating-size; - } -} - -// button fix -button.btn-floating { - border: $button-border; -} - -// Fixed Action Button -.fixed-action-btn { - &.active { - ul { - visibility: visible; - } - } - - &.horizontal { - padding: 0 0 0 15px; - - ul { - text-align: right; - right: 64px; - top: 50%; - transform: translateY(-50%); - height: 100%; - left: auto; - width: 500px; /*width 100% only goes to width of button container */ - - li { - display: inline-block; - margin: 15px 15px 0 0; - } - } - } - - &.toolbar { - &.active { - & > a i { - opacity: 0; - } - } - - padding: 0; - height: $button-floating-large-size; - - ul { - display: flex; - top: 0; - bottom: 0; - - li { - flex: 1; - display: inline-block; - margin: 0; - height: 100%; - transition: none; - - a { - display: block; - overflow: hidden; - position: relative; - width: 100%; - height: 100%; - background-color: transparent; - box-shadow: none; - color: #fff; - line-height: $button-floating-large-size; - z-index: 1; - - i { - line-height: inherit; - } - } - } - } - } - - position: fixed; - right: 23px; - bottom: 23px; - padding-top: 15px; - margin-bottom: 0; - z-index: 998; - - ul { - left: 0; - right: 0; - text-align: center; - position: absolute; - bottom: 64px; - margin: 0; - visibility: hidden; - - li { - margin-bottom: 15px; - } - - a.btn-floating { - opacity: 0; - } - } - - .fab-backdrop { - position: absolute; - top: 0; - left: 0; - z-index: -1; - width: $button-floating-size; - height: $button-floating-size; - background-color: $button-floating-background; - border-radius: $button-floating-radius; - transform: scale(0); - } -} - -// Flat button -.btn-flat { - box-shadow: none; - background-color: transparent; - color: $button-flat-color; - cursor: pointer; - transition: background-color .2s; - - &:focus, - &:active { - background-color: transparent; - } - - &:focus, - &:hover { - background-color: rgba(0,0,0,.1); - box-shadow: none; - } - - &:active { - background-color: rgba(0,0,0,.2); - } - - &.disabled { - background-color: transparent !important; - color: $button-flat-disabled-color !important; - cursor: default; - } -} - -// Large button -.btn-large { - @extend .btn; - height: $button-large-height; - line-height: $button-large-height; - - i { - font-size: $button-large-icon-font-size; - } -} - -// Block button -.btn-block { - display: block; -} diff --git a/node_modules/materialize-css/sass/components/_cards.scss b/node_modules/materialize-css/sass/components/_cards.scss deleted file mode 100644 index ad72783..0000000 --- a/node_modules/materialize-css/sass/components/_cards.scss +++ /dev/null @@ -1,193 +0,0 @@ - - -.card-panel { - transition: box-shadow .25s; - padding: $card-padding; - margin: $element-top-margin 0 $element-bottom-margin 0; - border-radius: 2px; - @extend .z-depth-1; - background-color: $card-bg-color; -} - -.card { - position: relative; - margin: $element-top-margin 0 $element-bottom-margin 0; - background-color: $card-bg-color; - transition: box-shadow .25s; - border-radius: 2px; - @extend .z-depth-1; - - - .card-title { - font-size: 24px; - font-weight: 300; - &.activator { - cursor: pointer; - } - } - - // Card Sizes - &.small, &.medium, &.large { - position: relative; - - .card-image { - max-height: 60%; - overflow: hidden; - } - .card-image + .card-content { - max-height: 40%; - } - .card-content { - max-height: 100%; - overflow: hidden; - } - .card-action { - position: absolute; - bottom: 0; - left: 0; - right: 0; - } - } - - &.small { - height: 300px; - } - - &.medium { - height: 400px; - } - - &.large { - height: 500px; - } - - // Horizontal Cards - &.horizontal { - &.small, &.medium, &.large { - .card-image { - height: 100%; - max-height: none; - overflow: visible; - - img { - height: 100%; - } - } - } - - display: flex; - - .card-image { - max-width: 50%; - img { - border-radius: 2px 0 0 2px; - max-width: 100%; - width: auto; - } - } - - .card-stacked { - display: flex; - flex-direction: column; - flex: 1; - position: relative; - - .card-content { - flex-grow: 1; - } - } - } - - // Sticky Action Section - &.sticky-action { - .card-action { - z-index: 2; - } - - .card-reveal { - z-index: 1; - padding-bottom: 64px; - } - } - - - - - .card-image { - position: relative; - - // Image background for content - img { - display: block; - border-radius: 2px 2px 0 0; - position: relative; - left: 0; - right: 0; - top: 0; - bottom: 0; - width: 100%; - } - - .card-title { - color: $card-bg-color; - position: absolute; - bottom: 0; - left: 0; - max-width: 100%; - padding: $card-padding; - } - } - - .card-content { - padding: $card-padding; - border-radius: 0 0 2px 2px; - - p { - margin: 0; - color: inherit; - } - .card-title { - display: block; - line-height: 32px; - margin-bottom: 8px; - - i { - line-height: 32px; - } - } - } - - .card-action { - position: relative; - background-color: inherit; - border-top: 1px solid rgba(160,160,160,.2); - padding: 16px $card-padding; - - a:not(.btn):not(.btn-large):not(.btn-floating) { - color: $card-link-color; - margin-right: $card-padding; - transition: color .3s ease; - text-transform: uppercase; - - &:hover { color: $card-link-color-light; } - } - } - - .card-reveal { - padding: $card-padding; - position: absolute; - background-color: $card-bg-color; - width: 100%; - overflow-y: auto; - left: 0; - top: 100%; - height: 100%; - z-index: 3; - display: none; - - .card-title { - cursor: pointer; - display: block; - } - } -} diff --git a/node_modules/materialize-css/sass/components/_carousel.scss b/node_modules/materialize-css/sass/components/_carousel.scss deleted file mode 100644 index 11e49cc..0000000 --- a/node_modules/materialize-css/sass/components/_carousel.scss +++ /dev/null @@ -1,85 +0,0 @@ -.carousel { - &.carousel-slider { - top: 0; - left: 0; - height: 0; - - .carousel-fixed-item { - &.with-indicators { - bottom: 68px; - } - - position: absolute; - left: 0; - right: 0; - bottom: 20px; - z-index: 1; - } - - .carousel-item { - width: 100%; - height: 100%; - min-height: 400px; - position: absolute; - top: 0; - left: 0; - - h2 { - font-size: 24px; - font-weight: 500; - line-height: 32px; - } - - p { - font-size: 15px; - } - } - } - - overflow: hidden; - position: relative; - width: 100%; - height: 400px; - perspective: 500px; - transform-style: preserve-3d; - transform-origin: 0% 50%; - - .carousel-item { - display: none; - width: 200px; - height: 200px; - position: absolute; - top: 0; - left: 0; - - img { - width: 100%; - } - } - - .indicators { - position: absolute; - text-align: center; - left: 0; - right: 0; - bottom: 0; - margin: 0; - - .indicator-item { - &.active { - background-color: #fff; - } - - display: inline-block; - position: relative; - cursor: pointer; - height: 8px; - width: 8px; - margin: 24px 4px; - background-color: rgba(255,255,255,.5); - - transition: background-color .3s; - border-radius: 50%; - } - } -} diff --git a/node_modules/materialize-css/sass/components/_chips.scss b/node_modules/materialize-css/sass/components/_chips.scss deleted file mode 100644 index f774a41..0000000 --- a/node_modules/materialize-css/sass/components/_chips.scss +++ /dev/null @@ -1,83 +0,0 @@ -.chip { - display: inline-block; - height: 32px; - font-size: 13px; - font-weight: 500; - color: rgba(0,0,0,.6); - line-height: 32px; - padding: 0 12px; - border-radius: 16px; - background-color: $chip-bg-color; - margin-bottom: $chip-margin; - margin-right: $chip-margin; - - img { - float: left; - margin: 0 8px 0 -12px; - height: 32px; - width: 32px; - border-radius: 50%; - } - - .close { - cursor: pointer; - float: right; - font-size: 16px; - line-height: 32px; - padding-left: 8px; - } -} - -.chips { - border: none; - border-bottom: 1px solid $chip-border-color; - box-shadow: none; - margin: $input-margin; - min-height: 45px; - outline: none; - transition: all .3s; - - &.focus { - border-bottom: 1px solid $chip-selected-color; - box-shadow: 0 1px 0 0 $chip-selected-color; - } - - &:hover { - cursor: text; - } - - .chip.selected { - background-color: $chip-selected-color; - color: #fff; - } - - .input { - background: none; - border: 0; - color: rgba(0,0,0,.6); - display: inline-block; - font-size: $input-font-size; - height: $input-height; - line-height: 32px; - outline: 0; - margin: 0; - padding: 0 !important; - width: 120px !important; - } - - .input:focus { - border: 0 !important; - box-shadow: none !important; - } -} - -// Form prefix -.prefix ~ .chips { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); -} -.chips:empty ~ label { - font-size: 0.8rem; - transform: translateY(-140%); -} diff --git a/node_modules/materialize-css/sass/components/_collapsible.scss b/node_modules/materialize-css/sass/components/_collapsible.scss deleted file mode 100644 index 31d9d6f..0000000 --- a/node_modules/materialize-css/sass/components/_collapsible.scss +++ /dev/null @@ -1,86 +0,0 @@ -.collapsible { - border-top: 1px solid $collapsible-border-color; - border-right: 1px solid $collapsible-border-color; - border-left: 1px solid $collapsible-border-color; - margin: $element-top-margin 0 $element-bottom-margin 0; - @extend .z-depth-1; -} - -.collapsible-header { - display: block; - cursor: pointer; - min-height: $collapsible-height; - line-height: $collapsible-line-height; - padding: 0 1rem; - background-color: $collapsible-header-color; - border-bottom: 1px solid $collapsible-border-color; - - i { - width: 2rem; - font-size: 1.6rem; - line-height: $collapsible-line-height; - display: block; - float: left; - text-align: center; - margin-right: 1rem; - } -} - -.collapsible-body { - display: none; - border-bottom: 1px solid $collapsible-border-color; - box-sizing: border-box; - padding: 2rem; -} - -// sideNav collapsible styling -.side-nav, -.side-nav.fixed { - - .collapsible { - border: none; - box-shadow: none; - - li { padding: 0; } - } - - .collapsible-header { - background-color: transparent; - border: none; - line-height: inherit; - height: inherit; - padding: 0 $sidenav-padding; - - &:hover { background-color: rgba(0,0,0,.05); } - i { line-height: inherit; } - } - - .collapsible-body { - border: 0; - background-color: $collapsible-header-color; - - li a { - padding: 0 (7.5px + $sidenav-padding) - 0 (15px + $sidenav-padding); - } - } - -} - -// Popout Collapsible - -.collapsible.popout { - border: none; - box-shadow: none; - > li { - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - // transform: scaleX(.92); - margin: 0 24px; - transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940); - } - > li.active { - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); - margin: 16px 0; - // transform: scaleX(1); - } -} diff --git a/node_modules/materialize-css/sass/components/_color.scss b/node_modules/materialize-css/sass/components/_color.scss deleted file mode 100644 index ef9d600..0000000 --- a/node_modules/materialize-css/sass/components/_color.scss +++ /dev/null @@ -1,412 +0,0 @@ -// Utility Color Classes - -//.success { -// -//} - -// Google Color Palette defined: http://www.google.com/design/spec/style/color.html - - -$materialize-red: ( - "base": #e51c23, - "lighten-5": #fdeaeb, - "lighten-4": #f8c1c3, - "lighten-3": #f3989b, - "lighten-2": #ee6e73, - "lighten-1": #ea454b, - "darken-1": #d0181e, - "darken-2": #b9151b, - "darken-3": #a21318, - "darken-4": #8b1014, -); - -$red: ( - "base": #F44336, - "lighten-5": #FFEBEE, - "lighten-4": #FFCDD2, - "lighten-3": #EF9A9A, - "lighten-2": #E57373, - "lighten-1": #EF5350, - "darken-1": #E53935, - "darken-2": #D32F2F, - "darken-3": #C62828, - "darken-4": #B71C1C, - "accent-1": #FF8A80, - "accent-2": #FF5252, - "accent-3": #FF1744, - "accent-4": #D50000 -); - -$pink: ( - "base": #e91e63, - "lighten-5": #fce4ec, - "lighten-4": #f8bbd0, - "lighten-3": #f48fb1, - "lighten-2": #f06292, - "lighten-1": #ec407a, - "darken-1": #d81b60, - "darken-2": #c2185b, - "darken-3": #ad1457, - "darken-4": #880e4f, - "accent-1": #ff80ab, - "accent-2": #ff4081, - "accent-3": #f50057, - "accent-4": #c51162 -); - -$purple: ( - "base": #9c27b0, - "lighten-5": #f3e5f5, - "lighten-4": #e1bee7, - "lighten-3": #ce93d8, - "lighten-2": #ba68c8, - "lighten-1": #ab47bc, - "darken-1": #8e24aa, - "darken-2": #7b1fa2, - "darken-3": #6a1b9a, - "darken-4": #4a148c, - "accent-1": #ea80fc, - "accent-2": #e040fb, - "accent-3": #d500f9, - "accent-4": #aa00ff -); - -$deep-purple: ( - "base": #673ab7, - "lighten-5": #ede7f6, - "lighten-4": #d1c4e9, - "lighten-3": #b39ddb, - "lighten-2": #9575cd, - "lighten-1": #7e57c2, - "darken-1": #5e35b1, - "darken-2": #512da8, - "darken-3": #4527a0, - "darken-4": #311b92, - "accent-1": #b388ff, - "accent-2": #7c4dff, - "accent-3": #651fff, - "accent-4": #6200ea -); - -$indigo: ( - "base": #3f51b5, - "lighten-5": #e8eaf6, - "lighten-4": #c5cae9, - "lighten-3": #9fa8da, - "lighten-2": #7986cb, - "lighten-1": #5c6bc0, - "darken-1": #3949ab, - "darken-2": #303f9f, - "darken-3": #283593, - "darken-4": #1a237e, - "accent-1": #8c9eff, - "accent-2": #536dfe, - "accent-3": #3d5afe, - "accent-4": #304ffe -); - -$blue: ( - "base": #2196F3, - "lighten-5": #E3F2FD, - "lighten-4": #BBDEFB, - "lighten-3": #90CAF9, - "lighten-2": #64B5F6, - "lighten-1": #42A5F5, - "darken-1": #1E88E5, - "darken-2": #1976D2, - "darken-3": #1565C0, - "darken-4": #0D47A1, - "accent-1": #82B1FF, - "accent-2": #448AFF, - "accent-3": #2979FF, - "accent-4": #2962FF -); - -$light-blue: ( - "base": #03a9f4, - "lighten-5": #e1f5fe, - "lighten-4": #b3e5fc, - "lighten-3": #81d4fa, - "lighten-2": #4fc3f7, - "lighten-1": #29b6f6, - "darken-1": #039be5, - "darken-2": #0288d1, - "darken-3": #0277bd, - "darken-4": #01579b, - "accent-1": #80d8ff, - "accent-2": #40c4ff, - "accent-3": #00b0ff, - "accent-4": #0091ea -); - -$cyan: ( - "base": #00bcd4, - "lighten-5": #e0f7fa, - "lighten-4": #b2ebf2, - "lighten-3": #80deea, - "lighten-2": #4dd0e1, - "lighten-1": #26c6da, - "darken-1": #00acc1, - "darken-2": #0097a7, - "darken-3": #00838f, - "darken-4": #006064, - "accent-1": #84ffff, - "accent-2": #18ffff, - "accent-3": #00e5ff, - "accent-4": #00b8d4 -); - -$teal: ( - "base": #009688, - "lighten-5": #e0f2f1, - "lighten-4": #b2dfdb, - "lighten-3": #80cbc4, - "lighten-2": #4db6ac, - "lighten-1": #26a69a, - "darken-1": #00897b, - "darken-2": #00796b, - "darken-3": #00695c, - "darken-4": #004d40, - "accent-1": #a7ffeb, - "accent-2": #64ffda, - "accent-3": #1de9b6, - "accent-4": #00bfa5 -); - -$green: ( - "base": #4CAF50, - "lighten-5": #E8F5E9, - "lighten-4": #C8E6C9, - "lighten-3": #A5D6A7, - "lighten-2": #81C784, - "lighten-1": #66BB6A, - "darken-1": #43A047, - "darken-2": #388E3C, - "darken-3": #2E7D32, - "darken-4": #1B5E20, - "accent-1": #B9F6CA, - "accent-2": #69F0AE, - "accent-3": #00E676, - "accent-4": #00C853 -); - -$light-green: ( - "base": #8bc34a, - "lighten-5": #f1f8e9, - "lighten-4": #dcedc8, - "lighten-3": #c5e1a5, - "lighten-2": #aed581, - "lighten-1": #9ccc65, - "darken-1": #7cb342, - "darken-2": #689f38, - "darken-3": #558b2f, - "darken-4": #33691e, - "accent-1": #ccff90, - "accent-2": #b2ff59, - "accent-3": #76ff03, - "accent-4": #64dd17 -); - -$lime: ( - "base": #cddc39, - "lighten-5": #f9fbe7, - "lighten-4": #f0f4c3, - "lighten-3": #e6ee9c, - "lighten-2": #dce775, - "lighten-1": #d4e157, - "darken-1": #c0ca33, - "darken-2": #afb42b, - "darken-3": #9e9d24, - "darken-4": #827717, - "accent-1": #f4ff81, - "accent-2": #eeff41, - "accent-3": #c6ff00, - "accent-4": #aeea00 -); - -$yellow: ( - "base": #ffeb3b, - "lighten-5": #fffde7, - "lighten-4": #fff9c4, - "lighten-3": #fff59d, - "lighten-2": #fff176, - "lighten-1": #ffee58, - "darken-1": #fdd835, - "darken-2": #fbc02d, - "darken-3": #f9a825, - "darken-4": #f57f17, - "accent-1": #ffff8d, - "accent-2": #ffff00, - "accent-3": #ffea00, - "accent-4": #ffd600 -); - -$amber: ( - "base": #ffc107, - "lighten-5": #fff8e1, - "lighten-4": #ffecb3, - "lighten-3": #ffe082, - "lighten-2": #ffd54f, - "lighten-1": #ffca28, - "darken-1": #ffb300, - "darken-2": #ffa000, - "darken-3": #ff8f00, - "darken-4": #ff6f00, - "accent-1": #ffe57f, - "accent-2": #ffd740, - "accent-3": #ffc400, - "accent-4": #ffab00 -); - -$orange: ( - "base": #ff9800, - "lighten-5": #fff3e0, - "lighten-4": #ffe0b2, - "lighten-3": #ffcc80, - "lighten-2": #ffb74d, - "lighten-1": #ffa726, - "darken-1": #fb8c00, - "darken-2": #f57c00, - "darken-3": #ef6c00, - "darken-4": #e65100, - "accent-1": #ffd180, - "accent-2": #ffab40, - "accent-3": #ff9100, - "accent-4": #ff6d00 -); - -$deep-orange: ( - "base": #ff5722, - "lighten-5": #fbe9e7, - "lighten-4": #ffccbc, - "lighten-3": #ffab91, - "lighten-2": #ff8a65, - "lighten-1": #ff7043, - "darken-1": #f4511e, - "darken-2": #e64a19, - "darken-3": #d84315, - "darken-4": #bf360c, - "accent-1": #ff9e80, - "accent-2": #ff6e40, - "accent-3": #ff3d00, - "accent-4": #dd2c00 -); - -$brown: ( - "base": #795548, - "lighten-5": #efebe9, - "lighten-4": #d7ccc8, - "lighten-3": #bcaaa4, - "lighten-2": #a1887f, - "lighten-1": #8d6e63, - "darken-1": #6d4c41, - "darken-2": #5d4037, - "darken-3": #4e342e, - "darken-4": #3e2723 -); - -$blue-grey: ( - "base": #607d8b, - "lighten-5": #eceff1, - "lighten-4": #cfd8dc, - "lighten-3": #b0bec5, - "lighten-2": #90a4ae, - "lighten-1": #78909c, - "darken-1": #546e7a, - "darken-2": #455a64, - "darken-3": #37474f, - "darken-4": #263238 -); - -$grey: ( - "base": #9e9e9e, - "lighten-5": #fafafa, - "lighten-4": #f5f5f5, - "lighten-3": #eeeeee, - "lighten-2": #e0e0e0, - "lighten-1": #bdbdbd, - "darken-1": #757575, - "darken-2": #616161, - "darken-3": #424242, - "darken-4": #212121 -); - -$shades: ( - "black": #000000, - "white": #FFFFFF, - "transparent": transparent -); - -$colors: ( - "materialize-red": $materialize-red, - "red": $red, - "pink": $pink, - "purple": $purple, - "deep-purple": $deep-purple, - "indigo": $indigo, - "blue": $blue, - "light-blue": $light-blue, - "cyan": $cyan, - "teal": $teal, - "green": $green, - "light-green": $light-green, - "lime": $lime, - "yellow": $yellow, - "amber": $amber, - "orange": $orange, - "deep-orange": $deep-orange, - "brown": $brown, - "blue-grey": $blue-grey, - "grey": $grey, - "shades": $shades -); - - -// Color Classes - -@each $color_name, $color in $colors { - @each $color_type, $color_value in $color { - @if $color_type == "base" { - .#{$color_name} { - background-color: $color_value !important; - } - .#{$color_name}-text { - color: $color_value !important; - } - } - @else if $color_name != "shades" { - .#{$color_name}.#{$color_type} { - background-color: $color_value !important; - } - .#{$color_name}-text.text-#{$color_type} { - color: $color_value !important; - } - } - } -} - -// Shade classes -@each $color, $color_value in $shades { - .#{$color} { - background-color: $color_value !important; - } - .#{$color}-text { - color: $color_value !important; - } -} - - -// usage: color("name_of_color", "type_of_color") -// to avoid to repeating map-get($colors, ...) - -@function color($color, $type) { - @if map-has-key($colors, $color) { - $curr_color: map-get($colors, $color); - @if map-has-key($curr_color, $type) { - @return map-get($curr_color, $type); - } - } - @warn "Unknown `#{name}` in $colors."; - @return null; -} - diff --git a/node_modules/materialize-css/sass/components/_dropdown.scss b/node_modules/materialize-css/sass/components/_dropdown.scss deleted file mode 100644 index a958112..0000000 --- a/node_modules/materialize-css/sass/components/_dropdown.scss +++ /dev/null @@ -1,65 +0,0 @@ -.dropdown-content { - @extend .z-depth-1; - background-color: $dropdown-bg-color; - margin: 0; - display: none; - min-width: 100px; - max-height: 650px; - overflow-y: auto; - opacity: 0; - position: absolute; - z-index: 999; - will-change: width, height; - - li { - clear: both; - color: $off-black; - cursor: pointer; - min-height: $dropdown-item-height; - line-height: 1.5rem; - width: 100%; - text-align: left; - text-transform: none; - - &:hover, &.active, &.selected { - background-color: $dropdown-hover-bg-color; - } - - &.active.selected { - background-color: darken($dropdown-hover-bg-color, 5%); - } - - &.divider { - min-height: 0; - height: 1px; - } - - & > a, & > span { - font-size: 16px; - color: $dropdown-color; - display: block; - line-height: 22px; - padding: (($dropdown-item-height - 22) / 2) 16px; - } - - & > span > label { - top: 1px; - left: 0; - height: 18px; - } - - // Icon alignment override - & > a > i { - height: inherit; - line-height: inherit; - } - } -} - -// Input field specificity bugfix -.input-field.col .dropdown-content [type="checkbox"] + label { - top: 1px; - left: 0; - height: 18px; -} - diff --git a/node_modules/materialize-css/sass/components/_global.scss b/node_modules/materialize-css/sass/components/_global.scss deleted file mode 100644 index eadb8c2..0000000 --- a/node_modules/materialize-css/sass/components/_global.scss +++ /dev/null @@ -1,744 +0,0 @@ -//Default styles - -html { - box-sizing: border-box; -} -*, *:before, *:after { - box-sizing: inherit; -} - -body { - // display: flex; - // min-height: 100vh; - // flex-direction: column; -} - -main { - // flex: 1 0 auto; -} - -ul { - &:not(.browser-default) { - padding-left: 0; - list-style-type: none; - - li { - list-style-type: none; - } - } -} - -a { - color: $link-color; - text-decoration: none; - - // Gets rid of tap active state - -webkit-tap-highlight-color: transparent; -} - - -// Positioning -.valign-wrapper { - display: flex; - align-items: center; - - .valign { - display: block; - } -} - - -// classic clearfix -.clearfix { - clear: both; -} - - -// Z-levels -.z-depth-0 { - box-shadow: none !important; -} -.z-depth-1 { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); -} -.z-depth-1-half { - box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); -} -.z-depth-2 { - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); -} -.z-depth-3 { - box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3); -} -.z-depth-4 { - box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3); -} -.z-depth-5 { - box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); -} - -.hoverable { - transition: box-shadow .25s; - box-shadow: 0; -} - -.hoverable:hover { - transition: box-shadow .25s; - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); -} - -// Dividers - -.divider { - height: 1px; - overflow: hidden; - background-color: color("grey", "lighten-2"); -} - - -// Blockquote - -blockquote { - margin: 20px 0; - padding-left: 1.5rem; - border-left: 5px solid $primary-color; -} - -// Icon Styles - -i { - line-height: inherit; - - &.left { - float: left; - margin-right: 15px; - } - &.right { - float: right; - margin-left: 15px; - } - &.tiny { - font-size: 1rem; - } - &.small { - font-size: 2rem; - } - &.medium { - font-size: 4rem; - } - &.large { - font-size: 6rem; - } -} - -// Images -img.responsive-img, -video.responsive-video { - max-width: 100%; - height: auto; -} - - -// Pagination - -.pagination { - - li { - display: inline-block; - border-radius: 2px; - text-align: center; - vertical-align: top; - height: 30px; - - a { - color: #444; - display: inline-block; - font-size: 1.2rem; - padding: 0 10px; - line-height: 30px; - } - - &.active a { color: #fff; } - - &.active { background-color: $primary-color; } - - &.disabled a { - cursor: default; - color: #999; - } - - i { - font-size: 2rem; - } - } - - - li.pages ul li { - display: inline-block; - float: none; - } -} -@media #{$medium-and-down} { - .pagination { - width: 100%; - - li.prev, - li.next { - width: 10%; - } - - li.pages { - width: 80%; - overflow: hidden; - white-space: nowrap; - } - } -} - -// Breadcrumbs -.breadcrumb { - font-size: 18px; - color: rgba(255,255,255, .7); - - i, - [class^="mdi-"], [class*="mdi-"], - i.material-icons { - display: inline-block; - float: left; - font-size: 24px; - } - - &:before { - content: '\E5CC'; - color: rgba(255,255,255, .7); - vertical-align: top; - display: inline-block; - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 25px; - margin: 0 10px 0 8px; - -webkit-font-smoothing: antialiased; - } - - &:first-child:before { - display: none; - } - - &:last-child { - color: #fff; - } -} - - -// Parallax -.parallax-container { - position: relative; - overflow: hidden; - height: 500px; -} - -.parallax { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1; - - img { - display: none; - position: absolute; - left: 50%; - bottom: 0; - min-width: 100%; - min-height: 100%; - -webkit-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - transform: translateX(-50%); - } -} - -// Pushpin -.pin-top, .pin-bottom { - position: relative; -} -.pinned { - position: fixed !important; -} - -/********************* - Transition Classes -**********************/ - -ul.staggered-list li { - opacity: 0; -} - -.fade-in { - opacity: 0; - transform-origin: 0 50%; -} - - -/********************* - Media Query Classes -**********************/ -.hide-on-small-only, .hide-on-small-and-down { - @media #{$small-and-down} { - display: none !important; - } -} -.hide-on-med-and-down { - @media #{$medium-and-down} { - display: none !important; - } -} -.hide-on-med-and-up { - @media #{$medium-and-up} { - display: none !important; - } -} -.hide-on-med-only { - @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { - display: none !important; - } -} -.hide-on-large-only { - @media #{$large-and-up} { - display: none !important; - } -} -.show-on-large { - @media #{$large-and-up} { - display: block !important; - } -} -.show-on-medium { - @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { - display: block !important; - } -} -.show-on-small { - @media #{$small-and-down} { - display: block !important; - } -} -.show-on-medium-and-up { - @media #{$medium-and-up} { - display: block !important; - } -} -.show-on-medium-and-down { - @media #{$medium-and-down} { - display: block !important; - } -} - - -// Center text on mobile -.center-on-small-only { - @media #{$small-and-down} { - text-align: center; - } -} - -// Footer -footer.page-footer { - padding-top: 20px; - background-color: $footer-bg-color; - - .footer-copyright { - overflow: hidden; - min-height: 50px; - display: flex; - align-items: center; - padding: 10px 0px; - color: rgba(255,255,255,.8); - background-color: rgba(51,51,51,.08); - @extend .light; - } -} - -// Tables -table, th, td { - border: none; -} - -table { - width:100%; - display: table; - - &.bordered > thead > tr, - &.bordered > tbody > tr { - border-bottom: 1px solid $table-border-color; - } - - &.striped > tbody { - > tr:nth-child(odd) { - background-color: $table-striped-color; - } - - > tr > td { - border-radius: 0; - } - } - - &.highlight > tbody > tr { - transition: background-color .25s ease; - &:hover { - background-color: $table-striped-color; - } - } - - &.centered { - thead tr th, tbody tr td { - text-align: center; - } - } - -} - -thead { - border-bottom: 1px solid $table-border-color; -} - -td, th{ - padding: 15px 5px; - display: table-cell; - text-align: left; - vertical-align: middle; - border-radius: 2px; -} - -// Responsive Table -@media #{$medium-and-down} { - - table.responsive-table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; - display: block; - position: relative; - - td:empty:before { - content: '\00a0'; - } - - th, - td { - margin: 0; - vertical-align: top; - } - - th { text-align: left; } - thead { - display: block; - float: left; - - tr { - display: block; - padding: 0 10px 0 0; - - th::before { - content: "\00a0"; - } - } - } - tbody { - display: block; - width: auto; - position: relative; - overflow-x: auto; - white-space: nowrap; - - tr { - display: inline-block; - vertical-align: top; - } - } - th { - display: block; - text-align: right; - } - td { - display: block; - min-height: 1.25em; - text-align: left; - } - tr { padding: 0 10px; } - - /* sort out borders */ - thead { - border: 0; - border-right: 1px solid $table-border-color; - } - - &.bordered { - th { border-bottom: 0; border-left: 0; } - td { border-left: 0; border-right: 0; border-bottom: 0; } - tr { border: 0; } - tbody tr { border-right: 1px solid $table-border-color; } - } - - } - -} - - -// Collections -.collection { - margin: $element-top-margin 0 $element-bottom-margin 0; - border: 1px solid $collection-border-color; - border-radius: 2px; - overflow: hidden; - position: relative; - - .collection-item { - background-color: $collection-bg-color; - line-height: $collection-line-height; - padding: 10px 20px; - margin: 0; - border-bottom: 1px solid $collection-border-color; - - // Avatar Collection - &.avatar { - min-height: 84px; - padding-left: 72px; - position: relative; - - .circle { - position: absolute; - width: 42px; - height: 42px; - overflow: hidden; - left: 15px; - display: inline-block; - vertical-align: middle; - } - i.circle { - font-size: 18px; - line-height: 42px; - color: #fff; - background-color: #999; - text-align: center; - } - - - .title { - font-size: 16px; - } - - p { - margin: 0; - } - - .secondary-content { - position: absolute; - top: 16px; - right: 16px; - } - - } - - - &:last-child { - border-bottom: none; - } - - &.active { - background-color: $collection-active-bg-color; - color: $collection-active-color; - - .secondary-content { - color: #fff; - } - } - } - a.collection-item{ - display: block; - transition: .25s; - color: $collection-link-color; - &:not(.active) { - &:hover { - background-color: $collection-hover-bg-color; - } - } - } - - &.with-header { - .collection-header { - background-color: $collection-bg-color; - border-bottom: 1px solid $collection-border-color; - padding: 10px 20px; - } - .collection-item { - padding-left: 30px; - } - .collection-item.avatar { - padding-left: 72px; - } - } - -} -// Made less specific to allow easier overriding -.secondary-content { - float: right; - color: $secondary-color; -} -.collapsible .collection { - margin: 0; - border: none; -} - - - -// Responsive Videos -.video-container { - position: relative; - padding-bottom: 56.25%; - height: 0; - overflow: hidden; - - iframe, object, embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } -} - -// Progress Bar -.progress { - position: relative; - height: 4px; - display: block; - width: 100%; - background-color: lighten($progress-bar-color, 40%); - border-radius: 2px; - margin: $element-top-margin 0 $element-bottom-margin 0; - overflow: hidden; - .determinate { - position: absolute; - top: 0; - left: 0; - bottom: 0; - background-color: $progress-bar-color; - transition: width .3s linear; - } - .indeterminate { - background-color: $progress-bar-color; - &:before { - content: ''; - position: absolute; - background-color: inherit; - top: 0; - left:0; - bottom: 0; - will-change: left, right; - // Custom bezier - animation: indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite; - - } - &:after { - content: ''; - position: absolute; - background-color: inherit; - top: 0; - left:0; - bottom: 0; - will-change: left, right; - // Custom bezier - animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite; - animation-delay: 1.15s; - } - } -} -@keyframes indeterminate { - 0% { - left: -35%; - right:100%; - } - 60% { - left: 100%; - right: -90%; - } - 100% { - left: 100%; - right: -90%; - } -} - -@keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; - } - 60% { - left: 107%; - right: -8%; - } - 100% { - left: 107%; - right: -8%; - } -} - - -/******************* - Utility Classes -*******************/ - -.hide { - display: none !important; -} - -// Text Align -.left-align { - text-align: left; -} -.right-align { - text-align: right -} -.center, .center-align { - text-align: center; -} - -.left { - float: left !important; -} -.right { - float: right !important; -} - -// No Text Select -.no-select { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.circle { - border-radius: 50%; -} - -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} - -.truncate { - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.no-padding { - padding: 0 !important; -} diff --git a/node_modules/materialize-css/sass/components/_grid.scss b/node_modules/materialize-css/sass/components/_grid.scss deleted file mode 100644 index 4ffc3ed..0000000 --- a/node_modules/materialize-css/sass/components/_grid.scss +++ /dev/null @@ -1,147 +0,0 @@ -.container { - margin: 0 auto; - max-width: 1280px; - width: 90%; -} -@media #{$medium-and-up} { - .container { - width: 85%; - } -} -@media #{$large-and-up} { - .container { - width: 70%; - } -} -.container .row { - margin-left: (-1 * $gutter-width / 2); - margin-right: (-1 * $gutter-width / 2); -} - -.section { - padding-top: 1rem; - padding-bottom: 1rem; - - &.no-pad { - padding: 0; - } - &.no-pad-bot { - padding-bottom: 0; - } - &.no-pad-top { - padding-top: 0; - } -} - - -.row { - margin-left: auto; - margin-right: auto; - margin-bottom: 20px; - - // Clear floating children - &:after { - content: ""; - display: table; - clear: both; - } - - .col { - float: left; - box-sizing: border-box; - padding: 0 $gutter-width / 2; - min-height: 1px; - - &[class*="push-"], - &[class*="pull-"] { - position: relative; - } - - $i: 1; - @while $i <= $num-cols { - $perc: unquote((100 / ($num-cols / $i)) + "%"); - &.s#{$i} { - width: $perc; - margin-left: auto; - left: auto; - right: auto; - } - $i: $i + 1; - } - - $i: 1; - @while $i <= $num-cols { - $perc: unquote((100 / ($num-cols / $i)) + "%"); - &.offset-s#{$i} { - margin-left: $perc; - } - &.pull-s#{$i} { - right: $perc; - } - &.push-s#{$i} { - left: $perc; - } - $i: $i + 1; - } - - @media #{$medium-and-up} { - - $i: 1; - @while $i <= $num-cols { - $perc: unquote((100 / ($num-cols / $i)) + "%"); - &.m#{$i} { - width: $perc; - margin-left: auto; - left: auto; - right: auto; - } - $i: $i + 1 - } - - $i: 1; - @while $i <= $num-cols { - $perc: unquote((100 / ($num-cols / $i)) + "%"); - &.offset-m#{$i} { - margin-left: $perc; - } - &.pull-m#{$i} { - right: $perc; - } - &.push-m#{$i} { - left: $perc; - } - $i: $i + 1; - } - } - - @media #{$large-and-up} { - - $i: 1; - @while $i <= $num-cols { - $perc: unquote((100 / ($num-cols / $i)) + "%"); - &.l#{$i} { - width: $perc; - margin-left: auto; - left: auto; - right: auto; - } - $i: $i + 1; - } - - $i: 1; - @while $i <= $num-cols { - $perc: unquote((100 / ($num-cols / $i)) + "%"); - &.offset-l#{$i} { - margin-left: $perc; - } - &.pull-l#{$i} { - right: $perc; - } - &.push-l#{$i} { - left: $perc; - } - $i: $i + 1; - } - } - } -} diff --git a/node_modules/materialize-css/sass/components/_icons-material-design.scss b/node_modules/materialize-css/sass/components/_icons-material-design.scss deleted file mode 100644 index d8d91c1..0000000 --- a/node_modules/materialize-css/sass/components/_icons-material-design.scss +++ /dev/null @@ -1,5 +0,0 @@ -/* This is needed for some mobile phones to display the Google Icon font properly */ -.material-icons { - text-rendering: optimizeLegibility; - font-feature-settings: 'liga'; -} diff --git a/node_modules/materialize-css/sass/components/_materialbox.scss b/node_modules/materialize-css/sass/components/_materialbox.scss deleted file mode 100644 index 0ebd63f..0000000 --- a/node_modules/materialize-css/sass/components/_materialbox.scss +++ /dev/null @@ -1,43 +0,0 @@ -.materialboxed { - &:hover { - &:not(.active) { - opacity: .8; - } - } - - display: block; - cursor: zoom-in; - position: relative; - transition: opacity .4s; - -webkit-backface-visibility: hidden; - - &.active { - cursor: zoom-out; - } -} - -#materialbox-overlay { - position:fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #292929; - z-index: 1000; - will-change: opacity; -} - -.materialbox-caption { - position: fixed; - display: none; - color: #fff; - line-height: 50px; - bottom: 0; - left: 0; - width: 100%; - text-align: center; - padding: 0% 15%; - height: 50px; - z-index: 1000; - -webkit-font-smoothing: antialiased; -} \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/_mixins.scss b/node_modules/materialize-css/sass/components/_mixins.scss deleted file mode 100644 index 054f8f6..0000000 --- a/node_modules/materialize-css/sass/components/_mixins.scss +++ /dev/null @@ -1,5 +0,0 @@ -// @mixin box-shadow-2($args1, $args2) { -// -webkit-box-shadow: $args1, $args2; -// -moz-box-shadow: $args1, $args2; -// box-shadow: $args1, $args2; -// } \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/_modal.scss b/node_modules/materialize-css/sass/components/_modal.scss deleted file mode 100644 index 0c540fe..0000000 --- a/node_modules/materialize-css/sass/components/_modal.scss +++ /dev/null @@ -1,90 +0,0 @@ -.modal { - @extend .z-depth-4; - - display: none; - position: fixed; - left: 0; - right: 0; - background-color: #fafafa; - padding: 0; - max-height: 70%; - width: 55%; - margin: auto; - overflow-y: auto; - - border-radius: 2px; - will-change: top, opacity; - - @media #{$medium-and-down} { - width: 80%; - } - - h1,h2,h3,h4 { - margin-top: 0; - } - - .modal-content { - padding: 24px; - } - .modal-close { - cursor: pointer; - } - - .modal-footer { - border-radius: 0 0 2px 2px; - background-color: #fafafa; - padding: 4px 6px; - height: 56px; - width: 100%; - - .btn, .btn-flat { - float: right; - margin: 6px 0; - } - } -} -.modal-overlay { - position: fixed; - z-index: 999; - top: -100px; - left: 0; - bottom: 0; - right: 0; - height: 125%; - width: 100%; - background: #000; - display: none; - - will-change: opacity; -} - -// Modal with fixed action footer -.modal.modal-fixed-footer { - padding: 0; - height: 70%; - - .modal-content { - position: absolute; - height: calc(100% - 56px); - max-height: 100%; - width: 100%; - overflow-y: auto; - } - - .modal-footer { - border-top: 1px solid rgba(0,0,0,.1); - position: absolute; - bottom: 0; - } -} - -// Modal Bottom Sheet Style -.modal.bottom-sheet { - top: auto; - bottom: -100%; - margin: 0; - width: 100%; - max-height: 45%; - border-radius: 0; - will-change: bottom, opacity; -} diff --git a/node_modules/materialize-css/sass/components/_navbar.scss b/node_modules/materialize-css/sass/components/_navbar.scss deleted file mode 100644 index ba6a256..0000000 --- a/node_modules/materialize-css/sass/components/_navbar.scss +++ /dev/null @@ -1,209 +0,0 @@ -nav { - &.nav-extended { - height: auto; - - .nav-wrapper { - min-height: $navbar-height-mobile; - height: auto; - } - - .nav-content { - position: relative; - line-height: normal; - } - } - - color: $navbar-font-color; - @extend .z-depth-1; - background-color: $primary-color; - width: 100%; - height: $navbar-height-mobile; - line-height: $navbar-line-height-mobile; - - a { color: $navbar-font-color; } - - i, - [class^="mdi-"], [class*="mdi-"], - i.material-icons { - display: block; - font-size: 24px; - height: $navbar-height-mobile; - line-height: $navbar-line-height-mobile; - } - - .nav-wrapper { - position: relative; - height: 100%; - } - - @media #{$large-and-up} { - a.button-collapse { display: none; } - } - - - // Collapse button - .button-collapse { - float: left; - position: relative; - z-index: 1; - height: $navbar-height-mobile; - margin: 0 18px; - - i { - height: $navbar-height-mobile; - line-height: $navbar-line-height-mobile; - } - } - - - // Logo - .brand-logo { - position: absolute; - color: $navbar-font-color; - display: inline-block; - font-size: $navbar-brand-font-size; - padding: 0; - white-space: nowrap; - - &.center { - left: 50%; - transform: translateX(-50%); - } - - @media #{$medium-and-down} { - left: 50%; - transform: translateX(-50%); - - &.left, &.right { - padding: 0; - transform: none; - } - - &.left { left: 0.5rem; } - &.right { - right: 0.5rem; - left: auto; - } - } - - &.right { - right: 0.5rem; - padding: 0; - } - - i, - [class^="mdi-"], [class*="mdi-"], - i.material-icons { - float: left; - margin-right: 15px; - } - } - - - // Title - .nav-title { - display: inline-block; - font-size: 32px; - padding: 28px 0; - } - - - // Navbar Links - ul { - margin: 0; - - li { - transition: background-color .3s; - float: left; - padding: 0; - - &.active { - background-color: rgba(0,0,0,.1); - } - } - a { - transition: background-color .3s; - font-size: $navbar-font-size; - color: $navbar-font-color; - display: block; - padding: 0 15px; - cursor: pointer; - - &.btn, &.btn-large, &.btn-flat, &.btn-floating { - margin-top: -2px; - margin-left: 15px; - margin-right: 15px; - - & > .material-icons { - height: inherit; - line-height: inherit; - } - } - - &:hover { - background-color: rgba(0,0,0,.1); - } - } - - &.left { - float: left; - } - } - - // Navbar Search Form - form { - height: 100%; - } - - .input-field { - margin: 0; - height: 100%; - - input { - height: 100%; - font-size: 1.2rem; - border: none; - padding-left: 2rem; - - &:focus, &[type=text]:valid, &[type=password]:valid, - &[type=email]:valid, &[type=url]:valid, &[type=date]:valid { - border: none; - box-shadow: none; - } - } - - label { - top: 0; - left: 0; - - i { - color: rgba(255,255,255,.7); - transition: color .3s; - } - &.active i { color: $navbar-font-color; } - } - } -} - -// Fixed Navbar -.navbar-fixed { - position: relative; - height: $navbar-height-mobile; - z-index: 997; - - nav { - position: fixed; - } -} -@media #{$medium-and-up} { - nav.nav-extended .nav-wrapper { - min-height: $navbar-height; - } - nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { - height: $navbar-height; - line-height: $navbar-line-height; - } - .navbar-fixed { - height: $navbar-height; - } -} diff --git a/node_modules/materialize-css/sass/components/_normalize.scss b/node_modules/materialize-css/sass/components/_normalize.scss deleted file mode 100644 index 5e5e3c8..0000000 --- a/node_modules/materialize-css/sass/components/_normalize.scss +++ /dev/null @@ -1,424 +0,0 @@ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS and IE text size adjust after device orientation change, - * without disabling user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * Improve readability of focused elements when they are also in an - * active/hover state. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - box-sizing: content-box; /* 2 */ -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/node_modules/materialize-css/sass/components/_prefixer.scss b/node_modules/materialize-css/sass/components/_prefixer.scss deleted file mode 100644 index 13376de..0000000 --- a/node_modules/materialize-css/sass/components/_prefixer.scss +++ /dev/null @@ -1,384 +0,0 @@ -//--------------------------------------------------- -// Sass Prefixer -// ------------------------------------------------- -// TABLE OF CONTENTS -// (*) denotes a syntax-sugar helper -// ------------------------------------------------- -// -// animation($args) -// animation-delay($delay) -// animation-direction($direction) -// animation-duration($duration) -// animation-fill-mode($mode) -// animation-iteration-count($count) -// animation-name($name) -// animation-play-state($state) -// animation-timing-function($function) -// background-size($args) -// inner-shadow($args) * -// box-sizing($args) -// border-box() * -// content-box() * -// columns($args) -// column-count($count) -// column-gap($gap) -// column-rule($args) -// column-width($width) -// flexbox() -// flex($args) -// order($args) -// align($args) -// justify-content($args) -// gradient($default,$start,$stop) * -// linear-gradient-top($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])* -// linear-gradient-left($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])* -// perspective($pixels) -// transform($args) -// transform-origin($args) -// transform-style($style) -// rotate($deg) -// scale($factor) -// translate($x,$y) -// translate3d($x,$y,$z) -// translateHardware($x,$y) * -// text-shadow($args) -// transition($args) -// transition-delay($delay) -// transition-duration($duration) -// transition-property($property) -// transition-timing-function($function) - - -// Animation - -// @mixin animation($args) { -// -webkit-animation: $args; -// -moz-animation: $args; -// -ms-animation: $args; -// -o-animation: $args; -// animation: $args; -// } -// @mixin animation-delay($delay) { -// -webkit-animation-delay: $delay; -// -moz-animation-delay: $delay; -// -ms-animation-delay: $delay; -// -o-animation-delay: $delay; -// animation-delay: $delay; -// } -// @mixin animation-direction($direction) { -// -webkit-animation-direction: $direction; -// -moz-animation-direction: $direction; -// -ms-animation-direction: $direction; -// -o-animation-direction: $direction; -// } -// @mixin animation-duration($duration) { -// -webkit-animation-duration: $duration; -// -moz-animation-duration: $duration; -// -ms-animation-duration: $duration; -// -o-animation-duration: $duration; -// } -// @mixin animation-fill-mode($mode) { -// -webkit-animation-fill-mode: $mode; -// -moz-animation-fill-mode: $mode; -// -ms-animation-fill-mode: $mode; -// -o-animation-fill-mode: $mode; -// animation-fill-mode: $mode; -// } -// @mixin animation-iteration-count($count) { -// -webkit-animation-iteration-count: $count; -// -moz-animation-iteration-count: $count; -// -ms-animation-iteration-count: $count; -// -o-animation-iteration-count: $count; -// animation-iteration-count: $count; -// } -// @mixin animation-name($name) { -// -webkit-animation-name: $name; -// -moz-animation-name: $name; -// -ms-animation-name: $name; -// -o-animation-name: $name; -// animation-name: $name; -// } -// @mixin animation-play-state($state) { -// -webkit-animation-play-state: $state; -// -moz-animation-play-state: $state; -// -ms-animation-play-state: $state; -// -o-animation-play-state: $state; -// animation-play-state: $state; -// } -// @mixin animation-timing-function($function) { -// -webkit-animation-timing-function: $function; -// -moz-animation-timing-function: $function; -// -ms-animation-timing-function: $function; -// -o-animation-timing-function: $function; -// animation-timing-function: $function; -// } - -// Keyframes -// @mixin keyframes($animation-name) { -// @-webkit-keyframes #{$animation-name} { -// @content; -// } -// @-moz-keyframes #{$animation-name} { -// @content; -// } -// @keyframes #{$animation-name} { -// @content; -// } -// } - -// Backface-visibility - -// @mixin backface-visibility($args) { -// -webkit-backface-visibility: $args; -// -moz-backface-visibility: $args; -// -ms-backface-visibility: $args; -// backface-visibility: $args; -// } - - -// Background Size - -// @mixin background-size($args) { -// -webkit-background-size: $args; -// background-size: $args; -// } - -// Box Sizing - -// @mixin box-sizing($args) { -// -webkit-box-sizing: $args; -// -moz-box-sizing: $args; -// box-sizing: $args; -// } -// @mixin border-box(){ -// @include box-sizing(border-box); -// } -// @mixin content-box(){ -// @include box-sizing(content-box); -// } - - -// Columns - -// @mixin columns($args) { -// -webkit-columns: $args; -// -moz-columns: $args; -// columns: $args; -// } -// @mixin column-count($count) { -// -webkit-column-count: $count; -// -moz-column-count: $count; -// column-count: $count; -// } -// @mixin column-gap($gap) { -// -webkit-column-gap: $gap; -// -moz-column-gap: $gap; -// column-gap: $gap; -// } -// @mixin column-width($width) { -// -webkit-column-width: $width; -// -moz-column-width: $width; -// column-width: $width; -// } -// @mixin column-rule($args) { -// -webkit-column-rule: $args; -// -moz-column-rule: $args; -// column-rule: $args; -// } - -// Filter -// @mixin filter($args) { -// -webkit-filter: $args; -// -moz-filter: $args; -// -o-filter: $args; -// -ms-filter: $args; -// } - -// Flexbox -// @mixin flexbox() { -// display: -webkit-box; -// display: -moz-box; -// display: -ms-flexbox; -// display: -webkit-flex; -// display: flex; -// } - // @mixin flex($values) { - // -webkit-box-flex: $values; - // -moz-box-flex: $values; - // -webkit-flex: $values; - // -ms-flex: $values; - // flex: $values; - // } - // @mixin order($val) { - // -webkit-box-ordinal-group: $val; - // -moz-box-ordinal-group: $val; - // -ms-flex-order: $val; - // -webkit-order: $val; - // order: $val; - // } - // @mixin align($align) { - // -webkit-flex-align: $align; - // -ms-flex-align: $align; - // -webkit-align-items: $align; - // align-items: $align; - // } - // @mixin justify-content($val) { - // -webkit-justify-content: $val; - // justify-content: $val; - // } -// Gradients - -// @mixin gradient($default: #F5F5F5, $start: #EEE, $stop: #FFF) { -// @include linear-gradient-top($default,$start,0%,$stop,100%); -// } -// @mixin linear-gradient-top($default,$color1,$stop1,$color2,$stop2) { -// background-color: $default; -// background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2)); -// background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2); -// background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2); -// background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2); -// background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2); -// background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2); -// } -// @mixin linear-gradient-top2($default,$color1,$stop1,$color2,$stop2,$color3,$stop3) { -// background-color: $default; -// background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3)); -// background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// } -// @mixin linear-gradient-top3($default,$color1,$stop1,$color2,$stop2,$color3,$stop3,$color4,$stop4) { -// background-color: $default; -// background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3), color-stop($stop4 $color4)); -// background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// } -// @mixin linear-gradient-left($default,$color1,$stop1,$color2,$stop2) { -// background-color: $default; -// background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2)); -// background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2); -// background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2); -// background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2); -// background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2); -// background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2); -// } -// @mixin linear-gradient-left2($default,$color1,$stop1,$color2,$stop2,$color3,$stop3) { -// background-color: $default; -// background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3)); -// background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); -// } -// @mixin linear-gradient-left3($default,$color1,$stop1,$color2,$stop2,$color3,$stop3,$color4,$stop4) { -// background-color: $default; -// background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3), color-stop($stop4 $color4)); -// background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); -// } - -// Perspective -@mixin perspective($pixels) { - perspective: $pixels; - -webkit-perspective: $pixels; -} - - -// Text Shadow - -// @mixin text-shadow($args) { -// text-shadow: $args; -// } - - -// Transforms - -// @mixin transform($args) { -// -webkit-transform: $args; -// -moz-transform: $args; -// -ms-transform: $args; -// -o-transform: $args; -// transform: $args; -// } -// @mixin transform-origin($args) { -// -webkit-transform-origin: $args; -// -moz-transform-origin: $args; -// -ms-transform-origin: $args; -// -o-transform-origin: $args; -// transform-origin: $args; -// } -// @mixin transform-style($style) { -// -webkit-transform-style: $style; -// -moz-transform-style: $style; -// -ms-transform-style: $style; -// -o-transform-style: $style; -// transform-style: $style; -// } -// @mixin rotate($deg:45deg){ -// @include transform(rotate($deg)); -// } -// @mixin scale($factor:.5){ -// @include transform(scale($factor)); -// } -// @mixin translate($x,$y){ -// @include transform(translate($x,$y)); -// } -// @mixin translate3d($x,$y,$z) { -// @include transform(translate3d($x,$y,$z)); -// } -// @mixin translateHardware($x,$y) { -// @include translate($x,$y); -// -webkit-transform: translate3d($x,$y,0); -// -moz-transform: translate3d($x,$y,0); -// -o-transform: translate3d($x,$y,0); -// -ms-transform: translate3d($x,$y,0); -// transform: translate3d($x,$y,0); -// } - - -// Transitions - -// @mixin transition($args:200ms) { -// -webkit-transition: $args; -// -moz-transition: $args; -// -o-transition: $args; -// -ms-transition: $args; -// transition: $args; -// } -// @mixin transition-delay($delay:0) { -// -webkit-transition-delay: $delay; -// -moz-transition-delay: $delay; -// -o-transition-delay: $delay; -// -ms-transition-delay: $delay; -// transition-delay: $delay; -// } -// @mixin transition-duration($duration:200ms) { -// -webkit-transition-duration: $duration; -// -moz-transition-duration: $duration; -// -o-transition-duration: $duration; -// -ms-transition-duration: $duration; -// transition-duration: $duration; -// } -// @mixin transition-property($property:all) { -// -webkit-transition-property: $property; -// -moz-transition-property: $property; -// -o-transition-property: $property; -// -ms-transition-property: $property; -// transition-property: $property; -// } -// @mixin transition-timing-function($function:ease) { -// -webkit-transition-timing-function: $function; -// -moz-transition-timing-function: $function; -// -o-transition-timing-function: $function; -// -ms-transition-timing-function: $function; -// transition-timing-function: $function; -// } diff --git a/node_modules/materialize-css/sass/components/_preloader.scss b/node_modules/materialize-css/sass/components/_preloader.scss deleted file mode 100644 index 31e1600..0000000 --- a/node_modules/materialize-css/sass/components/_preloader.scss +++ /dev/null @@ -1,334 +0,0 @@ -/* - @license - Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - Code distributed by Google as part of the polymer project is also - subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ - -/**************************/ -/* STYLES FOR THE SPINNER */ -/**************************/ - -/* - * Constants: - * STROKEWIDTH = 3px - * ARCSIZE = 270 degrees (amount of circle the arc takes up) - * ARCTIME = 1333ms (time it takes to expand and contract arc) - * ARCSTARTROT = 216 degrees (how much the start location of the arc - * should rotate each time, 216 gives us a - * 5 pointed star shape (it's 360/5 * 3). - * For a 7 pointed star, we might do - * 360/7 * 3 = 154.286) - * CONTAINERWIDTH = 28px - * SHRINK_TIME = 400ms - */ - - -.preloader-wrapper { - display: inline-block; - position: relative; - width: 48px; - height: 48px; - - &.small { - width: 36px; - height: 36px; - } - - &.big { - width: 64px; - height: 64px; - } - - &.active { - /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ - -webkit-animation: container-rotate 1568ms linear infinite; - animation: container-rotate 1568ms linear infinite; - } -} - -@-webkit-keyframes container-rotate { - to { -webkit-transform: rotate(360deg) } -} - -@keyframes container-rotate { - to { transform: rotate(360deg) } -} - -.spinner-layer { - position: absolute; - width: 100%; - height: 100%; - opacity: 0; - border-color: $spinner-default-color; -} - -.spinner-blue, -.spinner-blue-only { - border-color: #4285f4; -} - -.spinner-red, -.spinner-red-only { - border-color: #db4437; -} - -.spinner-yellow, -.spinner-yellow-only { - border-color: #f4b400; -} - -.spinner-green, -.spinner-green-only { - border-color: #0f9d58; -} - -/** - * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): - * - * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't - * guarantee that the animation will start _exactly_ after that value. So we avoid using - * animation-delay and instead set custom keyframes for each color (as redundant as it - * seems). - * - * We write out each animation in full (instead of separating animation-name, - * animation-duration, etc.) because under the polyfill, Safari does not recognize those - * specific properties properly, treats them as -webkit-animation, and overrides the - * other animation rules. See https://github.com/Polymer/platform/issues/53. - */ -.active .spinner-layer.spinner-blue { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -.active .spinner-layer.spinner-red { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -.active .spinner-layer.spinner-yellow { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -.active .spinner-layer.spinner-green { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -.active .spinner-layer, -.active .spinner-layer.spinner-blue-only, -.active .spinner-layer.spinner-red-only, -.active .spinner-layer.spinner-yellow-only, -.active .spinner-layer.spinner-green-only { - /* durations: 4 * ARCTIME */ - opacity: 1; - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -@-webkit-keyframes fill-unfill-rotate { - 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */ - 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */ - 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */ - 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */ - 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */ - 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */ - 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */ - to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */ -} - -@keyframes fill-unfill-rotate { - 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */ - 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */ - 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */ - 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */ - 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */ - 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */ - 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */ - to { transform: rotate(1080deg); } /* 4 * ARCSIZE */ -} - -@-webkit-keyframes blue-fade-in-out { - from { opacity: 1; } - 25% { opacity: 1; } - 26% { opacity: 0; } - 89% { opacity: 0; } - 90% { opacity: 1; } - 100% { opacity: 1; } -} - -@keyframes blue-fade-in-out { - from { opacity: 1; } - 25% { opacity: 1; } - 26% { opacity: 0; } - 89% { opacity: 0; } - 90% { opacity: 1; } - 100% { opacity: 1; } -} - -@-webkit-keyframes red-fade-in-out { - from { opacity: 0; } - 15% { opacity: 0; } - 25% { opacity: 1; } - 50% { opacity: 1; } - 51% { opacity: 0; } -} - -@keyframes red-fade-in-out { - from { opacity: 0; } - 15% { opacity: 0; } - 25% { opacity: 1; } - 50% { opacity: 1; } - 51% { opacity: 0; } -} - -@-webkit-keyframes yellow-fade-in-out { - from { opacity: 0; } - 40% { opacity: 0; } - 50% { opacity: 1; } - 75% { opacity: 1; } - 76% { opacity: 0; } -} - -@keyframes yellow-fade-in-out { - from { opacity: 0; } - 40% { opacity: 0; } - 50% { opacity: 1; } - 75% { opacity: 1; } - 76% { opacity: 0; } -} - -@-webkit-keyframes green-fade-in-out { - from { opacity: 0; } - 65% { opacity: 0; } - 75% { opacity: 1; } - 90% { opacity: 1; } - 100% { opacity: 0; } -} - -@keyframes green-fade-in-out { - from { opacity: 0; } - 65% { opacity: 0; } - 75% { opacity: 1; } - 90% { opacity: 1; } - 100% { opacity: 0; } -} - -/** - * Patch the gap that appear between the two adjacent div.circle-clipper while the - * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). - */ -.gap-patch { - position: absolute; - top: 0; - left: 45%; - width: 10%; - height: 100%; - overflow: hidden; - border-color: inherit; -} - -.gap-patch .circle { - width: 1000%; - left: -450%; -} - -.circle-clipper { - display: inline-block; - position: relative; - width: 50%; - height: 100%; - overflow: hidden; - border-color: inherit; - - .circle { - width: 200%; - height: 100%; - border-width: 3px; /* STROKEWIDTH */ - border-style: solid; - border-color: inherit; - border-bottom-color: transparent !important; - border-radius: 50%; - -webkit-animation: none; - animation: none; - position: absolute; - top: 0; - right: 0; - bottom: 0; - } - - &.left .circle { - left: 0; - border-right-color: transparent !important; - -webkit-transform: rotate(129deg); - transform: rotate(129deg); - } - &.right .circle { - left: -100%; - border-left-color: transparent !important; - -webkit-transform: rotate(-129deg); - transform: rotate(-129deg); - } -} - - - -.active .circle-clipper.left .circle { - /* duration: ARCTIME */ - -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -.active .circle-clipper.right .circle { - /* duration: ARCTIME */ - -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; - animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; -} - -@-webkit-keyframes left-spin { - from { -webkit-transform: rotate(130deg); } - 50% { -webkit-transform: rotate(-5deg); } - to { -webkit-transform: rotate(130deg); } -} - -@keyframes left-spin { - from { transform: rotate(130deg); } - 50% { transform: rotate(-5deg); } - to { transform: rotate(130deg); } -} - -@-webkit-keyframes right-spin { - from { -webkit-transform: rotate(-130deg); } - 50% { -webkit-transform: rotate(5deg); } - to { -webkit-transform: rotate(-130deg); } -} - -@keyframes right-spin { - from { transform: rotate(-130deg); } - 50% { transform: rotate(5deg); } - to { transform: rotate(-130deg); } -} - -#spinnerContainer.cooldown { - /* duration: SHRINK_TIME */ - -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); - animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); -} - -@-webkit-keyframes fade-out { - from { opacity: 1; } - to { opacity: 0; } -} - -@keyframes fade-out { - from { opacity: 1; } - to { opacity: 0; } -} \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/_roboto.scss b/node_modules/materialize-css/sass/components/_roboto.scss deleted file mode 100644 index 741ab5b..0000000 --- a/node_modules/materialize-css/sass/components/_roboto.scss +++ /dev/null @@ -1,49 +0,0 @@ -@font-face { - font-family: "Roboto"; - src: local(Roboto Thin), url('#{$roboto-font-path}Roboto-Thin.eot'); - src: url("#{$roboto-font-path}Roboto-Thin.eot?#iefix") format('embedded-opentype'), - url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"), - url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"), - url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype"); - - font-weight: 200; -} -@font-face { - font-family: "Roboto"; - src: local(Roboto Light), url('#{$roboto-font-path}Roboto-Light.eot'); - src: url("#{$roboto-font-path}Roboto-Light.eot?#iefix") format('embedded-opentype'), - url("#{$roboto-font-path}Roboto-Light.woff2") format("woff2"), - url("#{$roboto-font-path}Roboto-Light.woff") format("woff"), - url("#{$roboto-font-path}Roboto-Light.ttf") format("truetype"); - font-weight: 300; -} - -@font-face { - font-family: "Roboto"; - src: local(Roboto Regular), url('#{$roboto-font-path}Roboto-Regular.eot'); - src: url("#{$roboto-font-path}Roboto-Regular.eot?#iefix") format('embedded-opentype'), - url("#{$roboto-font-path}Roboto-Regular.woff2") format("woff2"), - url("#{$roboto-font-path}Roboto-Regular.woff") format("woff"), - url("#{$roboto-font-path}Roboto-Regular.ttf") format("truetype"); - font-weight: 400; -} - -@font-face { - font-family: "Roboto"; - src: url('#{$roboto-font-path}Roboto-Medium.eot'); - src: url("#{$roboto-font-path}Roboto-Medium.eot?#iefix") format('embedded-opentype'), - url("#{$roboto-font-path}Roboto-Medium.woff2") format("woff2"), - url("#{$roboto-font-path}Roboto-Medium.woff") format("woff"), - url("#{$roboto-font-path}Roboto-Medium.ttf") format("truetype"); - font-weight: 500; -} - -@font-face { - font-family: "Roboto"; - src: url('#{$roboto-font-path}Roboto-Bold.eot'); - src: url("#{$roboto-font-path}Roboto-Bold.eot?#iefix") format('embedded-opentype'), - url("#{$roboto-font-path}Roboto-Bold.woff2") format("woff2"), - url("#{$roboto-font-path}Roboto-Bold.woff") format("woff"), - url("#{$roboto-font-path}Roboto-Bold.ttf") format("truetype"); - font-weight: 700; -} diff --git a/node_modules/materialize-css/sass/components/_sideNav.scss b/node_modules/materialize-css/sass/components/_sideNav.scss deleted file mode 100644 index 9a38ed4..0000000 --- a/node_modules/materialize-css/sass/components/_sideNav.scss +++ /dev/null @@ -1,208 +0,0 @@ -.side-nav { - position: fixed; - width: 300px; - left: 0; - top: 0; - margin: 0; - transform: translateX(-100%); - height: 100%; - height: calc(100% + 60px); - height: -moz-calc(100%); //Temporary Firefox Fix - padding-bottom: 60px; - background-color: $sidenav-bg-color; - z-index: 999; - overflow-y: auto; - will-change: transform; - backface-visibility: hidden; - transform: translateX(-105%); - - @extend .z-depth-1; - - // Right Align - &.right-aligned { - right: 0; - transform: translateX(105%); - left: auto; - transform: translateX(100%); - } - - .collapsible { - margin: 0; - } - - - li { - float: none; - line-height: $sidenav-line-height; - - &.active { background-color: rgba(0,0,0,.05); } - } - - a { - color: $sidenav-font-color; - display: block; - font-size: $sidenav-font-size; - font-weight: 500; - height: $sidenav-item-height; - line-height: $sidenav-line-height; - padding: 0 ($sidenav-padding * 2); - - &:hover { background-color: rgba(0,0,0,.05);} - - &.btn, &.btn-large, &.btn-flat, &.btn-floating { - margin: 10px 15px; - } - - &.btn, - &.btn-large, - &.btn-floating { color: $button-raised-color; } - &.btn-flat { color: $button-flat-color; } - - &.btn:hover, - &.btn-large:hover { background-color: lighten($button-raised-background, 5%); } - &.btn-floating:hover { background-color: $button-raised-background; } - } - - li > a > i, - li > a > [class^="mdi-"], li > a > [class*="mdi-"], - li > a > i.material-icons { - float: left; - height: $sidenav-item-height; - line-height: $sidenav-line-height; - margin: 0 ($sidenav-padding * 2) 0 0; - width: $sidenav-item-height / 2; - color: rgba(0,0,0,.54); - } - - .divider { - margin: ($sidenav-padding / 2) 0 0 0; - } - - .subheader { - &:hover { - background-color: transparent; - } - - cursor: initial; - pointer-events: none; - color: rgba(0,0,0,.54); - font-size: $sidenav-font-size; - font-weight: 500; - line-height: $sidenav-line-height; - } - - .userView { - position: relative; - padding: ($sidenav-padding * 2) ($sidenav-padding * 2) 0; - margin-bottom: $sidenav-padding / 2; - - & > a { - &:hover { background-color: transparent; } - height: auto; - padding: 0; - } - - .background { - overflow: hidden; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: -1; - } - - .circle, .name, .email { - display: block; - } - - .circle { - height: 64px; - width: 64px; - } - - .name, - .email { - font-size: $sidenav-font-size; - line-height: $sidenav-line-height / 2; - } - - .name { - margin-top: 16px; - font-weight: 500; - } - - .email { - padding-bottom: 16px; - font-weight: 400; - } - } -} - - -// Touch interaction -.drag-target { - height: 100%; - width: 10px; - position: fixed; - top: 0; - z-index: 998; -} - - -// Fixed side-nav shown -.side-nav.fixed { - left: 0; - transform: translateX(0); - position: fixed; - - // Right Align - &.right-aligned { - right: 0; - left: auto; - } -} - -// Fixed sideNav hide on smaller -@media #{$medium-and-down} { - .side-nav { - &.fixed { - transform: translateX(-105%); - - &.right-aligned { - transform: translateX(105%); - } - } - - a { - padding: 0 $sidenav-padding; - } - - .userView { - padding: $sidenav-padding $sidenav-padding 0; - } - } -} - - -.side-nav .collapsible-body > ul:not(.collapsible) > li.active, -.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active { - background-color: $primary-color; - a { - color: $sidenav-bg-color; - } -} - - -#sidenav-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - - height: 120vh; - background-color: rgba(0,0,0,.5); - z-index: 997; - - will-change: opacity; -} diff --git a/node_modules/materialize-css/sass/components/_slider.scss b/node_modules/materialize-css/sass/components/_slider.scss deleted file mode 100644 index 2265cdb..0000000 --- a/node_modules/materialize-css/sass/components/_slider.scss +++ /dev/null @@ -1,92 +0,0 @@ -.slider { - position: relative; - height: 400px; - width: 100%; - - // Fullscreen slider - &.fullscreen { - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - - ul.slides { - height: 100%; - } - - ul.indicators { - z-index: 2; - bottom: 30px; - } - } - - .slides { - background-color: $slider-bg-color; - margin: 0; - height: 400px; - - li { - opacity: 0; - position: absolute; - top: 0; - left: 0; - z-index: 1; - width: 100%; - height: inherit; - overflow: hidden; - - img { - height: 100%; - width: 100%; - background-size: cover; - background-position: center; - } - - .caption { - color: #fff; - position: absolute; - top: 15%; - left: 15%; - width: 70%; - opacity: 0; - - p { color: $slider-bg-color-light; } - } - - &.active { - z-index: 2; - } - } - } - - - .indicators { - position: absolute; - text-align: center; - left: 0; - right: 0; - bottom: 0; - margin: 0; - - .indicator-item { - display: inline-block; - position: relative; - cursor: pointer; - height: 16px; - width: 16px; - margin: 0 12px; - background-color: $slider-bg-color-light; - - transition: background-color .3s; - border-radius: 50%; - - &.active { - background-color: $slider-indicator-color; - } - } - } - -} \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/_table_of_contents.scss b/node_modules/materialize-css/sass/components/_table_of_contents.scss deleted file mode 100644 index 4c67ee6..0000000 --- a/node_modules/materialize-css/sass/components/_table_of_contents.scss +++ /dev/null @@ -1,33 +0,0 @@ -/*************** - Nav List -***************/ -.table-of-contents { - &.fixed { - position: fixed; - } - - li { - padding: 2px 0; - } - a { - display: inline-block; - font-weight: 300; - color: #757575; - padding-left: 20px; - height: 1.5rem; - line-height: 1.5rem; - letter-spacing: .4; - display: inline-block; - - &:hover { - color: lighten(#757575, 20%); - padding-left: 19px; - border-left: 1px solid $primary-color; - } - &.active { - font-weight: 500; - padding-left: 18px; - border-left: 2px solid $primary-color; - } - } -} diff --git a/node_modules/materialize-css/sass/components/_tabs.scss b/node_modules/materialize-css/sass/components/_tabs.scss deleted file mode 100644 index 6d79538..0000000 --- a/node_modules/materialize-css/sass/components/_tabs.scss +++ /dev/null @@ -1,99 +0,0 @@ -.tabs { - &.tabs-transparent { - background-color: transparent; - - .tab a, - .tab.disabled a, - .tab.disabled a:hover { - color: rgba(255,255,255,0.7); - } - - .tab a:hover, - .tab a.active { - color: #fff; - } - - .indicator { - background-color: #fff; - } - } - - &.tabs-fixed-width { - display: flex; - - .tab { - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - } - } - - position: relative; - overflow-x: auto; - overflow-y: hidden; - height: 48px; - width: 100%; - background-color: $tabs-bg-color; - margin: 0 auto; - white-space: nowrap; - - .tab { - display: inline-block; - text-align: center; - line-height: 48px; - height: 48px; - padding: 0; - margin: 0; - text-transform: uppercase; - - a { - &:hover, - &.active { - background-color: transparent; - color: $tabs-text-color; - } - - color: rgba($tabs-text-color, .7); - display: block; - width: 100%; - height: 100%; - padding: 0 24px; - font-size: 14px; - text-overflow: ellipsis; - overflow: hidden; - transition: color .28s ease; - } - - &.disabled a, - &.disabled a:hover { - color: rgba($tabs-text-color, .7); - cursor: default; - } - } - .indicator { - position: absolute; - bottom: 0; - height: 2px; - background-color: $tabs-underline-color; - will-change: left, right; - } -} - -// Fixed sideNav hide on smaller -@media #{$medium-and-down} { - .tabs { - display: flex; - - .tab { - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - - a { - padding: 0 12px; - } - } - } -} diff --git a/node_modules/materialize-css/sass/components/_toast.scss b/node_modules/materialize-css/sass/components/_toast.scss deleted file mode 100644 index 7670cfa..0000000 --- a/node_modules/materialize-css/sass/components/_toast.scss +++ /dev/null @@ -1,65 +0,0 @@ -#toast-container { - display:block; - position: fixed; - z-index: 10000; - - @media #{$small-and-down} { - min-width: 100%; - bottom: 0%; - } - @media #{$medium-only} { - left: 5%; - bottom: 7%; - max-width: 90%; - } - @media #{$large-and-up} { - top: 10%; - right: 7%; - max-width: 86%; - } -} - -.toast { - @extend .z-depth-1; - border-radius: 2px; - top: 35px; - width: auto; - clear: both; - margin-top: 10px; - position: relative; - max-width:100%; - height: auto; - min-height: $toast-height; - line-height: 1.5em; - word-break: break-all; - background-color: $toast-color; - padding: 10px 25px; - font-size: 1.1rem; - font-weight: 300; - color: $toast-text-color; - - display: flex; - align-items: center; - justify-content: space-between; - - .btn, .btn-flat { - margin: 0; - margin-left: 3rem; - } - - &.rounded{ - border-radius: 24px; - } - - @media #{$small-and-down} { - width:100%; - border-radius: 0; - } - @media #{$medium-only} { - float: left; - } - @media #{$large-and-up} { - float: right; - } - -} diff --git a/node_modules/materialize-css/sass/components/_tooltip.scss b/node_modules/materialize-css/sass/components/_tooltip.scss deleted file mode 100644 index 8224a8e..0000000 --- a/node_modules/materialize-css/sass/components/_tooltip.scss +++ /dev/null @@ -1,31 +0,0 @@ -.material-tooltip { - padding: 10px 8px; - font-size: 1rem; - z-index: 2000; - background-color: transparent; - border-radius: 2px; - color: #fff; - min-height: 36px; - line-height: 120%; - opacity: 0; - position: absolute; - text-align: center; - max-width: calc(100% - 4px); - overflow: hidden; - left: 0; - top: 0; - pointer-events: none; - visibility: hidden; -} - -.backdrop { - position: absolute; - opacity: 0; - height: 7px; - width: 14px; - border-radius: 0 0 50% 50%; - background-color: #323232; - z-index: -1; - transform-origin: 50% 0%; - visibility: hidden; -} diff --git a/node_modules/materialize-css/sass/components/_transitions.scss b/node_modules/materialize-css/sass/components/_transitions.scss deleted file mode 100644 index 9c3660a..0000000 --- a/node_modules/materialize-css/sass/components/_transitions.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Scale transition -.scale-transition { - &.scale-out { - transform: scale(0); - transition: transform .2s !important; - } - - &.scale-in { - transform: scale(1); - } - - transition: transform .3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; -} \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/_typography.scss b/node_modules/materialize-css/sass/components/_typography.scss deleted file mode 100644 index 5301c80..0000000 --- a/node_modules/materialize-css/sass/components/_typography.scss +++ /dev/null @@ -1,61 +0,0 @@ - -a { - text-decoration: none; -} - -html{ - line-height: 1.5; - - @media only screen and (min-width: 0) { - font-size: 14px; - } - - @media only screen and (min-width: $medium-screen) { - font-size: 14.5px; - } - - @media only screen and (min-width: $large-screen) { - font-size: 15px; - } - - font-family: "Roboto", sans-serif; - font-weight: normal; - color: $off-black; -} -h1, h2, h3, h4, h5, h6 { - font-weight: 400; - line-height: 1.1; -} - -// Header Styles -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } -h1 { font-size: $h1-fontsize; line-height: 110%; margin: ($h1-fontsize / 2) 0 ($h1-fontsize / 2.5) 0;} -h2 { font-size: $h2-fontsize; line-height: 110%; margin: ($h2-fontsize / 2) 0 ($h2-fontsize / 2.5) 0;} -h3 { font-size: $h3-fontsize; line-height: 110%; margin: ($h3-fontsize / 2) 0 ($h3-fontsize / 2.5) 0;} -h4 { font-size: $h4-fontsize; line-height: 110%; margin: ($h4-fontsize / 2) 0 ($h4-fontsize / 2.5) 0;} -h5 { font-size: $h5-fontsize; line-height: 110%; margin: ($h5-fontsize / 2) 0 ($h5-fontsize / 2.5) 0;} -h6 { font-size: $h6-fontsize; line-height: 110%; margin: ($h6-fontsize / 2) 0 ($h6-fontsize / 2.5) 0;} - -// Text Styles -em { font-style: italic; } -strong { font-weight: 500; } -small { font-size: 75%; } -.light { font-weight: 300; } -.thin { font-weight: 200; } - - -.flow-text{ - font-weight: 300; - $i: 0; - @while $i <= $intervals { - @media only screen and (min-width : 360 + ($i * $interval-size)) { - font-size: 1.2rem * (1 + (.02 * $i)); - } - $i: $i + 1; - } - - // Handle below 360px screen - @media only screen and (max-width: 360px) { - font-size: 1.2rem; - } -} \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/_variables.scss b/node_modules/materialize-css/sass/components/_variables.scss deleted file mode 100644 index 0a706d3..0000000 --- a/node_modules/materialize-css/sass/components/_variables.scss +++ /dev/null @@ -1,319 +0,0 @@ -// ========================================================================== -// Materialize variables -// ========================================================================== -// -// Table of Contents: -// -// 1. Colors -// 2. Badges -// 3. Buttons -// 4. Cards -// 5. Collapsible -// 6. Chips -// 7. Date Picker -// 8. Dropdown -// 10. Forms -// 11. Global -// 12. Grid -// 13. Navigation Bar -// 14. Side Navigation -// 15. Photo Slider -// 16. Spinners | Loaders -// 17. Tabs -// 18. Tables -// 19. Toasts -// 20. Typography -// 21. Footer -// 22. Flow Text -// 23. Collections -// 24. Progress Bar - - - -// 1. Colors -// ========================================================================== - -$primary-color: color("materialize-red", "lighten-2") !default; -$primary-color-light: lighten($primary-color, 15%) !default; -$primary-color-dark: darken($primary-color, 15%) !default; - -$secondary-color: color("teal", "lighten-1") !default; -$success-color: color("green", "base") !default; -$error-color: color("red", "base") !default; -$link-color: color("light-blue", "darken-1") !default; - - -// 2. Badges -// ========================================================================== - -$badge-bg-color: $secondary-color !default; -$badge-height: 22px !default; - - -// 3. Buttons -// ========================================================================== - -// Shared styles -$button-border: none !default; -$button-background-focus: lighten($secondary-color, 4%) !default; -$button-font-size: 1.3rem !default; -$button-height: 36px !default; -$button-padding: 0 2rem !default; -$button-radius: 2px !default; - -// Disabled styles -$button-disabled-background: #DFDFDF !default; -$button-disabled-color: #9F9F9F !default; - -// Raised buttons -$button-raised-background: $secondary-color !default; -$button-raised-background-hover: lighten($button-raised-background, 5%) !default; -$button-raised-color: #fff !default; - -// Large buttons -$button-large-icon-font-size: 1.6rem !default; -$button-large-height: $button-height * 1.5 !default; - -// Flat buttons -$button-flat-color: #343434 !default; -$button-flat-disabled-color: lighten(#999, 10%) !default; - -// Floating buttons -$button-floating-background: $secondary-color !default; -$button-floating-background-hover: $button-floating-background !default; -$button-floating-color: #fff !default; -$button-floating-size: 40px !default; -$button-floating-large-size: 56px !default; -$button-floating-radius: 50% !default; - - -// 4. Cards -// ========================================================================== - -$card-padding: 24px !default; -$card-bg-color: #fff !default; -$card-link-color: color("orange", "accent-2") !default; -$card-link-color-light: lighten($card-link-color, 20%) !default; - - -// 5. Collapsible -// ========================================================================== - -$collapsible-height: 3rem !default; -$collapsible-line-height: $collapsible-height !default; -$collapsible-header-color: #fff !default; -$collapsible-border-color: #ddd !default; - - -// 6. Chips -// ========================================================================== - -$chip-bg-color: #e4e4e4 !default; -$chip-border-color: #9e9e9e !default; -$chip-selected-color: #26a69a !default; -$chip-margin: 5px !default; - - -// 7. Date Picker -// ========================================================================== - -$datepicker-weekday-bg: darken($secondary-color, 7%) !default; -$datepicker-date-bg: $secondary-color !default; -$datepicker-year: rgba(255, 255, 255, .4) !default; -$datepicker-focus: rgba(0,0,0, .05) !default; -$datepicker-selected: $secondary-color !default; -$datepicker-selected-outfocus: desaturate(lighten($secondary-color, 35%), 15%) !default; - - -// 8. Dropdown -// ========================================================================== - -$dropdown-bg-color: #fff !default; -$dropdown-hover-bg-color: #eee !default; -$dropdown-color: $secondary-color !default; -$dropdown-item-height: 50px !default; - - -// 9. Fonts -// ========================================================================== - -$roboto-font-path: "../fonts/roboto/" !default; - - -// 10. Forms -// ========================================================================== - -// Text Inputs + Textarea -$input-height: 3rem !default; -$input-border-color: color("grey", "base") !default; -$input-border: 1px solid $input-border-color !default; -$input-background: #fff !default; -$input-error-color: $error-color !default; -$input-success-color: $success-color !default; -$input-focus-color: $secondary-color !default; -$input-font-size: 1rem !default; -$input-margin: 0 0 20px 0 !default; -$input-padding: 0 !default; -$input-transition: all .3s !default; -$label-font-size: .8rem !default; -$input-disabled-color: rgba(0,0,0, .26) !default; -$input-disabled-solid-color: #BDBDBD !default; -$input-disabled-border: 1px dotted $input-disabled-color !default; -$input-invalid-border: 1px solid $input-error-color !default; -$placeholder-text-color: lighten($input-border-color, 20%) !default; - -// Radio Buttons -$radio-fill-color: $secondary-color !default; -$radio-empty-color: #5a5a5a !default; -$radio-border: 2px solid $radio-fill-color !default; - -// Range -$range-height: 14px !default; -$range-width: 14px !default; -$track-height: 3px !default; - -// Select -$select-border: 1px solid #f2f2f2 !default; -$select-background: rgba(255, 255, 255, 0.90) !default; -$select-focus: 1px solid lighten($secondary-color, 47%) !default; -$select-padding: 5px !default; -$select-radius: 2px !default; -$select-disabled-color: rgba(0,0,0,.3) !default; - -// Switches -$switch-bg-color: $secondary-color !default; -$switch-checked-lever-bg: desaturate(lighten($secondary-color, 25%), 25%) !default; -$switch-unchecked-bg: #F1F1F1 !default; -$switch-unchecked-lever-bg: #818181 !default; -$switch-radius: 15px !default; - - -// 11. Global -// ========================================================================== - -// Media Query Ranges -$small-screen-up: 601px !default; -$medium-screen-up: 993px !default; -$large-screen-up: 1201px !default; -$small-screen: 600px !default; -$medium-screen: 992px !default; -$large-screen: 1200px !default; - -$medium-and-up: "only screen and (min-width : #{$small-screen-up})" !default; -$large-and-up: "only screen and (min-width : #{$medium-screen-up})" !default; -$small-and-down: "only screen and (max-width : #{$small-screen})" !default; -$medium-and-down: "only screen and (max-width : #{$medium-screen})" !default; -$medium-only: "only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})" !default; - - -// 12. Grid -// ========================================================================== - -$num-cols: 12 !default; -$gutter-width: 1.5rem !default; -$element-top-margin: $gutter-width/3 !default; -$element-bottom-margin: ($gutter-width*2)/3 !default; - - -// 13. Navigation Bar -// ========================================================================== - -$navbar-height: 64px !default; -$navbar-line-height: $navbar-height !default; -$navbar-height-mobile: 56px !default; -$navbar-line-height-mobile: $navbar-height-mobile !default; -$navbar-font-size: 1rem !default; -$navbar-font-color: #fff !default; -$navbar-brand-font-size: 2.1rem !default; - -// 14. Side Navigation -// ========================================================================== - -$sidenav-font-size: 14px !default; -$sidenav-font-color: rgba(0,0,0,.87) !default; -$sidenav-bg-color: #fff !default; -$sidenav-padding: 16px !default; -$sidenav-item-height: 48px !default; -$sidenav-line-height: $sidenav-item-height !default; - - -// 15. Photo Slider -// ========================================================================== - -$slider-bg-color: color('grey', 'base') !default; -$slider-bg-color-light: color('grey', 'lighten-2') !default; -$slider-indicator-color: color('green', 'base') !default; - - -// 16. Spinners | Loaders -// ========================================================================== - -$spinner-default-color: $secondary-color !default; - - -// 17. Tabs -// ========================================================================== - -$tabs-underline-color: $primary-color-light !default; -$tabs-text-color: $primary-color !default; -$tabs-bg-color: #fff !default; - - -// 18. Tables -// ========================================================================== - -$table-border-color: #d0d0d0 !default; -$table-striped-color: #f2f2f2 !default; - - -// 19. Toasts -// ========================================================================== - -$toast-height: 48px !default; -$toast-color: #323232 !default; -$toast-text-color: #fff !default; - - -// 20. Typography -// ========================================================================== - -$off-black: rgba(0, 0, 0, 0.87) !default; -// Header Styles -$h1-fontsize: 4.2rem !default; -$h2-fontsize: 3.56rem !default; -$h3-fontsize: 2.92rem !default; -$h4-fontsize: 2.28rem !default; -$h5-fontsize: 1.64rem !default; -$h6-fontsize: 1rem !default; - - -// 21. Footer -// ========================================================================== - -$footer-bg-color: $primary-color !default; - - -// 22. Flow Text -// ========================================================================== - -$range : $large-screen - $small-screen !default; -$intervals: 20 !default; -$interval-size: $range / $intervals !default; - - -// 23. Collections -// ========================================================================== - -$collection-border-color: #e0e0e0 !default; -$collection-bg-color: #fff !default; -$collection-active-bg-color: $secondary-color !default; -$collection-active-color: lighten($secondary-color, 55%) !default; -$collection-hover-bg-color: #ddd !default; -$collection-link-color: $secondary-color !default; -$collection-line-height: 1.5rem !default; - - -// 24. Progress Bar -// ========================================================================== - -$progress-bar-color: $secondary-color !default; diff --git a/node_modules/materialize-css/sass/components/_waves.scss b/node_modules/materialize-css/sass/components/_waves.scss deleted file mode 100644 index 5a3229b..0000000 --- a/node_modules/materialize-css/sass/components/_waves.scss +++ /dev/null @@ -1,114 +0,0 @@ - -/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */ - - -.waves-effect { - position: relative; - cursor: pointer; - display: inline-block; - overflow: hidden; - user-select: none; - -webkit-tap-highlight-color: transparent; - vertical-align: middle; - z-index: 1; - transition: .3s ease-out; - - .waves-ripple { - position: absolute; - border-radius: 50%; - width: 20px; - height: 20px; - margin-top:-10px; - margin-left:-10px; - opacity: 0; - - background: rgba(0,0,0,0.2); - transition: all 0.7s ease-out; - transition-property: transform, opacity; - transform: scale(0); - pointer-events: none; - } - - // Waves Colors - &.waves-light .waves-ripple { - background-color: rgba(255, 255, 255, 0.45); - } - &.waves-red .waves-ripple { - background-color: rgba(244, 67, 54, .70); - } - &.waves-yellow .waves-ripple { - background-color: rgba(255, 235, 59, .70); - } - &.waves-orange .waves-ripple { - background-color: rgba(255, 152, 0, .70); - } - &.waves-purple .waves-ripple { - background-color: rgba(156, 39, 176, 0.70); - } - &.waves-green .waves-ripple { - background-color: rgba(76, 175, 80, 0.70); - } - &.waves-teal .waves-ripple { - background-color: rgba(0, 150, 136, 0.70); - } - - // Style input button bug. - input[type="button"], input[type="reset"], input[type="submit"] { - border: 0; - font-style: normal; - font-size: inherit; - text-transform: inherit; - background: none; - } - - img { - position: relative; - z-index: -1; - } -} - -.waves-notransition { - transition: none #{"!important"}; -} - -.waves-circle { - transform: translateZ(0); - -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); -} - -.waves-input-wrapper { - border-radius: 0.2em; - vertical-align: bottom; - - .waves-button-input { - position: relative; - top: 0; - left: 0; - z-index: 1; - } -} - -.waves-circle { - text-align: center; - width: 2.5em; - height: 2.5em; - line-height: 2.5em; - border-radius: 50%; - -webkit-mask-image: none; -} - -.waves-block { - display: block; -} - -/* Firefox Bug: link not triggered */ -.waves-effect .waves-ripple { - z-index: -1; -} \ No newline at end of file diff --git a/node_modules/materialize-css/sass/components/date_picker/_default.date.scss b/node_modules/materialize-css/sass/components/date_picker/_default.date.scss deleted file mode 100644 index 84e96b5..0000000 --- a/node_modules/materialize-css/sass/components/date_picker/_default.date.scss +++ /dev/null @@ -1,435 +0,0 @@ -/* ========================================================================== - $BASE-DATE-PICKER - ========================================================================== */ -/** - * The picker box. - */ -.picker__box { - padding: 0 1em; -} -/** - * The header containing the month and year stuff. - */ -.picker__header { - text-align: center; - position: relative; - margin-top: .75em; -} -/** - * The month and year labels. - */ -.picker__month, -.picker__year { -// font-weight: 500; - display: inline-block; - margin-left: .25em; - margin-right: .25em; -} -/** - * The month and year selectors. - */ -.picker__select--month, -.picker__select--year { - - height: 2em; - padding: 0; - margin-left: .25em; - margin-right: .25em; -} - -// Modified -.picker__select--month.browser-default { - display: inline; - background-color: #FFFFFF; - width: 40%; -} -.picker__select--year.browser-default { - display: inline; - background-color: #FFFFFF; - width: 26%; -} -.picker__select--month:focus, -.picker__select--year:focus { - border-color: $datepicker-focus; -} -/** - * The month navigation buttons. - */ -.picker__nav--prev, -.picker__nav--next { - position: absolute; - padding: .5em 1.25em; - width: 1em; - height: 1em; - box-sizing: content-box; - top: -0.25em; -} -//@media (min-width: 24.5em) { -// .picker__nav--prev, -// .picker__nav--next { -// top: -0.33em; -// } -//} -.picker__nav--prev { - left: -1em; - padding-right: 1.25em; -} -//@media (min-width: 24.5em) { -// .picker__nav--prev { -// padding-right: 1.5em; -// } -//} -.picker__nav--next { - right: -1em; - padding-left: 1.25em; -} -//@media (min-width: 24.5em) { -// .picker__nav--next { -// padding-left: 1.5em; -// } -//} - -.picker__nav--disabled, -.picker__nav--disabled:hover, -.picker__nav--disabled:before, -.picker__nav--disabled:before:hover { - cursor: default; - background: none; - border-right-color: #f5f5f5; - border-left-color: #f5f5f5; -} -/** - * The calendar table of dates - */ -.picker__table { - text-align: center; - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; - font-size: 1rem; - width: 100%; - margin-top: .75em; - margin-bottom: .5em; -} - - - -.picker__table th, .picker__table td { - text-align: center; -} - - - - - - -.picker__table td { - margin: 0; - padding: 0; -} -/** - * The weekday labels - */ -.picker__weekday { - width: 14.285714286%; - font-size: .75em; - padding-bottom: .25em; - color: #999999; - font-weight: 500; - /* Increase the spacing a tad */ -} -@media (min-height: 33.875em) { - .picker__weekday { - padding-bottom: .5em; - } -} -/** - * The days on the calendar - */ - -.picker__day--today { - position: relative; - color: #595959; - letter-spacing: -.3; - padding: .75rem 0; - font-weight: 400; - border: 1px solid transparent; - -} - -//.picker__day--today:before { -// content: " "; -// position: absolute; -// top: 2px; -// right: 2px; -// width: 0; -// height: 0; -// border-top: 0.5em solid #0059bc; -// border-left: .5em solid transparent; -//} -.picker__day--disabled:before { - border-top-color: #aaaaaa; -} - - -.picker__day--infocus:hover{ - cursor: pointer; - color: #000; - font-weight: 500; -} - -.picker__day--outfocus { - display: none; - padding: .75rem 0; - color: #fff; - -} -.picker__day--outfocus:hover { - cursor: pointer; - color: #dddddd; -// background: #b1dcfb; - font-weight: 500; -} - - -.picker__day--highlighted { -// border-color: #0089ec; -} -.picker__day--highlighted:hover, -.picker--focused .picker__day--highlighted { - cursor: pointer; -// color: #000000; -// background: #b1dcfb; -// font-weight: 500; -} -.picker__day--selected, -.picker__day--selected:hover, -.picker--focused .picker__day--selected { - - -// Circle background - border-radius: 50%; - transform: scale(.75); - background: #0089ec; - color: #ffffff; -} -.picker__day--disabled, -.picker__day--disabled:hover, -.picker--focused .picker__day--disabled { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; -} -.picker__day--highlighted.picker__day--disabled, -.picker__day--highlighted.picker__day--disabled:hover { - background: #bbbbbb; -} -/** - * The footer containing the "today", "clear", and "close" buttons. - */ -.picker__footer { - text-align: center; - display: flex; - align-items: center; - justify-content: space-between; -} -.picker__button--today, -.picker__button--clear, -.picker__button--close { - border: 1px solid #ffffff; - background: #ffffff; - font-size: .8em; - padding: .66em 0; - font-weight: bold; - width: 33%; - display: inline-block; - vertical-align: bottom; -} -.picker__button--today:hover, -.picker__button--clear:hover, -.picker__button--close:hover { - cursor: pointer; - color: #000000; - background: #b1dcfb; - border-bottom-color: #b1dcfb; -} -.picker__button--today:focus, -.picker__button--clear:focus, -.picker__button--close:focus { - background: #b1dcfb; - border-color: $datepicker-focus; - outline: none; -} -.picker__button--today:before, -.picker__button--clear:before, -.picker__button--close:before { - position: relative; - display: inline-block; - height: 0; -} -.picker__button--today:before, -.picker__button--clear:before { - content: " "; - margin-right: .45em; -} -.picker__button--today:before { - top: -0.05em; - width: 0; - border-top: 0.66em solid #0059bc; - border-left: .66em solid transparent; -} -.picker__button--clear:before { - top: -0.25em; - width: .66em; - border-top: 3px solid #ee2200; -} -.picker__button--close:before { - content: "\D7"; - top: -0.1em; - vertical-align: top; - font-size: 1.1em; - margin-right: .35em; - color: #777777; -} -.picker__button--today[disabled], -.picker__button--today[disabled]:hover { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; -} -.picker__button--today[disabled]:before { - border-top-color: #aaaaaa; -} - -/* ========================================================================== - CUSTOM MATERIALIZE STYLES - ========================================================================== */ -.picker__box { - border-radius: 2px; - overflow: hidden; -} - -.picker__date-display { - text-align: center; - background-color: $datepicker-date-bg; - color: #fff; - padding-bottom: 15px; - font-weight: 300; -} - -.picker__nav--prev:hover, -.picker__nav--next:hover { - cursor: pointer; - color: #000000; - background: $datepicker-selected-outfocus; -} - -.picker__weekday-display { - background-color: $datepicker-weekday-bg; - padding: 10px; - font-weight: 200; - letter-spacing: .5; - font-size: 1rem; - margin-bottom: 15px; -} - -.picker__month-display { - text-transform: uppercase; - font-size: 2rem; -} -.picker__day-display { - - font-size: 4.5rem; - font-weight: 400; -} -.picker__year-display { - font-size: 1.8rem; - color: $datepicker-year; -} - -.picker__box { - padding: 0; -} -.picker__calendar-container { - padding: 0 1rem; - - thead { - border: none; - } -} - -// Calendar -.picker__table { - margin-top: 0; - margin-bottom: .5em; -} - -.picker__day--infocus { - color: #595959; - letter-spacing: -.3; - padding: .75rem 0; - font-weight: 400; - border: 1px solid transparent; -} - -//Today style -.picker__day.picker__day--today { - color: $datepicker-selected; -} - -.picker__day.picker__day--today.picker__day--selected { - color: #fff; -} - -// Table Header -.picker__weekday { - font-size: .9rem; -} - - -.picker__day--selected, -.picker__day--selected:hover, -.picker--focused .picker__day--selected { - // Circle background - border-radius: 50%; - transform: scale(.9); - background-color: $datepicker-selected; - &.picker__day--outfocus { - background-color: $datepicker-selected-outfocus; - } - color: #ffffff; -} - -.picker__footer { - text-align: right; - padding: 5px 10px; -} - -// Materialize modified -.picker__close, .picker__today { - font-size: 1.1rem; - padding: 0 1rem; - color: $datepicker-selected; -} - -//month nav buttons -.picker__nav--prev:before, -.picker__nav--next:before { - content: " "; - border-top: .5em solid transparent; - border-bottom: .5em solid transparent; - border-right: 0.75em solid #676767; - width: 0; - height: 0; - display: block; - margin: 0 auto; -} -.picker__nav--next:before { - border-right: 0; - border-left: 0.75em solid #676767; -} -button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { - background-color: $datepicker-selected-outfocus; -} diff --git a/node_modules/materialize-css/sass/components/date_picker/_default.scss b/node_modules/materialize-css/sass/components/date_picker/_default.scss deleted file mode 100644 index 971fbc7..0000000 --- a/node_modules/materialize-css/sass/components/date_picker/_default.scss +++ /dev/null @@ -1,201 +0,0 @@ -/* ========================================================================== - $BASE-PICKER - ========================================================================== */ -/** - * Note: the root picker element should *NOT* be styled more than what's here. - */ -.picker { - font-size: 16px; - text-align: left; - line-height: 1.2; - color: #000000; - position: absolute; - z-index: 10000; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -/** - * The picker input element. - */ -.picker__input { - cursor: default; -} -/** - * When the picker is opened, the input element is "activated". - */ -.picker__input.picker__input--active { - border-color: #0089ec; -} -/** - * The holder is the only "scrollable" top-level container element. - */ -.picker__holder { - width: 100%; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */ -/** - * Note: the root picker element should *NOT* be styled more than what's here. - */ -/** - * Make the holder and frame fullscreen. - */ -.picker__holder, -.picker__frame { - bottom: 0; - left: 0; - right: 0; - top: 100%; -} -/** - * The holder should overlay the entire screen. - */ -.picker__holder { - position: fixed; - -webkit-transition: background 0.15s ease-out, top 0s 0.15s; - -moz-transition: background 0.15s ease-out, top 0s 0.15s; - transition: background 0.15s ease-out, top 0s 0.15s; - -webkit-backface-visibility: hidden; -} -/** - * The frame that bounds the box contents of the picker. - */ -.picker__frame { - position: absolute; - margin: 0 auto; - min-width: 256px; - -// picker width - width: 300px; - max-height: 350px; - - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; - -webkit-transition: all 0.15s ease-out; - -moz-transition: all 0.15s ease-out; - transition: all 0.15s ease-out; -} -@media (min-height: 28.875em) { - .picker__frame { - overflow: visible; - top: auto; - bottom: -100%; - max-height: 80%; - } -} -@media (min-height: 40.125em) { - .picker__frame { - margin-bottom: 7.5%; - } -} -/** - * The wrapper sets the stage to vertically align the box contents. - */ -.picker__wrap { - display: table; - width: 100%; - height: 100%; -} -@media (min-height: 28.875em) { - .picker__wrap { - display: block; - } -} -/** - * The box contains all the picker contents. - */ -.picker__box { - background: #ffffff; - display: table-cell; - vertical-align: middle; -} -//@media (min-height: 26.5em) { -// .picker__box { -//// font-size: 1.25em; -// } -//} -@media (min-height: 28.875em) { - .picker__box { - display: block; - -// picker header font-size -// font-size: 1rem; - - border: 1px solid #777777; - border-top-color: #898989; - border-bottom-width: 0; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; - -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); - -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); - box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); - } -} -//@media (min-height: 40.125em) { -// .picker__box { -// font-size: 1.1rem; -// border-bottom-width: 1px; -// -webkit-border-radius: 5px; -// -moz-border-radius: 5px; -// border-radius: 5px; -// } -//} -/** - * When the picker opens... - */ -.picker--opened .picker__holder { - top: 0; - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; - zoom: 1; - background: rgba(0, 0, 0, 0.32); - -webkit-transition: background 0.15s ease-out; - -moz-transition: background 0.15s ease-out; - transition: background 0.15s ease-out; -} -.picker--opened .picker__frame { - top: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); - -moz-opacity: 1; - opacity: 1; -} -@media (min-height: 35.875em) { - .picker--opened .picker__frame { - top: 10%; - bottom: auto; - } -} -/** - * For `large` screens, transform into an inline picker. - */ - -/* ========================================================================== - CUSTOM MATERIALIZE STYLES - ========================================================================== */ - -.picker__input.picker__input--active { - border-color: color("blue", "lighten-5"); -} - -.picker__frame { - margin: 0 auto; - max-width: 325px; -} - -@media (min-height: 38.875em) { - .picker--opened .picker__frame { - top: 10%; - bottom: auto; - } -} diff --git a/node_modules/materialize-css/sass/components/date_picker/_default.time.scss b/node_modules/materialize-css/sass/components/date_picker/_default.time.scss deleted file mode 100644 index 0b159c8..0000000 --- a/node_modules/materialize-css/sass/components/date_picker/_default.time.scss +++ /dev/null @@ -1,125 +0,0 @@ -/* ========================================================================== - $BASE-TIME-PICKER - ========================================================================== */ -/** - * The list of times. - */ -.picker__list { - list-style: none; - padding: 0.75em 0 4.2em; - margin: 0; -} -/** - * The times on the clock. - */ -.picker__list-item { - border-bottom: 1px solid #dddddd; - border-top: 1px solid #dddddd; - margin-bottom: -1px; - position: relative; - background: #ffffff; - padding: .75em 1.25em; -} -@media (min-height: 46.75em) { - .picker__list-item { - padding: .5em 1em; - } -} -/* Hovered time */ -.picker__list-item:hover { - cursor: pointer; - color: #000000; - background: #b1dcfb; - border-color: #0089ec; - z-index: 10; -} -/* Highlighted and hovered/focused time */ -.picker__list-item--highlighted { - border-color: #0089ec; - z-index: 10; -} -.picker__list-item--highlighted:hover, -.picker--focused .picker__list-item--highlighted { - cursor: pointer; - color: #000000; - background: #b1dcfb; -} -/* Selected and hovered/focused time */ -.picker__list-item--selected, -.picker__list-item--selected:hover, -.picker--focused .picker__list-item--selected { - background: #0089ec; - color: #ffffff; - z-index: 10; -} -/* Disabled time */ -.picker__list-item--disabled, -.picker__list-item--disabled:hover, -.picker--focused .picker__list-item--disabled { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; - border-color: #dddddd; - z-index: auto; -} -/** - * The clear button - */ -.picker--time .picker__button--clear { - display: block; - width: 80%; - margin: 1em auto 0; - padding: 1em 1.25em; - background: none; - border: 0; - font-weight: 500; - font-size: .67em; - text-align: center; - text-transform: uppercase; - color: #666; -} -.picker--time .picker__button--clear:hover, -.picker--time .picker__button--clear:focus { - color: #000000; - background: #b1dcfb; - background: #ee2200; - border-color: #ee2200; - cursor: pointer; - color: #ffffff; - outline: none; -} -.picker--time .picker__button--clear:before { - top: -0.25em; - color: #666; - font-size: 1.25em; - font-weight: bold; -} -.picker--time .picker__button--clear:hover:before, -.picker--time .picker__button--clear:focus:before { - color: #ffffff; -} - -/* ========================================================================== - $DEFAULT-TIME-PICKER - ========================================================================== */ -/** - * The frame the bounds the time picker. - */ -.picker--time .picker__frame { - min-width: 256px; - max-width: 320px; -} -/** - * The picker box. - */ -.picker--time .picker__box { - font-size: 1em; - background: #f2f2f2; - padding: 0; -} -@media (min-height: 40.125em) { - .picker--time .picker__box { - margin-bottom: 5em; - } -} diff --git a/node_modules/materialize-css/sass/components/forms/_checkboxes.scss b/node_modules/materialize-css/sass/components/forms/_checkboxes.scss deleted file mode 100644 index a8743c1..0000000 --- a/node_modules/materialize-css/sass/components/forms/_checkboxes.scss +++ /dev/null @@ -1,220 +0,0 @@ -/* Checkboxes - ========================================================================== */ - -/* CUSTOM CSS CHECKBOXES */ -form p { - margin-bottom: 10px; - text-align: left; -} - -form p:last-child { - margin-bottom: 0; -} - -/* Remove default checkbox */ -[type="checkbox"]:not(:checked), -[type="checkbox"]:checked { - position: absolute; - left: -9999px; - opacity: 0; -} - -// Checkbox Styles -[type="checkbox"] { - // Text Label Style - + label { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - - -webkit-user-select: none; /* webkit (safari, chrome) browsers */ - -moz-user-select: none; /* mozilla browsers */ - -khtml-user-select: none; /* webkit (konqueror) browsers */ - -ms-user-select: none; /* IE10+ */ - } - - /* checkbox aspect */ - + label:before, - &:not(.filled-in) + label:after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 18px; - z-index: 0; - border: 2px solid $radio-empty-color; - border-radius: 1px; - margin-top: 2px; - transition: .2s; - } - - &:not(.filled-in) + label:after { - border: 0; - transform: scale(0); - } - - &:not(:checked):disabled + label:before { - border: none; - background-color: $input-disabled-color; - } - - // Focused styles - &.tabbed:focus + label:after { - transform: scale(1); - border: 0; - border-radius: 50%; - box-shadow: 0 0 0 10px rgba(0,0,0,.1); - background-color: rgba(0,0,0,.1); - } -} - -[type="checkbox"]:checked { - + label:before { - top: -4px; - left: -5px; - width: 12px; - height: 22px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: $radio-border; - border-bottom: $radio-border; - transform: rotate(40deg); - backface-visibility: hidden; - transform-origin: 100% 100%; - } - - &:disabled + label:before { - border-right: 2px solid $input-disabled-color; - border-bottom: 2px solid $input-disabled-color; - } -} - -/* Indeterminate checkbox */ -[type="checkbox"]:indeterminate { - +label:before { - top: -11px; - left: -12px; - width: 10px; - height: 22px; - border-top: none; - border-left: none; - border-right: $radio-border; - border-bottom: none; - transform: rotate(90deg); - backface-visibility: hidden; - transform-origin: 100% 100%; - } - - // Disabled indeterminate - &:disabled + label:before { - border-right: 2px solid $input-disabled-color; - background-color: transparent; - } -} - -// Filled in Style -[type="checkbox"].filled-in { - // General - + label:after { - border-radius: 2px; - } - - + label:before, - + label:after { - content: ''; - left: 0; - position: absolute; - /* .1s delay is for check animation */ - transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; - z-index: 1; - } - - // Unchecked style - &:not(:checked) + label:before { - width: 0; - height: 0; - border: 3px solid transparent; - left: 6px; - top: 10px; - - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 20% 40%; - transform-origin: 100% 100%; - } - - &:not(:checked) + label:after { - height: 20px; - width: 20px; - background-color: transparent; - border: 2px solid $radio-empty-color; - top: 0px; - z-index: 0; - } - - // Checked style - &:checked { - + label:before { - top: 0; - left: 1px; - width: 8px; - height: 13px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid $input-background; - border-bottom: 2px solid $input-background; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - } - - + label:after { - top: 0; - width: 20px; - height: 20px; - border: 2px solid $secondary-color; - background-color: $secondary-color; - z-index: 0; - } - } - - // Focused styles - &.tabbed:focus + label:after { - border-radius: 2px; - border-color: $radio-empty-color; - background-color: rgba(0,0,0,.1); - } - - &.tabbed:checked:focus + label:after { - border-radius: 2px; - background-color: $secondary-color; - border-color: $secondary-color; - } - - // Disabled style - &:disabled:not(:checked) + label:before { - background-color: transparent; - border: 2px solid transparent; - } - - &:disabled:not(:checked) + label:after { - border-color: transparent; - background-color: $input-disabled-solid-color; - } - - &:disabled:checked + label:before { - background-color: transparent; - } - - &:disabled:checked + label:after { - background-color: $input-disabled-solid-color; - border-color: $input-disabled-solid-color; - } -} diff --git a/node_modules/materialize-css/sass/components/forms/_file-input.scss b/node_modules/materialize-css/sass/components/forms/_file-input.scss deleted file mode 100644 index 3b3fe55..0000000 --- a/node_modules/materialize-css/sass/components/forms/_file-input.scss +++ /dev/null @@ -1,38 +0,0 @@ -/* File Input - ========================================================================== */ - -.file-field { - position: relative; - - .file-path-wrapper { - overflow: hidden; - padding-left: 10px; - } - - input.file-path { width: 100%; } - - .btn { - float: left; - height: $input-height; - line-height: $input-height; - } - - span { - cursor: pointer; - } - - input[type=file] { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - width: 100%; - margin: 0; - padding: 0; - font-size: 20px; - cursor: pointer; - opacity: 0; - filter: alpha(opacity=0); - } -} diff --git a/node_modules/materialize-css/sass/components/forms/_forms.scss b/node_modules/materialize-css/sass/components/forms/_forms.scss deleted file mode 100644 index e9b65b4..0000000 --- a/node_modules/materialize-css/sass/components/forms/_forms.scss +++ /dev/null @@ -1,22 +0,0 @@ -// Remove Focus Boxes -select:focus { - outline: $select-focus; -} - -button:focus { - outline: none; - background-color: $button-background-focus; -} - -label { - font-size: $label-font-size; - color: $input-border-color; -} - -@import 'input-fields'; -@import 'radio-buttons'; -@import 'checkboxes'; -@import 'switches'; -@import 'select'; -@import 'file-input'; -@import 'range'; diff --git a/node_modules/materialize-css/sass/components/forms/_input-fields.scss b/node_modules/materialize-css/sass/components/forms/_input-fields.scss deleted file mode 100644 index 94e62c4..0000000 --- a/node_modules/materialize-css/sass/components/forms/_input-fields.scss +++ /dev/null @@ -1,286 +0,0 @@ -/* Text Inputs + Textarea - ========================================================================== */ - -/* Style Placeholders */ - -::-webkit-input-placeholder { - color: $placeholder-text-color; -} - -:-moz-placeholder { /* Firefox 18- */ - color: $placeholder-text-color; -} - -::-moz-placeholder { /* Firefox 19+ */ - color: $placeholder-text-color; -} - -:-ms-input-placeholder { - color: $placeholder-text-color; -} - -/* Text inputs */ - -input:not([type]), -input[type=text], -input[type=password], -input[type=email], -input[type=url], -input[type=time], -input[type=date], -input[type=datetime], -input[type=datetime-local], -input[type=tel], -input[type=number], -input[type=search], -textarea.materialize-textarea { - - // General Styles - background-color: transparent; - border: none; - border-bottom: $input-border; - border-radius: 0; - outline: none; - height: $input-height; - width: 100%; - font-size: $input-font-size; - margin: $input-margin; - padding: $input-padding; - box-shadow: none; - box-sizing: content-box; - transition: $input-transition; - - // Disabled input style - &:disabled, - &[readonly="readonly"] { - color: $input-disabled-color; - border-bottom: $input-disabled-border; - } - - // Disabled label style - &:disabled+label, - &[readonly="readonly"]+label { - color: $input-disabled-color; - } - - // Focused input style - &:focus:not([readonly]) { - border-bottom: 1px solid $input-focus-color; - box-shadow: 0 1px 0 0 $input-focus-color; - } - - // Focused label style - &:focus:not([readonly])+label { - color: $input-focus-color; - } - - // Valid Input Style - &.valid, - &:focus.valid { - border-bottom: 1px solid $input-success-color; - box-shadow: 0 1px 0 0 $input-success-color; - } - - // Custom Success Message - &.valid + label:after, - &:focus.valid + label:after { - content: attr(data-success); - color: $input-success-color; - opacity: 1; - } - - // Invalid Input Style - &.invalid, - &:focus.invalid { - border-bottom: $input-invalid-border; - box-shadow: 0 1px 0 0 $input-error-color; - } - - // Custom Error message - &.invalid + label:after, - &:focus.invalid + label:after { - content: attr(data-error); - color: $input-error-color; - opacity: 1; - } - - // Full width label when using validate for error messages - &.validate + label { - width: 100%; - pointer-events: none; - } - - // Form Message Shared Styles - & + label:after { - display: block; - content: ""; - position: absolute; - top: 60px; - opacity: 0; - transition: .2s opacity ease-out, .2s color ease-out; - } -} - -// Styling for input field wrapper -.input-field { - // Inline styles - &.inline { - display: inline-block; - vertical-align: middle; - margin-left: 5px; - - input, - .select-dropdown { - margin-bottom: 1rem; - } - } - - // Gutter spacing - &.col { - label { - left: $gutter-width / 2; - } - - .prefix ~ label, - .prefix ~ .validate ~ label { - width: calc(100% - 3rem - #{$gutter-width}); - } - } - - position: relative; - margin-top: 1rem; - - label { - color: $input-border-color; - position: absolute; - top: 0.8rem; - left: 0; - font-size: 1rem; - cursor: text; - transition: .2s ease-out; - - &:not(.label-icon).active { - font-size: $label-font-size; - transform: translateY(-140%); - } - } - - // Prefix Icons - .prefix { - position: absolute; - width: $input-height; - font-size: 2rem; - transition: color .2s; - - &.active { color: $input-focus-color; } - } - - .prefix ~ input, - .prefix ~ textarea, - .prefix ~ label, - .prefix ~ .validate ~ label, - .prefix ~ .autocomplete-content { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); - } - - .prefix ~ label { margin-left: 3rem; } - - @media #{$medium-and-down} { - .prefix ~ input { - width: 86%; - width: calc(100% - 3rem); - } - } - - @media #{$small-and-down} { - .prefix ~ input { - width: 80%; - width: calc(100% - 3rem); - } - } -} - - -/* Search Field */ - -.input-field input[type=search] { - display: block; - line-height: inherit; - padding-left: 4rem; - width: calc(100% - 4rem); - - &:focus { - background-color: $input-background; - border: 0; - box-shadow: none; - color: #444; - - & + label i, - & ~ .mdi-navigation-close, - & ~ .material-icons { - color: #444; - } - } - - & + label { - left: 1rem; - } - - & ~ .mdi-navigation-close, - & ~ .material-icons { - position: absolute; - top: 0; - right: 1rem; - color: transparent; - cursor: pointer; - font-size: 2rem; - transition: .3s color; - } -} - - -/* Textarea */ - -// Default textarea -textarea { - width: 100%; - height: $input-height; - background-color: transparent; - - &.materialize-textarea { - overflow-y: hidden; /* prevents scroll bar flash */ - padding: .8rem 0 1.6rem 0; /* prevents text jump on Enter keypress */ - resize: none; - min-height: $input-height; - } -} - -// For textarea autoresize -.hiddendiv { - display: none; - white-space: pre-wrap; - word-wrap: break-word; - overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */ - padding-top: 1.2rem; /* prevents text jump on Enter keypress */ -} - - -/* Autocomplete */ -.autocomplete-content { - margin-top: -15px; - display: block; - opacity: 1; - position: static; - - li { - .highlight { color: #444; } - - img { - height: $dropdown-item-height - 10; - width: $dropdown-item-height - 10; - margin: 5px 15px; - } - } -} diff --git a/node_modules/materialize-css/sass/components/forms/_radio-buttons.scss b/node_modules/materialize-css/sass/components/forms/_radio-buttons.scss deleted file mode 100644 index b59dbfb..0000000 --- a/node_modules/materialize-css/sass/components/forms/_radio-buttons.scss +++ /dev/null @@ -1,117 +0,0 @@ -/* Radio Buttons - ========================================================================== */ - -// Remove default Radio Buttons -[type="radio"]:not(:checked), -[type="radio"]:checked { - position: absolute; - left: -9999px; - opacity: 0; -} - -[type="radio"]:not(:checked) + label, -[type="radio"]:checked + label { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - transition: .28s ease; - - -khtml-user-select: none; /* webkit (konqueror) browsers */ - user-select: none; -} - -[type="radio"] + label:before, -[type="radio"] + label:after { - content: ''; - position: absolute; - left: 0; - top: 0; - margin: 4px; - width: 16px; - height: 16px; - z-index: 0; - transition: .28s ease; -} - -/* Unchecked styles */ -[type="radio"]:not(:checked) + label:before, -[type="radio"]:not(:checked) + label:after, -[type="radio"]:checked + label:before, -[type="radio"]:checked + label:after, -[type="radio"].with-gap:checked + label:before, -[type="radio"].with-gap:checked + label:after { - border-radius: 50%; -} - -[type="radio"]:not(:checked) + label:before, -[type="radio"]:not(:checked) + label:after { - border: 2px solid $radio-empty-color; -} - -[type="radio"]:not(:checked) + label:after { - transform: scale(0); -} - -/* Checked styles */ -[type="radio"]:checked + label:before { - border: 2px solid transparent; -} - -[type="radio"]:checked + label:after, -[type="radio"].with-gap:checked + label:before, -[type="radio"].with-gap:checked + label:after { - border: $radio-border; -} - -[type="radio"]:checked + label:after, -[type="radio"].with-gap:checked + label:after { - background-color: $radio-fill-color; -} - -[type="radio"]:checked + label:after { - transform: scale(1.02); -} - -/* Radio With gap */ -[type="radio"].with-gap:checked + label:after { - transform: scale(.5); -} - -/* Focused styles */ -[type="radio"].tabbed:focus + label:before { - box-shadow: 0 0 0 10px rgba(0,0,0,.1); -} - -/* Disabled Radio With gap */ -[type="radio"].with-gap:disabled:checked + label:before { - border: 2px solid $input-disabled-color; -} - -[type="radio"].with-gap:disabled:checked + label:after { - border: none; - background-color: $input-disabled-color; -} - -/* Disabled style */ -[type="radio"]:disabled:not(:checked) + label:before, -[type="radio"]:disabled:checked + label:before { - background-color: transparent; - border-color: $input-disabled-color; -} - -[type="radio"]:disabled + label { - color: $input-disabled-color; -} - -[type="radio"]:disabled:not(:checked) + label:before { - border-color: $input-disabled-color; -} - -[type="radio"]:disabled:checked + label:after { - background-color: $input-disabled-color; - border-color: $input-disabled-solid-color; -} diff --git a/node_modules/materialize-css/sass/components/forms/_range.scss b/node_modules/materialize-css/sass/components/forms/_range.scss deleted file mode 100644 index 7947375..0000000 --- a/node_modules/materialize-css/sass/components/forms/_range.scss +++ /dev/null @@ -1,159 +0,0 @@ -/* Range - ========================================================================== */ - -.range-field { - position: relative; -} - -input[type=range], -input[type=range] + .thumb { - @extend .no-select; - cursor: pointer; -} - -input[type=range] { - position: relative; - background-color: transparent; - border: none; - outline: none; - width: 100%; - margin: 15px 0; - padding: 0; - - &:focus { - outline: none; - } -} - -input[type=range] + .thumb { - position: absolute; - border: none; - height: 0; - width: 0; - border-radius: 50%; - background-color: $radio-fill-color; - top: 10px; - margin-left: -6px; - - transform-origin: 50% 50%; - transform: rotate(-45deg); - - .value { - display: block; - width: 30px; - text-align: center; - color: $radio-fill-color; - font-size: 0; - transform: rotate(45deg); - } - - &.active { - border-radius: 50% 50% 50% 0; - - .value { - color: $input-background; - margin-left: -1px; - margin-top: 8px; - font-size: 10px; - } - } -} - -// WebKit -input[type=range] { - -webkit-appearance: none; -} - -input[type=range]::-webkit-slider-runnable-track { - height: $track-height; - background: #c2c0c2; - border: none; -} - -input[type=range]::-webkit-slider-thumb { - -webkit-appearance: none; - border: none; - height: $range-height; - width: $range-width; - border-radius: 50%; - background-color: $radio-fill-color; - transform-origin: 50% 50%; - margin: -5px 0 0 0; - transition: .3s; -} - -input[type=range]:focus::-webkit-slider-runnable-track { - background: #ccc; -} - -// FireFox -input[type=range] { - /* fix for FF unable to apply focus style bug */ - border: 1px solid white; - - /*required for proper track sizing in FF*/ -} - -input[type=range]::-moz-range-track { - height: $track-height; - background: #ddd; - border: none; -} - -input[type=range]::-moz-range-thumb { - border: none; - height: $range-height; - width: $range-width; - border-radius: 50%; - background: $radio-fill-color; - margin-top: -5px; -} - -// hide the outline behind the border -input[type=range]:-moz-focusring { - outline: 1px solid #fff; - outline-offset: -1px; -} - -input[type=range]:focus::-moz-range-track { - background: #ccc; -} - -// IE 10+ -input[type=range]::-ms-track { - height: $track-height; - - // remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead - background: transparent; - - // leave room for the larger thumb to overflow with a transparent border */ - border-color: transparent; - border-width: 6px 0; - - /*remove default tick marks*/ - color: transparent; -} - -input[type=range]::-ms-fill-lower { - background: #777; -} - -input[type=range]::-ms-fill-upper { - background: #ddd; -} - -input[type=range]::-ms-thumb { - border: none; - height: $range-height; - width: $range-width; - border-radius: 50%; - background: $radio-fill-color; -} - -input[type=range]:focus::-ms-fill-lower { - background: #888; -} - -input[type=range]:focus::-ms-fill-upper { - background: #ccc; -} diff --git a/node_modules/materialize-css/sass/components/forms/_select.scss b/node_modules/materialize-css/sass/components/forms/_select.scss deleted file mode 100644 index 687d497..0000000 --- a/node_modules/materialize-css/sass/components/forms/_select.scss +++ /dev/null @@ -1,121 +0,0 @@ -/* Select Field - ========================================================================== */ - -select { display: none; } -select.browser-default { display: block; } - -select { - background-color: $select-background; - width: 100%; - padding: $select-padding; - border: $select-border; - border-radius: $select-radius; - height: $input-height; -} - -.select-label { - position: absolute; -} - -.select-wrapper { - position: relative; - - input.select-dropdown { - position: relative; - cursor: pointer; - background-color: transparent; - border: none; - border-bottom: $input-border; - outline: none; - height: $input-height; - line-height: $input-height; - width: 100%; - font-size: $input-font-size; - margin: $input-margin; - padding: 0; - display: block; - } - - span.caret { - color: initial; - position: absolute; - right: 0; - top: 0; - bottom: 0; - height: 10px; - margin: auto 0; - font-size: 10px; - line-height: 10px; - - &.disabled { - color: $input-disabled-color; - } - } - - & + label { - position: absolute; - top: -14px; - font-size: $label-font-size; - } -} - -// Disabled styles -select:disabled { - color: rgba(0,0,0,.3); -} - -.select-wrapper input.select-dropdown:disabled { - color: rgba(0,0,0,.3); - cursor: default; - -webkit-user-select: none; /* webkit (safari, chrome) browsers */ - -moz-user-select: none; /* mozilla browsers */ - -ms-user-select: none; /* IE10+ */ - border-bottom: 1px solid rgba(0,0,0,.3); -} - -.select-wrapper i { - color: $select-disabled-color; -} - -.select-dropdown li.disabled, -.select-dropdown li.disabled > span, -.select-dropdown li.optgroup { - color: $select-disabled-color; - background-color: transparent; -} - -// Prefix Icons -.prefix ~ .select-wrapper { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); -} - -.prefix ~ label { margin-left: 3rem; } - -// Icons -.select-dropdown li { - img { - height: $dropdown-item-height - 10; - width: $dropdown-item-height - 10; - margin: 5px 15px; - float: right; - } -} - -// Optgroup styles -.select-dropdown li.optgroup { - border-top: 1px solid $dropdown-hover-bg-color; - - &.selected > span { - color: rgba(0, 0, 0, .7); - } - - & > span { - color: rgba(0, 0, 0, .4); - } - - & ~ li.optgroup-option { - padding-left: 1rem; - } -} diff --git a/node_modules/materialize-css/sass/components/forms/_switches.scss b/node_modules/materialize-css/sass/components/forms/_switches.scss deleted file mode 100644 index 2c6655a..0000000 --- a/node_modules/materialize-css/sass/components/forms/_switches.scss +++ /dev/null @@ -1,78 +0,0 @@ -/* Switch - ========================================================================== */ - -.switch, -.switch * { - -webkit-user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -ms-user-select: none; -} - -.switch label { - cursor: pointer; -} - -.switch label input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; - - &:checked + .lever { - background-color: $switch-checked-lever-bg; - - &:after { - background-color: $switch-bg-color; - left: 24px; - } - } -} - -.switch label .lever { - content: ""; - display: inline-block; - position: relative; - width: 40px; - height: 15px; - background-color: $switch-unchecked-lever-bg; - border-radius: $switch-radius; - margin-right: 10px; - transition: background 0.3s ease; - vertical-align: middle; - margin: 0 16px; - - &:after { - content: ""; - position: absolute; - display: inline-block; - width: 21px; - height: 21px; - background-color: $switch-unchecked-bg; - border-radius: 21px; - box-shadow: 0 1px 3px 1px rgba(0,0,0,.4); - left: -5px; - top: -3px; - transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; - } -} - -// Switch active style -input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after, -input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after { - box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px transparentize($switch-bg-color, .9); -} - -input[type=checkbox]:not(:disabled) ~ .lever:active:after, -input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after { - box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px rgba(0, 0, 0, .08); -} - -// Disabled Styles -.switch input[type=checkbox][disabled] + .lever { - cursor: default; -} - -.switch label input[type=checkbox][disabled] + .lever:after, -.switch label input[type=checkbox][disabled]:checked + .lever:after { - background-color: $input-disabled-solid-color; -} diff --git a/node_modules/materialize-css/sass/ghpages-materialize.scss b/node_modules/materialize-css/sass/ghpages-materialize.scss deleted file mode 100644 index b7ac59f..0000000 --- a/node_modules/materialize-css/sass/ghpages-materialize.scss +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8"; - -// import materialize -@import "materialize"; - -// Custom style -@import "style"; diff --git a/node_modules/materialize-css/sass/materialize.scss b/node_modules/materialize-css/sass/materialize.scss deleted file mode 100644 index 9f5ce84..0000000 --- a/node_modules/materialize-css/sass/materialize.scss +++ /dev/null @@ -1,42 +0,0 @@ -@charset "UTF-8"; - -// Mixins -// @import "components/prefixer"; -@import "components/mixins"; -@import "components/color"; - -// Variables; -@import "components/variables"; - -// Reset -@import "components/normalize"; - -// components -@import "components/global"; -@import "components/badges"; -@import "components/icons-material-design"; -@import "components/grid"; -@import "components/navbar"; -@import "components/roboto"; -@import "components/typography"; -@import "components/transitions"; -@import "components/cards"; -@import "components/toast"; -@import "components/tabs"; -@import "components/tooltip"; -@import "components/buttons"; -@import "components/dropdown"; -@import "components/waves"; -@import "components/modal"; -@import "components/collapsible"; -@import "components/chips"; -@import "components/materialbox"; -@import "components/forms/forms"; -@import "components/table_of_contents"; -@import "components/sideNav"; -@import "components/preloader"; -@import "components/slider"; -@import "components/carousel"; -@import "components/date_picker/default"; -@import "components/date_picker/default.date"; -@import "components/date_picker/default.time"; diff --git a/node_modules/materialize-css/scrollfire.html b/node_modules/materialize-css/scrollfire.html deleted file mode 100644 index fa313ee..0000000 --- a/node_modules/materialize-css/scrollfire.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - ScrollFire - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                Introduction

                -

                ScrollFire is a jQuery Plugin that executes callback functions depending on how far into the page you've scrolled. We'll show you how you can use this plugin with many demos and examples.

                -
                - - -
                -

                jQuery Plugin Initialization

                -
                
                -  var options = [
                -    {selector: '.class', offset: 200, callback: customCallbackFunc } },
                -    {selector: '.other-class', offset: 200, callback: function() {
                -      customCallbackFunc();
                -    } },
                -  ];
                -  Materialize.scrollFire(options);
                -        
                -
                - -
                -

                jQuery Plugin Options

                - - - - - - - - - - - - - - - - - - - - - - -
                Option NameDescription
                selectorThe selector for the element that is being tracked.
                offsetIf this is 0, the callback will be fired when the selector element is at the very bottom of the user's window.
                callbackExecute a callback function when the user scrolls to the threshold. It will only be called once.
                The callback provides a parameter which refers to the current element selected.
                - - -

                ScrollFire Demo

                -

                Scroll through slowly to get sense of what ScrollFire can do for you. This is the ScrollFire code that we have used on this page.

                -
                -    
                -    var options = [
                -      {selector: '#staggered-test', offset: 50, callback: function(el) {
                -        Materialize.toast("This is our ScrollFire Demo!", 1500 );
                -      } },
                -      {selector: '#staggered-test', offset: 205, callback: function(el) {
                -        Materialize.toast("Please continue scrolling!", 1500 );
                -      } },
                -      {selector: '#staggered-test', offset: 400, callback: function(el) {
                -        Materialize.showStaggeredList($(el));
                -      } },
                -      {selector: '#image-test', offset: 500, callback: function(el) {
                -        Materialize.fadeInImage($(el));
                -      } }
                -    ];
                -    Materialize.scrollFire(options);
                -        
                - - - -
                - - - -
                - -
                -
                -
                - - -
                - -
                -
                - -
                -
                - - - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/scrollspy.html b/node_modules/materialize-css/scrollspy.html deleted file mode 100644 index fd03a95..0000000 --- a/node_modules/materialize-css/scrollspy.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - Scrollspy - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                Introduction

                -

                Scrollspy is a jQuery plugin that tracks certain elements and which element the user's screen is currently centered on. Our main demo of this is our table of contents on every documentation page to the right. Clicking on these links will also scroll the page to that element.

                -
                - - -
                -

                Table of Contents Structure

                -
                
                -  <div class="row">
                -    <div class="col s12 m9 l10">
                -      <div id="introduction" class="section scrollspy">
                -        <p>Content </p>
                -      </div>
                -
                -      <div id="structure" class="section scrollspy">
                -        <p>Content </p>
                -      </div>
                -
                -      <div id="initialization" class="section scrollspy">
                -        <p>Content </p>
                -      </div>
                -    </div>
                -    <div class="col hide-on-small-only m3 l2">
                -      <ul class="section table-of-contents">
                -        <li><a href="#introduction">Introduction</a></li>
                -        <li><a href="#structure">Structure</a></li>
                -        <li><a href="#initialization">Intialization</a></li>
                -      </ul>
                -    </div>
                -  </div>
                -        
                -
                - - -
                -

                jQuery Plugin Initialization

                -
                
                -  $(document).ready(function(){
                -    $('.scrollspy').scrollSpy();
                -  });
                -        
                -
                - - -
                -

                jQuery Plugin Options

                - - - - - - - - - - - - - - -
                Option NameDescription
                scrollOffsetOffset for centering element when scrolled to. Default: 200
                -
                - -
                - - -
                -
                -
                - - -
                - -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/shadow.html b/node_modules/materialize-css/shadow.html deleted file mode 100644 index 2307d8f..0000000 --- a/node_modules/materialize-css/shadow.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - Shadow - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                In material design, everything should have a certain z-depth that determines how far raised or close to the page the element is.

                -

                You can easily apply this shadow effect by adding a class="z-depth-2" to an HTML tag. Alternatively you can extend any of these shadows with Sass using @extend .z-depth-2. A z-depth-0 can be used to remove shadows from elements that have z-depths by default.

                -
                -
                -

                -
                -
                -

                -
                -
                -

                -
                -
                -

                -
                -
                -

                -
                -
                -

                -
                -
                -
                
                -    <div class="col s12 m2">
                -      <p class="z-depth-1">z-depth-1</p>
                -    </div>
                -    <div class="col s12 m2">
                -      <p class="z-depth-2">z-depth-2</p>
                -    </div>
                -    <div class="col s12 m2">
                -      <p class="z-depth-3">z-depth-3</p>
                -    </div>
                -    <div class="col s12 m2">
                -      <p class="z-depth-4">z-depth-4</p>
                -    </div>
                -    <div class="col s12 m2">
                -      <p class="z-depth-5">z-depth-5</p>
                -    </div>
                -        
                -
                -
                - -
                -
                -
                - - -
                -
                - -
                -
                -
                - -
                -
                -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/showcase.html b/node_modules/materialize-css/showcase.html deleted file mode 100644 index b0ee4df..0000000 --- a/node_modules/materialize-css/showcase.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - - - Showcase - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                -
                -

                - Submit your site -

                - - -
                -
                - -
                - - -
                - -
                - -
                Emerald
                -
                -
                - -
                Caliber
                -
                -
                - -
                -
                - -
                Close Heat
                -
                -
                - -
                Stamplay
                -
                -
                - -
                RDX Sports
                -
                -
                - -
                - -
                - -
                Mako
                -
                -
                - -
                Straphq
                -
                -
                - -
                - - -
                - -
                Adbeus
                -
                -
                - -
                -
                - -
                Roboterwelt
                -
                -
                - -
                Joel Cox
                -
                - -
                - -
                -
                - -
                eadBox
                -
                -
                - -
                Webonise
                -
                -
                - -
                Kenya Apps
                -
                - -
                - -
                - -
                - - -
                - - - - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/side-nav.html b/node_modules/materialize-css/side-nav.html deleted file mode 100644 index b3d6de4..0000000 --- a/node_modules/materialize-css/side-nav.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - - - SideNav - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                Introduction

                -

                This is a slide out menu. You can add a dropdown to your sidebar by using our collapsible component. If you want to see a demo, our sidebar will use this on smaller screens. To use this in conjunction with a fullscreen navigation, you have to use two copies of the same UL.

                - - Side nav demo - - - -

                HTML Structure

                -
                
                -  <ul id="slide-out" class="side-nav">
                -    <li><div class="userView">
                -      <div class="background">
                -        <img src="images/office.jpg">
                -      </div>
                -      <a href="#!user"><img class="circle" src="images/yuna.jpg"></a>
                -      <a href="#!name"><span class="white-text name">John Doe</span></a>
                -      <a href="#!email"><span class="white-text email">jdandturk@gmail.com</span></a>
                -    </div></li>
                -    <li><a href="#!"><i class="material-icons">cloud</i>First Link With Icon</a></li>
                -    <li><a href="#!">Second Link</a></li>
                -    <li><div class="divider"></div></li>
                -    <li><a class="subheader">Subheader</a></li>
                -    <li><a class="waves-effect" href="#!">Third Link With Waves</a></li>
                -  </ul>
                -  <a href="#" data-activates="slide-out" class="button-collapse"><i class="material-icons">menu</i></a>
                -        
                -
                - -
                -

                jQuery Plugin Initialization

                -
                
                -  // Initialize collapse button
                -  $(".button-collapse").sideNav();
                -  // Initialize collapsible (uncomment the line below if you use the dropdown variation)
                -  //$('.collapsible').collapsible();
                -        
                -
                - - -
                -

                Options

                -

                You can customize the sideNav by setting your own width and the alignment of the menu.

                -
                
                -  $('.button-collapse').sideNav({
                -      menuWidth: 300, // Default is 300
                -      edge: 'right', // Choose the horizontal origin
                -      closeOnClick: true, // Closes side-nav on <a> clicks, useful for Angular/Meteor
                -      draggable: true // Choose whether you can drag to open on touch screens
                -    }
                -  );
                -        
                -
                - -
                -

                jQuery Plugin Methods

                -

                We have methods to show and hide your sidebar you can use to programmatically control your sidebar.

                -
                
                -  // Show sideNav
                -  $('.button-collapse').sideNav('show');
                -  // Hide sideNav
                -  $('.button-collapse').sideNav('hide');
                -  // Destroy sideNav
                -  $('.button-collapse').sideNav('destroy');
                -        
                -
                - -
                -

                Variations

                -

                - Here are some useful variations and additional elements you can add to your sidebar. -

                - -

                Dropdown HTML Structure

                -

                Add collapsible menus to your sidebar.

                -
                
                -    <ul id="slide-out" class="side-nav">
                -      <li><a href="#!">First Sidebar Link</a></li>
                -      <li><a href="#!">Second Sidebar Link</a></li>
                -      <li class="no-padding">
                -        <ul class="collapsible collapsible-accordion">
                -          <li>
                -            <a class="collapsible-header">Dropdown<i class="material-icons">arrow_drop_down</i></a>
                -            <div class="collapsible-body">
                -              <ul>
                -                <li><a href="#!">First</a></li>
                -                <li><a href="#!">Second</a></li>
                -                <li><a href="#!">Third</a></li>
                -                <li><a href="#!">Fourth</a></li>
                -              </ul>
                -            </div>
                -          </li>
                -        </ul>
                -      </li>
                -    </ul>
                -    <ul class="right hide-on-med-and-down">
                -      <li><a href="#!">First Sidebar Link</a></li>
                -      <li><a href="#!">Second Sidebar Link</a></li>
                -      <li><a class="dropdown-button" href="#!" data-activates="dropdown1">Dropdown<i class="material-icons right">arrow_drop_down</i></a></li>
                -      <ul id='dropdown1' class='dropdown-content'>
                -        <li><a href="#!">First</a></li>
                -        <li><a href="#!">Second</a></li>
                -        <li><a href="#!">Third</a></li>
                -        <li><a href="#!">Fourth</a></li>
                -      </ul>
                -    </ul>
                -    <a href="#" data-activates="slide-out" class="button-collapse"><i class="material-icons">menu</i></a>
                -          

                - -

                Fullscreen HTML Structure

                -

                If you want the menu to be accessible on all screensizes you just have to add a simple helper class show-on-large to the .button-collapse.

                - -
                
                -    <ul id="slide-out" class="side-nav">
                -      <li><a href="#!">First Sidebar Link</a></li>
                -      <li><a href="#!">Second Sidebar Link</a></li>
                -    </ul>
                -    <a href="#" data-activates="slide-out" class="button-collapse show-on-large"><i class="material-icons">menu</i></a>
                -          

                - -

                Fixed HTML Structure

                -

                Add the class fixed to have the sideNav be fixed and open on large screens and hides to the regular functionality on smaller screens. Our sideNav on the left is an example of this.

                -
                
                -    <ul id="slide-out" class="side-nav fixed">
                -      <li><a href="#!">First Sidebar Link</a></li>
                -      <li><a href="#!">Second Sidebar Link</a></li>
                -    </ul>
                -    <a href="#" data-activates="slide-out" class="button-collapse"><i class="material-icons">menu</i></a>
                -          
                -

                If you are planning on using this you will have to offset your content by the width of the side menu. Place the padding on where the offset content will be, which in our case is in header, main and footer.

                -
                
                -    header, main, footer {
                -      padding-left: 300px;
                -    }
                -
                -    @media only screen and (max-width : 992px) {
                -      header, main, footer {
                -        padding-left: 0;
                -      }
                -    }
                -          
                -
                -
                - - -
                - -
                - -
                -
                - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/sitemap.xml b/node_modules/materialize-css/sitemap.xml deleted file mode 100644 index 4371dc7..0000000 --- a/node_modules/materialize-css/sitemap.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - http://materializecss.com/about.html - 2014-11-27 - - - http://materializecss.com/badges.html - 2014-11-27 - - - http://materializecss.com/index.html - 2014-11-27 - - - http://materializecss.com/ - 2014-11-27 - - - http://materializecss.com/getting-started.html - 2014-11-27 - - - http://materializecss.com/collapsible.html - 2014-11-27 - - - http://materializecss.com/bin/materialize-sass_v0.82.zip - 2014-11-27 - - - http://materializecss.com/bin/materialize_v0.82.zip - 2014-11-27 - - - http://materializecss.com/parallax.html - 2014-11-27 - - - http://materializecss.com/sass.html - 2014-11-27 - - diff --git a/node_modules/materialize-css/table.html b/node_modules/materialize-css/table.html deleted file mode 100644 index c066f1b..0000000 --- a/node_modules/materialize-css/table.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - - - Table - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - - -
                -

                Tables are a nice way to organize a lot of data. We provide a few utility classes to help you style your table as easily as possible. In addition, to improve mobile experience, all tables on mobile-screen widths are centered automatically.

                -

                Borderless Table

                -
                -
                -

                Tables are borderless by default.

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                NameItem NameItem Price
                AlvinEclair$0.87
                AlanJellybean$3.76
                JonathanLollipop$7.00
                ShannonKitKat$9.99
                -
                -
                -
                
                -      <table>
                -        <thead>
                -          <tr>
                -              <th data-field="id">Name</th>
                -              <th data-field="name">Item Name</th>
                -              <th data-field="price">Item Price</th>
                -          </tr>
                -        </thead>
                -
                -        <tbody>
                -          <tr>
                -            <td>Alvin</td>
                -            <td>Eclair</td>
                -            <td>$0.87</td>
                -          </tr>
                -          <tr>
                -            <td>Alan</td>
                -            <td>Jellybean</td>
                -            <td>$3.76</td>
                -          </tr>
                -          <tr>
                -            <td>Jonathan</td>
                -            <td>Lollipop</td>
                -            <td>$7.00</td>
                -          </tr>
                -        </tbody>
                -      </table>
                -            
                -
                -
                -
                - -
                -

                Bordered Table

                -
                -
                -

                Add class="bordered" to the table tag for a bordered table

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                NameItem NameItem Price
                AlvinEclair$0.87
                AlanJellybean$3.76
                JonathanLollipop$7.00
                ShannonKitKat$9.99
                -
                -
                -
                - -
                -

                Striped Table

                -
                -
                -

                Add class="striped" to the table tag for a striped table

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                NameItem NameItem Price
                AlvinEclair$0.87
                AlanJellybean$3.76
                JonathanLollipop$7.00
                ShannonKitKat$9.99
                -
                -
                -
                - -
                -

                Highlight Table

                -
                -
                -

                Add class="highlight" to the table tag for a highlight table

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                NameItem NameItem Price
                AlvinEclair$0.87
                AlanJellybean$3.76
                JonathanLollipop$7.00
                ShannonKitKat$9.99
                -
                -
                -
                - -
                -

                Centered Table

                -
                -
                -

                Add class="centered" to the table tag to center align all the text in the table

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                NameItem NameItem Price
                AlvinEclair$0.87
                AlanJellybean$3.76
                JonathanLollipop$7.00
                ShannonKitKat$9.99
                -
                -
                - -
                - -
                -

                Responsive Table

                -
                -
                -

                Add class="responsive-table" to the table tag to make the table horizontally scrollable on smaller screen widths.

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                NameItem NameItem Price
                AlvinEclair$0.87
                AlanJellybean$3.76
                JonathanLollipop$7.00
                ShannonKitKat$9.99
                -
                -
                - -
                - - -
                - -
                -
                -
                - - -
                - -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/tabs.html b/node_modules/materialize-css/tabs.html deleted file mode 100644 index f3b1631..0000000 --- a/node_modules/materialize-css/tabs.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - Tabs - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                Introduction

                -

                The tabs structure consists of an unordered list of tabs that have hashes corresponding to tab ids. Then when you click on each tab, only the container with the corresponding tab id will become visible. You can add the class .disabled to make a tab inaccessible.

                - -
                -
                Variable Width TabsDefault
                - -

                Test 1

                -

                Test 2

                -

                Test 3

                -

                Test 4

                - -
                -
                Fixed Width TabsAdd the .tabs-fixed-width class
                - -

                Test 1

                -

                Test 2

                -

                Test 3

                -

                Test 4

                -

                Test 5

                - -
                -
                Scrollable Tabs Tabs automatically become scrollable
                - -

                Test 5

                -

                Test 6

                -

                Test 7

                -

                Test 8

                -

                Test 9

                -

                Test 10

                -

                Test 11

                -

                Test 12

                -

                Test 13

                -

                Test 14

                -

                Test 15

                -
                - - -
                -

                Tabs HTML Structure

                -
                
                -  <div class="row">
                -    <div class="col s12">
                -      <ul class="tabs">
                -        <li class="tab col s3"><a href="#test1">Test 1</a></li>
                -        <li class="tab col s3"><a class="active" href="#test2">Test 2</a></li>
                -        <li class="tab col s3 disabled"><a href="#test3">Disabled Tab</a></li>
                -        <li class="tab col s3"><a href="#test4">Test 4</a></li>
                -      </ul>
                -    </div>
                -    <div id="test1" class="col s12">Test 1</div>
                -    <div id="test2" class="col s12">Test 2</div>
                -    <div id="test3" class="col s12">Test 3</div>
                -    <div id="test4" class="col s12">Test 4</div>
                -  </div>
                -        
                -
                - -
                -

                jQuery Plugin Initialization

                -

                Tabs are initialized automatically, but if you add tabs dynamically you will have to initialize them like this.

                -
                
                -  $(document).ready(function(){
                -    $('ul.tabs').tabs();
                -  });
                -        
                -
                - -
                -

                jQuery Plugin Methods

                -

                You can programmatically trigger a tab change with our select_tab method. You have to input the id of the tab you want to switch to. In the case of our demo it would be either test1, test2, test3, or test4.

                -
                
                -  $(document).ready(function(){
                -    $('ul.tabs').tabs('select_tab', 'tab_id');
                -  });
                -        
                -
                - - -
                -

                jQuery Plugin Options

                - - - - - - - - - - - - - - - - - - - - - - -
                Option NameDescription
                onShowExecute a callback function when the tab is changed.
                The callback provides a parameter which refers to the current tab being shown.
                swipeableSet to true to enable swipeable tabs. This also uses the responsiveThreshold option. Default: false
                responsiveThresholdThe maximum width of the screen, in pixels, where the swipeable functionality initializes. Default: Infinity
                -
                - - -
                -

                Preselecting a tab

                -

                By default, the first tab is selected. But if this is not what you want, you can preselect a tab by either passing in the hash in the url ex:#test2. Or you can add the class active to the a tag.

                -
                
                -  <li class="tab col s2"><a class="active" href="#test3">Test 3</a></li>
                -        
                -
                - - -
                -

                Linking to an External Page

                -

                By default, Materialize tabs will ignore their default anchor behaviour. To force a tab to behave as a regular hyperlink, just specify the target property of that link! A list of target values may be found here.

                -
                
                -  <li class="tab col s2">
                -    <a target="_blank" href="https://github.com/Dogfalo/materialize">External link in new window</a>
                -  </li>
                -  <li class="tab col s2">
                -    <a target="_self" href="https://github.com/Dogfalo/materialize">External link in same window</a>
                -  </li>
                -        
                -
                - - -
                -

                Swipeable Tabs

                -

                By setting the swipeable option to true, you can enable tabs where you can swipe on touch enabled devices to switch tabs. Make sure you keep the tab content divs in the same wrapping container. You can also set the responsiveThreshold option to a screen width in pixels where the swipeable functionality will activate.

                -

                Note: This is also touch compatible! Try swiping with your finger to scroll through the carousel.

                - -
                Test 1
                -
                Test 2
                -
                Test 3
                - -
                
                -  <ul id="tabs-swipe-demo" class="tabs">
                -    <li class="tab col s3"><a href="#test-swipe-1">Test 1</a></li>
                -    <li class="tab col s3"><a class="active" href="#test-swipe-2">Test 2</a></li>
                -    <li class="tab col s3"><a href="#test-swipe-3">Test 3</a></li>
                -  </ul>
                -  <div id="test-swipe-1" class="col s12 blue">Test 1</div>
                -  <div id="test-swipe-2" class="col s12 red">Test 2</div>
                -  <div id="test-swipe-3" class="col s12 green">Test 3</div>
                -        
                -
                - -
                - - - - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/templates/masonry-template/LICENSE b/node_modules/materialize-css/templates/masonry-template/LICENSE deleted file mode 100644 index c795dcc..0000000 --- a/node_modules/materialize-css/templates/masonry-template/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Materialize - -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. \ No newline at end of file diff --git a/node_modules/materialize-css/templates/masonry-template/background1.jpg b/node_modules/materialize-css/templates/masonry-template/background1.jpg deleted file mode 100644 index e8b388e..0000000 Binary files a/node_modules/materialize-css/templates/masonry-template/background1.jpg and /dev/null differ diff --git a/node_modules/materialize-css/templates/masonry-template/background2.jpg b/node_modules/materialize-css/templates/masonry-template/background2.jpg deleted file mode 100644 index cc0a11c..0000000 Binary files a/node_modules/materialize-css/templates/masonry-template/background2.jpg and /dev/null differ diff --git a/node_modules/materialize-css/templates/masonry-template/background3.jpg b/node_modules/materialize-css/templates/masonry-template/background3.jpg deleted file mode 100644 index 0bc540d..0000000 Binary files a/node_modules/materialize-css/templates/masonry-template/background3.jpg and /dev/null differ diff --git a/node_modules/materialize-css/templates/masonry-template/css/style.css b/node_modules/materialize-css/templates/masonry-template/css/style.css deleted file mode 100644 index d894cbd..0000000 --- a/node_modules/materialize-css/templates/masonry-template/css/style.css +++ /dev/null @@ -1,55 +0,0 @@ -/* Custom Stylesheet */ -/** - * Use this file to override Materialize files so you can update - * the core Materialize files in the future - * - * Made By MaterializeCSS.com - */ - -nav ul a, -nav .brand-logo { - color: #444; -} - -p { - line-height: 2rem; -} - -.button-collapse { - color: #26a69a; -} - -.parallax-container { - min-height: 380px; - line-height: 0; - height: auto; - color: rgba(255,255,255,.9); -} - .parallax-container .section { - width: 100%; - } - -@media only screen and (max-width : 992px) { - .parallax-container .section { - position: absolute; - top: 40%; - } - #index-banner .section { - top: 10%; - } -} - -@media only screen and (max-width : 600px) { - #index-banner .section { - top: 0; - } -} - - -.icon-block { - padding: 0 15px; -} - -footer.page-footer { - margin: 0; -} \ No newline at end of file diff --git a/node_modules/materialize-css/templates/masonry-template/index.html b/node_modules/materialize-css/templates/masonry-template/index.html deleted file mode 100644 index 8ae4e49..0000000 --- a/node_modules/materialize-css/templates/masonry-template/index.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - Parallax Template - Materialize - - - - - - - - -
                -
                -
                -

                -

                Parallax Template

                -
                -
                A modern responsive front-end framework based on Material Design
                -
                - -

                - -
                -
                -
                Unsplashed background img 2
                -
                - - -
                -
                - - -
                -
                -
                -

                -
                Speeds up development
                - -

                We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

                -
                -
                - -
                -
                -

                -
                User Experience Focused
                - -

                By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

                -
                -
                - -
                -
                -

                -
                Easy to work with
                - -

                We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

                -
                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                A modern responsive front-end framework based on Material Design
                -
                -
                -
                -
                Unsplashed background img 2
                -
                - -
                -
                - -
                -
                -

                -

                Contact Us

                -

                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque id nunc nec volutpat. Etiam pellentesque tristique arcu, non consequat magna fermentum ac. Cras ut ultricies eros. Maecenas eros justo, ullamcorper a sapien id, viverra ultrices eros. Morbi sem neque, posuere et pretium eget, bibendum sollicitudin lacus. Aliquam eleifend sollicitudin diam, eu mattis nisl maximus sed. Nulla imperdiet semper molestie. Morbi massa odio, condimentum sed ipsum ac, gravida ultrices erat. Nullam eget dignissim mauris, non tristique erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                A modern responsive front-end framework based on Material Design
                -
                -
                -
                -
                Unsplashed background img 3
                -
                - -
                -
                -
                -
                -
                Company Bio
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                - - -
                -
                -
                Settings
                - -
                -
                -
                Connect
                - -
                -
                -
                - -
                - - - - - - - - - diff --git a/node_modules/materialize-css/templates/masonry-template/js/init.js b/node_modules/materialize-css/templates/masonry-template/js/init.js deleted file mode 100644 index dbc6473..0000000 --- a/node_modules/materialize-css/templates/masonry-template/js/init.js +++ /dev/null @@ -1,16 +0,0 @@ -(function($){ - $(function(){ - - $('.button-collapse').sideNav(); - - - var $container = $('#masonry-grid'); - // initialize - $container.masonry({ - columnWidth: '.col', - itemSelector: '.col', - }); - - - }); // end of document ready -})(jQuery); // end of jQuery name space \ No newline at end of file diff --git a/node_modules/materialize-css/templates/masonry-template/js/masonry.pkgd.min.js b/node_modules/materialize-css/templates/masonry-template/js/masonry.pkgd.min.js deleted file mode 100644 index 628bb12..0000000 --- a/node_modules/materialize-css/templates/masonry-template/js/masonry.pkgd.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Masonry PACKAGED v3.2.2 - * Cascading grid layout library - * http://masonry.desandro.com - * MIT License - * by David DeSandro - */ - -!function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(this),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(){function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;be;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function c(){}function d(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}return a}function e(c){function e(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||f("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=c("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var g=document.body||document.documentElement;g.appendChild(e);var h=j(e);l=200===b(h.width),g.removeChild(e)}}}function h(a){if(e(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var c=j(a);if("none"===c.display)return d();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var h=f.isBorderBox=!(!k||!c[k]||"border-box"!==c[k]),m=0,n=g.length;n>m;m++){var o=g[m],p=c[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=h&&l,y=b(c.width);y!==!1&&(f.width=y+(x?0:r+v));var z=b(c.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}var j,k,l,m=!1;return h}var f="undefined"==typeof console?c:function(a){console.error(a)},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("desandro-get-style-property")):a.getSize=e(a.getStyleProperty)}(window),function(a){function b(a,b){return a[g](b)}function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}function e(a,d){return c(a),b(a,d)}var f,g=function(){if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){for(var b in a)return!1;return b=null,!0}function d(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function e(a,e,f){function h(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}var i=f("transition"),j=f("transform"),k=i&&j,l=!!f("perspective"),m={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[i],n=["transform","transition","transitionDuration","transitionProperty"],o=function(){for(var a={},b=0,c=n.length;c>b;b++){var d=n[b],e=f(d);e&&e!==d&&(a[d]=e)}return a}();b(h.prototype,a.prototype),h.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},h.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},h.prototype.getSize=function(){this.size=e(this.element)},h.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=o[c]||c;b[d]=a[c]}},h.prototype.getPosition=function(){var a=g(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var h=this.layout.size;e-=c?h.paddingLeft:h.paddingRight,f-=d?h.paddingTop:h.paddingBottom,this.position.x=e,this.position.y=f},h.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={};b.isOriginLeft?(c.left=this.position.x+a.paddingLeft+"px",c.right=""):(c.right=this.position.x+a.paddingRight+"px",c.left=""),b.isOriginTop?(c.top=this.position.y+a.paddingTop+"px",c.bottom=""):(c.bottom=this.position.y+a.paddingBottom+"px",c.top=""),this.css(c),this.emitEvent("layout",[this])};var p=l?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};h.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=p(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},h.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},h.prototype.moveTo=k?h.prototype._transitionTo:h.prototype.goTo,h.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},h.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},h.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var q=j&&d(j)+",opacity";h.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:q,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(m,this,!1))},h.prototype.transition=h.prototype[i?"_transition":"_nonTransition"],h.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},h.prototype.onotransitionend=function(a){this.ontransitionend(a)};var r={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};h.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,d=r[a.propertyName]||a.propertyName;if(delete b.ingProperties[d],c(b.ingProperties)&&this.disableTransition(),d in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[d]),d in b.onEnd){var e=b.onEnd[d];e.call(this),delete b.onEnd[d]}this.emitEvent("transitionEnd",[this])}},h.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(m,this,!1),this.isTransitioning=!1},h.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var s={transitionProperty:"",transitionDuration:""};return h.prototype.removeTransitionStyles=function(){this.css(s)},h.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.emitEvent("remove",[this])},h.prototype.remove=function(){if(!i||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.on("transitionEnd",function(){return a.removeElem(),!0}),this.hide()},h.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options;this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0})},h.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options;this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:{opacity:function(){this.isHidden&&this.css({display:"none"})}}})},h.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},h}var f=a.getComputedStyle,g=f?function(a){return f(a,null)}:function(a){return a.currentStyle};"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property")):(a.Outlayer={},a.Outlayer.Item=e(a.EventEmitter,a.getSize,a.getStyleProperty))}(window),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){return"[object Array]"===l.call(a)}function d(a){var b=[];if(c(a))b=a;else if(a&&"number"==typeof a.length)for(var d=0,e=a.length;e>d;d++)b.push(a[d]);else b.push(a);return b}function e(a,b){var c=n(b,a);-1!==c&&b.splice(c,1)}function f(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()}function g(c,g,l,n,o,p){function q(a,c){if("string"==typeof a&&(a=h.querySelector(a)),!a||!m(a))return void(i&&i.error("Bad "+this.constructor.namespace+" element: "+a));this.element=a,this.options=b({},this.constructor.defaults),this.option(c);var d=++r;this.element.outlayerGUID=d,s[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var r=0,s={};return q.namespace="outlayer",q.Item=p,q.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},b(q.prototype,l.prototype),q.prototype.option=function(a){b(this.options,a)},q.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),b(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},q.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},q.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},q.prototype._filterFindItemElements=function(a){a=d(a);for(var b=this.options.itemSelector,c=[],e=0,f=a.length;f>e;e++){var g=a[e];if(m(g))if(b){o(g,b)&&c.push(g);for(var h=g.querySelectorAll(b),i=0,j=h.length;j>i;i++)c.push(h[i])}else c.push(g)}return c},q.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},q.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},q.prototype._init=q.prototype.layout,q.prototype._resetLayout=function(){this.getSize()},q.prototype.getSize=function(){this.size=n(this.element)},q.prototype._getMeasurement=function(a,b){var c,d=this.options[a];d?("string"==typeof d?c=this.element.querySelector(d):m(d)&&(c=d),this[a]=c?n(c)[b]:d):this[a]=0},q.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},q.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},q.prototype._layoutItems=function(a,b){function c(){d.emitEvent("layoutComplete",[d,a])}var d=this;if(!a||!a.length)return void c();this._itemsOn(a,"layout",c);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f],i=this._getItemLayoutPosition(h);i.item=h,i.isInstant=b||h.isLayoutInstant,e.push(i)}this._processLayoutQueue(e)},q.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},q.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},q.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},q.prototype._postLayout=function(){this.resizeContainer()},q.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},q.prototype._getContainerSize=k,q.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},q.prototype._itemsOn=function(a,b,c){function d(){return e++,e===f&&c.call(g),!0}for(var e=0,f=a.length,g=this,h=0,i=a.length;i>h;h++){var j=a[h];j.on(b,d)}},q.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},q.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},q.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},q.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e(d,this.stamps),this.unignore(d)}},q.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=d(a)):void 0},q.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},q.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},q.prototype._manageStamp=k,q.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,d=n(a),e={left:b.left-c.left-d.marginLeft,top:b.top-c.top-d.marginTop,right:c.right-b.right-d.marginRight,bottom:c.bottom-b.bottom-d.marginBottom};return e},q.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},q.prototype.bindResize=function(){this.isResizeBound||(c.bind(a,"resize",this),this.isResizeBound=!0)},q.prototype.unbindResize=function(){this.isResizeBound&&c.unbind(a,"resize",this),this.isResizeBound=!1},q.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},q.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},q.prototype.needsResizeLayout=function(){var a=n(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},q.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},q.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},q.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},q.prototype.reveal=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.reveal()}},q.prototype.hide=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.hide()}},q.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},q.prototype.getItems=function(a){if(a&&a.length){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c],f=this.getItem(e);f&&b.push(f)}return b}},q.prototype.remove=function(a){a=d(a);var b=this.getItems(a);if(b&&b.length){this._itemsOn(b,"remove",function(){this.emitEvent("removeComplete",[this,b])});for(var c=0,f=b.length;f>c;c++){var g=b[c];g.remove(),e(g,this.items)}}},q.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize();var e=this.element.outlayerGUID;delete s[e],delete this.element.outlayerGUID,j&&j.removeData(this.element,this.constructor.namespace)},q.data=function(a){var b=a&&a.outlayerGUID;return b&&s[b]},q.create=function(a,c){function d(){q.apply(this,arguments)}return Object.create?d.prototype=Object.create(q.prototype):b(d.prototype,q.prototype),d.prototype.constructor=d,d.defaults=b({},q.defaults),b(d.defaults,c),d.prototype.settings={},d.namespace=a,d.data=q.data,d.Item=function(){p.apply(this,arguments)},d.Item.prototype=new p,g(function(){for(var b=f(a),c=h.querySelectorAll(".js-"+b),e="data-"+b+"-options",g=0,k=c.length;k>g;g++){var l,m=c[g],n=m.getAttribute(e);try{l=n&&JSON.parse(n)}catch(o){i&&i.error("Error parsing "+e+" on "+m.nodeName.toLowerCase()+(m.id?"#"+m.id:"")+": "+o);continue}var p=new d(m,l);j&&j.data(m,a,p)}}),j&&j.bridget&&j.bridget(a,d),d},q.Item=p,q}var h=a.document,i=a.console,j=a.jQuery,k=function(){},l=Object.prototype.toString,m="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName},n=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1};"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","doc-ready/doc-ready","eventEmitter/EventEmitter","get-size/get-size","matches-selector/matches-selector","./item"],g):"object"==typeof exports?module.exports=g(require("eventie"),require("doc-ready"),require("wolfy87-eventemitter"),require("get-size"),require("desandro-matches-selector"),require("./item")):a.Outlayer=g(a.eventie,a.docReady,a.EventEmitter,a.getSize,a.matchesSelector,a.Outlayer.Item)}(window),function(a){function b(a,b){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}this.columnWidth+=this.gutter,this.cols=Math.floor((this.containerWidth+this.gutter)/this.columnWidth),this.cols=Math.max(this.cols,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}var c=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++){var e=a[c];if(e===b)return c}return-1};"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size")):a.Masonry=b(a.Outlayer,a.getSize)}(window); \ No newline at end of file diff --git a/node_modules/materialize-css/templates/masonry-template/preview.html b/node_modules/materialize-css/templates/masonry-template/preview.html deleted file mode 100644 index 127c87e..0000000 --- a/node_modules/materialize-css/templates/masonry-template/preview.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - Parallax Template - Materialize - - - - - - - - -
                -
                -

                -

                Parallax Template

                -
                -
                A modern responsive front-end framework based on Material Design
                -
                - -

                - - -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                - - Card Title -
                -
                -

                - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information.

                -
                - -
                -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                - - - -
                -
                -
                -
                -
                Company Bio
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                - - -
                -
                -
                Settings
                - -
                -
                -
                Connect
                - -
                -
                -
                - -
                - - - - - - - - - - diff --git a/node_modules/materialize-css/templates/parallax-template.zip b/node_modules/materialize-css/templates/parallax-template.zip deleted file mode 100644 index c33fab2..0000000 Binary files a/node_modules/materialize-css/templates/parallax-template.zip and /dev/null differ diff --git a/node_modules/materialize-css/templates/parallax-template/LICENSE b/node_modules/materialize-css/templates/parallax-template/LICENSE deleted file mode 100644 index c795dcc..0000000 --- a/node_modules/materialize-css/templates/parallax-template/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Materialize - -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. \ No newline at end of file diff --git a/node_modules/materialize-css/templates/parallax-template/background1.jpg b/node_modules/materialize-css/templates/parallax-template/background1.jpg deleted file mode 100644 index e8b388e..0000000 Binary files a/node_modules/materialize-css/templates/parallax-template/background1.jpg and /dev/null differ diff --git a/node_modules/materialize-css/templates/parallax-template/background2.jpg b/node_modules/materialize-css/templates/parallax-template/background2.jpg deleted file mode 100644 index 0bc540d..0000000 Binary files a/node_modules/materialize-css/templates/parallax-template/background2.jpg and /dev/null differ diff --git a/node_modules/materialize-css/templates/parallax-template/background3.jpg b/node_modules/materialize-css/templates/parallax-template/background3.jpg deleted file mode 100644 index cc0a11c..0000000 Binary files a/node_modules/materialize-css/templates/parallax-template/background3.jpg and /dev/null differ diff --git a/node_modules/materialize-css/templates/parallax-template/css/style.css b/node_modules/materialize-css/templates/parallax-template/css/style.css deleted file mode 100644 index 4fa3c90..0000000 --- a/node_modules/materialize-css/templates/parallax-template/css/style.css +++ /dev/null @@ -1,57 +0,0 @@ -/* Custom Stylesheet */ -/** - * Use this file to override Materialize files so you can update - * the core Materialize files in the future - * - * Made By MaterializeCSS.com - */ - -nav ul a, -nav .brand-logo { - color: #444; -} - -p { - line-height: 2rem; -} - -.button-collapse { - color: #26a69a; -} - -.parallax-container { - min-height: 380px; - line-height: 0; - height: auto; - color: rgba(255,255,255,.9); -} - .parallax-container .section { - width: 100%; - } - -@media only screen and (max-width : 992px) { - .parallax-container .section { - position: absolute; - top: 40%; - } - #index-banner .section { - top: 10%; - } -} - -@media only screen and (max-width : 600px) { - #index-banner .section { - top: 0; - } -} - -.icon-block { - padding: 0 15px; -} -.icon-block .material-icons { - font-size: inherit; -} - -footer.page-footer { - margin: 0; -} \ No newline at end of file diff --git a/node_modules/materialize-css/templates/parallax-template/index.html b/node_modules/materialize-css/templates/parallax-template/index.html deleted file mode 100644 index 97ee74d..0000000 --- a/node_modules/materialize-css/templates/parallax-template/index.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - Parallax Template - Materialize - - - - - - - - - -
                -
                -
                -

                -

                Parallax Template

                -
                -
                A modern responsive front-end framework based on Material Design
                -
                - -

                - -
                -
                -
                Unsplashed background img 1
                -
                - - -
                -
                - - -
                -
                -
                -

                flash_on

                -
                Speeds up development
                - -

                We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

                -
                -
                - -
                -
                -

                group

                -
                User Experience Focused
                - -

                By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

                -
                -
                - -
                -
                -

                settings

                -
                Easy to work with
                - -

                We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

                -
                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                A modern responsive front-end framework based on Material Design
                -
                -
                -
                -
                Unsplashed background img 2
                -
                - -
                -
                - -
                -
                -

                -

                Contact Us

                -

                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque id nunc nec volutpat. Etiam pellentesque tristique arcu, non consequat magna fermentum ac. Cras ut ultricies eros. Maecenas eros justo, ullamcorper a sapien id, viverra ultrices eros. Morbi sem neque, posuere et pretium eget, bibendum sollicitudin lacus. Aliquam eleifend sollicitudin diam, eu mattis nisl maximus sed. Nulla imperdiet semper molestie. Morbi massa odio, condimentum sed ipsum ac, gravida ultrices erat. Nullam eget dignissim mauris, non tristique erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                A modern responsive front-end framework based on Material Design
                -
                -
                -
                -
                Unsplashed background img 3
                -
                - -
                -
                -
                -
                -
                Company Bio
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                - - -
                -
                -
                Settings
                - -
                -
                -
                Connect
                - -
                -
                -
                - -
                - - - - - - - - - diff --git a/node_modules/materialize-css/templates/parallax-template/js/init.js b/node_modules/materialize-css/templates/parallax-template/js/init.js deleted file mode 100644 index d9e58b7..0000000 --- a/node_modules/materialize-css/templates/parallax-template/js/init.js +++ /dev/null @@ -1,8 +0,0 @@ -(function($){ - $(function(){ - - $('.button-collapse').sideNav(); - $('.parallax').parallax(); - - }); // end of document ready -})(jQuery); // end of jQuery name space \ No newline at end of file diff --git a/node_modules/materialize-css/templates/parallax-template/preview.html b/node_modules/materialize-css/templates/parallax-template/preview.html deleted file mode 100644 index 1d64209..0000000 --- a/node_modules/materialize-css/templates/parallax-template/preview.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - Parallax Template - Materialize - - - - - - - - - -
                -
                -
                -

                -

                Parallax Template

                -
                -
                A modern responsive front-end framework based on Material Design
                -
                - -

                - -
                -
                -
                Unsplashed background img 1
                -
                - - -
                -
                - - -
                -
                -
                -

                flash_on

                -
                Speeds up development
                - -

                We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

                -
                -
                - -
                -
                -

                group

                -
                User Experience Focused
                - -

                By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

                -
                -
                - -
                -
                -

                settings

                -
                Easy to work with
                - -

                We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

                -
                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                A modern responsive front-end framework based on Material Design
                -
                -
                -
                -
                Unsplashed background img 2
                -
                - -
                -
                - -
                -
                -

                -

                Contact Us

                -

                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque id nunc nec volutpat. Etiam pellentesque tristique arcu, non consequat magna fermentum ac. Cras ut ultricies eros. Maecenas eros justo, ullamcorper a sapien id, viverra ultrices eros. Morbi sem neque, posuere et pretium eget, bibendum sollicitudin lacus. Aliquam eleifend sollicitudin diam, eu mattis nisl maximus sed. Nulla imperdiet semper molestie. Morbi massa odio, condimentum sed ipsum ac, gravida ultrices erat. Nullam eget dignissim mauris, non tristique erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

                -
                -
                - -
                -
                - - -
                -
                -
                -
                -
                A modern responsive front-end framework based on Material Design
                -
                -
                -
                -
                Unsplashed background img 3
                -
                - -
                -
                -
                -
                -
                Company Bio
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                - - -
                -
                -
                Settings
                - -
                -
                -
                Connect
                - -
                -
                -
                - -
                - - - - - - - - - diff --git a/node_modules/materialize-css/templates/starter-template.zip b/node_modules/materialize-css/templates/starter-template.zip deleted file mode 100644 index b04490e..0000000 Binary files a/node_modules/materialize-css/templates/starter-template.zip and /dev/null differ diff --git a/node_modules/materialize-css/templates/starter-template/LICENSE b/node_modules/materialize-css/templates/starter-template/LICENSE deleted file mode 100644 index c795dcc..0000000 --- a/node_modules/materialize-css/templates/starter-template/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Materialize - -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. \ No newline at end of file diff --git a/node_modules/materialize-css/templates/starter-template/css/style.css b/node_modules/materialize-css/templates/starter-template/css/style.css deleted file mode 100644 index 2e8db1f..0000000 --- a/node_modules/materialize-css/templates/starter-template/css/style.css +++ /dev/null @@ -1,14 +0,0 @@ -/* Custom Stylesheet */ -/** - * Use this file to override Materialize files so you can update - * the core Materialize files in the future - * - * Made By MaterializeCSS.com - */ - -.icon-block { - padding: 0 15px; -} -.icon-block .material-icons { - font-size: inherit; -} \ No newline at end of file diff --git a/node_modules/materialize-css/templates/starter-template/index.html b/node_modules/materialize-css/templates/starter-template/index.html deleted file mode 100644 index d71383b..0000000 --- a/node_modules/materialize-css/templates/starter-template/index.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Starter Template - Materialize - - - - - - - - -
                -
                -

                -

                Starter Template

                -
                -
                A modern responsive front-end framework based on Material Design
                -
                - -

                - -
                -
                - - -
                -
                - - -
                -
                -
                -

                flash_on

                -
                Speeds up development
                - -

                We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

                -
                -
                - -
                -
                -

                group

                -
                User Experience Focused
                - -

                By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

                -
                -
                - -
                -
                -

                settings

                -
                Easy to work with
                - -

                We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

                -
                -
                -
                - -
                -

                - -
                - -
                -
                - -
                -
                -
                -
                -
                Company Bio
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                - - -
                -
                -
                Settings
                - -
                -
                -
                Connect
                - -
                -
                -
                - -
                - - - - - - - - - diff --git a/node_modules/materialize-css/templates/starter-template/js/init.js b/node_modules/materialize-css/templates/starter-template/js/init.js deleted file mode 100644 index 01938d5..0000000 --- a/node_modules/materialize-css/templates/starter-template/js/init.js +++ /dev/null @@ -1,7 +0,0 @@ -(function($){ - $(function(){ - - $('.button-collapse').sideNav(); - - }); // end of document ready -})(jQuery); // end of jQuery name space \ No newline at end of file diff --git a/node_modules/materialize-css/templates/starter-template/preview.html b/node_modules/materialize-css/templates/starter-template/preview.html deleted file mode 100644 index d4852c5..0000000 --- a/node_modules/materialize-css/templates/starter-template/preview.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Starter Template - Materialize - - - - - - - - -
                -
                -

                -

                Starter Template

                -
                -
                A modern responsive front-end framework based on Material Design
                -
                - -

                - -
                -
                - - -
                -
                - - -
                -
                -
                -

                flash_on

                -
                Speeds up development
                - -

                We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

                -
                -
                - -
                -
                -

                group

                -
                User Experience Focused
                - -

                By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

                -
                -
                - -
                -
                -

                settings

                -
                Easy to work with
                - -

                We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

                -
                -
                -
                - -
                -

                - -
                - -
                -
                - -
                -
                -
                -
                -
                Company Bio
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                - - -
                -
                -
                Settings
                - -
                -
                -
                Connect
                - -
                -
                -
                - -
                - - - - - - - - - diff --git a/node_modules/materialize-css/test.html b/node_modules/materialize-css/test.html deleted file mode 100644 index 12fe9ec..0000000 --- a/node_modules/materialize-css/test.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - - - - - - - - - - -

                One common flaw we've seen in many frameworks is a lack of support for truly responsive text. While elements on the page resize fluidly, text still resizes on a fixed basis. To ameliorate this problem, for text heavy pages, we've created a class that fluidly scales text size and line-height to optimize readability for the user. Line length stays between 45-80 characters and line height scales to be larger on smaller screens. - -

                - - - -
                  -
                • -
                • -
                • -
                • -
                -
                - -

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                - - Modal - - - - - - - - - - - - - - - - - -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                -

                yo

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/badges.html b/node_modules/materialize-css/test/html/badges.html deleted file mode 100644 index 3fea59e..0000000 --- a/node_modules/materialize-css/test/html/badges.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - -
                -

                Badges

                - -

                Collection

                - - -

                Dropdown

                - - -

                Nav

                - -
                - - - -

                Collapsible

                -
                -
                -
                  -
                • -
                  4filter_dramaVery long title Very long title Very long title Very long title Very long title
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  4filter_dramaVery long title Very long title Very long title Very long title Very long title
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  4filter_dramaVery long title Very long title Very long title Very long title Very long title
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  1placeVery long title Very long title Very long title Very long title Very long title
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  whatshotThird
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                -
                -
                - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/test/html/buttons.html b/node_modules/materialize-css/test/html/buttons.html deleted file mode 100644 index 87fa995..0000000 --- a/node_modules/materialize-css/test/html/buttons.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Documentation - Materialize - - - - - -
                -
                -

                - Anchors -

                - - btn-flat waves-red - - - btn-flat btn-large waves-red - -

                - Buttons -

                - - -
                -
                - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/cards.html b/node_modules/materialize-css/test/html/cards.html deleted file mode 100644 index 3e1a6f8..0000000 --- a/node_modules/materialize-css/test/html/cards.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - -
                -
                -
                -
                - -
                -
                - Card Titlemore_vert -
                - - - -
                - Card Titlemore_vert -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                This is the last content

                -
                -
                -
                - -
                -
                -
                - -
                -
                - Card Titlemore_vert -
                - -
                - Card Titlemore_vert -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                There's content here

                -

                This is the last content

                -
                - - -
                -
                - -
                - -
                -

                Card Sizes

                -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively. - 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. -

                -
                - -
                -
                -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively. - 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. 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. -

                -
                -
                -
                -
                - -
                -

                Horizontal Card

                -
                -
                -
                - -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                - -
                -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                - -
                -
                -
                - -
                -
                -
                - -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                -
                -
                -
                - -
                -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                -
                -
                - -
                -
                -
                - -
                -
                -
                - -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                - -
                -
                -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                - -
                -
                -
                -
                - - -
                -

                Halfway FABs

                -
                -
                -
                - - Card Title - add -
                -
                -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                - -
                -
                -
                - - add -
                -
                - Card Title -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/carousel.html b/node_modules/materialize-css/test/html/carousel.html deleted file mode 100644 index 10b4b72..0000000 --- a/node_modules/materialize-css/test/html/carousel.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - -

                Carousel within collapsible

                -
                  -
                • -
                  filter_dramaFirst
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  placeSecond
                  -
                  - -
                  -
                • -
                • -
                  whatshotThird
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/chips.html b/node_modules/materialize-css/test/html/chips.html deleted file mode 100644 index 3cba819..0000000 --- a/node_modules/materialize-css/test/html/chips.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - - - -
                -
                - -
                -
                -
                Default:
                -
                -
                -
                - - -
                -
                -
                - -
                -
                -
                -
                -
                -
                Modified proposal:
                -
                -
                -
                - phone - - -
                -
                - bookmark -
                - -
                -
                - bookmark -
                - -
                -
                -
                -
                - - - - - - - - - - - diff --git a/node_modules/materialize-css/test/html/collapsible.html b/node_modules/materialize-css/test/html/collapsible.html deleted file mode 100644 index cfd458c..0000000 --- a/node_modules/materialize-css/test/html/collapsible.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - Documentation - Materialize - - - - -
                -
                -

                Collapsible Header Text Wrap

                -
                  -
                • -
                  Second really long title that should overlap on most screens that aren't incredibly big and wide. Second really long title that should overlap on most screens that aren't incredibly big and wide. Second really long title that should overlap on most screens that aren't incredibly big and wide.
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - -
                -
                - -

                Add dynamically to both expandable and collapsible

                -
                  -
                • -
                  First
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - -
                -
                - -
                -

                Active classes for initial open for both.

                -
                -
                  -
                • -
                  First
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Second ACTIVE
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Third
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                -
                -
                -
                  -
                • -
                  First ACTIVE
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Third ACTIVE
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                -
                -
                - - -

                Nested Collapsible

                - -
                  -
                • -
                  First
                  -
                  -
                    -
                  • -
                    First
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Second
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Third
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  -
                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Third
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - - - -
                  -
                • -
                  First
                  -
                  -
                    -
                  • -
                    First
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Second
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Third
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  -
                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Third
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                -
                -

                Collapsible Callbacks

                -
                  -
                • -
                  onOpen
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  onClose
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/dropdown.html b/node_modules/materialize-css/test/html/dropdown.html deleted file mode 100644 index 5881715..0000000 --- a/node_modules/materialize-css/test/html/dropdown.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                - -Align left: -+ - - -

                - -Align right: -------------------------------- -+ - - - - -
                -
                - - - - - -
                - -
                -

                Scrolling in absolute container

                - + -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                s -
                - - - - - - - - - - - - -

                asdf

                -

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                asdf

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/test/html/fixed_navbar.html b/node_modules/materialize-css/test/html/fixed_navbar.html deleted file mode 100644 index 0eb16a4..0000000 --- a/node_modules/materialize-css/test/html/fixed_navbar.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - - - -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                -

                Testing

                -
                - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/forms.html b/node_modules/materialize-css/test/html/forms.html deleted file mode 100644 index bcd5ee8..0000000 --- a/node_modules/materialize-css/test/html/forms.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - - - - -
                -
                -
                -
                - account_circle - - -
                -
                - - -
                -
                - - -
                -
                -
                -
                - - -
                -
                -
                -
                - - -
                -
                -
                -
                - email - - -
                -
                -
                -

                Make sure these textareas are aligned correctly.

                -
                - mode_edit - - -
                -
                - - -
                -
                -
                -

                Make sure error message and label don't overlap.

                -
                - - -
                -
                - - -
                -
                -
                -
                - - -
                -
                - -

                Select

                - -
                -
                - - -
                - - - -
                - - -
                - - - -
                - - -
                -
                - - - -
                -
                - - -
                - - -
                - - -
                -
                - - -
                -
                - - -
                - -
                - - -
                -
                - -
                -
                - This is an inline select: -
                - - -
                -
                -
                - -
                -

                Select Icons

                -
                - - -
                - -
                - - -
                -
                - - -
                -

                - -

                -
                - - - - - - - - - - - - diff --git a/node_modules/materialize-css/test/html/materialbox.html b/node_modules/materialize-css/test/html/materialbox.html deleted file mode 100644 index 1e94872..0000000 --- a/node_modules/materialize-css/test/html/materialbox.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Documentation - Materialize - - - - - -
                - -
                -
                -
                - -
                -
                - Materialbox inside card image -
                -
                -
                -
                - -
                -
                -
                -
                - -
                -
                - Card Titlemore_vert - -

                This is a link

                -
                - - - -
                - Card Titleclose -

                Here is some more information about this product that is only revealed once clicked on.

                -
                -
                -
                -
                - -
                - -
                -
                -

                Materialbox inside transformed parent

                - -
                -
                -
                - - -
                  -
                  -
                  Materialbox inside fixed navbar -
                - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/multiple_modals.html b/node_modules/materialize-css/test/html/multiple_modals.html deleted file mode 100644 index f45ce4f..0000000 --- a/node_modules/materialize-css/test/html/multiple_modals.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - - - Regular Modals - - - - - - - - - Fixed Footer Modals - - - - - - - - - - Bottom Sheet Modals - - - - - - - - - - - - - - - - - - diff --git a/node_modules/materialize-css/test/html/multiple_sidenav.html b/node_modules/materialize-css/test/html/multiple_sidenav.html deleted file mode 100644 index 079e3dc..0000000 --- a/node_modules/materialize-css/test/html/multiple_sidenav.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/overlayZindex.html b/node_modules/materialize-css/test/html/overlayZindex.html deleted file mode 100644 index f88c362..0000000 --- a/node_modules/materialize-css/test/html/overlayZindex.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - - - - - - menu - - - Modal - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/pushpin.html b/node_modules/materialize-css/test/html/pushpin.html deleted file mode 100644 index 784cfe7..0000000 --- a/node_modules/materialize-css/test/html/pushpin.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Documentation - Materialize - - - - -



                - - - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - scroll
                - -
                - scrollTop: 0 -
                - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/scrollfire.html b/node_modules/materialize-css/test/html/scrollfire.html deleted file mode 100644 index 0a8d36f..0000000 --- a/node_modules/materialize-css/test/html/scrollfire.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                - - -
                - scrollTop: 0 -
                - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/scrollspy.html b/node_modules/materialize-css/test/html/scrollspy.html deleted file mode 100644 index 16a466a..0000000 --- a/node_modules/materialize-css/test/html/scrollspy.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - -
                -
                -
                -
                - - -
                - scrollTop: 0 -
                - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test/html/tabs.html b/node_modules/materialize-css/test/html/tabs.html deleted file mode 100644 index 7c1b4a6..0000000 --- a/node_modules/materialize-css/test/html/tabs.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Materialize - Documentation - - - - - - - - - - - - - - - - - - - - -

                Variable Width

                - -
                Test 1
                -
                Test 2
                -
                Test 3
                -
                Test 4
                - - -

                Fixed Width

                - -
                Test 1
                -
                Test 2
                -
                Test 3
                -
                Test 4
                - -

                Navbar in nav-extended

                - - -
                Test 1
                -
                Test 2
                -
                Test 3
                -
                Test 4
                - - - - - - - - - - diff --git a/node_modules/materialize-css/test/html/waves.html b/node_modules/materialize-css/test/html/waves.html deleted file mode 100644 index e7db2f4..0000000 --- a/node_modules/materialize-css/test/html/waves.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - Documentation - Materialize - - - - - -
                - -
                -

                Image waves

                -
                - -
                -
                -
                -

                Card image waves

                -
                -
                - -
                -
                - Card Titlemore_vert - -

                This is a link

                -
                -
                -
                -
                -

                Card reveal image waves

                -
                -
                - -
                -
                - Card Titlemore_vert -

                This is a link

                -
                -
                - Card Titleclose -

                Here is some more information about this product that is only revealed once clicked on.

                -
                -
                -
                -
                - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/test2.html b/node_modules/materialize-css/test2.html deleted file mode 100644 index 5ccb800..0000000 --- a/node_modules/materialize-css/test2.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - Documentation - Materialize - - - - - - - - -
                  -
                • -
                  First
                  -
                  -
                    -
                  • -
                    First
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Second
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Third
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  -
                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Third
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - - - -
                  -
                • -
                  First
                  -
                  -
                    -
                  • -
                    First
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Second
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  • -
                    Third
                    -

                    Lorem ipsum dolor sit amet.

                    -
                  • -
                  -
                  -
                • -
                • -
                  Second
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  Third
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/autocomplete/autocompleteFixture.html b/node_modules/materialize-css/tests/spec/autocomplete/autocompleteFixture.html deleted file mode 100644 index 7b9ec83..0000000 --- a/node_modules/materialize-css/tests/spec/autocomplete/autocompleteFixture.html +++ /dev/null @@ -1,18 +0,0 @@ -
                -
                -
                -
                - - -
                -
                -
                -
                -
                -
                - - -
                -
                -
                -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/autocomplete/autocompleteSpec.js b/node_modules/materialize-css/tests/spec/autocomplete/autocompleteSpec.js deleted file mode 100644 index d49ac5a..0000000 --- a/node_modules/materialize-css/tests/spec/autocomplete/autocompleteSpec.js +++ /dev/null @@ -1,70 +0,0 @@ -describe("Autocomplete Plugin", function () { - beforeEach(function() { - loadFixtures('autocomplete/autocompleteFixture.html'); - $('input.autocomplete').autocomplete({ - data: { - "Apple": null, - "Microsoft": null, - "Google": 'http://placehold.it/250x250' - } - }); - }); - - describe("Autocomplete", function () { - // var browserSelect, normalInput, normalDropdown; - - // beforeEach(function() { - // browserSelect = $('select.normal'); - // }); - - it("should work with multiple initializations", function () { - var $normal = $('#normal-autocomplete'); - var $parent = $normal.parent(); - $normal.autocomplete({ data: {"hi": null} }); - $normal.autocomplete({ data: {"hi": null} }); - $normal.autocomplete({ data: {"hi": null} }); - $normal.autocomplete({ - data: { - "Apple": null, - "Microsoft": null, - "Google": 'http://placehold.it/250x250' - } - }); - - var $autocompleteEl = $parent.find('.autocomplete-content'); - var autocompleteEvents = $._data($normal[0], 'events'); - - expect($autocompleteEl.length).toEqual(1, 'Should dynamically generate autocomplete structure.'); - expect(autocompleteEvents.keyup.length).toEqual(1, 'Should only bind 1 keyup handler on input'); - // setTimeout(function() { - // done(); - // }, 400); - }); - - it("should limit results if option is set", function (done) { - var $limited = $('#limited-autocomplete'); - var data = {}; - for (var i = 100; i >= 0; i--) { - var randString = 'a' + Math.random().toString(36).substring(20); - data[randString] = null; - } - - $limited.autocomplete({ - data: data, - limit: 20 - }); - - $limited.focus(); - $limited.val('a'); - $limited.trigger('keyup'); - - var $autocompleteEl = $limited.parent().find('.autocomplete-content'); - setTimeout(function() { - expect($autocompleteEl.children().length).toBeLessThan(21, 'Results should be at max the set limit'); - done(); - }, 200); - - }); - }); - -}); diff --git a/node_modules/materialize-css/tests/spec/cards/cardsFixture.html b/node_modules/materialize-css/tests/spec/cards/cardsFixture.html deleted file mode 100644 index dac4f78..0000000 --- a/node_modules/materialize-css/tests/spec/cards/cardsFixture.html +++ /dev/null @@ -1,80 +0,0 @@ -
                -
                -
                -
                - -
                -
                - Card Titlemore_vert -

                This is a link

                -
                -
                - Card Titleclose -

                Here is some more information about this product that is only revealed once clicked on.

                -
                -
                - -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                - -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                -
                -
                - - Card Title -
                -
                -

                I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

                -
                - -
                -
                -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/cards/cardsSpec.js b/node_modules/materialize-css/tests/spec/cards/cardsSpec.js deleted file mode 100644 index ffd2da3..0000000 --- a/node_modules/materialize-css/tests/spec/cards/cardsSpec.js +++ /dev/null @@ -1,100 +0,0 @@ -describe( "Cards", function () { - var reveal; - - beforeEach(function() { - loadFixtures('cards/cardsFixture.html'); - }); - - describe("reveal cards", function () { - var revealCard; - - beforeEach(function() { - revealCard = $('.card.reveal'); - }); - - it("should have a hidden card-reveal", function (done) { - var revealDiv = revealCard.find('.card-reveal'); - var activator = revealCard.find('.activator'); - - expect(revealDiv).toBeHidden('reveal div should be hidden initially'); - - activator.click(); - - setTimeout(function() { - expect(revealDiv).toBeVisible('reveal did not appear after activator was clicked.'); - - // Check revealDiv covers reveal card. - expect(revealDiv.outerWidth()).toEqual(revealCard.outerWidth(), 'activator was not as wide as reveal card.'); - expect(revealDiv.outerHeight()).toEqual(revealCard.outerHeight(), 'activator was not as high as reveal card.'); - expect(revealDiv.offset().top).toEqual(revealCard.offset().top, 'activator was not as in the same y as reveal card.'); - expect(revealDiv.offset().left).toEqual(revealCard.offset().left, 'activator was not as in the same x as reveal card.'); - - done(); - }, 400); - - }); - }); - - describe("image cards", function () { - var imageCard; - - beforeEach(function() { - imageCard = $('.card.image'); - }); - - it("should have an image that fills to full width of card", function () { - var image = imageCard.find('.card-image > img'); - - expect(image.outerWidth()).toEqual(imageCard.outerWidth(), 'image does not fill width of card'); - expect(image.offset().top).toEqual(imageCard.offset().top, 'image was not as in the same y as card.'); - }); - }); - - - describe("sized cards", function () { - var small, medium, large; - - beforeEach(function() { - small = $('.card.small'); - medium = $('.card.medium'); - large = $('.card.large'); - }); - - it("should have small card dimensions", function () { - var cardImage = small.find('.card-image'); - var cardContent = small.find('.card-content'); - var cardAction = small.find('.card-action'); - - expect(small.outerHeight()).toEqual(300, 'small card should be 300px high'); - expect(cardImage.outerHeight()).toBeLessThan(181, 'small image should be <= 180px or 60% high'); - expect(cardContent.outerHeight()).toBeLessThan(121, 'small content should be <= 120px or 40% high'); - expect(cardAction.offset().top + cardAction.outerHeight()) - .toEqual(small.offset().top + small.outerHeight(), 'small action should be at bottom of card'); - }); - - it("should have medium card dimensions", function () { - var cardImage = medium.find('.card-image'); - var cardContent = medium.find('.card-content'); - var cardAction = medium.find('.card-action'); - - expect(medium.outerHeight()).toEqual(400, 'medium card should be 400px high'); - expect(cardImage.outerHeight()).toBeLessThan(241, 'medium image should be <= 240 or 60% high'); - expect(cardContent.outerHeight()).toBeLessThan(161, 'medium content should be <= 160px or 40% high'); - expect(cardAction.offset().top + cardAction.outerHeight()) - .toEqual(medium.offset().top + medium.outerHeight(), 'medium action should be at bottom of card'); - }); - - it("should have large card dimensions", function () { - var cardImage = large.find('.card-image'); - var cardContent = large.find('.card-content'); - var cardAction = large.find('.card-action'); - - expect(large.outerHeight()).toEqual(500, 'large card should be 500px high'); - expect(cardImage.outerHeight()).toBeLessThan(301, 'large image should be <= 300 or 60% high'); - expect(cardContent.outerHeight()).toBeLessThan(201, 'large content should be <= 200 or 40% high'); - expect(cardAction.offset().top + cardAction.outerHeight()) - .toEqual(large.offset().top + large.outerHeight(), 'large action should be at bottom of card'); - }); - }); - -}); diff --git a/node_modules/materialize-css/tests/spec/chips/chipsFixture.html b/node_modules/materialize-css/tests/spec/chips/chipsFixture.html deleted file mode 100644 index 61d00f3..0000000 --- a/node_modules/materialize-css/tests/spec/chips/chipsFixture.html +++ /dev/null @@ -1,4 +0,0 @@ -
                -
                -
                -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/chips/chipsSpec.js b/node_modules/materialize-css/tests/spec/chips/chipsSpec.js deleted file mode 100644 index f72162b..0000000 --- a/node_modules/materialize-css/tests/spec/chips/chipsSpec.js +++ /dev/null @@ -1,88 +0,0 @@ -describe("Chips Plugin", function () { - - beforeEach(function() { - loadFixtures('chips/chipsFixture.html'); - $('.chips').material_chip(); - $('.chips-initial').material_chip({ - data: [{ tag: 'Apple' }, { tag: 'Microsoft' }, { tag: 'Google' }], - }); - $('.chips-placeholder').material_chip({ - placeholder: 'Enter a tag', - secondaryPlaceholder: '+Tag', - }); - $('.chips-autocomplete').material_chip({ - autocompleteData: { - 'Apple': null, - 'Microsoft': null, - 'Google': null - } - }); - }); - - describe("Chips", function () { - var $chips, $input; - - // beforeEach(function() { - // }); - - it("should work with multiple initializations", function () { - $chips = $('.chips').first(); - $chips.material_chip(); - $chips.material_chip(); - $chips.material_chip(); - $chips.material_chip(); - - $input = $chips.find('input'); - - expect($input.length).toEqual(1, 'Should dynamically generate chips structure.'); - }); - - it("should be able to add chip", function (done) { - $chips = $('.chips').first(); - $input = $chips.find('input'); - - $input.val('one'); - - var e = $.Event('keydown'); - e.which = 13; - $input.trigger(e); - - setTimeout(function() { - var numChips = $chips.find('.chip').length; - var $oneChip = $chips.find('.chip').first(); - - expect(numChips).toEqual(1, 'one chip should have been added'); - - $oneChip.children().remove() - expect($oneChip.text()).toEqual('one', 'the chip should have value "one"'); - - done(); - }, 400); - - }); - - it("should be able to delete chip", function (done) { - $chips = $('.chips.chips-initial').first(); - $input = $chips.find('input'); - var numChips = $chips.find('.chip').length - - expect(numChips).toEqual(3, '3 initial chips should have been added'); - - $chips.find('.chip .close').first().click(); - - setTimeout(function() { - numChips = $chips.find('.chip').length - - expect(numChips).toEqual(2, 'one chip should have been deleted'); - - done(); - }, 400); - - }); - }); - - // describe("Chips autocomplete", function () { - - // }); - -}); diff --git a/node_modules/materialize-css/tests/spec/collapsible/collapsible.html b/node_modules/materialize-css/tests/spec/collapsible/collapsible.html deleted file mode 100644 index 69c47c2..0000000 --- a/node_modules/materialize-css/tests/spec/collapsible/collapsible.html +++ /dev/null @@ -1,44 +0,0 @@ - - -
                  -
                • -
                  filter_dramaFirst
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  placeSecond
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  whatshotThird
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                - -
                  -
                • -
                  filter_dramaFirst
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  placeSecond
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                • -
                  whatshotThird
                  -

                  Lorem ipsum dolor sit amet.

                  -
                • -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/collapsible/collapsibleSpec.js b/node_modules/materialize-css/tests/spec/collapsible/collapsibleSpec.js deleted file mode 100644 index bdfd265..0000000 --- a/node_modules/materialize-css/tests/spec/collapsible/collapsibleSpec.js +++ /dev/null @@ -1,92 +0,0 @@ -describe( "Collapsible Plugin", function () { - var collapsible, accordion; - - beforeEach(function() { - loadFixtures('collapsible/collapsible.html'); - collapsible = $('.collapsible'); - accordion = $('.accordion'); - popout = $('.popout'); - collapsible.collapsible(); - }); - - describe( "collapsible", function () { - - it("should open all items, keeping all open", function () { - // Collapsible body height should be 0 on start when hidden. - var headers = collapsible.find('.collapsible-header'); - var bodies = collapsible.find('.collapsible-body'); - - bodies.each(function() { - expect($(this)).toBeHidden('because collapsible bodies should be hidden initially.'); - }); - - // Collapsible body height should be > 0 after being opened. - headers.each(function() { - $(this).click(); - }); - bodies.each(function() { - expect($(this)).toBeVisible('because collapsible bodies not visible after being opened.'); - }); - }); - }); - - describe( "accordion", function () { - - it("should open first and second items, keeping only second open", function (done) { - // Collapsible body height should be 0 on start when hidden. - var firstHeader = accordion.find('.collapsible-header').first(); - var firstBody = accordion.find('.collapsible-body').first(); - var secondHeader = accordion.find('.collapsible-header').eq(1); - var secondBody = accordion.find('.collapsible-body').eq(1); - expect(firstBody).toBeHidden('because accordion bodies should be hidden initially.'); - expect(secondBody).toBeHidden('because accordion bodies should be hidden initially.'); - - // Collapsible body height should be > 0 after being opened. - firstHeader.click(); - - setTimeout(function() { - expect(firstBody).toBeVisible('because accordion bodies not visible after being opened.'); - secondHeader.click(); - - setTimeout(function() { - expect(firstBody).toBeHidden('because accordion bodies should be hidden when another item is opened.'); - expect(secondBody).toBeVisible('because accordion bodies not visible after being opened.'); - done(); - }, 400); - }, 200); - - }); - }); - - describe( "popout", function () { - - it("should open first and popout", function (done) { - // Collapsible body height should be 0 on start when hidden. - var firstLi = popout.find('li').first(); - var firstHeader = popout.find('.collapsible-header').first(); - var firstBody = popout.find('.collapsible-body').first(); - expect(firstBody).toBeHidden('because accordion bodies should be hidden initially.'); - - // Expect margin to be > 0 because not popped out. - popout.find('li').each(function () { - var marginLeft = parseInt($(this).css('margin-left')); - var marginRight = parseInt($(this).css('margin-right')); - expect(marginLeft).toBeGreaterThan(0, 'because closed popout items should have horizontal margins.'); - expect(marginRight).toBeGreaterThan(0, 'because closed popout items should have horizontal margins.'); - }); - - // expect margin to be 0 because popped out. - firstHeader.click(); - setTimeout(function() { - var firstMarginLeft = parseInt(firstLi.css('margin-left')); - var firstMarginRight = parseInt(firstLi.css('margin-right')); - expect(firstMarginLeft).toEqual(0, 'because opened popout items should have no horizontal margins.'); - expect(firstMarginRight).toEqual(0, 'because opened popout items should have no horizontal margins.'); - expect(firstBody).toBeVisible('because accordion bodies not visible after being opened.'); - - done(); - }, 400); - - }); - }); -}); diff --git a/node_modules/materialize-css/tests/spec/dropdown/dropdownFixture.html b/node_modules/materialize-css/tests/spec/dropdown/dropdownFixture.html deleted file mode 100644 index a72edc3..0000000 --- a/node_modules/materialize-css/tests/spec/dropdown/dropdownFixture.html +++ /dev/null @@ -1,14 +0,0 @@ -
                -
                - - Drop Me! - - - -
                -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/dropdown/dropdownSpec.js b/node_modules/materialize-css/tests/spec/dropdown/dropdownSpec.js deleted file mode 100644 index 568a610..0000000 --- a/node_modules/materialize-css/tests/spec/dropdown/dropdownSpec.js +++ /dev/null @@ -1,51 +0,0 @@ -describe("Dropdown Plugin", function () { - beforeEach(function() { - loadFixtures('dropdown/dropdownFixture.html'); - $('.dropdown-button').dropdown(); - }); - - describe("Dropdown", function () { - var normalDropdown; - - beforeEach(function() { - // browserSelect = $('select.normal'); - }); - - it("should open and close programmatically", function (done) { - var dropdown1 = $('#dropdown1'); - normalDropdown = $('#dropdownActivator'); - - expect(dropdown1).toBeHidden('Should be hidden before dropdown is opened.'); - - normalDropdown.dropdown('open'); - - setTimeout(function() { - expect(dropdown1).toBeVisible('Should be shown after dropdown is opened.'); - normalDropdown.dropdown('close'); - - setTimeout(function() { - expect(dropdown1).toBeHidden('Should be hidden after dropdown is closed.'); - done(); - }, 400); - }, 400); - }); - - it("should close dropdown on document click if programmatically opened", function (done) { - normalDropdown = $('#dropdownActivator'); - - expect(dropdown1).toBeHidden('Should be hidden before dropdown is opened.'); - - normalDropdown.dropdown('open'); - - setTimeout(function() { - expect(dropdown1).toBeVisible('Should be shown after dropdown is opened.'); - $(document).click(); - - setTimeout(function() { - expect(dropdown1).toBeHidden('Should be hidden after dropdown is closed.'); - done(); - }, 400); - }, 400); - }); - }); -}); diff --git a/node_modules/materialize-css/tests/spec/helper.js b/node_modules/materialize-css/tests/spec/helper.js deleted file mode 100644 index 08cc019..0000000 --- a/node_modules/materialize-css/tests/spec/helper.js +++ /dev/null @@ -1 +0,0 @@ -jasmine.getFixtures().fixturesPath = 'tests/spec'; \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/materialbox/materialboxFixture.html b/node_modules/materialize-css/tests/spec/materialbox/materialboxFixture.html deleted file mode 100644 index ab4d933..0000000 --- a/node_modules/materialize-css/tests/spec/materialbox/materialboxFixture.html +++ /dev/null @@ -1,3 +0,0 @@ -
                - -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/materialbox/materialboxSpec.js b/node_modules/materialize-css/tests/spec/materialbox/materialboxSpec.js deleted file mode 100644 index 0c6c1cf..0000000 --- a/node_modules/materialize-css/tests/spec/materialbox/materialboxSpec.js +++ /dev/null @@ -1,33 +0,0 @@ -describe( 'Materialbox:', function() { - var transformMaterialbox; - - beforeEach(function() { - loadFixtures('materialbox/materialboxFixture.html'); - }); - - describe('Materialbox opens correctly with transformed ancestor', function() { - it('Opens a correctly placed overlay when clicked', function(done) { - transformMaterialbox = $('#transformTest'); - $('.materialboxed').materialbox(); - - // Mouse click - transformMaterialbox.find('.materialboxed').trigger('click'); - setTimeout(function() { - // Check overlay is attached - var overlay = transformMaterialbox.find('#materialbox-overlay'); - var overlayRect = overlay[0].getBoundingClientRect(); - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - expect(overlay).toExist('because it is generated on init'); - expect(overlay).toBeVisible('because materialbox was clicked'); - expect(overlayRect.top).toEqual(0); - expect(overlayRect.left).toEqual(0); - expect(overlayRect.width).toEqual(windowWidth); - expect(overlayRect.height).toEqual(windowHeight); - - done(); - }, 1000); - }); - }); - -}); diff --git a/node_modules/materialize-css/tests/spec/scrollFire/scrollFireFixture.html b/node_modules/materialize-css/tests/spec/scrollFire/scrollFireFixture.html deleted file mode 100644 index 900d4f2..0000000 --- a/node_modules/materialize-css/tests/spec/scrollFire/scrollFireFixture.html +++ /dev/null @@ -1,109 +0,0 @@ -

                - Filling up some content to enable scrolling -

                -

                - 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. -

                -

                - 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. -

                - - diff --git a/node_modules/materialize-css/tests/spec/scrollFire/scrollFireSpec.js b/node_modules/materialize-css/tests/spec/scrollFire/scrollFireSpec.js deleted file mode 100644 index 6b42d12..0000000 --- a/node_modules/materialize-css/tests/spec/scrollFire/scrollFireSpec.js +++ /dev/null @@ -1,31 +0,0 @@ -describe('ScrollFire Plugin', function() { - var options, testElement; - - beforeEach(function() { - options = [{ - selector: '#test', - offset: 50, - callback: 'Materialize.callbackFunc()' - }]; - Materialize.callbackFunc = function() { - return 'I have been called'; - }; - - loadFixtures('scrollFire/scrollFireFixture.html'); - spyOn(Materialize, 'callbackFunc').and.callThrough(); - testElement = $('#test'); - Materialize.scrollFire(options); - }); - - describe('ScrollFire', function() { - it('should fire the callback function', function(done) { - // Scroll to the test component - window.scrollTo(0, testElement.offset().top); - // The callback function should be fired after scrolling - setTimeout(function() { - expect(Materialize.callbackFunc).toHaveBeenCalled(); - done(); - }, 400); - }); - }); -}); diff --git a/node_modules/materialize-css/tests/spec/select/selectFixture.html b/node_modules/materialize-css/tests/spec/select/selectFixture.html deleted file mode 100644 index 7a974fb..0000000 --- a/node_modules/materialize-css/tests/spec/select/selectFixture.html +++ /dev/null @@ -1,40 +0,0 @@ -
                -
                - - -
                -
                - -
                -
                - - -
                -
                - -
                -
                - - -
                -
                diff --git a/node_modules/materialize-css/tests/spec/select/selectSpec.js b/node_modules/materialize-css/tests/spec/select/selectSpec.js deleted file mode 100644 index c76555c..0000000 --- a/node_modules/materialize-css/tests/spec/select/selectSpec.js +++ /dev/null @@ -1,199 +0,0 @@ -describe("Select Plugin", function () { - beforeEach(function() { - loadFixtures('select/selectFixture.html'); - $('select').not('.disabled').material_select(); - }); - - describe("Select", function () { - var browserSelect, normalInput, normalDropdown; - - beforeEach(function() { - browserSelect = $('select.normal'); - }); - - it("should open dropdown and select option", function (done) { - normalInput = browserSelect.parent().find('input.select-dropdown'); - normalDropdown = browserSelect.parent().find('ul.select-dropdown'); - - expect(normalInput).toExist('Should dynamically generate select dropdown structure.'); - expect(normalDropdown).toExist('Should dynamically generate select dropdown structure.'); - expect(normalInput).toBeVisible('Should be hidden before dropdown is opened.'); - expect(normalDropdown).toBeHidden('Should be hidden before dropdown is opened.'); - - normalInput.click(); - - setTimeout(function() { - expect(normalDropdown).toBeVisible('Should be visible after opening.'); - var firstOption = normalDropdown.find('li:not(.disabled)').first(); - firstOption.click(); - normalInput.blur(); - - setTimeout(function() { - expect(normalDropdown).toBeHidden('Should be hidden after choosing item.'); - expect(normalInput.val()).toEqual(firstOption[0].innerText, 'Value should equal chosen option.'); - done(); - }, 400); - }, 400); - }); - - it("should have pre-selected value", function () { - normalInput = browserSelect.parent().find('input.select-dropdown'); - normalDropdown = browserSelect.parent().find('ul.select-dropdown'); - - var firstOption = browserSelect.find('option[selected]'); - expect(normalInput.val()).toEqual(firstOption.text(), 'Value should be equal to preselected option.'); - }); - }); - - describe("Multiple Select", function () { - var browserSelect, multipleInput, multipleDropdown; - - beforeEach(function() { - browserSelect = $('select.multiple'); - }); - - it("should open dropdown and select multiple options", function(done) { - multipleInput = browserSelect.parent().find('input.select-dropdown'); - multipleDropdown = browserSelect.parent().find('ul.select-dropdown'); - - expect(multipleInput).toExist('Should dynamically generate select dropdown structure.'); - expect(multipleDropdown).toExist('Should dynamically generate select dropdown structure.'); - expect(multipleInput).toBeVisible('Should be hidden before dropdown is opened.'); - expect(multipleDropdown).toBeHidden('Should be hidden before dropdown is opened.'); - - multipleInput.click(); - - setTimeout(function() { - expect(multipleDropdown).toBeVisible('Should be visible after opening.'); - var firstOption = multipleDropdown.find('li:not(.disabled)').first(); - var secondOption = multipleDropdown.find('li:not(.disabled)').eq(1); - var thirdOption = multipleDropdown.find('li:not(.disabled)').eq(2); - firstOption.click(); - $('body').click(); - - setTimeout(function() { - expect(multipleDropdown).toBeHidden('Should be hidden after choosing item.'); - expect(browserSelect.val()).toEqual(['1', '2', '3'], 'Actual select should have correct selected values.'); - expect(multipleInput.val()).toEqual(secondOption[0].innerText + ', ' + thirdOption[0].innerText + ', ' + firstOption[0].innerText, 'Value should equal chosen multiple options.'); - done(); - }, 400); - }, 400); - }); - - it("should open dropdown and deselect multiple options", function(done) { - multipleInput = browserSelect.parent().find('input.select-dropdown'); - multipleDropdown = browserSelect.parent().find('ul.select-dropdown'); - - expect(multipleInput).toExist('Should dynamically generate select dropdown structure.'); - expect(multipleDropdown).toExist('Should dynamically generate select dropdown structure.'); - expect(multipleInput).toBeVisible('Should be hidden before dropdown is opened.'); - expect(multipleDropdown).toBeHidden('Should be hidden before dropdown is opened.'); - - multipleInput.click(); - - setTimeout(function() { - expect(multipleDropdown).toBeVisible('Should be visible after opening.'); - var disabledOption = multipleDropdown.find('li.disabled'); - var secondOption = multipleDropdown.find('li:not(.disabled)').eq(1); - var thirdOption = multipleDropdown.find('li:not(.disabled)').eq(2); - secondOption.click(); - thirdOption.click(); - $('body').click(); - - setTimeout(function() { - expect(multipleDropdown).toBeHidden('Should be hidden after choosing item.'); - expect(browserSelect.val()).toEqual(null, 'Actual select element should be empty because none chosen.'); - expect(multipleInput.val()).toEqual(disabledOption[0].innerText, 'Value should equal default because none chosen.'); - done(); - }, 400); - }, 400); - }); - - it("should have multiple pre-selected values", function () { - multipleInput = browserSelect.parent().find('input.select-dropdown'); - multipleDropdown = browserSelect.parent().find('ul.select-dropdown'); - - var secondOption = browserSelect.find('option[selected]').eq(0); - var thirdOption = browserSelect.find('option[selected]').eq(1); - expect(multipleInput.val()).toEqual(secondOption.text() + ', ' + thirdOption.text(), 'Value should be equal to preselected option.'); - }); - }); - - describe("Optgroup Select", function () { - var browserSelect, optInput, optDropdown, optionInOptgroup, optionAfterOptGroup; - - beforeEach(function() { - browserSelect = $('select.optgroup'); - }); - - it("should open dropdown and select options", function(done) { - optInput = browserSelect.parent().find('input.select-dropdown'); - optDropdown = browserSelect.parent().find('ul.select-dropdown'); - - var optgroups = optDropdown.find('li.optgroup'); - browserSelect.find('optgroup').each(function(i) { - expect($(this).attr('label')).toEqual(optgroups.eq(i)[0].innerText, 'should generate optgroup structure.'); - }); - - expect(optInput).toExist('Should dynamically generate select dropdown structure.'); - expect(optDropdown).toExist('Should dynamically generate select dropdown structure.'); - expect(optInput).toBeVisible('Should be hidden before dropdown is opened.'); - expect(optDropdown).toBeHidden('Should be hidden before dropdown is opened.'); - - optInput.click(); - - setTimeout(function() { - expect(optDropdown).toBeVisible('Should be visible after opening.'); - var secondOption = optDropdown.find('li:not(.disabled):not(.optgroup)').eq(1); - secondOption.click(); - optInput.blur(); - - setTimeout(function() { - expect(optDropdown).toBeHidden('Should be hidden after choosing item.'); - expect(optInput.val()).toEqual(secondOption[0].innerText, 'Value should be equal to selected option.'); - done(); - }, 400); - }, 400); - }); - - it("should have options inside optgroup indented", function() { - optionInOptgroup = browserSelect.parent().find('li.optgroup + li'); - optionAfterOptGroup = browserSelect.parent().find('ul li:last-child'); - - expect(optionInOptgroup).toHaveClass('optgroup-option', 'Should have optgroup-option class'); - expect(optionAfterOptGroup).not.toHaveClass('optgroup-option', 'Should not have optgroup-option class'); - }); - - it("should not do anything when optgroup li clicked", function(done) { - optInput = browserSelect.parent().find('input.select-dropdown'); - optDropdown = browserSelect.parent().find('ul.select-dropdown'); - var originalVal = optInput.val(); - - var optgroups = optDropdown.find('li.optgroup'); - browserSelect.find('optgroup').each(function(i) { - expect($(this).attr('label')).toEqual(optgroups.eq(i)[0].innerText, 'should generate optgroup structure.'); - }); - - expect(optInput).toExist('Should dynamically generate select dropdown structure.'); - expect(optDropdown).toExist('Should dynamically generate select dropdown structure.'); - expect(optInput).toBeVisible('Should be hidden before dropdown is opened.'); - expect(optDropdown).toBeHidden('Should be hidden before dropdown is opened.'); - - optInput.click(); - - setTimeout(function() { - expect(optDropdown).toBeVisible('Should be visible after opening.'); - var optgroup = optDropdown.find('li.optgroup').first(); - optgroup.click(); - optInput.blur(); - - setTimeout(function() { - expect(optDropdown).toBeHidden('Should be hidden after choosing invalid item.'); - expect(optInput.val()).toEqual(originalVal, 'Value should be equal to original option.'); - done(); - }, 400); - }, 400); - }); - - }); -}); diff --git a/node_modules/materialize-css/tests/spec/sideNav/sideNavFixture.html b/node_modules/materialize-css/tests/spec/sideNav/sideNavFixture.html deleted file mode 100644 index 2db6560..0000000 --- a/node_modules/materialize-css/tests/spec/sideNav/sideNavFixture.html +++ /dev/null @@ -1,16 +0,0 @@ - -menu \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/sideNav/sideNavSpec.js b/node_modules/materialize-css/tests/spec/sideNav/sideNavSpec.js deleted file mode 100644 index b90ce89..0000000 --- a/node_modules/materialize-css/tests/spec/sideNav/sideNavSpec.js +++ /dev/null @@ -1,59 +0,0 @@ -describe("SideNav Plugin", function () { - beforeEach(function() { - loadFixtures('sideNav/sideNavFixture.html'); - $(".button-collapse").sideNav(); - }); - - describe("SideNav", function () { - var normalActivator, normalSideNav; - - beforeEach(function() { - normalActivator = $('.button-collapse'); - normalSideNav = $('.side-nav'); - }); - - it("should not break from multiple initializations", function() { - $(".button-collapse").sideNav(); - $(".button-collapse").sideNav(); - $(".button-collapse").sideNav(); - - var dragTarget = $('.drag-target[data-sidenav="' + normalActivator.attr('data-activates') + '"]'); - var dragTargetEvents = $._data(dragTarget[0], 'events'); - expect(dragTarget.length).toEqual(1, 'Should generate only one dragTarget.'); - expect(dragTargetEvents.click.length).toEqual(1, 'Should only bind 1 click handler on activator'); - expect(dragTargetEvents.pan.length).toEqual(1, 'Should only bind 1 pan handler on activator'); - expect(dragTargetEvents.panend.length).toEqual(1, 'Should only bind 1 panend handler on activator'); - - var normalActivatorEvents = $._data(normalActivator[0], 'events'); - expect(normalActivatorEvents.click.length).toEqual(1, 'Should only bind 1 click handler on activator'); - }); - - it("should open sideNav from left", function (done) { - var sideNavRect = normalSideNav[0].getBoundingClientRect(); - var overlay = $('[id="sidenav-overlay"]'); - var dragTarget = $('.drag-target[data-sidenav="' + normalActivator.attr('data-activates') + '"]'); - - expect(dragTarget.length).toEqual(1, 'Should generate only one dragTarget.'); - expect(overlay.length).toEqual(0, 'Overlay should not be generated before sideNav is opened.'); - expect(sideNavRect.left).toEqual(-sideNavRect.width, 'Should be hidden before sideNav is opened.'); - - normalActivator.click(); - - setTimeout(function() { - sideNavRect = normalSideNav[0].getBoundingClientRect(); - overlay = $('[id="sidenav-overlay"]'); - expect(overlay.length).toEqual(1, 'Should generate only one overlay.'); - expect(sideNavRect.left).toEqual(0, 'Should be shown after sideNav is closed.'); - - overlay.click(); - - setTimeout(function() { - overlay = $('[id="sidenav-overlay"]'); - expect(overlay.length).toEqual(0, 'Overlay should be removed after sideNav is closed.'); - - done(); - }, 500); - }, 500); - }); - }); -}); diff --git a/node_modules/materialize-css/tests/spec/tabs/tabsFixture.html b/node_modules/materialize-css/tests/spec/tabs/tabsFixture.html deleted file mode 100644 index 49dae37..0000000 --- a/node_modules/materialize-css/tests/spec/tabs/tabsFixture.html +++ /dev/null @@ -1,22 +0,0 @@ -
                - -
                Test 1
                -
                Test 2
                -
                Test 3
                -
                Test 4
                -
                Test 1
                -
                Test 2
                -
                Test 3
                -
                Test 4
                -
                \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/tabs/tabsSpec.js b/node_modules/materialize-css/tests/spec/tabs/tabsSpec.js deleted file mode 100644 index ed330d8..0000000 --- a/node_modules/materialize-css/tests/spec/tabs/tabsSpec.js +++ /dev/null @@ -1,87 +0,0 @@ -describe("Tabs Plugin", function () { - beforeEach(function() { - loadFixtures('tabs/tabsFixture.html'); - $('ul.tabs').tabs(); - }); - - describe("Tabs", function () { - var normalTabs; - - beforeEach(function() { - normalTabs = $('.tabs.normal'); - }); - - it("should open to active tab", function () { - var activeTab = normalTabs.find('.active'); - var activeTabHash = activeTab.attr('href'); - normalTabs.find('.tab a').each(function() { - var tabHash = $(this).attr('href'); - if (tabHash === activeTabHash) { - expect($(tabHash)).toBeVisible('active tab content should be visible by default'); - } else { - expect($(tabHash)).toBeHidden('Tab content should be hidden by default'); - } - }); - - var indicator = normalTabs.find('.indicator'); - expect(indicator).toExist('Indicator should be generated'); - // expect(Math.abs(indicator.offset().left - activeTab.offset().left)).toBeLessThan(1, 'Indicator should be at active tab by default.'); - }); - - it("should switch to clicked tab", function (done) { - var activeTab = normalTabs.find('.active'); - var activeTabHash = activeTab.attr('href'); - var disabledTab = normalTabs.find('.disabled a'); - var disabledTabHash = disabledTab.attr('href'); - var firstTab = normalTabs.find('.tab a').first(); - var firstTabHash = firstTab.attr('href'); - var indicator = normalTabs.find('.indicator'); - - expect(indicator).toExist('Indicator should be generated'); - // expect(Math.abs(indicator.offset().left - activeTab.offset().left)).toBeLessThan(1, 'Indicator should be at active tab by default.'); - - disabledTab.click(); - - setTimeout(function() { - expect($(activeTabHash)).toBeVisible('Clicking disabled should not change tabs.'); - expect($(disabledTabHash)).toBeHidden('Clicking disabled should not change tabs.'); - - firstTab.click(); - - setTimeout(function() { - expect($(activeTabHash)).toBeHidden('Clicking tab should switch to that tab.'); - expect($(firstTabHash)).toBeVisible('Clicking tab should switch to that tab.'); - expect(indicator.offset().left).toEqual(firstTab.offset().left, 'Indicator should move to clicked tab.'); - done(); - }, 400); - }, 400); - }); - - it("shouldn't hide active tab if clicked while active", function (done) { - var activeTab = normalTabs.find('.active'); - var activeTabHash = activeTab.attr('href'); - var indicator = normalTabs.find('.indicator'); - - expect(indicator).toExist('Indicator should be generated'); - - activeTab.click(); - - setTimeout(function() { - expect($(activeTabHash)).toBeVisible('Clicking active tab while active should not hide it.'); - done(); - }, 400); - }); - - - it("should horizontally scroll when too many tabs", function () { - var tabsScrollWidth = 0; - normalTabs.parent().css('width', '400px'); - normalTabs.find('.tab').each(function() { - tabsScrollWidth += $(this).width(); - }); - - expect(tabsScrollWidth).toBeGreaterThan(normalTabs.width(), 'Scroll width should exceed tabs width'); - }); - - }); -}); \ No newline at end of file diff --git a/node_modules/materialize-css/tests/spec/toast/toastSpec.js b/node_modules/materialize-css/tests/spec/toast/toastSpec.js deleted file mode 100644 index be9e0d8..0000000 --- a/node_modules/materialize-css/tests/spec/toast/toastSpec.js +++ /dev/null @@ -1,61 +0,0 @@ -describe( 'Toasts:', function() { - var toastOutDuration = 375; - var toastInDuration = 300; - var toast; - - describe('Toast javascript functions', function() { - // Toast out animation duration does not count as part of its timer. - it('should display and remove a toast', function(done) { - Materialize.toast('Test toast', toastInDuration); - - setTimeout(function() { - toast = $('.toast'); - expect(toast.length).toBe(1); - expect(toast).toBeVisible(); - expect(toast.text()).toBe('Test toast'); - setTimeout(function() { - toast = $('.toast'); - expect(toast).toBeVisible(); - expect(toast.length).toBe(1, 'because toast duration still on going'); - setTimeout(function() { - toast = $('.toast'); - expect(toast.length).toBe(0, 'because toast should be removed by now'); - done(); - }, toastOutDuration + 90); // .1s leeway is given - }, 10); - }, toastInDuration); - }); - - it('Opens a toast with HTML content', function() { - var $toastContent = $('I am toast content'); - Materialize.toast($toastContent, 400); - toast = $('.toast'); - expect(toast.first('span').text()).toBe('I am toast content'); - expect(toast.first('span').text()).not.toBe('I am toast') - }); - - it('Toasts should call the callback function when dismissed', - function(done) { - var boolObj = {wasCalled: false}; - var callback = function() { - boolObj.wasCalled = true; - }; - Materialize.toast('I am a toast', 100, '', callback); - setTimeout(function() { - expect(boolObj.wasCalled).toBe(true, - 'because the callback set it to true'); - done(); - }, 500); - }); - - it('Apply two custom class to a toast', function() { - Materialize.toast('Hi', 400, 'round flat'); - toast = $('.toast'); - expect(toast.closest('.round.flat').length).toBe(1, - 'because the class parameter was passed with two classes'); - }); - - }); - - -}); diff --git a/node_modules/materialize-css/tests/spec/tooltip/tooltipFixture.html b/node_modules/materialize-css/tests/spec/tooltip/tooltipFixture.html deleted file mode 100644 index 87bc871..0000000 --- a/node_modules/materialize-css/tests/spec/tooltip/tooltipFixture.html +++ /dev/null @@ -1,17 +0,0 @@ - - Hover me! - - - - Hover me! - diff --git a/node_modules/materialize-css/tests/spec/tooltip/tooltipSpec.js b/node_modules/materialize-css/tests/spec/tooltip/tooltipSpec.js deleted file mode 100644 index ff7f31d..0000000 --- a/node_modules/materialize-css/tests/spec/tooltip/tooltipSpec.js +++ /dev/null @@ -1,107 +0,0 @@ -describe( 'Tooltip:', function() { - var tooltippedBtn, tooltip; - - beforeEach(function() { - loadFixtures('tooltip/tooltipFixture.html'); - $('.tooltipped').tooltip(); - }); - - describe('Tooltip opens and closes properly', function() { - - - it('Opens a tooltip on mouse enter', function(done) { - tooltippedBtn = $('#test'); - tooltip = $('#' + tooltippedBtn.attr('data-tooltip-id')); - - // Mouse enter - tooltippedBtn.trigger('mouseenter'); - setTimeout(function() { - expect(tooltip).toBeVisible('because mouse entered tooltipped btn'); - expect(tooltip.children('span').text()).toBe('I am tooltip', - 'because that is the defined text in the html attribute'); - - // Mouse leave - tooltippedBtn.trigger('mouseleave'); - setTimeout(function() { - expect(tooltip).toBeVisible('because mouse left tooltipped btn'); - done(); - }, 300); - }, 200); - }); - - - it('Positions tooltips smartly on the bottom within the screen bounds', function(done) { - tooltippedBtn = $('#test1'); - tooltip = $('#' + tooltippedBtn.attr('data-tooltip-id')); - // Mouse enter - tooltippedBtn.trigger('mouseenter'); - setTimeout(function() { - var offset = tooltip.offset(); - // Check window bounds - expect(offset.top >= 0).toBeTruthy(); - expect(offset.top < 0).toBeFalsy(); - expect(offset.top + tooltip.height() <= - window.innerHeight).toBeTruthy(); - expect(offset.left >= 0).toBeTruthy(); - expect(offset.left < 0).toBeFalsy(); - expect(offset.left + tooltip.width() <= window.innerWidth).toBeTruthy(); - - // check if tooltip is under btn - expect(offset.top > tooltippedBtn.offset().top + tooltippedBtn.height()) - .toBeTruthy(); - expect(offset.top < tooltippedBtn.offset().top + tooltippedBtn.height()) - .toBeFalsy(); - done(); - }, 300); - }); - - - it('Removes tooltip event handlers and tooltip dom object', function() { - tooltippedBtn = $('#test1'); - tooltippedBtn.tooltip('remove'); - - // Check that event handlers are removed - var enterHandler = $._data(tooltippedBtn[0], 'events'); - expect(!!enterHandler).toBeFalsy('because all events should be removed'); - - // Check DOM element is removed - tooltip = $('#' + tooltippedBtn.attr('data-tooltip-id')); - expect(tooltip.length).toBe(0); - }); - - - it('Changes position attribute dynamically and positions tooltips on the right correctly', - function(done) { - tooltippedBtn = $('#test'); - tooltippedBtn.attr('data-position', 'right'); - tooltip = $('#' + tooltippedBtn.attr('data-tooltip-id')); - // Mouse enter - tooltippedBtn.trigger('mouseenter'); - setTimeout(function() { - var offset = tooltip.offset(); - expect(offset.left > tooltippedBtn.offset().left + tooltippedBtn.width()) - .toBeTruthy(); - done(); - }, 300); - }); - - - it('Accepts delay option from javascript initialization', function(done) { - tooltippedBtn = $('#test'); - tooltippedBtn.removeAttr('data-delay'); - tooltippedBtn.tooltip({delay: 200}); - tooltip = $('#' + tooltippedBtn.attr('data-tooltip-id')); - tooltippedBtn.trigger('mouseenter'); - setTimeout(function() { - expect(tooltip.css('visibility')).toBe('hidden', 'because the delay is 200 seconds'); - }, 150); - - setTimeout(function() { - expect(tooltip).toBeVisible('because 200 seconds has passed'); - done(); - }, 250); - - }); - }); - -}); diff --git a/node_modules/materialize-css/transitions.html b/node_modules/materialize-css/transitions.html deleted file mode 100644 index f6e2acd..0000000 --- a/node_modules/materialize-css/transitions.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - - - Transitions - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -

                We've made some custom animation functions that will transition your content. It's recommended to use this with our ScrollFire Plugin to make your content transition in as you scroll.

                - -

                showStaggeredList

                -

                Use this to create a staggered reveal effect for any UL Tag with list items. Just make sure the list items in the UL are opacity: 0; to ensure the animation works correctly.

                - - - - - - - - - - - - - - - -
                Option NameDescription
                selectorOrElThe selector or element that the transition targets.
                -
                - - Click Me -
                
                -  <a href="#!" class="btn" onclick="Materialize.showStaggeredList('#staggered-test')">Click Me</a>
                -        
                - -
                - -
                -

                fadeInImage

                -

                Use this to fade in images. It also animates grayscale and brightness to give it a unique effect.

                - - - - - - - - - - - - - - - -
                Option NameDescription
                selectorOrElThe selector or element that the transition targets.
                -
                - - Click Me -
                
                -  <a href="#!" class="btn" onclick="Materialize.fadeInImage('#image-test')">Click Me</a>
                -        
                - -
                -
                - -
                - -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/typography.html b/node_modules/materialize-css/typography.html deleted file mode 100644 index 81a40a7..0000000 --- a/node_modules/materialize-css/typography.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - Typography - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                -
                -

                Roboto 2.0

                -

                - The standard font Material Design uses is Roboto. We have included the font files with our framework. -

                -
                -

                We bundle our framework with the latest iteration of Roboto Google has released. It comes with 5 different font weights you can use: 200, 300, 400, 500, 600.

                Here is an image from Google's Roboto Specimen document displaying the different font weights.

                - -
                - -

                Removing Roboto

                -

                In case you don't want to use Roboto on your webpage, fear not. Simply change the font stack by modifying the code below to your liking and add it to your custom css.

                -
                
                -  html {
                -    font-family: GillSans, Calibri, Trebuchet, sans-serif;
                -  }
                -        
                -
                - - -
                -

                Headers

                -

                We provide some basic styling on header tags. In the example, you can see the the 6 header tags' different sizes.

                -
                -

                Heading h1

                -

                Heading h2

                -

                Heading h3

                -

                Heading h4

                -
                Heading h5
                -
                Heading h6
                -
                -
                - -
                -

                Blockquotes

                -

                - Blockquotes are mainly used to give emphasis to a quote or citation. You can also use these for some extra text hierarchy and emphasis. -

                -
                - This is an example quotation that uses the blockquote tag. -
                Here is another line to make it look bigger. -
                -
                
                -    <blockquote>
                -      This is an example quotation that uses the blockquote tag.
                -    </blockquote>
                -          
                -
                - -
                -

                Flow Text

                - Toggle flow-text -
                -

                - One common flaw we've seen in many frameworks is a lack of support for truly responsive text. While elements on the page resize fluidly, text still resizes on a fixed basis. To ameliorate this problem, for text heavy pages, we've created a class that fluidly scales text size and line-height to optimize readability for the user. Line length stays between 45-80 characters and line height scales to be larger on smaller screens.

                -

                To see Flow Text in action, slowly resize your browser and watch the size of this text body change! Use the button above to toggle off/on flow-text to see the difference!

                -
                - -
                - -

                To use flow-text on a body of text, simply just add the class flow-text to a tag, see the code blow.

                -
                -
                
                -    <p class="flow-text">I am Flow Text</p>
                -          
                -
                -
                - -
                - -
                -
                -
                -
                - - -
                - -
                -
                -
                -
                -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/materialize-css/waves.html b/node_modules/materialize-css/waves.html deleted file mode 100644 index bd0db0e..0000000 --- a/node_modules/materialize-css/waves.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - - - Waves - Materialize - - - - - - - - - - - - - - - - -
                - - - -
                -
                -
                - -
                - -
                - -

                Introduction

                -

                Waves is an external library that we've included in Materialize to allow us to create the ink effect outlined in Material Design

                - Wave -
                - - - -
                -

                Applying Waves

                -

                To put the waves effect on buttons, you just have to put the class waves-effect on to the buttons. If you want the waves effect to be white instead, add both waves-effect waves-light as classes.

                -
                
                -  <a class="waves-effect waves-light btn-large" href="#">Wave</a>
                -      
                -
                - - - -
                - -

                Customization

                -

                There are several ways to customize waves, you can either use pre-created classes, or you can define your own color by creating a new class

                -
                -
                -
                Available Colors
                -

                To use these, just add the corresponding class to your button. Play around with changing the background color of butons and the waves effect to create something cool!

                -
                
                -    <a href="#!" class="btn waves-effect waves-teal">Send</a>
                -          
                -
                -
                DefaultSend
                -
                waves-lightSend
                -
                waves-redSend
                -
                waves-yellowSend
                -
                waves-orangeSend
                -
                waves-purpleSend
                -
                waves-greenSend
                -
                waves-tealSend
                -
                -
                - -
                -
                Custom Colors
                -

                If the color you want is not already available, you can easily make your own waves color by creating a custom CSS class. Take a look at the example below where we add a waves-brown effect

                - -
                
                -    /*
                -    When creating your CSS selector,
                -    change "brown" to something of your choosing
                -    */
                -    .waves-effect.waves-brown .waves-ripple {
                -     /* The alpha value allows the text and background color
                -     of the button to still show through. */
                -      background-color: rgba(121, 85, 72, 0.65);
                -    }
                -          
                -
                -
                -
                - -
                - -

                Circle

                -

                If you want waves to form to a non rectangular shape, there is an option for circular waves. Just add the waves-circle in addition to waves-effect

                -
                -
                -
                HTML Markup
                -
                
                -  <a href="#!" class="waves-effect waves-circle waves-light btn-floating secondary-content">
                -    <i class="material-icons">add</i>
                -  </a>
                -          
                -
                -
                Defaultadd
                -
                waves-lightadd
                -
                -
                -
                -
                - -
                - - - -
                - -
                - -
                -
                - - -
                -
                -
                -
                -
                Help Materialize Grow
                -

                We are a team of college students working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.

                -
                - - - -
                - -
                -
                -
                Join the Discussion
                -

                We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.

                - Chat -
                -
                -
                Connect
                - -
                - -
                -
                -
                -
                -
                - -
                - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/prismjs/.editorconfig b/node_modules/prismjs/.editorconfig deleted file mode 100644 index bf094ab..0000000 --- a/node_modules/prismjs/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -root = true - -[*] -insert_final_newline = false -charset = utf-8 -indent_style = tab - -[tests/languages/**.test] -end_of_line = crlf - -[{package.json,.travis.yml}] -indent_style = space -indent_size = 2 \ No newline at end of file diff --git a/node_modules/prismjs/.gitattributes b/node_modules/prismjs/.gitattributes deleted file mode 100644 index 1d598bd..0000000 --- a/node_modules/prismjs/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -* text=auto - -# Test files should not have their line endings modified by git -/tests/languages/**/*.test binary \ No newline at end of file diff --git a/node_modules/prismjs/.npmignore b/node_modules/prismjs/.npmignore deleted file mode 100644 index 670081f..0000000 --- a/node_modules/prismjs/.npmignore +++ /dev/null @@ -1,17 +0,0 @@ -.idea -*.iml - -hide-*.js - -CNAME -img -templates -*.html -style.css -favicon.png -logo.svg -download.js -prefixfree.min.js -utopia.js -code.js -components.js \ No newline at end of file diff --git a/node_modules/prismjs/.travis.yml b/node_modules/prismjs/.travis.yml deleted file mode 100644 index 5b217e4..0000000 --- a/node_modules/prismjs/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: node_js -node_js: -- '0.10' -- '0.12' -before_script: -- npm install -g gulp -- gulp -script: npm test -deploy: - provider: npm - email: lea@verou.me - api_key: - secure: TjRcXEr7Y/9KRJ4EOEQbd2Ij8hxKj8c/yOpEROy2lTYv6QH9x46nFDgZEE3VHfp/nnBUYpC47dRaSxiUj8H5rtkMNCZrREZu1n1zahmzP6dI6kCj+H3GiY7yw/Jhdx3uvQZHwknW2TJ/YRsLeQsmMSG2HnJobY9Zn4REX5ccP2E= - on: - tags: true - repo: PrismJS/prism diff --git a/node_modules/prismjs/CHANGELOG.md b/node_modules/prismjs/CHANGELOG.md deleted file mode 100644 index b47aa0d..0000000 --- a/node_modules/prismjs/CHANGELOG.md +++ /dev/null @@ -1,672 +0,0 @@ -# Prism Changelog - -## 1.6 (2016-12-03) - -### New components - -* __.properties__ ([#980](https://github.com/PrismJS/prism/issues/980)) [[`be6219a`](https://github.com/PrismJS/prism/commit/be6219a)] -* __Ada__ ([#949](https://github.com/PrismJS/prism/issues/949)) [[`65619f7`](https://github.com/PrismJS/prism/commit/65619f7)] -* __GraphQL__ ([#971](https://github.com/PrismJS/prism/issues/971)) [[`e018087`](https://github.com/PrismJS/prism/commit/e018087)] -* __Jolie__ ([#1014](https://github.com/PrismJS/prism/issues/1014)) [[`dfc1941`](https://github.com/PrismJS/prism/commit/dfc1941)] -* __LiveScript__ ([#982](https://github.com/PrismJS/prism/issues/982)) [[`62e258c`](https://github.com/PrismJS/prism/commit/62e258c)] -* __Reason__ (Fixes [#1046](https://github.com/PrismJS/prism/issues/1046)) [[`3cae6ce`](https://github.com/PrismJS/prism/commit/3cae6ce)] -* __Xojo__ ([#994](https://github.com/PrismJS/prism/issues/994)) [[`0224b7c`](https://github.com/PrismJS/prism/commit/0224b7c)] - -### Updated components - -* __APL__: - * Add iota underbar ([#1024](https://github.com/PrismJS/prism/issues/1024)) [[`3c5c89a`](https://github.com/PrismJS/prism/commit/3c5c89a), [`ac21d33`](https://github.com/PrismJS/prism/commit/ac21d33)] -* __AsciiDoc__: - * Optimized block regexps to prevent struggling on large files. Fixes [#1001](https://github.com/PrismJS/prism/issues/1001). [[`1a86d34`](https://github.com/PrismJS/prism/commit/1a86d34)] -* __Bash__: - * Add `npm` to function list ([#969](https://github.com/PrismJS/prism/issues/969)) [[`912bdfe`](https://github.com/PrismJS/prism/commit/912bdfe)] -* __CSS__: - * Make CSS strings greedy. Fix [#1013](https://github.com/PrismJS/prism/issues/1013). [[`e57e26d`](https://github.com/PrismJS/prism/commit/e57e26d)] -* __CSS Extras__: - * Match attribute inside selectors [[`13fed76`](https://github.com/PrismJS/prism/commit/13fed76)] -* _Groovy__: - * Fix order of decoding entities in groovy. Fixes [#1049](https://github.com/PrismJS/prism/issues/1049) ([#1050](https://github.com/PrismJS/prism/issues/1050)) [[`d75da8e`](https://github.com/PrismJS/prism/commit/d75da8e)] -* __Ini__: - * Remove important token in ini definition ([#1047](https://github.com/PrismJS/prism/issues/1047)) [[`fe8ad8b`](https://github.com/PrismJS/prism/commit/fe8ad8b)] -* __JavaScript__: - * Add exponentiation & spread/rest operator ([#991](https://github.com/PrismJS/prism/issues/991)) [[`b2de65a`](https://github.com/PrismJS/prism/commit/b2de65a), [`268d01e`](https://github.com/PrismJS/prism/commit/268d01e)] -* __JSON_: - * JSON: Fixed issues with properties and strings + added tests. Fix [#1025](https://github.com/PrismJS/prism/issues/1025) [[`25a541d`](https://github.com/PrismJS/prism/commit/25a541d)] -* __Markup__: - * Allow for dots in Markup tag names, but not in HTML tags included in Textile. Fixes [#888](https://github.com/PrismJS/prism/issues/888). [[`31ea66b`](https://github.com/PrismJS/prism/commit/31ea66b)] - * Make doctype case-insensitive ([#1009](https://github.com/PrismJS/prism/issues/1009)) [[`3dd7219`](https://github.com/PrismJS/prism/commit/3dd7219)] -* __NSIS__: - * Updated patterns ([#1032](https://github.com/PrismJS/prism/issues/1032)) [[`76ba1b8`](https://github.com/PrismJS/prism/commit/76ba1b8)] -* __PHP__: - * Make comments greedy. Fix [#197](https://github.com/PrismJS/prism/issues/197) [[`318aab3`](https://github.com/PrismJS/prism/commit/318aab3)] -* __PowerShell__: - * Fix highlighting of empty comments ([#977](https://github.com/PrismJS/prism/issues/977)) [[`4fda477`](https://github.com/PrismJS/prism/commit/4fda477)] -* __Puppet__: - * Fix over-greedy regexp detection ([#978](https://github.com/PrismJS/prism/issues/978)) [[`105be25`](https://github.com/PrismJS/prism/commit/105be25)] -* __Ruby__: - * Fix typo `Fload` to `Float` in prism-ruby.js ([#1023](https://github.com/PrismJS/prism/issues/1023)) [[`22cb018`](https://github.com/PrismJS/prism/commit/22cb018)] - * Make strings greedy. Fixes [#1048](https://github.com/PrismJS/prism/issues/1048) [[`8b0520a`](https://github.com/PrismJS/prism/commit/8b0520a)] -* __SCSS__: - * Alias statement as keyword. Fix [#246](https://github.com/PrismJS/prism/issues/246) [[`fd09391`](https://github.com/PrismJS/prism/commit/fd09391)] - * Highlight variables inside selectors and properties. [[`d6b5c2f`](https://github.com/PrismJS/prism/commit/d6b5c2f)] - * Highlight parent selector [[`8f5f1fa`](https://github.com/PrismJS/prism/commit/8f5f1fa)] -* __TypeScript__: - * Add missing `from` keyword to typescript & set `ts` as alias. ([#1042](https://github.com/PrismJS/prism/issues/1042)) [[`cba78f3`](https://github.com/PrismJS/prism/commit/cba78f3)] - -### New plugins - -* __Copy to Clipboard__ ([#891](https://github.com/PrismJS/prism/issues/891)) [[`07b81ac`](https://github.com/PrismJS/prism/commit/07b81ac)] -* __Custom Class__ ([#950](https://github.com/PrismJS/prism/issues/950)) [[`a0bd686`](https://github.com/PrismJS/prism/commit/a0bd686)] -* __Data-URI Highlight__ ([#996](https://github.com/PrismJS/prism/issues/996)) [[`bdca61b`](https://github.com/PrismJS/prism/commit/bdca61b)] -* __Toolbar__ ([#891](https://github.com/PrismJS/prism/issues/891)) [[`07b81ac`](https://github.com/PrismJS/prism/commit/07b81ac)] - -### Updated plugins - -* __Autoloader__: - * Updated documentation for Autoloader plugin [[`b4f3423`](https://github.com/PrismJS/prism/commit/b4f3423)] - * Download all grammars as a zip from Autoloader plugin page ([#981](https://github.com/PrismJS/prism/issues/981)) [[`0d0a007`](https://github.com/PrismJS/prism/commit/0d0a007), [`5c815d3`](https://github.com/PrismJS/prism/commit/5c815d3)] - * Removed duplicated script on Autoloader plugin page [[`9671996`](https://github.com/PrismJS/prism/commit/9671996)] - * Don't try to load "none" component. Fix [#1000](https://github.com/PrismJS/prism/issues/1000) [[`f89b0b9`](https://github.com/PrismJS/prism/commit/f89b0b9)] -* __WPD__: - * Fix at-rule detection + don't process if language is not handled [[`2626728`](https://github.com/PrismJS/prism/commit/2626728)] - -### Other changes - -* Improvement to greedy-flag ([#967](https://github.com/PrismJS/prism/issues/967)) [[`500121b`](https://github.com/PrismJS/prism/commit/500121b), [`9893489`](https://github.com/PrismJS/prism/commit/9893489)] -* Add setTimeout fallback for requestAnimationFrame. Fixes [#987](https://github.com/PrismJS/prism/issues/987). ([#988](https://github.com/PrismJS/prism/issues/988)) [[`c9bdcd3`](https://github.com/PrismJS/prism/commit/c9bdcd3)] -* Added aria-hidden attributes on elements created by the Line Highlight and Line Numbers plugins. Fixes [#574](https://github.com/PrismJS/prism/issues/574). [[`e5587a7`](https://github.com/PrismJS/prism/commit/e5587a7)] -* Don't insert space before ">" when there is no attributes [[`3dc8c9e`](https://github.com/PrismJS/prism/commit/3dc8c9e)] -* Added missing hooks-related tests for AsciiDoc, Groovy, Handlebars, Markup, PHP and Smarty [[`c1a0c1b`](https://github.com/PrismJS/prism/commit/c1a0c1b)] -* Fix issue when using Line numbers plugin and Normalise whitespace plugin together with Handlebars, PHP or Smarty. Fix [#1018](https://github.com/PrismJS/prism/issues/1018), [#997](https://github.com/PrismJS/prism/issues/997), [#935](https://github.com/PrismJS/prism/issues/935). Revert [#998](https://github.com/PrismJS/prism/issues/998). [[`86aa3d2`](https://github.com/PrismJS/prism/commit/86aa3d2)] -* Optimized logo ([#990](https://github.com/PrismJS/prism/issues/990)) ([#1002](https://github.com/PrismJS/prism/issues/1002)) [[`f69e570`](https://github.com/PrismJS/prism/commit/f69e570), [`218fd25`](https://github.com/PrismJS/prism/commit/218fd25)] -* Remove unneeded prefixed CSS ([#989](https://github.com/PrismJS/prism/issues/989)) [[`5e56833`](https://github.com/PrismJS/prism/commit/5e56833)] -* Optimize images ([#1007](https://github.com/PrismJS/prism/issues/1007)) [[`b2fa6d5`](https://github.com/PrismJS/prism/commit/b2fa6d5)] -* Add yarn.lock to .gitignore ([#1035](https://github.com/PrismJS/prism/issues/1035)) [[`03ecf74`](https://github.com/PrismJS/prism/commit/03ecf74)] -* Fix greedy flag bug. Fixes [#1039](https://github.com/PrismJS/prism/issues/1039) [[`32cd99f`](https://github.com/PrismJS/prism/commit/32cd99f)] -* Ruby: Fix test after [#1023](https://github.com/PrismJS/prism/issues/1023) [[`b15d43b`](https://github.com/PrismJS/prism/commit/b15d43b)] -* Ini: Fix test after [#1047](https://github.com/PrismJS/prism/issues/1047) [[`25cdd3f`](https://github.com/PrismJS/prism/commit/25cdd3f)] -* Reduce risk of XSS ([#1051](https://github.com/PrismJS/prism/issues/1051)) [[`17e33bc`](https://github.com/PrismJS/prism/commit/17e33bc)] -* env.code can be modified by before-sanity-check hook even when using language-none. Fix [#1066](https://github.com/PrismJS/prism/issues/1066) [[`83bafbd`](https://github.com/PrismJS/prism/commit/83bafbd)] - - -## 1.5.1 (2016-06-05) - -### Updated components - -* __Normalize Whitespace__: - * Add class that disables the normalize whitespace plugin [[`9385c54`](https://github.com/PrismJS/prism/commit/9385c54)] -* __JavaScript Language__: - * Rearrange the `string` and `template-string` token in JavaScript [[`1158e46`](https://github.com/PrismJS/prism/commit/1158e46)] -* __SQL Language__: - * add delimeter and delimeters keywords to sql ([#958](https://github.com/PrismJS/prism/pull/958)) [[`a9ef24e`](https://github.com/PrismJS/prism/commit/a9ef24e)] - * add AUTO_INCREMENT and DATE keywords to sql ([#954](https://github.com/PrismJS/prism/pull/954)) [[`caea2af`](https://github.com/PrismJS/prism/commit/caea2af)] -* __Diff Language__: - * Highlight diff lines with only + or - ([#952](https://github.com/PrismJS/prism/pull/952)) [[`4d0526f`](https://github.com/PrismJS/prism/commit/4d0526f)] - -### Other changes - -* Allow for asynchronous loading of prism.js ([#959](https://github.com/PrismJS/prism/pull/959)) -* Use toLowerCase on language names ([#957](https://github.com/PrismJS/prism/pull/957)) [[`acd9508`](https://github.com/PrismJS/prism/commit/acd9508)] -* link to index for basic usage - fixes [#945](https://github.com/PrismJS/prism/issues/945) ([#946](https://github.com/PrismJS/prism/pull/946)) [[`6c772d8`](https://github.com/PrismJS/prism/commit/6c772d8)] -* Fixed monospace typo ([#953](https://github.com/PrismJS/prism/pull/953)) [[`e6c3498`](https://github.com/PrismJS/prism/commit/e6c3498)] - -## 1.5.0 (2016-05-01) - -### New components - -* __Bro Language__ ([#925](https://github.com/PrismJS/prism/pull/925)) -* __Protocol Buffers Language__ ([#938](https://github.com/PrismJS/prism/pull/938)) [[`ae4a4f2`](https://github.com/PrismJS/prism/commit/ae4a4f2)] - -### Updated components - -* __Keep Markup__: - * Fix Keep Markup plugin incorrect highlighting ([#880](https://github.com/PrismJS/prism/pull/880)) [[`24841ef`](https://github.com/PrismJS/prism/commit/24841ef)] -* __Groovy Language__: - * Fix double HTML-encoding bug in Groovy language [[`24a0936`](https://github.com/PrismJS/prism/commit/24a0936)] -* __Java Language__: - * Adding annotation token for Java ([#905](https://github.com/PrismJS/prism/pull/905)) [[`367ace6`](https://github.com/PrismJS/prism/commit/367ace6)] -* __SAS Language__: - * Add missing keywords for SAS ([#922](https://github.com/PrismJS/prism/pull/922)) -* __YAML Language__: - * fix hilighting of YAML keys on first line of code block ([#943](https://github.com/PrismJS/prism/pull/943)) [[`f19db81`](https://github.com/PrismJS/prism/commit/f19db81)] -* __C# Language__: - * Support for generic methods in csharp [[`6f75735`](https://github.com/PrismJS/prism/commit/6f75735)] - -### New plugins - -* __Unescaped Markup__ [[`07d77e5`](https://github.com/PrismJS/prism/commit/07d77e5)] -* __Normalize Whitespace__ ([#847](https://github.com/PrismJS/prism/pull/847)) [[`e86ec01`](https://github.com/PrismJS/prism/commit/e86ec01)] - -### Other changes - -* Add JSPM support [[`ad048ab`](https://github.com/PrismJS/prism/commit/ad048ab)] -* update linear-gradient syntax from `left` to `to right` [[`cd234dc`](https://github.com/PrismJS/prism/commit/cd234dc)] -* Add after-property to allow ordering of plugins [[`224b7a1`](https://github.com/PrismJS/prism/commit/224b7a1)] -* Partial solution for the "Comment-like substrings"-problem [[`2705c50`](https://github.com/PrismJS/prism/commit/2705c50)] -* Add property 'aliasTitles' to components.js [[`54400fb`](https://github.com/PrismJS/prism/commit/54400fb)] -* Add before-highlightall hook [[`70a8602`](https://github.com/PrismJS/prism/commit/70a8602)] -* Fix catastrophic backtracking regex issues in JavaScript [[`ab65be2`](https://github.com/PrismJS/prism/commit/ab65be2)] - -## 1.4.1 (2016-02-03) - -### Other changes - -* Fix DFS bug in Prism core [[`b86c727`](https://github.com/PrismJS/prism/commit/b86c727)] - -## 1.4.0 (2016-02-03) - -### New components - -* __Solarized Light__ ([#855](https://github.com/PrismJS/prism/pull/855)) [[`70846ba`](https://github.com/PrismJS/prism/commit/70846ba)] -* __JSON__ ([#370](https://github.com/PrismJS/prism/pull/370)) [[`ad2fcd0`](https://github.com/PrismJS/prism/commit/ad2fcd0)] - -### Updated components - -* __Show Language__: - * Remove data-language attribute ([#840](https://github.com/PrismJS/prism/pull/840)) [[`eb9a83c`](https://github.com/PrismJS/prism/commit/eb9a83c)] - * Allow custom label without a language mapping ([#837](https://github.com/PrismJS/prism/pull/837)) [[`7e74aef`](https://github.com/PrismJS/prism/commit/7e74aef)] -* __JSX__: - * Better Nesting in JSX attributes ([#842](https://github.com/PrismJS/prism/pull/842)) [[`971dda7`](https://github.com/PrismJS/prism/commit/971dda7)] -* __File Highlight__: - * Defer File Highlight until the full DOM has loaded. ([#844](https://github.com/PrismJS/prism/pull/844)) [[`6f995ef`](https://github.com/PrismJS/prism/commit/6f995ef)] -* __Coy Theme__: - * Fix coy theme shadows ([#865](https://github.com/PrismJS/prism/pull/865)) [[`58d2337`](https://github.com/PrismJS/prism/commit/58d2337)] -* __Show Invisibles__: - * Ensure show-invisibles compat with autoloader ([#874](https://github.com/PrismJS/prism/pull/874)) [[`c3cfb1f`](https://github.com/PrismJS/prism/commit/c3cfb1f)] - * Add support for the space character for the show-invisibles plugin ([#876](https://github.com/PrismJS/prism/pull/876)) [[`05442d3`](https://github.com/PrismJS/prism/commit/05442d3)] - -### New plugins - -* __Command Line__ ([#831](https://github.com/PrismJS/prism/pull/831)) [[`8378906`](https://github.com/PrismJS/prism/commit/8378906)] - -### Other changes - -* Use document.currentScript instead of document.getElementsByTagName() [[`fa98743`](https://github.com/PrismJS/prism/commit/fa98743)] -* Add prefix for Firefox selection and move prefixed rule first [[`6d54717`](https://github.com/PrismJS/prism/commit/6d54717)] -* No background for `` in `
                ` [[`8c310bc`](https://github.com/PrismJS/prism/commit/8c310bc)]
                -* Fixing to initial copyright year [[`69cbf7a`](https://github.com/PrismJS/prism/commit/69cbf7a)]
                -* Simplify the “lang” regex [[`417f54a`](https://github.com/PrismJS/prism/commit/417f54a)]
                -* Fix broken heading links [[`a7f9e62`](https://github.com/PrismJS/prism/commit/a7f9e62)]
                -* Prevent infinite recursion in DFS [[`02894e1`](https://github.com/PrismJS/prism/commit/02894e1)]
                -* Fix incorrect page title [[`544b56f`](https://github.com/PrismJS/prism/commit/544b56f)]
                -* Link scss to webplatform wiki [[`08d979a`](https://github.com/PrismJS/prism/commit/08d979a)]
                -* Revert white-space to normal when code is inline instead of in a pre [[`1a971b5`](https://github.com/PrismJS/prism/commit/1a971b5)]
                -
                -## 1.3.0 (2015-10-26)
                -
                -### New components
                -
                -* __AsciiDoc__ ([#800](https://github.com/PrismJS/prism/issues/800)) [[`6803ca0`](https://github.com/PrismJS/prism/commit/6803ca0)]
                -* __Haxe__ ([#811](https://github.com/PrismJS/prism/issues/811)) [[`bd44341`](https://github.com/PrismJS/prism/commit/bd44341)]
                -* __Icon__ ([#803](https://github.com/PrismJS/prism/issues/803)) [[`b43c5f3`](https://github.com/PrismJS/prism/commit/b43c5f3)]
                -* __Kotlin ([#814](https://github.com/PrismJS/prism/issues/814)) [[`e8a31a5`](https://github.com/PrismJS/prism/commit/e8a31a5)]
                -* __Lua__ ([#804](https://github.com/PrismJS/prism/issues/804)) [[`a36bc4a`](https://github.com/PrismJS/prism/commit/a36bc4a)]
                -* __Nix__ ([#795](https://github.com/PrismJS/prism/issues/795)) [[`9b275c8`](https://github.com/PrismJS/prism/commit/9b275c8)]
                -* __Oz__ ([#805](https://github.com/PrismJS/prism/issues/805)) [[`388c53f`](https://github.com/PrismJS/prism/commit/388c53f)]
                -* __PARI/GP__ ([#802](https://github.com/PrismJS/prism/issues/802)) [[`253c035`](https://github.com/PrismJS/prism/commit/253c035)]
                -* __Parser__ ([#808](https://github.com/PrismJS/prism/issues/808)) [[`a953b3a`](https://github.com/PrismJS/prism/commit/a953b3a)]
                -* __Puppet__ ([#813](https://github.com/PrismJS/prism/issues/813)) [[`81933ee`](https://github.com/PrismJS/prism/commit/81933ee)]
                -* __Roboconf__ ([#812](https://github.com/PrismJS/prism/issues/812)) [[`f5db346`](https://github.com/PrismJS/prism/commit/f5db346)]
                -
                -### Updated components
                -
                -* __C__:
                -	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
                -* __C#__:
                -	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
                -	* Fix detection of float numbers ([#806](https://github.com/PrismJS/prism/issues/806)) [[`1dae72b`](https://github.com/PrismJS/prism/commit/1dae72b)]
                -* __F#__:
                -	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
                -* __JavaScript__:
                -	* Highlight true and false as booleans ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
                -* __Python__:
                -	* Highlight triple-quoted strings before comments. Fix [#815](https://github.com/PrismJS/prism/issues/815) [[`90fbf0b`](https://github.com/PrismJS/prism/commit/90fbf0b)]
                -
                -### New plugins
                -
                -* __Previewer: Time__ ([#790](https://github.com/PrismJS/prism/issues/790)) [[`88173de`](https://github.com/PrismJS/prism/commit/88173de)]
                -* __Previewer: Angle__ ([#791](https://github.com/PrismJS/prism/issues/791)) [[`a434c86`](https://github.com/PrismJS/prism/commit/a434c86)]
                -
                -### Other changes
                -
                -* Increase mocha's timeout [[`f1c41db`](https://github.com/PrismJS/prism/commit/f1c41db)]
                -* Prevent most errors in IE8. Fix [#9](https://github.com/PrismJS/prism/issues/9) [[`9652d75`](https://github.com/PrismJS/prism/commit/9652d75)]
                -* Add U.S. Web Design Standards on homepage. Fix [#785](https://github.com/PrismJS/prism/issues/785) [[`e10d48b`](https://github.com/PrismJS/prism/commit/e10d48b), [`79ebbf8`](https://github.com/PrismJS/prism/commit/79ebbf8), [`2f7088d`](https://github.com/PrismJS/prism/commit/2f7088d)]
                -* Added gulp task to autolink PRs and commits in changelog [[`5ec4e4d`](https://github.com/PrismJS/prism/commit/5ec4e4d)]
                -* Use child processes to run each set of tests, in order to deal with the memory leak in vm.runInNewContext() [[`9a4b6fa`](https://github.com/PrismJS/prism/commit/9a4b6fa)]
                -
                -## 1.2.0 (2015-10-07)
                -
                -### New components
                -
                -* __Batch__ ([#781](https://github.com/PrismJS/prism/issues/781)) [[`eab5b06`](https://github.com/PrismJS/prism/commit/eab5b06)]
                -
                -### Updated components
                -
                -* __ASP.NET__:
                -	* Simplified pattern for `"),t.textContent=e.code,n.appendChild(t),e.element.parentNode.replaceChild(n,e.element),e.element=t,void 0}var n=e.element.parentNode;!e.code&&n&&"pre"==n.nodeName.toLowerCase()&&e.element.childNodes.length&&"#comment"==e.element.childNodes[0].nodeName&&(e.element.textContent=e.code=e.element.childNodes[0].textContent)}}))}();
                \ No newline at end of file
                diff --git a/node_modules/prismjs/plugins/wpd/prism-wpd.css b/node_modules/prismjs/plugins/wpd/prism-wpd.css
                deleted file mode 100644
                index 43b7165..0000000
                --- a/node_modules/prismjs/plugins/wpd/prism-wpd.css
                +++ /dev/null
                @@ -1,11 +0,0 @@
                -code[class*="language-"] a[href],
                -pre[class*="language-"] a[href] {
                -	cursor: help;
                -	text-decoration: none;
                -}
                -
                -code[class*="language-"] a[href]:hover,
                -pre[class*="language-"] a[href]:hover {
                -	cursor: help;
                -	text-decoration: underline;
                -}
                \ No newline at end of file
                diff --git a/node_modules/prismjs/plugins/wpd/prism-wpd.js b/node_modules/prismjs/plugins/wpd/prism-wpd.js
                deleted file mode 100644
                index 595f34c..0000000
                --- a/node_modules/prismjs/plugins/wpd/prism-wpd.js
                +++ /dev/null
                @@ -1,169 +0,0 @@
                -(function(){
                -
                -if (
                -	typeof self !== 'undefined' && !self.Prism ||
                -	typeof global !== 'undefined' && !global.Prism
                -) {
                -	return;
                -}
                -
                -if (Prism.languages.css) {
                -	// check whether the selector is an advanced pattern before extending it
                -	if (Prism.languages.css.selector.pattern)
                -	{
                -		Prism.languages.css.selector.inside['pseudo-class'] = /:[\w-]+/;
                -		Prism.languages.css.selector.inside['pseudo-element'] = /::[\w-]+/;
                -	}
                -	else
                -	{
                -		Prism.languages.css.selector = {
                -			pattern: Prism.languages.css.selector,
                -			inside: {
                -				'pseudo-class': /:[\w-]+/,
                -				'pseudo-element': /::[\w-]+/
                -			}
                -		};
                -	}
                -}
                -
                -if (Prism.languages.markup) {
                -	Prism.languages.markup.tag.inside.tag.inside['tag-id'] = /[\w-]+/;
                -	
                -	var Tags = {
                -		HTML: {
                -			'a': 1, 'abbr': 1, 'acronym': 1, 'b': 1, 'basefont': 1, 'bdo': 1, 'big': 1, 'blink': 1, 'cite': 1, 'code': 1, 'dfn': 1, 'em': 1, 'kbd': 1,  'i': 1, 
                -			'rp': 1, 'rt': 1, 'ruby': 1, 's': 1, 'samp': 1, 'small': 1, 'spacer': 1, 'strike': 1, 'strong': 1, 'sub': 1, 'sup': 1, 'time': 1, 'tt': 1,  'u': 1, 
                -			'var': 1, 'wbr': 1, 'noframes': 1, 'summary': 1, 'command': 1, 'dt': 1, 'dd': 1, 'figure': 1, 'figcaption': 1, 'center': 1, 'section': 1, 'nav': 1,
                -			'article': 1, 'aside': 1, 'hgroup': 1, 'header': 1, 'footer': 1, 'address': 1, 'noscript': 1, 'isIndex': 1, 'main': 1, 'mark': 1, 'marquee': 1,
                -			'meter': 1, 'menu': 1
                -		},
                -		SVG: {
                -			'animateColor': 1, 'animateMotion': 1, 'animateTransform': 1, 'glyph': 1, 'feBlend': 1, 'feColorMatrix': 1, 'feComponentTransfer': 1, 
                -			'feFuncR': 1, 'feFuncG': 1, 'feFuncB': 1, 'feFuncA': 1, 'feComposite': 1, 'feConvolveMatrix': 1, 'feDiffuseLighting': 1, 'feDisplacementMap': 1, 
                -			'feFlood': 1, 'feGaussianBlur': 1, 'feImage': 1, 'feMerge': 1, 'feMergeNode': 1, 'feMorphology': 1, 'feOffset': 1, 'feSpecularLighting': 1, 
                -			'feTile': 1, 'feTurbulence': 1, 'feDistantLight': 1, 'fePointLight': 1, 'feSpotLight': 1, 'linearGradient': 1, 'radialGradient': 1, 'altGlyph': 1, 
                -			'textPath': 1, 'tref': 1, 'altglyph': 1, 'textpath': 1, 'altglyphdef': 1, 'altglyphitem': 1, 'clipPath': 1, 'color-profile': 1, 'cursor': 1,
                -			'font-face': 1, 'font-face-format': 1, 'font-face-name': 1, 'font-face-src': 1, 'font-face-uri': 1, 'foreignObject': 1, 'glyphRef': 1,
                -			'hkern': 1, 'vkern': 1
                -		},
                -		MathML: {}
                -	}
                -}
                -
                -var language;
                -
                -Prism.hooks.add('wrap', function(env) {
                -	if ((env.type == 'tag-id'
                -		|| (env.type == 'property' && env.content.indexOf('-') != 0)
                -		|| (env.type == 'rule'&& env.content.indexOf('@-') != 0)
                -		|| (env.type == 'pseudo-class'&& env.content.indexOf(':-') != 0) 
                -		|| (env.type == 'pseudo-element'&& env.content.indexOf('::-') != 0) 
                -        || (env.type == 'attr-name' && env.content.indexOf('data-') != 0)
                -		) && env.content.indexOf('<') === -1
                -	) {
                -		if (env.language == 'css'
                -			|| env.language == 'scss'
                -			|| env.language == 'markup'
                -		) {
                -			var searchURL = 'w/index.php?fulltext&search=';
                -
                -			env.tag = 'a';
                -
                -			var href = 'http://docs.webplatform.org/';
                -
                -			if (env.language == 'css' || env.language == 'scss') {
                -				href += 'wiki/css/';
                -
                -				if (env.type == 'property') {
                -					href += 'properties/';
                -				}
                -				else if (env.type == 'rule') {
                -					href += 'atrules/';
                -				}
                -				else if (env.type == 'pseudo-class') {
                -					href += 'selectors/pseudo-classes/';
                -				}
                -				else if (env.type == 'pseudo-element') {
                -					href += 'selectors/pseudo-elements/';
                -				}
                -			}
                -			else if (env.language == 'markup') {
                -				if (env.type == 'tag-id') {
                -					// Check language
                -					language = getLanguage(env.content) || language;
                -
                -					if (language) {
                -						href += 'wiki/' + language + '/elements/';
                -					}
                -					else {
                -						href += searchURL;
                -					}
                -				}
                -				else if (env.type == 'attr-name') {
                -					if (language) {
                -						href += 'wiki/' + language + '/attributes/';
                -					}
                -					else {
                -						href += searchURL;
                -					}
                -				}
                -			}
                -
                -			href += env.content;
                -
                -			env.attributes.href = href;
                -			env.attributes.target = '_blank';
                -		}
                -	}
                -});
                -
                -function getLanguage(tag) {
                -	var tagL = tag.toLowerCase();
                -	
                -	if (Tags.HTML[tagL]) {
                -		return 'html';
                -	}
                -	else if (Tags.SVG[tag]) {
                -		return 'svg';
                -	}
                -	else if (Tags.MathML[tag]) {
                -		return 'mathml';
                -	}
                -	
                -	// Not in dictionary, perform check
                -	if (Tags.HTML[tagL] !== 0 && typeof document !== 'undefined') {
                -		var htmlInterface = (document.createElement(tag).toString().match(/\[object HTML(.+)Element\]/) || [])[1];
                -		
                -		if (htmlInterface && htmlInterface != 'Unknown') {
                -			Tags.HTML[tagL] = 1;
                -			return 'html';
                -		}
                -	}
                -	
                -	Tags.HTML[tagL] = 0;
                -	
                -	if (Tags.SVG[tag] !== 0 && typeof document !== 'undefined') {
                -		var svgInterface = (document.createElementNS('http://www.w3.org/2000/svg', tag).toString().match(/\[object SVG(.+)Element\]/) || [])[1];
                -		
                -		if (svgInterface && svgInterface != 'Unknown') {
                -			Tags.SVG[tag] = 1;
                -			return 'svg';
                -		}
                -	}
                -	
                -	Tags.SVG[tag] = 0;
                -	
                -	// Lame way to detect MathML, but browsers don’t expose interface names there :(
                -	if (Tags.MathML[tag] !== 0) {
                -		if (tag.indexOf('m') === 0) {
                -			Tags.MathML[tag] = 1;
                -			return 'mathml';
                -		}
                -	}
                -	
                -	Tags.MathML[tag] = 0;
                -	
                -	return null;
                -}
                -
                -})();
                \ No newline at end of file
                diff --git a/node_modules/prismjs/plugins/wpd/prism-wpd.min.js b/node_modules/prismjs/plugins/wpd/prism-wpd.min.js
                deleted file mode 100644
                index d7b2a61..0000000
                --- a/node_modules/prismjs/plugins/wpd/prism-wpd.min.js
                +++ /dev/null
                @@ -1 +0,0 @@
                -!function(){function e(e){var a=e.toLowerCase();if(t.HTML[a])return"html";if(t.SVG[e])return"svg";if(t.MathML[e])return"mathml";if(0!==t.HTML[a]&&"undefined"!=typeof document){var n=(document.createElement(e).toString().match(/\[object HTML(.+)Element\]/)||[])[1];if(n&&"Unknown"!=n)return t.HTML[a]=1,"html"}if(t.HTML[a]=0,0!==t.SVG[e]&&"undefined"!=typeof document){var s=(document.createElementNS("http://www.w3.org/2000/svg",e).toString().match(/\[object SVG(.+)Element\]/)||[])[1];if(s&&"Unknown"!=s)return t.SVG[e]=1,"svg"}return t.SVG[e]=0,0!==t.MathML[e]&&0===e.indexOf("m")?(t.MathML[e]=1,"mathml"):(t.MathML[e]=0,null)}if(("undefined"==typeof self||self.Prism)&&("undefined"==typeof global||global.Prism)){if(Prism.languages.css&&(Prism.languages.css.selector.pattern?(Prism.languages.css.selector.inside["pseudo-class"]=/:[\w-]+/,Prism.languages.css.selector.inside["pseudo-element"]=/::[\w-]+/):Prism.languages.css.selector={pattern:Prism.languages.css.selector,inside:{"pseudo-class":/:[\w-]+/,"pseudo-element":/::[\w-]+/}}),Prism.languages.markup){Prism.languages.markup.tag.inside.tag.inside["tag-id"]=/[\w-]+/;var t={HTML:{a:1,abbr:1,acronym:1,b:1,basefont:1,bdo:1,big:1,blink:1,cite:1,code:1,dfn:1,em:1,kbd:1,i:1,rp:1,rt:1,ruby:1,s:1,samp:1,small:1,spacer:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1,wbr:1,noframes:1,summary:1,command:1,dt:1,dd:1,figure:1,figcaption:1,center:1,section:1,nav:1,article:1,aside:1,hgroup:1,header:1,footer:1,address:1,noscript:1,isIndex:1,main:1,mark:1,marquee:1,meter:1,menu:1},SVG:{animateColor:1,animateMotion:1,animateTransform:1,glyph:1,feBlend:1,feColorMatrix:1,feComponentTransfer:1,feFuncR:1,feFuncG:1,feFuncB:1,feFuncA:1,feComposite:1,feConvolveMatrix:1,feDiffuseLighting:1,feDisplacementMap:1,feFlood:1,feGaussianBlur:1,feImage:1,feMerge:1,feMergeNode:1,feMorphology:1,feOffset:1,feSpecularLighting:1,feTile:1,feTurbulence:1,feDistantLight:1,fePointLight:1,feSpotLight:1,linearGradient:1,radialGradient:1,altGlyph:1,textPath:1,tref:1,altglyph:1,textpath:1,altglyphdef:1,altglyphitem:1,clipPath:1,"color-profile":1,cursor:1,"font-face":1,"font-face-format":1,"font-face-name":1,"font-face-src":1,"font-face-uri":1,foreignObject:1,glyphRef:1,hkern:1,vkern:1},MathML:{}}}var a;Prism.hooks.add("wrap",function(t){if(("tag-id"==t.type||"property"==t.type&&0!=t.content.indexOf("-")||"rule"==t.type&&0!=t.content.indexOf("@-")||"pseudo-class"==t.type&&0!=t.content.indexOf(":-")||"pseudo-element"==t.type&&0!=t.content.indexOf("::-")||"attr-name"==t.type&&0!=t.content.indexOf("data-"))&&-1===t.content.indexOf("<")&&("css"==t.language||"scss"==t.language||"markup"==t.language)){var n="w/index.php?fulltext&search=";t.tag="a";var s="http://docs.webplatform.org/";"css"==t.language||"scss"==t.language?(s+="wiki/css/","property"==t.type?s+="properties/":"rule"==t.type?s+="atrules/":"pseudo-class"==t.type?s+="selectors/pseudo-classes/":"pseudo-element"==t.type&&(s+="selectors/pseudo-elements/")):"markup"==t.language&&("tag-id"==t.type?(a=e(t.content)||a,s+=a?"wiki/"+a+"/elements/":n):"attr-name"==t.type&&(s+=a?"wiki/"+a+"/attributes/":n)),s+=t.content,t.attributes.href=s,t.attributes.target="_blank"}})}}();
                \ No newline at end of file
                diff --git a/node_modules/prismjs/prism.esproj/Project.espressostorage b/node_modules/prismjs/prism.esproj/Project.espressostorage
                deleted file mode 100644
                index 6183247..0000000
                Binary files a/node_modules/prismjs/prism.esproj/Project.espressostorage and /dev/null differ
                diff --git a/node_modules/prismjs/prism.esproj/user.leaverou.espressostorage b/node_modules/prismjs/prism.esproj/user.leaverou.espressostorage
                deleted file mode 100644
                index f5278e4..0000000
                Binary files a/node_modules/prismjs/prism.esproj/user.leaverou.espressostorage and /dev/null differ
                diff --git a/node_modules/prismjs/prism.js b/node_modules/prismjs/prism.js
                deleted file mode 100644
                index f36644c..0000000
                --- a/node_modules/prismjs/prism.js
                +++ /dev/null
                @@ -1,795 +0,0 @@
                -
                -/* **********************************************
                -     Begin prism-core.js
                -********************************************** */
                -
                -var _self = (typeof window !== 'undefined')
                -	? window   // if in browser
                -	: (
                -		(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
                -		? self // if in worker
                -		: {}   // if in node js
                -	);
                -
                -/**
                - * Prism: Lightweight, robust, elegant syntax highlighting
                - * MIT license http://www.opensource.org/licenses/mit-license.php/
                - * @author Lea Verou http://lea.verou.me
                - */
                -
                -var Prism = (function(){
                -
                -// Private helper vars
                -var lang = /\blang(?:uage)?-(\w+)\b/i;
                -var uniqueId = 0;
                -
                -var _ = _self.Prism = {
                -	util: {
                -		encode: function (tokens) {
                -			if (tokens instanceof Token) {
                -				return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
                -			} else if (_.util.type(tokens) === 'Array') {
                -				return tokens.map(_.util.encode);
                -			} else {
                -				return tokens.replace(/&/g, '&').replace(/ text.length) {
                -						// Something went terribly wrong, ABORT, ABORT!
                -						break tokenloop;
                -					}
                -
                -					if (str instanceof Token) {
                -						continue;
                -					}
                -
                -					pattern.lastIndex = 0;
                -
                -					var match = pattern.exec(str),
                -					    delNum = 1;
                -
                -					// Greedy patterns can override/remove up to two previously matched tokens
                -					if (!match && greedy && i != strarr.length - 1) {
                -						pattern.lastIndex = pos;
                -						match = pattern.exec(text);
                -						if (!match) {
                -							break;
                -						}
                -
                -						var from = match.index + (lookbehind ? match[1].length : 0),
                -						    to = match.index + match[0].length,
                -						    k = i,
                -						    p = pos;
                -
                -						for (var len = strarr.length; k < len && p < to; ++k) {
                -							p += strarr[k].length;
                -							// Move the index i to the element in strarr that is closest to from
                -							if (from >= p) {
                -								++i;
                -								pos = p;
                -							}
                -						}
                -
                -						/*
                -						 * If strarr[i] is a Token, then the match starts inside another Token, which is invalid
                -						 * If strarr[k - 1] is greedy we are in conflict with another greedy pattern
                -						 */
                -						if (strarr[i] instanceof Token || strarr[k - 1].greedy) {
                -							continue;
                -						}
                -
                -						// Number of tokens to delete and replace with the new match
                -						delNum = k - i;
                -						str = text.slice(pos, p);
                -						match.index -= pos;
                -					}
                -
                -					if (!match) {
                -						continue;
                -					}
                -
                -					if(lookbehind) {
                -						lookbehindLength = match[1].length;
                -					}
                -
                -					var from = match.index + lookbehindLength,
                -					    match = match[0].slice(lookbehindLength),
                -					    to = from + match.length,
                -					    before = str.slice(0, from),
                -					    after = str.slice(to);
                -
                -					var args = [i, delNum];
                -
                -					if (before) {
                -						args.push(before);
                -					}
                -
                -					var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);
                -
                -					args.push(wrapped);
                -
                -					if (after) {
                -						args.push(after);
                -					}
                -
                -					Array.prototype.splice.apply(strarr, args);
                -				}
                -			}
                -		}
                -
                -		return strarr;
                -	},
                -
                -	hooks: {
                -		all: {},
                -
                -		add: function (name, callback) {
                -			var hooks = _.hooks.all;
                -
                -			hooks[name] = hooks[name] || [];
                -
                -			hooks[name].push(callback);
                -		},
                -
                -		run: function (name, env) {
                -			var callbacks = _.hooks.all[name];
                -
                -			if (!callbacks || !callbacks.length) {
                -				return;
                -			}
                -
                -			for (var i=0, callback; callback = callbacks[i++];) {
                -				callback(env);
                -			}
                -		}
                -	}
                -};
                -
                -var Token = _.Token = function(type, content, alias, matchedStr, greedy) {
                -	this.type = type;
                -	this.content = content;
                -	this.alias = alias;
                -	// Copy of the full string this token was created from
                -	this.length = (matchedStr || "").length|0;
                -	this.greedy = !!greedy;
                -};
                -
                -Token.stringify = function(o, language, parent) {
                -	if (typeof o == 'string') {
                -		return o;
                -	}
                -
                -	if (_.util.type(o) === 'Array') {
                -		return o.map(function(element) {
                -			return Token.stringify(element, language, o);
                -		}).join('');
                -	}
                -
                -	var env = {
                -		type: o.type,
                -		content: Token.stringify(o.content, language, parent),
                -		tag: 'span',
                -		classes: ['token', o.type],
                -		attributes: {},
                -		language: language,
                -		parent: parent
                -	};
                -
                -	if (env.type == 'comment') {
                -		env.attributes['spellcheck'] = 'true';
                -	}
                -
                -	if (o.alias) {
                -		var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];
                -		Array.prototype.push.apply(env.classes, aliases);
                -	}
                -
                -	_.hooks.run('wrap', env);
                -
                -	var attributes = Object.keys(env.attributes).map(function(name) {
                -		return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"';
                -	}).join(' ');
                -
                -	return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';
                -
                -};
                -
                -if (!_self.document) {
                -	if (!_self.addEventListener) {
                -		// in Node.js
                -		return _self.Prism;
                -	}
                - 	// In worker
                -	_self.addEventListener('message', function(evt) {
                -		var message = JSON.parse(evt.data),
                -		    lang = message.language,
                -		    code = message.code,
                -		    immediateClose = message.immediateClose;
                -
                -		_self.postMessage(_.highlight(code, _.languages[lang], lang));
                -		if (immediateClose) {
                -			_self.close();
                -		}
                -	}, false);
                -
                -	return _self.Prism;
                -}
                -
                -//Get current script and highlight
                -var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop();
                -
                -if (script) {
                -	_.filename = script.src;
                -
                -	if (document.addEventListener && !script.hasAttribute('data-manual')) {
                -		if(document.readyState !== "loading") {
                -			if (window.requestAnimationFrame) {
                -				window.requestAnimationFrame(_.highlightAll);
                -			} else {
                -				window.setTimeout(_.highlightAll, 16);
                -			}
                -		}
                -		else {
                -			document.addEventListener('DOMContentLoaded', _.highlightAll);
                -		}
                -	}
                -}
                -
                -return _self.Prism;
                -
                -})();
                -
                -if (typeof module !== 'undefined' && module.exports) {
                -	module.exports = Prism;
                -}
                -
                -// hack for components to work correctly in node.js
                -if (typeof global !== 'undefined') {
                -	global.Prism = Prism;
                -}
                -
                -
                -/* **********************************************
                -     Begin prism-markup.js
                -********************************************** */
                -
                -Prism.languages.markup = {
                -	'comment': //,
                -	'prolog': /<\?[\w\W]+?\?>/,
                -	'doctype': //i,
                -	'cdata': //i,
                -	'tag': {
                -		pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
                -		inside: {
                -			'tag': {
                -				pattern: /^<\/?[^\s>\/]+/i,
                -				inside: {
                -					'punctuation': /^<\/?/,
                -					'namespace': /^[^\s>\/:]+:/
                -				}
                -			},
                -			'attr-value': {
                -				pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
                -				inside: {
                -					'punctuation': /[=>"']/
                -				}
                -			},
                -			'punctuation': /\/?>/,
                -			'attr-name': {
                -				pattern: /[^\s>\/]+/,
                -				inside: {
                -					'namespace': /^[^\s>\/:]+:/
                -				}
                -			}
                -
                -		}
                -	},
                -	'entity': /&#?[\da-z]{1,8};/i
                -};
                -
                -// Plugin to make entity title show the real entity, idea by Roman Komarov
                -Prism.hooks.add('wrap', function(env) {
                -
                -	if (env.type === 'entity') {
                -		env.attributes['title'] = env.content.replace(/&/, '&');
                -	}
                -});
                -
                -Prism.languages.xml = Prism.languages.markup;
                -Prism.languages.html = Prism.languages.markup;
                -Prism.languages.mathml = Prism.languages.markup;
                -Prism.languages.svg = Prism.languages.markup;
                -
                -
                -/* **********************************************
                -     Begin prism-css.js
                -********************************************** */
                -
                -Prism.languages.css = {
                -	'comment': /\/\*[\w\W]*?\*\//,
                -	'atrule': {
                -		pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i,
                -		inside: {
                -			'rule': /@[\w-]+/
                -			// See rest below
                -		}
                -	},
                -	'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
                -	'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/,
                -	'string': {
                -		pattern: /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,
                -		greedy: true
                -	},
                -	'property': /(\b|\B)[\w-]+(?=\s*:)/i,
                -	'important': /\B!important\b/i,
                -	'function': /[-a-z0-9]+(?=\()/i,
                -	'punctuation': /[(){};:]/
                -};
                -
                -Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);
                -
                -if (Prism.languages.markup) {
                -	Prism.languages.insertBefore('markup', 'tag', {
                -		'style': {
                -			pattern: /()[\w\W]*?(?=<\/style>)/i,
                -			lookbehind: true,
                -			inside: Prism.languages.css,
                -			alias: 'language-css'
                -		}
                -	});
                -	
                -	Prism.languages.insertBefore('inside', 'attr-value', {
                -		'style-attr': {
                -			pattern: /\s*style=("|').*?\1/i,
                -			inside: {
                -				'attr-name': {
                -					pattern: /^\s*style/i,
                -					inside: Prism.languages.markup.tag.inside
                -				},
                -				'punctuation': /^\s*=\s*['"]|['"]\s*$/,
                -				'attr-value': {
                -					pattern: /.+/i,
                -					inside: Prism.languages.css
                -				}
                -			},
                -			alias: 'language-css'
                -		}
                -	}, Prism.languages.markup.tag);
                -}
                -
                -/* **********************************************
                -     Begin prism-clike.js
                -********************************************** */
                -
                -Prism.languages.clike = {
                -	'comment': [
                -		{
                -			pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
                -			lookbehind: true
                -		},
                -		{
                -			pattern: /(^|[^\\:])\/\/.*/,
                -			lookbehind: true
                -		}
                -	],
                -	'string': {
                -		pattern: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
                -		greedy: true
                -	},
                -	'class-name': {
                -		pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
                -		lookbehind: true,
                -		inside: {
                -			punctuation: /(\.|\\)/
                -		}
                -	},
                -	'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
                -	'boolean': /\b(true|false)\b/,
                -	'function': /[a-z0-9_]+(?=\()/i,
                -	'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
                -	'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
                -	'punctuation': /[{}[\];(),.:]/
                -};
                -
                -
                -/* **********************************************
                -     Begin prism-javascript.js
                -********************************************** */
                -
                -Prism.languages.javascript = Prism.languages.extend('clike', {
                -	'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,
                -	'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
                -	// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
                -	'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,
                -	'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/
                -});
                -
                -Prism.languages.insertBefore('javascript', 'keyword', {
                -	'regex': {
                -		pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
                -		lookbehind: true,
                -		greedy: true
                -	}
                -});
                -
                -Prism.languages.insertBefore('javascript', 'string', {
                -	'template-string': {
                -		pattern: /`(?:\\\\|\\?[^\\])*?`/,
                -		greedy: true,
                -		inside: {
                -			'interpolation': {
                -				pattern: /\$\{[^}]+\}/,
                -				inside: {
                -					'interpolation-punctuation': {
                -						pattern: /^\$\{|\}$/,
                -						alias: 'punctuation'
                -					},
                -					rest: Prism.languages.javascript
                -				}
                -			},
                -			'string': /[\s\S]+/
                -		}
                -	}
                -});
                -
                -if (Prism.languages.markup) {
                -	Prism.languages.insertBefore('markup', 'tag', {
                -		'script': {
                -			pattern: /()[\w\W]*?(?=<\/script>)/i,
                -			lookbehind: true,
                -			inside: Prism.languages.javascript,
                -			alias: 'language-javascript'
                -		}
                -	});
                -}
                -
                -Prism.languages.js = Prism.languages.javascript;
                -
                -/* **********************************************
                -     Begin prism-file-highlight.js
                -********************************************** */
                -
                -(function () {
                -	if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
                -		return;
                -	}
                -
                -	self.Prism.fileHighlight = function() {
                -
                -		var Extensions = {
                -			'js': 'javascript',
                -			'py': 'python',
                -			'rb': 'ruby',
                -			'ps1': 'powershell',
                -			'psm1': 'powershell',
                -			'sh': 'bash',
                -			'bat': 'batch',
                -			'h': 'c',
                -			'tex': 'latex'
                -		};
                -
                -		if(Array.prototype.forEach) { // Check to prevent error in IE8
                -			Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
                -				var src = pre.getAttribute('data-src');
                -
                -				var language, parent = pre;
                -				var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
                -				while (parent && !lang.test(parent.className)) {
                -					parent = parent.parentNode;
                -				}
                -
                -				if (parent) {
                -					language = (pre.className.match(lang) || [, ''])[1];
                -				}
                -
                -				if (!language) {
                -					var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
                -					language = Extensions[extension] || extension;
                -				}
                -
                -				var code = document.createElement('code');
                -				code.className = 'language-' + language;
                -
                -				pre.textContent = '';
                -
                -				code.textContent = 'Loading…';
                -
                -				pre.appendChild(code);
                -
                -				var xhr = new XMLHttpRequest();
                -
                -				xhr.open('GET', src, true);
                -
                -				xhr.onreadystatechange = function () {
                -					if (xhr.readyState == 4) {
                -
                -						if (xhr.status < 400 && xhr.responseText) {
                -							code.textContent = xhr.responseText;
                -
                -							Prism.highlightElement(code);
                -						}
                -						else if (xhr.status >= 400) {
                -							code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
                -						}
                -						else {
                -							code.textContent = '✖ Error: File does not exist or is empty';
                -						}
                -					}
                -				};
                -
                -				xhr.send(null);
                -			});
                -		}
                -
                -	};
                -
                -	document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
                -
                -})();
                diff --git a/node_modules/prismjs/tests/helper/prism-loader.js b/node_modules/prismjs/tests/helper/prism-loader.js
                deleted file mode 100644
                index 2885ad3..0000000
                --- a/node_modules/prismjs/tests/helper/prism-loader.js
                +++ /dev/null
                @@ -1,131 +0,0 @@
                -"use strict";
                -
                -var fs = require("fs");
                -var vm = require("vm");
                -var components = require("./components");
                -var languagesCatalog = components.languages;
                -
                -
                -module.exports = {
                -
                -	/**
                -	 * Creates a new Prism instance with the given language loaded
                -	 *
                -	 * @param {string|string[]} languages
                -	 * @returns {Prism}
                -	 */
                -	createInstance: function (languages) {
                -		var context = {
                -			loadedLanguages: [],
                -			Prism: this.createEmptyPrism()
                -		};
                -
                -		context = this.loadLanguages(languages, context);
                -
                -		return context.Prism;
                -	},
                -
                -	/**
                -	 * Loads the given languages and appends the config to the given Prism object
                -	 *
                -	 * @private
                -	 * @param {string|string[]} languages
                -	 * @param {{loadedLanguages: string[], Prism: Prism}} context
                -	 * @returns {{loadedLanguages: string[], Prism: Prism}}
                -	 */
                -	loadLanguages: function (languages, context) {
                -		if (typeof languages === 'string') {
                -			languages = [languages];
                -		}
                -
                -		var self = this;
                -
                -		languages.forEach(function (language) {
                -			context = self.loadLanguage(language, context);
                -		});
                -
                -		return context;
                -	},
                -
                -	/**
                -	 * Loads the given language (including recursively loading the dependencies) and
                -	 * appends the config to the given Prism object
                -	 *
                -	 * @private
                -	 * @param {string} language
                -	 * @param {{loadedLanguages: string[], Prism: Prism}} context
                -	 * @returns {{loadedLanguages: string[], Prism: Prism}}
                -	 */
                -	loadLanguage: function (language, context) {
                -		if (!languagesCatalog[language]) {
                -			throw new Error("Language '" + language + "' not found.");
                -		}
                -
                -		// the given language was already loaded
                -		if (-1 < context.loadedLanguages.indexOf(language)) {
                -			return context;
                -		}
                -
                -		// if the language has a dependency -> load it first
                -		if (languagesCatalog[language].require) {
                -			context = this.loadLanguages(languagesCatalog[language].require, context);
                -		}
                -
                -		// load the language itself
                -		var languageSource = this.loadFileSource(language);
                -		context.Prism = this.runFileWithContext(languageSource, {Prism: context.Prism}).Prism;
                -		context.loadedLanguages.push(language);
                -
                -		return context;
                -	},
                -
                -
                -	/**
                -	 * Creates a new empty prism instance
                -	 *
                -	 * @private
                -	 * @returns {Prism}
                -	 */
                -	createEmptyPrism: function () {
                -		var coreSource = this.loadFileSource("core");
                -		var context = this.runFileWithContext(coreSource);
                -		return context.Prism;
                -	},
                -
                -
                -	/**
                -	 * Cached file sources, to prevent massive HDD work
                -	 *
                -	 * @private
                -	 * @type {Object.}
                -	 */
                -	fileSourceCache: {},
                -
                -
                -	/**
                -	 * Loads the given file source as string
                -	 *
                -	 * @private
                -	 * @param {string} name
                -	 * @returns {string}
                -	 */
                -	loadFileSource: function (name) {
                -		return this.fileSourceCache[name] = this.fileSourceCache[name] || fs.readFileSync(__dirname + "/../../components/prism-" + name + ".js", "utf8");
                -	},
                -
                -
                -	/**
                -	 * Runs a VM for a given file source with the given context
                -	 *
                -	 * @private
                -	 * @param {string} fileSource
                -	 * @param {*} [context]
                -	 *
                -	 * @returns {*}
                -	 */
                -	runFileWithContext: function (fileSource, context) {
                -		context = context || {};
                -		vm.runInNewContext(fileSource, context);
                -		return context;
                -	}
                -};
                diff --git a/node_modules/prismjs/tests/helper/test-case.js b/node_modules/prismjs/tests/helper/test-case.js
                deleted file mode 100644
                index 27cb5b9..0000000
                --- a/node_modules/prismjs/tests/helper/test-case.js
                +++ /dev/null
                @@ -1,187 +0,0 @@
                -"use strict";
                -
                -var fs = require("fs");
                -var assert = require("chai").assert;
                -var PrismLoader = require("./prism-loader");
                -var TokenStreamTransformer = require("./token-stream-transformer");
                -
                -/**
                - * Handles parsing of a test case file.
                - *
                - *
                - * A test case file consists of at least two parts, separated by a line of dashes.
                - * This separation line must start at the beginning of the line and consist of at least three dashes.
                - *
                - * The test case file can either consist of two parts:
                - *
                - *     {source code}
                - *     ----
                - *     {expected token stream}
                - *
                - *
                - * or of three parts:
                - *
                - *     {source code}
                - *     ----
                - *     {expected token stream}
                - *     ----
                - *     {text comment explaining the test case}
                - *
                - * If the file contains more than three parts, the remaining parts are just ignored.
                - * If the file however does not contain at least two parts (so no expected token stream),
                - * the test case will later be marked as failed.
                - *
                - *
                - * @type {{runTestCase: Function, transformCompiledTokenStream: Function, parseTestCaseFile: Function}}
                - */
                -module.exports = {
                -
                -	/**
                -	 * Runs the given test case file and asserts the result
                -	 *
                -	 * The passed language identifier can either be a language like "css" or a composed language
                -	 * identifier like "css+markup". Composed identifiers can be used for testing language inclusion.
                -	 *
                -	 * When testing language inclusion, the first given language is the main language which will be passed
                -	 * to Prism for highlighting ("css+markup" will result in a call to Prism to highlight with the "css" grammar).
                -	 * But it will be ensured, that the additional passed languages will be loaded too.
                -	 *
                -	 * The languages will be loaded in the order they were provided.
                -	 *
                -	 * @param {string} languageIdentifier
                -	 * @param {string} filePath
                -	 */
                -	runTestCase: function (languageIdentifier, filePath) {
                -		var testCase = this.parseTestCaseFile(filePath);
                -		var usedLanguages = this.parseLanguageNames(languageIdentifier);
                -
                -		if (null === testCase) {
                -			throw new Error("Test case file has invalid format (or the provided token stream is invalid JSON), please read the docs.");
                -		}
                -
                -		var Prism = PrismLoader.createInstance(usedLanguages.languages);
                -		// the first language is the main language to highlight
                -		var mainLanguageGrammar = Prism.languages[usedLanguages.mainLanguage];
                -		var compiledTokenStream = Prism.tokenize(testCase.testSource, mainLanguageGrammar);
                -		var simplifiedTokenStream = TokenStreamTransformer.simplify(compiledTokenStream);
                -
                -		var tzd = JSON.stringify( simplifiedTokenStream ); var exp = JSON.stringify( testCase.expectedTokenStream );
                -	  var i = 0;var j = 0;var diff = "";
                -    while ( j < tzd.length ){ if (exp[i] != tzd[j] || i == exp.length) diff += tzd[j]; else i++; j++; }
                -
                -		// var message = "\nToken Stream: \n" + JSON.stringify( simplifiedTokenStream, null, " " ) + 
                -		var message = "\nToken Stream: \n" + tzd + 
                -									"\n-----------------------------------------\n" +
                -									"Expected Token Stream: \n" + exp + 
                -									"\n-----------------------------------------\n" + diff;
                -
                -		var result = assert.deepEqual(simplifiedTokenStream, testCase.expectedTokenStream, testCase.comment + message);
                -	},
                -
                -
                -	/**
                -	 * Parses the language names and finds the main language.
                -	 *
                -	 * It is either the last language or the language followed by a exclamation mark “!”.
                -	 * There should only be one language with an exclamation mark.
                -	 *
                -	 * @param {string} languageIdentifier
                -	 *
                -	 * @returns {{languages: string[], mainLanguage: string}}
                -	 */
                -	parseLanguageNames: function (languageIdentifier) {
                -		var languages = languageIdentifier.split("+");
                -		var mainLanguage = null;
                -
                -		languages = languages.map(
                -			function (language) {
                -				var pos = language.indexOf("!");
                -
                -				if (-1 < pos) {
                -					if (mainLanguage) {
                -						throw "There are multiple main languages defined.";
                -					}
                -
                -					mainLanguage = language.replace("!", "");
                -					return mainLanguage;
                -				}
                -
                -				return language;
                -			}
                -		);
                -
                -		if (!mainLanguage) {
                -			mainLanguage = languages[languages.length-1];
                -		}
                -
                -		return {
                -			languages: languages,
                -			mainLanguage: mainLanguage
                -		};
                -	},
                -
                -
                -	/**
                -	 * Parses the test case from the given test case file
                -	 *
                -	 * @private
                -	 * @param {string} filePath
                -	 * @returns {{testSource: string, expectedTokenStream: Array.>, comment:string?}|null}
                -	 */
                -	parseTestCaseFile: function (filePath) {
                -		var testCaseSource = fs.readFileSync(filePath, "utf8");
                -		var testCaseParts = testCaseSource.split(/^-{10,}\w*$/m);
                -
                -		try {
                -			var testCase = {
                -				testSource: testCaseParts[0].trim(),
                -				expectedTokenStream: JSON.parse(testCaseParts[1]),
                -				comment: null
                -			};
                -
                -			// if there are three parts, the third one is the comment
                -			// explaining the test case
                -			if (testCaseParts[2]) {
                -				testCase.comment = testCaseParts[2].trim();
                -			}
                -
                -			return testCase;
                -		}
                -		catch (e) {
                -			// the JSON can't be parsed (e.g. it could be empty)
                -			return null;
                -		}
                -	},
                -
                -	/**
                -	 * Runs the given pieces of codes and asserts their result.
                -	 *
                -	 * Code is provided as the key and expected result as the value.
                -	 *
                -	 * @param {string} languageIdentifier
                -	 * @param {object} codes
                -	 */
                -	runTestsWithHooks: function (languageIdentifier, codes) {
                -		var usedLanguages = this.parseLanguageNames(languageIdentifier);
                -		var Prism = PrismLoader.createInstance(usedLanguages.languages);
                -		// the first language is the main language to highlight
                -
                -		for (var code in codes) {
                -			if (codes.hasOwnProperty(code)) {
                -				var env = {
                -					element: {},
                -					language: usedLanguages.mainLanguage,
                -					grammar: Prism.languages[usedLanguages.mainLanguage],
                -					code: code
                -				};
                -				Prism.hooks.run('before-highlight', env);
                -				env.highlightedCode = Prism.highlight(env.code, Prism.languages[usedLanguages.mainLanguage], usedLanguages.mainLanguage);
                -				Prism.hooks.run('before-insert', env);
                -				env.element.innerHTML = env.highlightedCode;
                -				Prism.hooks.run('after-highlight', env);
                -				Prism.hooks.run('complete', env);
                -				assert.equal(env.highlightedCode, codes[code]);
                -			}
                -		}
                -	}
                -};
                diff --git a/node_modules/prismjs/tests/helper/test-discovery.js b/node_modules/prismjs/tests/helper/test-discovery.js
                deleted file mode 100644
                index b2aade1..0000000
                --- a/node_modules/prismjs/tests/helper/test-discovery.js
                +++ /dev/null
                @@ -1,115 +0,0 @@
                -"use strict";
                -
                -var fs = require("fs");
                -var path = require("path");
                -
                -
                -module.exports = {
                -
                -	/**
                -	 * Loads the list of all available tests
                -	 *
                -	 * @param {string} rootDir
                -	 * @returns {Object.}
                -	 */
                -	loadAllTests: function (rootDir) {
                -		var testSuite = {};
                -		var self = this;
                -
                -		this.getAllDirectories(rootDir).forEach(
                -			function (language) {
                -				testSuite[language] = self.getAllFiles(path.join(rootDir, language));
                -			}
                -		);
                -
                -		return testSuite;
                -	},
                -
                -	/**
                -	 * Loads the list of available tests that match the given languages
                -	 *
                -	 * @param {string} rootDir
                -	 * @param {string|string[]} languages
                -	 * @returns {Object.}
                -	 */
                -	loadSomeTests: function (rootDir, languages) {
                -		var testSuite = {};
                -		var self = this;
                -
                -		this.getSomeDirectories(rootDir, languages).forEach(
                -			function (language) {
                -				testSuite[language] = self.getAllFiles(path.join(rootDir, language));
                -			}
                -		);
                -
                -		return testSuite;
                -	},
                -
                -
                -	/**
                -	 * Returns a list of all (sub)directories (just the directory names, not full paths)
                -	 * in the given src directory
                -	 *
                -	 * @param {string} src
                -	 * @returns {Array.}
                -	 */
                -	getAllDirectories: function (src) {
                -		return fs.readdirSync(src).filter(
                -			function (file) {
                -				return fs.statSync(path.join(src, file)).isDirectory();
                -			}
                -		);
                -	},
                -
                -	/**
                -	 * Returns a list of all (sub)directories (just the directory names, not full paths)
                -	 * in the given src directory, matching the given languages
                -	 *
                -	 * @param {string} src
                -	 * @param {string|string[]} languages
                -	 * @returns {Array.}
                -	 */
                -	getSomeDirectories: function (src, languages) {
                -		var self = this;
                -		return fs.readdirSync(src).filter(
                -			function (file) {
                -				return fs.statSync(path.join(src, file)).isDirectory() && self.directoryMatches(file, languages);
                -			}
                -		);
                -	},
                -
                -	/**
                -	 * Returns whether a directory matches one of the given languages.
                -	 * @param {string} directory
                -	 * @param {string|string[]} languages
                -	 */
                -	directoryMatches: function (directory, languages) {
                -		if (!Array.isArray(languages)) {
                -			languages = [languages];
                -		}
                -		var dirLanguages = directory.split(/!?\+!?/);
                -		return dirLanguages.some(function (lang) {
                -			return languages.indexOf(lang) >= 0;
                -		});
                -	},
                -
                -
                -	/**
                -	 * Returns a list of all full file paths to all files in the given src directory
                -	 *
                -	 * @private
                -	 * @param {string} src
                -	 * @returns {Array.}
                -	 */
                -	getAllFiles: function (src) {
                -		return fs.readdirSync(src).filter(
                -			function (fileName) {
                -				return fs.statSync(path.join(src, fileName)).isFile();
                -			}
                -		).map(
                -			function (fileName) {
                -				return path.join(src, fileName);
                -			}
                -		);
                -	}
                -};
                diff --git a/node_modules/prismjs/tests/helper/token-stream-transformer.js b/node_modules/prismjs/tests/helper/token-stream-transformer.js
                deleted file mode 100644
                index deb831c..0000000
                --- a/node_modules/prismjs/tests/helper/token-stream-transformer.js
                +++ /dev/null
                @@ -1,32 +0,0 @@
                -"use strict";
                -
                -
                -module.exports = {
                -	/**
                -	 * Simplifies the token stream to ease the matching with the expected token stream.
                -	 *
                -	 * * Strings are kept as-is
                -	 * * In arrays each value is transformed individually
                -	 * * Values that are empty (empty arrays or strings only containing whitespace)
                -	 *
                -	 *
                -	 * @param {Array} tokenStream
                -	 * @returns {Array.}
                -	 */
                -	simplify: function (tokenStream) {
                -		if (Array.isArray(tokenStream)) {
                -			return tokenStream
                -				.map(this.simplify.bind(this))
                -				.filter(function (value) {
                -					return !(Array.isArray(value) && !value.length) && !(typeof value === "string" && !value.trim().length);
                -				}
                -			);
                -		}
                -		else if (typeof tokenStream === "object") {
                -			return [tokenStream.type, this.simplify(tokenStream.content)];
                -		}
                -		else {
                -			return tokenStream;
                -		}
                -	}
                -};
                diff --git a/node_modules/prismjs/tests/languages/abap/comment_feature.test b/node_modules/prismjs/tests/languages/abap/comment_feature.test
                deleted file mode 100644
                index e0f28fe..0000000
                --- a/node_modules/prismjs/tests/languages/abap/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -*
                -* Foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "*"],
                -	["comment", "* Foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/abap/eol-comment_feature.test b/node_modules/prismjs/tests/languages/abap/eol-comment_feature.test
                deleted file mode 100644
                index f29fc84..0000000
                --- a/node_modules/prismjs/tests/languages/abap/eol-comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -"
                -" foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["eol-comment", "\""],
                -	["eol-comment", "\" foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for EOL comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/abap/keyword_feature.test b/node_modules/prismjs/tests/languages/abap/keyword_feature.test
                deleted file mode 100644
                index 0a5a94d..0000000
                --- a/node_modules/prismjs/tests/languages/abap/keyword_feature.test
                +++ /dev/null
                @@ -1,1801 +0,0 @@
                -SCIENTIFIC_WITH_LEADING_ZERO
                -SCALE_PRESERVING_SCIENTIFIC
                -RMC_COMMUNICATION_FAILURE
                -END-ENHANCEMENT-SECTION
                -MULTIPLY-CORRESPONDING
                -SUBTRACT-CORRESPONDING
                -VERIFICATION-MESSAGE
                -DIVIDE-CORRESPONDING
                -ENHANCEMENT-SECTION
                -CURRENCY_CONVERSION
                -RMC_SYSTEM_FAILURE
                -START-OF-SELECTION
                -MOVE-CORRESPONDING
                -RMC_INVALID_STATUS
                -CUSTOMER-FUNCTION
                -END-OF-DEFINITION
                -ENHANCEMENT-POINT
                -SYSTEM-EXCEPTIONS
                -ADD-CORRESPONDING
                -SCALE_PRESERVING
                -SELECTION-SCREEN
                -CURSOR-SELECTION
                -END-OF-SELECTION
                -LOAD-OF-PROGRAM
                -SCROLL-BOUNDARY
                -SELECTION-TABLE
                -EXCEPTION-TABLE
                -IMPLEMENTATIONS
                -PARAMETER-TABLE
                -RIGHT-JUSTIFIED
                -UNIT_CONVERSION
                -AUTHORITY-CHECK
                -LIST-PROCESSING
                -SIGN_AS_POSTFIX
                -COL_BACKGROUND
                -IMPLEMENTATION
                -INTERFACE-POOL
                -TRANSFORMATION
                -IDENTIFICATION
                -ENDENHANCEMENT
                -LINE-SELECTION
                -INITIALIZATION
                -LEFT-JUSTIFIED
                -SELECT-OPTIONS
                -SELECTION-SETS
                -COMMUNICATION
                -CORRESPONDING
                -DECIMAL_SHIFT
                -PRINT-CONTROL
                -VALUE-REQUEST
                -CHAIN-REQUEST
                -FUNCTION-POOL
                -FIELD-SYMBOLS
                -FUNCTIONALITY
                -INVERTED-DATE
                -SELECTION-SET
                -CLASS-METHODS
                -OUTPUT-LENGTH
                -CLASS-CODING
                -COL_NEGATIVE
                -ERRORMESSAGE
                -FIELD-GROUPS
                -HELP-REQUEST
                -NO-EXTENSION
                -NO-TOPOFPAGE
                -REDEFINITION
                -DISPLAY-MODE
                -ENDINTERFACE
                -EXIT-COMMAND
                -FIELD-SYMBOL
                -NO-SCROLLING
                -SHORTDUMP-ID
                -ACCESSPOLICY
                -CLASS-EVENTS
                -COL_POSITIVE
                -DECLARATIONS
                -ENHANCEMENTS
                -FILTER-TABLE
                -SWITCHSTATES
                -SYNTAX-CHECK
                -TRANSPORTING
                -ASYNCHRONOUS
                -SYNTAX-TRACE
                -TOKENIZATION
                -USER-COMMAND
                -WITH-HEADING
                -ABAP-SOURCE
                -BREAK-POINT
                -CHAIN-INPUT
                -COMPRESSION
                -FIXED-POINT
                -NEW-SECTION
                -NON-UNICODE
                -OCCURRENCES
                -RESPONSIBLE
                -SYSTEM-CALL
                -TRACE-TABLE
                -ABBREVIATED
                -CHAR-TO-HEX
                -END-OF-FILE
                -ENDFUNCTION
                -ENVIRONMENT
                -ASSOCIATION
                -COL_HEADING
                -EDITOR-CALL
                -END-OF-PAGE
                -ENGINEERING
                -IMPLEMENTED
                -INTENSIFIED
                -RADIOBUTTON
                -SYSTEM-EXIT
                -TOP-OF-PAGE
                -TRANSACTION
                -APPLICATION
                -CONCATENATE
                -DESTINATION
                -ENHANCEMENT
                -IMMEDIATELY
                -NO-GROUPING
                -PRECOMPILED
                -REPLACEMENT
                -TITLE-LINES
                -ACTIVATION
                -BYTE-ORDER
                -CLASS-POOL
                -CONNECTION
                -CONVERSION
                -DEFINITION
                -DEPARTMENT
                -EXPIRATION
                -INHERITING
                -MESSAGE-ID
                -NO-HEADING
                -PERFORMING
                -QUEUE-ONLY
                -RIGHTSPACE
                -SCIENTIFIC
                -STATUSINFO
                -STRUCTURES
                -SYNCPOINTS
                -WITH-TITLE
                -ATTRIBUTES
                -BOUNDARIES
                -CLASS-DATA
                -COL_NORMAL
                -DD/MM/YYYY
                -DESCENDING
                -INTERFACES
                -LINE-COUNT
                -MM/DD/YYYY
                -NON-UNIQUE
                -PRESERVING
                -SELECTIONS
                -STATEMENTS
                -SUBROUTINE
                -TRUNCATION
                -TYPE-POOLS
                -ARITHMETIC
                -BACKGROUND
                -ENDPROVIDE
                -EXCEPTIONS
                -IDENTIFIER
                -INDEX-LINE
                -OBLIGATORY
                -PARAMETERS
                -PERCENTAGE
                -PUSHBUTTON
                -RESOLUTION
                -COMPONENTS
                -DEALLOCATE
                -DISCONNECT
                -DUPLICATES
                -FIRST-LINE
                -HEAD-LINES
                -NO-DISPLAY
                -OCCURRENCE
                -RESPECTING
                -RETURNCODE
                -SUBMATCHES
                -TRACE-FILE
                -ASCENDING
                -BYPASSING
                -ENDMODULE
                -EXCEPTION
                -EXCLUDING
                -EXPORTING
                -INCREMENT
                -MATCHCODE
                -PARAMETER
                -PARTIALLY
                -PREFERRED
                -REFERENCE
                -REPLACING
                -RETURNING
                -SELECTION
                -SEPARATED
                -SPECIFIED
                -STATEMENT
                -TIMESTAMP
                -TYPE-POOL
                -ACCEPTING
                -APPENDAGE
                -ASSIGNING
                -COL_GROUP
                -COMPARING
                -CONSTANTS
                -DANGEROUS
                -IMPORTING
                -INSTANCES
                -LEFTSPACE
                -LOG-POINT
                -QUICKINFO
                -READ-ONLY
                -SCROLLING
                -SQLSCRIPT
                -STEP-LOOP
                -TOP-LINES
                -TRANSLATE
                -APPENDING
                -AUTHORITY
                -CHARACTER
                -COMPONENT
                -CONDITION
                -DIRECTORY
                -DUPLICATE
                -MESSAGING
                -RECEIVING
                -SUBSCREEN
                -ACCORDING
                -COL_TOTAL
                -END-LINES
                -ENDMETHOD
                -ENDSELECT
                -EXPANDING
                -EXTENSION
                -INCLUDING
                -INFOTYPES
                -INTERFACE
                -INTERVALS
                -LINE-SIZE
                -PF-STATUS
                -PROCEDURE
                -PROTECTED
                -REQUESTED
                -RESUMABLE
                -RIGHTPLUS
                -SAP-SPOOL
                -SECONDARY
                -STRUCTURE
                -SUBSTRING
                -TABLEVIEW
                -NUMOFCHAR
                -ADJACENT
                -ANALYSIS
                -ASSIGNED
                -BACKWARD
                -CHANNELS
                -CHECKBOX
                -CONTINUE
                -CRITICAL
                -DATAINFO
                -DD/MM/YY
                -DURATION
                -ENCODING
                -ENDCLASS
                -FUNCTION
                -LEFTPLUS
                -LINEFEED
                -MM/DD/YY
                -OVERFLOW
                -RECEIVED
                -SKIPPING
                -SORTABLE
                -STANDARD
                -SUBTRACT
                -SUPPRESS
                -TABSTRIP
                -TITLEBAR
                -TRUNCATE
                -UNASSIGN
                -WHENEVER
                -ANALYZER
                -COALESCE
                -COMMENTS
                -CONDENSE
                -DECIMALS
                -DEFERRED
                -ENDWHILE
                -EXPLICIT
                -KEYWORDS
                -MESSAGES
                -POSITION
                -PRIORITY
                -RECEIVER
                -RENAMING
                -TIMEZONE
                -TRAILING
                -ALLOCATE
                -CENTERED
                -CIRCULAR
                -CONTROLS
                -CURRENCY
                -DELETING
                -DESCRIBE
                -DISTANCE
                -ENDCATCH
                -EXPONENT
                -EXTENDED
                -GENERATE
                -IGNORING
                -INCLUDES
                -INTERNAL
                -MAJOR-ID
                -MODIFIER
                -NEW-LINE
                -OPTIONAL
                -PROPERTY
                -ROLLBACK
                -STARTING
                -SUPPLIED
                -ABSTRACT
                -CHANGING
                -CONTEXTS
                -CREATING
                -CUSTOMER
                -DATABASE
                -DAYLIGHT
                -DEFINING
                -DISTINCT
                -DIVISION
                -ENABLING
                -ENDCHAIN
                -ESCAPING
                -HARMLESS
                -IMPLICIT
                -INACTIVE
                -LANGUAGE
                -MINOR-ID
                -MULTIPLY
                -NEW-PAGE
                -NO-TITLE
                -POS_HIGH
                -SEPARATE
                -TEXTPOOL
                -TRANSFER
                -SELECTOR
                -DBMAXLEN
                -ITERATOR
                -SELECTOR
                -ARCHIVE
                -BIT-XOR
                -BYTE-CO
                -COLLECT
                -COMMENT
                -CURRENT
                -DEFAULT
                -DISPLAY
                -ENDFORM
                -EXTRACT
                -LEADING
                -LISTBOX
                -LOCATOR
                -MEMBERS
                -METHODS
                -NESTING
                -POS_LOW
                -PROCESS
                -PROVIDE
                -RAISING
                -RESERVE
                -SECONDS
                -SUMMARY
                -VISIBLE
                -BETWEEN
                -BIT-AND
                -BYTE-CS
                -CLEANUP
                -COMPUTE
                -CONTROL
                -CONVERT
                -DATASET
                -ENDCASE
                -FORWARD
                -HEADERS
                -HOTSPOT
                -INCLUDE
                -INVERSE
                -KEEPING
                -NO-ZERO
                -OBJECTS
                -OVERLAY
                -PADDING
                -PATTERN
                -PROGRAM
                -REFRESH
                -SECTION
                -SUMMING
                -TESTING
                -VERSION
                -WINDOWS
                -WITHOUT
                -BIT-NOT
                -BYTE-CA
                -BYTE-NA
                -CASTING
                -CONTEXT
                -COUNTRY
                -DYNAMIC
                -ENABLED
                -ENDLOOP
                -EXECUTE
                -FRIENDS
                -HANDLER
                -HEADING
                -INITIAL
                - *-INPUT
                -LOGFILE
                -MAXIMUM
                -MINIMUM
                -NO-GAPS
                -NO-SIGN
                -PRAGMAS
                -PRIMARY
                -PRIVATE
                -REDUCED
                -REPLACE
                -REQUEST
                -RESULTS
                -UNICODE
                -WARNING
                -ALIASES
                -BYTE-CN
                -BYTE-NS
                -CALLING
                -COL_KEY
                -COLUMNS
                -CONNECT
                -ENDEXEC
                -ENTRIES
                -EXCLUDE
                -FILTERS
                -FURTHER
                -HELP-ID
                -LOGICAL
                -MAPPING
                -MESSAGE
                -NAMETAB
                -OPTIONS
                -PACKAGE
                -PERFORM
                -RECEIVE
                -STATICS
                -VARYING
                -BINDING
                -CHARLEN
                -GREATER
                -XSTRLEN
                -ACCEPT
                -APPEND
                -DETAIL
                -ELSEIF
                -ENDING
                -ENDTRY
                -FORMAT
                -FRAMES
                -GIVING
                -HASHED
                -HEADER
                -IMPORT
                -INSERT
                -MARGIN
                -MODULE
                -NATIVE
                -OBJECT
                -OFFSET
                -REMOTE
                -RESUME
                -SAVING
                -SIMPLE
                -SUBMIT
                -TABBED
                -TOKENS
                -UNIQUE
                -UNPACK
                -UPDATE
                -WINDOW
                -YELLOW
                -ACTUAL
                -ASPECT
                -CENTER
                -CURSOR
                -DELETE
                -DIALOG
                -DIVIDE
                -DURING
                -ERRORS
                -EVENTS
                -EXTEND
                -FILTER
                -HANDLE
                -HAVING
                -IGNORE
                -LITTLE
                -MEMORY
                -NO-GAP
                -OCCURS
                -OPTION
                -PERSON
                -PLACES
                -PUBLIC
                -REDUCE
                -REPORT
                -RESULT
                -SINGLE
                -SORTED
                -SWITCH
                -SYNTAX
                -TARGET
                -VALUES
                -WRITER
                -ASSERT
                -BLOCKS
                -BOUNDS
                -BUFFER
                -CHANGE
                -COLUMN
                -COMMIT
                -CONCAT
                -COPIES
                -CREATE
                -DDMMYY
                -DEFINE
                -ENDIAN
                -ESCAPE
                -EXPAND
                -KERNEL
                -LAYOUT
                -LEGACY
                -LEVELS
                -MMDDYY
                -NUMBER
                -OUTPUT
                -RANGES
                -READER
                -RETURN
                -SCREEN
                -SEARCH
                -SELECT
                -SHARED
                -SOURCE
                -STABLE
                -STATIC
                -SUBKEY
                -SUFFIX
                -TABLES
                -UNWIND
                -YYMMDD
                -ASSIGN
                -BACKUP
                -BEFORE
                -BINARY
                -BIT-OR
                -BLANKS
                -CLIENT
                -CODING
                -COMMON
                -DEMAND
                -DYNPRO
                -EXCEPT
                -EXISTS
                -EXPORT
                -FIELDS
                -GLOBAL
                -GROUPS
                -LENGTH
                -LOCALE
                -MEDIUM
                -METHOD
                -MODIFY
                -NESTED
                -OTHERS
                -REJECT
                -SCROLL
                -SUPPLY
                -SYMBOL
                -ENDFOR
                -STRLEN
                -ALIGN
                -BEGIN
                -BOUND
                -ENDAT
                -ENTRY
                -EVENT
                -FINAL
                -FLUSH
                -GRANT
                -INNER
                -SHORT
                -USING
                -WRITE
                -AFTER
                -BLACK
                -BLOCK
                -CLOCK
                -COLOR
                -COUNT
                -DUMMY
                -EMPTY
                -ENDDO
                -ENDON
                -GREEN
                -INDEX
                -INOUT
                -LEAVE
                -LEVEL
                -LINES
                -MODIF
                -ORDER
                -OUTER
                -RANGE
                -RESET
                -RETRY
                -RIGHT
                -SMART
                -SPLIT
                -STYLE
                -TABLE
                -THROW
                -UNDER
                -UNTIL
                -UPPER
                -UTF-8
                -WHERE
                -ALIAS
                -BLANK
                -CLEAR
                -CLOSE
                -EXACT
                -FETCH
                -FIRST
                -FOUND
                -GROUP
                -LLANG
                -LOCAL
                -OTHER
                -REGEX
                -SPOOL
                -TITLE
                -TYPES
                -VALID
                -WHILE
                -ALPHA
                -BOXED
                -CATCH
                -CHAIN
                -CHECK
                -CLASS
                -COVER
                -ENDIF
                -EQUIV
                -FIELD
                -FLOOR
                -FRAME
                -INPUT
                -LOWER
                -MATCH
                -NODES
                -PAGES
                -PRINT
                -RAISE
                -ROUND
                -SHIFT
                -SPACE
                -SPOTS
                -STAMP
                -STATE
                -TASKS
                -TIMES
                -TRMAC
                -ULINE
                -UNION
                -VALUE
                -WIDTH
                -EQUAL
                -LOG10
                -TRUNC
                -BLOB
                -CASE
                -CEIL
                -CLOB
                -COND
                -EXIT
                -FILE
                -GAPS
                -HOLD
                -INCL
                -INTO
                -KEEP
                -KEYS
                -LAST
                -LINE
                -LONG
                -LPAD
                -MAIL
                -MODE
                -OPEN
                -PINK
                -READ
                -ROWS
                -TEST
                -THEN
                -ZERO
                -AREA
                -BACK
                -BADI
                -BYTE
                -CAST
                -EDIT
                -EXEC
                -FAIL
                -FIND
                -FKEQ
                -FONT
                -FREE
                -GKEQ
                -HIDE
                -INIT
                -ITNO
                -LATE
                -LOOP
                -MAIN
                -MARK
                -MOVE
                -NEXT
                -NULL
                -RISK
                -ROLE
                -UNIT
                -WAIT
                -ZONE
                -BASE
                -CALL
                -CODE
                -DATA
                -DATE
                -FKGE
                -GKGE
                -HIGH
                -KIND
                -LEFT
                -LIST
                -MASK
                -MESH
                -NAME
                -NODE
                -PACK
                -PAGE
                -POOL
                -SEND
                -SIGN
                -SIZE
                -SOME
                -STOP
                -TASK
                -TEXT
                -TIME
                -USER
                -VARY
                -WITH
                -WORD
                -BLUE
                -CONV
                -COPY
                -DEEP
                -ELSE
                -FORM
                -FROM
                -HINT
                -ICON
                -JOIN
                -LIKE
                -LOAD
                -ONLY
                -PART
                -SCAN
                -SKIP
                -SORT
                -TYPE
                -UNIX
                -VIEW
                -WHEN
                -WORK
                -ACOS
                -ASIN
                -ATAN
                -COSH
                -EACH
                -FRAC
                -LESS
                -RTTI
                -SINH
                -SQRT
                -TANH
                -AVG
                -BIT
                -DIV
                -ISO
                -LET
                -OUT
                -PAD
                -SQL
                -ALL
                -CI_
                -CPI
                -END
                -LOB
                -LPI
                -MAX
                -MIN
                -NEW
                -OLE
                -RUN
                -SET
                -?TO
                -YES
                -ABS
                -ADD
                -AND
                -BIG
                -FOR
                -HDB
                -JOB
                -LOW
                -NOT
                -SAP
                -TRY
                -VIA
                -XML
                -ANY
                -GET
                -IDS
                -KEY
                -MOD
                -OFF
                -PUT
                -RAW
                -RED
                -REF
                -SUM
                -TAB
                -XSD
                -CNT
                -COS
                -EXP
                -LOG
                -SIN
                -TAN
                -XOR
                -AT
                -CO
                -CP
                -DO
                -GT
                -ID
                -IF
                -NS
                -OR
                -BT
                -CA
                -CS
                -GE
                -NA
                -NB
                -EQ
                -IN
                -LT
                -NE
                -NO
                -OF
                -ON
                -PF
                -TO
                -AS
                -BY
                -CN
                -IS
                -LE
                -NP
                -UP
                -E
                -I
                -M
                -O
                -Z
                -C
                -X
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "SCIENTIFIC_WITH_LEADING_ZERO"],
                -	["keyword", "SCALE_PRESERVING_SCIENTIFIC"],
                -	["keyword", "RMC_COMMUNICATION_FAILURE"],
                -	["keyword", "END-ENHANCEMENT-SECTION"],
                -	["keyword", "MULTIPLY-CORRESPONDING"],
                -	["keyword", "SUBTRACT-CORRESPONDING"],
                -	["keyword", "VERIFICATION-MESSAGE"],
                -	["keyword", "DIVIDE-CORRESPONDING"],
                -	["keyword", "ENHANCEMENT-SECTION"],
                -	["keyword", "CURRENCY_CONVERSION"],
                -	["keyword", "RMC_SYSTEM_FAILURE"],
                -	["keyword", "START-OF-SELECTION"],
                -	["keyword", "MOVE-CORRESPONDING"],
                -	["keyword", "RMC_INVALID_STATUS"],
                -	["keyword", "CUSTOMER-FUNCTION"],
                -	["keyword", "END-OF-DEFINITION"],
                -	["keyword", "ENHANCEMENT-POINT"],
                -	["keyword", "SYSTEM-EXCEPTIONS"],
                -	["keyword", "ADD-CORRESPONDING"],
                -	["keyword", "SCALE_PRESERVING"],
                -	["keyword", "SELECTION-SCREEN"],
                -	["keyword", "CURSOR-SELECTION"],
                -	["keyword", "END-OF-SELECTION"],
                -	["keyword", "LOAD-OF-PROGRAM"],
                -	["keyword", "SCROLL-BOUNDARY"],
                -	["keyword", "SELECTION-TABLE"],
                -	["keyword", "EXCEPTION-TABLE"],
                -	["keyword", "IMPLEMENTATIONS"],
                -	["keyword", "PARAMETER-TABLE"],
                -	["keyword", "RIGHT-JUSTIFIED"],
                -	["keyword", "UNIT_CONVERSION"],
                -	["keyword", "AUTHORITY-CHECK"],
                -	["keyword", "LIST-PROCESSING"],
                -	["keyword", "SIGN_AS_POSTFIX"],
                -	["keyword", "COL_BACKGROUND"],
                -	["keyword", "IMPLEMENTATION"],
                -	["keyword", "INTERFACE-POOL"],
                -	["keyword", "TRANSFORMATION"],
                -	["keyword", "IDENTIFICATION"],
                -	["keyword", "ENDENHANCEMENT"],
                -	["keyword", "LINE-SELECTION"],
                -	["keyword", "INITIALIZATION"],
                -	["keyword", "LEFT-JUSTIFIED"],
                -	["keyword", "SELECT-OPTIONS"],
                -	["keyword", "SELECTION-SETS"],
                -	["keyword", "COMMUNICATION"],
                -	["keyword", "CORRESPONDING"],
                -	["keyword", "DECIMAL_SHIFT"],
                -	["keyword", "PRINT-CONTROL"],
                -	["keyword", "VALUE-REQUEST"],
                -	["keyword", "CHAIN-REQUEST"],
                -	["keyword", "FUNCTION-POOL"],
                -	["keyword", "FIELD-SYMBOLS"],
                -	["keyword", "FUNCTIONALITY"],
                -	["keyword", "INVERTED-DATE"],
                -	["keyword", "SELECTION-SET"],
                -	["keyword", "CLASS-METHODS"],
                -	["keyword", "OUTPUT-LENGTH"],
                -	["keyword", "CLASS-CODING"],
                -	["keyword", "COL_NEGATIVE"],
                -	["keyword", "ERRORMESSAGE"],
                -	["keyword", "FIELD-GROUPS"],
                -	["keyword", "HELP-REQUEST"],
                -	["keyword", "NO-EXTENSION"],
                -	["keyword", "NO-TOPOFPAGE"],
                -	["keyword", "REDEFINITION"],
                -	["keyword", "DISPLAY-MODE"],
                -	["keyword", "ENDINTERFACE"],
                -	["keyword", "EXIT-COMMAND"],
                -	["keyword", "FIELD-SYMBOL"],
                -	["keyword", "NO-SCROLLING"],
                -	["keyword", "SHORTDUMP-ID"],
                -	["keyword", "ACCESSPOLICY"],
                -	["keyword", "CLASS-EVENTS"],
                -	["keyword", "COL_POSITIVE"],
                -	["keyword", "DECLARATIONS"],
                -	["keyword", "ENHANCEMENTS"],
                -	["keyword", "FILTER-TABLE"],
                -	["keyword", "SWITCHSTATES"],
                -	["keyword", "SYNTAX-CHECK"],
                -	["keyword", "TRANSPORTING"],
                -	["keyword", "ASYNCHRONOUS"],
                -	["keyword", "SYNTAX-TRACE"],
                -	["keyword", "TOKENIZATION"],
                -	["keyword", "USER-COMMAND"],
                -	["keyword", "WITH-HEADING"],
                -	["keyword", "ABAP-SOURCE"],
                -	["keyword", "BREAK-POINT"],
                -	["keyword", "CHAIN-INPUT"],
                -	["keyword", "COMPRESSION"],
                -	["keyword", "FIXED-POINT"],
                -	["keyword", "NEW-SECTION"],
                -	["keyword", "NON-UNICODE"],
                -	["keyword", "OCCURRENCES"],
                -	["keyword", "RESPONSIBLE"],
                -	["keyword", "SYSTEM-CALL"],
                -	["keyword", "TRACE-TABLE"],
                -	["keyword", "ABBREVIATED"],
                -	["keyword", "CHAR-TO-HEX"],
                -	["keyword", "END-OF-FILE"],
                -	["keyword", "ENDFUNCTION"],
                -	["keyword", "ENVIRONMENT"],
                -	["keyword", "ASSOCIATION"],
                -	["keyword", "COL_HEADING"],
                -	["keyword", "EDITOR-CALL"],
                -	["keyword", "END-OF-PAGE"],
                -	["keyword", "ENGINEERING"],
                -	["keyword", "IMPLEMENTED"],
                -	["keyword", "INTENSIFIED"],
                -	["keyword", "RADIOBUTTON"],
                -	["keyword", "SYSTEM-EXIT"],
                -	["keyword", "TOP-OF-PAGE"],
                -	["keyword", "TRANSACTION"],
                -	["keyword", "APPLICATION"],
                -	["keyword", "CONCATENATE"],
                -	["keyword", "DESTINATION"],
                -	["keyword", "ENHANCEMENT"],
                -	["keyword", "IMMEDIATELY"],
                -	["keyword", "NO-GROUPING"],
                -	["keyword", "PRECOMPILED"],
                -	["keyword", "REPLACEMENT"],
                -	["keyword", "TITLE-LINES"],
                -	["keyword", "ACTIVATION"],
                -	["keyword", "BYTE-ORDER"],
                -	["keyword", "CLASS-POOL"],
                -	["keyword", "CONNECTION"],
                -	["keyword", "CONVERSION"],
                -	["keyword", "DEFINITION"],
                -	["keyword", "DEPARTMENT"],
                -	["keyword", "EXPIRATION"],
                -	["keyword", "INHERITING"],
                -	["keyword", "MESSAGE-ID"],
                -	["keyword", "NO-HEADING"],
                -	["keyword", "PERFORMING"],
                -	["keyword", "QUEUE-ONLY"],
                -	["keyword", "RIGHTSPACE"],
                -	["keyword", "SCIENTIFIC"],
                -	["keyword", "STATUSINFO"],
                -	["keyword", "STRUCTURES"],
                -	["keyword", "SYNCPOINTS"],
                -	["keyword", "WITH-TITLE"],
                -	["keyword", "ATTRIBUTES"],
                -	["keyword", "BOUNDARIES"],
                -	["keyword", "CLASS-DATA"],
                -	["keyword", "COL_NORMAL"],
                -	["keyword", "DD/MM/YYYY"],
                -	["keyword", "DESCENDING"],
                -	["keyword", "INTERFACES"],
                -	["keyword", "LINE-COUNT"],
                -	["keyword", "MM/DD/YYYY"],
                -	["keyword", "NON-UNIQUE"],
                -	["keyword", "PRESERVING"],
                -	["keyword", "SELECTIONS"],
                -	["keyword", "STATEMENTS"],
                -	["keyword", "SUBROUTINE"],
                -	["keyword", "TRUNCATION"],
                -	["keyword", "TYPE-POOLS"],
                -	["keyword", "ARITHMETIC"],
                -	["keyword", "BACKGROUND"],
                -	["keyword", "ENDPROVIDE"],
                -	["keyword", "EXCEPTIONS"],
                -	["keyword", "IDENTIFIER"],
                -	["keyword", "INDEX-LINE"],
                -	["keyword", "OBLIGATORY"],
                -	["keyword", "PARAMETERS"],
                -	["keyword", "PERCENTAGE"],
                -	["keyword", "PUSHBUTTON"],
                -	["keyword", "RESOLUTION"],
                -	["keyword", "COMPONENTS"],
                -	["keyword", "DEALLOCATE"],
                -	["keyword", "DISCONNECT"],
                -	["keyword", "DUPLICATES"],
                -	["keyword", "FIRST-LINE"],
                -	["keyword", "HEAD-LINES"],
                -	["keyword", "NO-DISPLAY"],
                -	["keyword", "OCCURRENCE"],
                -	["keyword", "RESPECTING"],
                -	["keyword", "RETURNCODE"],
                -	["keyword", "SUBMATCHES"],
                -	["keyword", "TRACE-FILE"],
                -	["keyword", "ASCENDING"],
                -	["keyword", "BYPASSING"],
                -	["keyword", "ENDMODULE"],
                -	["keyword", "EXCEPTION"],
                -	["keyword", "EXCLUDING"],
                -	["keyword", "EXPORTING"],
                -	["keyword", "INCREMENT"],
                -	["keyword", "MATCHCODE"],
                -	["keyword", "PARAMETER"],
                -	["keyword", "PARTIALLY"],
                -	["keyword", "PREFERRED"],
                -	["keyword", "REFERENCE"],
                -	["keyword", "REPLACING"],
                -	["keyword", "RETURNING"],
                -	["keyword", "SELECTION"],
                -	["keyword", "SEPARATED"],
                -	["keyword", "SPECIFIED"],
                -	["keyword", "STATEMENT"],
                -	["keyword", "TIMESTAMP"],
                -	["keyword", "TYPE-POOL"],
                -	["keyword", "ACCEPTING"],
                -	["keyword", "APPENDAGE"],
                -	["keyword", "ASSIGNING"],
                -	["keyword", "COL_GROUP"],
                -	["keyword", "COMPARING"],
                -	["keyword", "CONSTANTS"],
                -	["keyword", "DANGEROUS"],
                -	["keyword", "IMPORTING"],
                -	["keyword", "INSTANCES"],
                -	["keyword", "LEFTSPACE"],
                -	["keyword", "LOG-POINT"],
                -	["keyword", "QUICKINFO"],
                -	["keyword", "READ-ONLY"],
                -	["keyword", "SCROLLING"],
                -	["keyword", "SQLSCRIPT"],
                -	["keyword", "STEP-LOOP"],
                -	["keyword", "TOP-LINES"],
                -	["keyword", "TRANSLATE"],
                -	["keyword", "APPENDING"],
                -	["keyword", "AUTHORITY"],
                -	["keyword", "CHARACTER"],
                -	["keyword", "COMPONENT"],
                -	["keyword", "CONDITION"],
                -	["keyword", "DIRECTORY"],
                -	["keyword", "DUPLICATE"],
                -	["keyword", "MESSAGING"],
                -	["keyword", "RECEIVING"],
                -	["keyword", "SUBSCREEN"],
                -	["keyword", "ACCORDING"],
                -	["keyword", "COL_TOTAL"],
                -	["keyword", "END-LINES"],
                -	["keyword", "ENDMETHOD"],
                -	["keyword", "ENDSELECT"],
                -	["keyword", "EXPANDING"],
                -	["keyword", "EXTENSION"],
                -	["keyword", "INCLUDING"],
                -	["keyword", "INFOTYPES"],
                -	["keyword", "INTERFACE"],
                -	["keyword", "INTERVALS"],
                -	["keyword", "LINE-SIZE"],
                -	["keyword", "PF-STATUS"],
                -	["keyword", "PROCEDURE"],
                -	["keyword", "PROTECTED"],
                -	["keyword", "REQUESTED"],
                -	["keyword", "RESUMABLE"],
                -	["keyword", "RIGHTPLUS"],
                -	["keyword", "SAP-SPOOL"],
                -	["keyword", "SECONDARY"],
                -	["keyword", "STRUCTURE"],
                -	["keyword", "SUBSTRING"],
                -	["keyword", "TABLEVIEW"],
                -	["keyword", "NUMOFCHAR"],
                -	["keyword", "ADJACENT"],
                -	["keyword", "ANALYSIS"],
                -	["keyword", "ASSIGNED"],
                -	["keyword", "BACKWARD"],
                -	["keyword", "CHANNELS"],
                -	["keyword", "CHECKBOX"],
                -	["keyword", "CONTINUE"],
                -	["keyword", "CRITICAL"],
                -	["keyword", "DATAINFO"],
                -	["keyword", "DD/MM/YY"],
                -	["keyword", "DURATION"],
                -	["keyword", "ENCODING"],
                -	["keyword", "ENDCLASS"],
                -	["keyword", "FUNCTION"],
                -	["keyword", "LEFTPLUS"],
                -	["keyword", "LINEFEED"],
                -	["keyword", "MM/DD/YY"],
                -	["keyword", "OVERFLOW"],
                -	["keyword", "RECEIVED"],
                -	["keyword", "SKIPPING"],
                -	["keyword", "SORTABLE"],
                -	["keyword", "STANDARD"],
                -	["keyword", "SUBTRACT"],
                -	["keyword", "SUPPRESS"],
                -	["keyword", "TABSTRIP"],
                -	["keyword", "TITLEBAR"],
                -	["keyword", "TRUNCATE"],
                -	["keyword", "UNASSIGN"],
                -	["keyword", "WHENEVER"],
                -	["keyword", "ANALYZER"],
                -	["keyword", "COALESCE"],
                -	["keyword", "COMMENTS"],
                -	["keyword", "CONDENSE"],
                -	["keyword", "DECIMALS"],
                -	["keyword", "DEFERRED"],
                -	["keyword", "ENDWHILE"],
                -	["keyword", "EXPLICIT"],
                -	["keyword", "KEYWORDS"],
                -	["keyword", "MESSAGES"],
                -	["keyword", "POSITION"],
                -	["keyword", "PRIORITY"],
                -	["keyword", "RECEIVER"],
                -	["keyword", "RENAMING"],
                -	["keyword", "TIMEZONE"],
                -	["keyword", "TRAILING"],
                -	["keyword", "ALLOCATE"],
                -	["keyword", "CENTERED"],
                -	["keyword", "CIRCULAR"],
                -	["keyword", "CONTROLS"],
                -	["keyword", "CURRENCY"],
                -	["keyword", "DELETING"],
                -	["keyword", "DESCRIBE"],
                -	["keyword", "DISTANCE"],
                -	["keyword", "ENDCATCH"],
                -	["keyword", "EXPONENT"],
                -	["keyword", "EXTENDED"],
                -	["keyword", "GENERATE"],
                -	["keyword", "IGNORING"],
                -	["keyword", "INCLUDES"],
                -	["keyword", "INTERNAL"],
                -	["keyword", "MAJOR-ID"],
                -	["keyword", "MODIFIER"],
                -	["keyword", "NEW-LINE"],
                -	["keyword", "OPTIONAL"],
                -	["keyword", "PROPERTY"],
                -	["keyword", "ROLLBACK"],
                -	["keyword", "STARTING"],
                -	["keyword", "SUPPLIED"],
                -	["keyword", "ABSTRACT"],
                -	["keyword", "CHANGING"],
                -	["keyword", "CONTEXTS"],
                -	["keyword", "CREATING"],
                -	["keyword", "CUSTOMER"],
                -	["keyword", "DATABASE"],
                -	["keyword", "DAYLIGHT"],
                -	["keyword", "DEFINING"],
                -	["keyword", "DISTINCT"],
                -	["keyword", "DIVISION"],
                -	["keyword", "ENABLING"],
                -	["keyword", "ENDCHAIN"],
                -	["keyword", "ESCAPING"],
                -	["keyword", "HARMLESS"],
                -	["keyword", "IMPLICIT"],
                -	["keyword", "INACTIVE"],
                -	["keyword", "LANGUAGE"],
                -	["keyword", "MINOR-ID"],
                -	["keyword", "MULTIPLY"],
                -	["keyword", "NEW-PAGE"],
                -	["keyword", "NO-TITLE"],
                -	["keyword", "POS_HIGH"],
                -	["keyword", "SEPARATE"],
                -	["keyword", "TEXTPOOL"],
                -	["keyword", "TRANSFER"],
                -	["keyword", "SELECTOR"],
                -	["keyword", "DBMAXLEN"],
                -	["keyword", "ITERATOR"],
                -	["keyword", "SELECTOR"],
                -	["keyword", "ARCHIVE"],
                -	["keyword", "BIT-XOR"],
                -	["keyword", "BYTE-CO"],
                -	["keyword", "COLLECT"],
                -	["keyword", "COMMENT"],
                -	["keyword", "CURRENT"],
                -	["keyword", "DEFAULT"],
                -	["keyword", "DISPLAY"],
                -	["keyword", "ENDFORM"],
                -	["keyword", "EXTRACT"],
                -	["keyword", "LEADING"],
                -	["keyword", "LISTBOX"],
                -	["keyword", "LOCATOR"],
                -	["keyword", "MEMBERS"],
                -	["keyword", "METHODS"],
                -	["keyword", "NESTING"],
                -	["keyword", "POS_LOW"],
                -	["keyword", "PROCESS"],
                -	["keyword", "PROVIDE"],
                -	["keyword", "RAISING"],
                -	["keyword", "RESERVE"],
                -	["keyword", "SECONDS"],
                -	["keyword", "SUMMARY"],
                -	["keyword", "VISIBLE"],
                -	["keyword", "BETWEEN"],
                -	["keyword", "BIT-AND"],
                -	["keyword", "BYTE-CS"],
                -	["keyword", "CLEANUP"],
                -	["keyword", "COMPUTE"],
                -	["keyword", "CONTROL"],
                -	["keyword", "CONVERT"],
                -	["keyword", "DATASET"],
                -	["keyword", "ENDCASE"],
                -	["keyword", "FORWARD"],
                -	["keyword", "HEADERS"],
                -	["keyword", "HOTSPOT"],
                -	["keyword", "INCLUDE"],
                -	["keyword", "INVERSE"],
                -	["keyword", "KEEPING"],
                -	["keyword", "NO-ZERO"],
                -	["keyword", "OBJECTS"],
                -	["keyword", "OVERLAY"],
                -	["keyword", "PADDING"],
                -	["keyword", "PATTERN"],
                -	["keyword", "PROGRAM"],
                -	["keyword", "REFRESH"],
                -	["keyword", "SECTION"],
                -	["keyword", "SUMMING"],
                -	["keyword", "TESTING"],
                -	["keyword", "VERSION"],
                -	["keyword", "WINDOWS"],
                -	["keyword", "WITHOUT"],
                -	["keyword", "BIT-NOT"],
                -	["keyword", "BYTE-CA"],
                -	["keyword", "BYTE-NA"],
                -	["keyword", "CASTING"],
                -	["keyword", "CONTEXT"],
                -	["keyword", "COUNTRY"],
                -	["keyword", "DYNAMIC"],
                -	["keyword", "ENABLED"],
                -	["keyword", "ENDLOOP"],
                -	["keyword", "EXECUTE"],
                -	["keyword", "FRIENDS"],
                -	["keyword", "HANDLER"],
                -	["keyword", "HEADING"],
                -	["keyword", "INITIAL"],
                -	["keyword", "*-INPUT"],
                -	["keyword", "LOGFILE"],
                -	["keyword", "MAXIMUM"],
                -	["keyword", "MINIMUM"],
                -	["keyword", "NO-GAPS"],
                -	["keyword", "NO-SIGN"],
                -	["keyword", "PRAGMAS"],
                -	["keyword", "PRIMARY"],
                -	["keyword", "PRIVATE"],
                -	["keyword", "REDUCED"],
                -	["keyword", "REPLACE"],
                -	["keyword", "REQUEST"],
                -	["keyword", "RESULTS"],
                -	["keyword", "UNICODE"],
                -	["keyword", "WARNING"],
                -	["keyword", "ALIASES"],
                -	["keyword", "BYTE-CN"],
                -	["keyword", "BYTE-NS"],
                -	["keyword", "CALLING"],
                -	["keyword", "COL_KEY"],
                -	["keyword", "COLUMNS"],
                -	["keyword", "CONNECT"],
                -	["keyword", "ENDEXEC"],
                -	["keyword", "ENTRIES"],
                -	["keyword", "EXCLUDE"],
                -	["keyword", "FILTERS"],
                -	["keyword", "FURTHER"],
                -	["keyword", "HELP-ID"],
                -	["keyword", "LOGICAL"],
                -	["keyword", "MAPPING"],
                -	["keyword", "MESSAGE"],
                -	["keyword", "NAMETAB"],
                -	["keyword", "OPTIONS"],
                -	["keyword", "PACKAGE"],
                -	["keyword", "PERFORM"],
                -	["keyword", "RECEIVE"],
                -	["keyword", "STATICS"],
                -	["keyword", "VARYING"],
                -	["keyword", "BINDING"],
                -	["keyword", "CHARLEN"],
                -	["keyword", "GREATER"],
                -	["keyword", "XSTRLEN"],
                -	["keyword", "ACCEPT"],
                -	["keyword", "APPEND"],
                -	["keyword", "DETAIL"],
                -	["keyword", "ELSEIF"],
                -	["keyword", "ENDING"],
                -	["keyword", "ENDTRY"],
                -	["keyword", "FORMAT"],
                -	["keyword", "FRAMES"],
                -	["keyword", "GIVING"],
                -	["keyword", "HASHED"],
                -	["keyword", "HEADER"],
                -	["keyword", "IMPORT"],
                -	["keyword", "INSERT"],
                -	["keyword", "MARGIN"],
                -	["keyword", "MODULE"],
                -	["keyword", "NATIVE"],
                -	["keyword", "OBJECT"],
                -	["keyword", "OFFSET"],
                -	["keyword", "REMOTE"],
                -	["keyword", "RESUME"],
                -	["keyword", "SAVING"],
                -	["keyword", "SIMPLE"],
                -	["keyword", "SUBMIT"],
                -	["keyword", "TABBED"],
                -	["keyword", "TOKENS"],
                -	["keyword", "UNIQUE"],
                -	["keyword", "UNPACK"],
                -	["keyword", "UPDATE"],
                -	["keyword", "WINDOW"],
                -	["keyword", "YELLOW"],
                -	["keyword", "ACTUAL"],
                -	["keyword", "ASPECT"],
                -	["keyword", "CENTER"],
                -	["keyword", "CURSOR"],
                -	["keyword", "DELETE"],
                -	["keyword", "DIALOG"],
                -	["keyword", "DIVIDE"],
                -	["keyword", "DURING"],
                -	["keyword", "ERRORS"],
                -	["keyword", "EVENTS"],
                -	["keyword", "EXTEND"],
                -	["keyword", "FILTER"],
                -	["keyword", "HANDLE"],
                -	["keyword", "HAVING"],
                -	["keyword", "IGNORE"],
                -	["keyword", "LITTLE"],
                -	["keyword", "MEMORY"],
                -	["keyword", "NO-GAP"],
                -	["keyword", "OCCURS"],
                -	["keyword", "OPTION"],
                -	["keyword", "PERSON"],
                -	["keyword", "PLACES"],
                -	["keyword", "PUBLIC"],
                -	["keyword", "REDUCE"],
                -	["keyword", "REPORT"],
                -	["keyword", "RESULT"],
                -	["keyword", "SINGLE"],
                -	["keyword", "SORTED"],
                -	["keyword", "SWITCH"],
                -	["keyword", "SYNTAX"],
                -	["keyword", "TARGET"],
                -	["keyword", "VALUES"],
                -	["keyword", "WRITER"],
                -	["keyword", "ASSERT"],
                -	["keyword", "BLOCKS"],
                -	["keyword", "BOUNDS"],
                -	["keyword", "BUFFER"],
                -	["keyword", "CHANGE"],
                -	["keyword", "COLUMN"],
                -	["keyword", "COMMIT"],
                -	["keyword", "CONCAT"],
                -	["keyword", "COPIES"],
                -	["keyword", "CREATE"],
                -	["keyword", "DDMMYY"],
                -	["keyword", "DEFINE"],
                -	["keyword", "ENDIAN"],
                -	["keyword", "ESCAPE"],
                -	["keyword", "EXPAND"],
                -	["keyword", "KERNEL"],
                -	["keyword", "LAYOUT"],
                -	["keyword", "LEGACY"],
                -	["keyword", "LEVELS"],
                -	["keyword", "MMDDYY"],
                -	["keyword", "NUMBER"],
                -	["keyword", "OUTPUT"],
                -	["keyword", "RANGES"],
                -	["keyword", "READER"],
                -	["keyword", "RETURN"],
                -	["keyword", "SCREEN"],
                -	["keyword", "SEARCH"],
                -	["keyword", "SELECT"],
                -	["keyword", "SHARED"],
                -	["keyword", "SOURCE"],
                -	["keyword", "STABLE"],
                -	["keyword", "STATIC"],
                -	["keyword", "SUBKEY"],
                -	["keyword", "SUFFIX"],
                -	["keyword", "TABLES"],
                -	["keyword", "UNWIND"],
                -	["keyword", "YYMMDD"],
                -	["keyword", "ASSIGN"],
                -	["keyword", "BACKUP"],
                -	["keyword", "BEFORE"],
                -	["keyword", "BINARY"],
                -	["keyword", "BIT-OR"],
                -	["keyword", "BLANKS"],
                -	["keyword", "CLIENT"],
                -	["keyword", "CODING"],
                -	["keyword", "COMMON"],
                -	["keyword", "DEMAND"],
                -	["keyword", "DYNPRO"],
                -	["keyword", "EXCEPT"],
                -	["keyword", "EXISTS"],
                -	["keyword", "EXPORT"],
                -	["keyword", "FIELDS"],
                -	["keyword", "GLOBAL"],
                -	["keyword", "GROUPS"],
                -	["keyword", "LENGTH"],
                -	["keyword", "LOCALE"],
                -	["keyword", "MEDIUM"],
                -	["keyword", "METHOD"],
                -	["keyword", "MODIFY"],
                -	["keyword", "NESTED"],
                -	["keyword", "OTHERS"],
                -	["keyword", "REJECT"],
                -	["keyword", "SCROLL"],
                -	["keyword", "SUPPLY"],
                -	["keyword", "SYMBOL"],
                -	["keyword", "ENDFOR"],
                -	["keyword", "STRLEN"],
                -	["keyword", "ALIGN"],
                -	["keyword", "BEGIN"],
                -	["keyword", "BOUND"],
                -	["keyword", "ENDAT"],
                -	["keyword", "ENTRY"],
                -	["keyword", "EVENT"],
                -	["keyword", "FINAL"],
                -	["keyword", "FLUSH"],
                -	["keyword", "GRANT"],
                -	["keyword", "INNER"],
                -	["keyword", "SHORT"],
                -	["keyword", "USING"],
                -	["keyword", "WRITE"],
                -	["keyword", "AFTER"],
                -	["keyword", "BLACK"],
                -	["keyword", "BLOCK"],
                -	["keyword", "CLOCK"],
                -	["keyword", "COLOR"],
                -	["keyword", "COUNT"],
                -	["keyword", "DUMMY"],
                -	["keyword", "EMPTY"],
                -	["keyword", "ENDDO"],
                -	["keyword", "ENDON"],
                -	["keyword", "GREEN"],
                -	["keyword", "INDEX"],
                -	["keyword", "INOUT"],
                -	["keyword", "LEAVE"],
                -	["keyword", "LEVEL"],
                -	["keyword", "LINES"],
                -	["keyword", "MODIF"],
                -	["keyword", "ORDER"],
                -	["keyword", "OUTER"],
                -	["keyword", "RANGE"],
                -	["keyword", "RESET"],
                -	["keyword", "RETRY"],
                -	["keyword", "RIGHT"],
                -	["keyword", "SMART"],
                -	["keyword", "SPLIT"],
                -	["keyword", "STYLE"],
                -	["keyword", "TABLE"],
                -	["keyword", "THROW"],
                -	["keyword", "UNDER"],
                -	["keyword", "UNTIL"],
                -	["keyword", "UPPER"],
                -	["keyword", "UTF-8"],
                -	["keyword", "WHERE"],
                -	["keyword", "ALIAS"],
                -	["keyword", "BLANK"],
                -	["keyword", "CLEAR"],
                -	["keyword", "CLOSE"],
                -	["keyword", "EXACT"],
                -	["keyword", "FETCH"],
                -	["keyword", "FIRST"],
                -	["keyword", "FOUND"],
                -	["keyword", "GROUP"],
                -	["keyword", "LLANG"],
                -	["keyword", "LOCAL"],
                -	["keyword", "OTHER"],
                -	["keyword", "REGEX"],
                -	["keyword", "SPOOL"],
                -	["keyword", "TITLE"],
                -	["keyword", "TYPES"],
                -	["keyword", "VALID"],
                -	["keyword", "WHILE"],
                -	["keyword", "ALPHA"],
                -	["keyword", "BOXED"],
                -	["keyword", "CATCH"],
                -	["keyword", "CHAIN"],
                -	["keyword", "CHECK"],
                -	["keyword", "CLASS"],
                -	["keyword", "COVER"],
                -	["keyword", "ENDIF"],
                -	["keyword", "EQUIV"],
                -	["keyword", "FIELD"],
                -	["keyword", "FLOOR"],
                -	["keyword", "FRAME"],
                -	["keyword", "INPUT"],
                -	["keyword", "LOWER"],
                -	["keyword", "MATCH"],
                -	["keyword", "NODES"],
                -	["keyword", "PAGES"],
                -	["keyword", "PRINT"],
                -	["keyword", "RAISE"],
                -	["keyword", "ROUND"],
                -	["keyword", "SHIFT"],
                -	["keyword", "SPACE"],
                -	["keyword", "SPOTS"],
                -	["keyword", "STAMP"],
                -	["keyword", "STATE"],
                -	["keyword", "TASKS"],
                -	["keyword", "TIMES"],
                -	["keyword", "TRMAC"],
                -	["keyword", "ULINE"],
                -	["keyword", "UNION"],
                -	["keyword", "VALUE"],
                -	["keyword", "WIDTH"],
                -	["keyword", "EQUAL"],
                -	["keyword", "LOG10"],
                -	["keyword", "TRUNC"],
                -	["keyword", "BLOB"],
                -	["keyword", "CASE"],
                -	["keyword", "CEIL"],
                -	["keyword", "CLOB"],
                -	["keyword", "COND"],
                -	["keyword", "EXIT"],
                -	["keyword", "FILE"],
                -	["keyword", "GAPS"],
                -	["keyword", "HOLD"],
                -	["keyword", "INCL"],
                -	["keyword", "INTO"],
                -	["keyword", "KEEP"],
                -	["keyword", "KEYS"],
                -	["keyword", "LAST"],
                -	["keyword", "LINE"],
                -	["keyword", "LONG"],
                -	["keyword", "LPAD"],
                -	["keyword", "MAIL"],
                -	["keyword", "MODE"],
                -	["keyword", "OPEN"],
                -	["keyword", "PINK"],
                -	["keyword", "READ"],
                -	["keyword", "ROWS"],
                -	["keyword", "TEST"],
                -	["keyword", "THEN"],
                -	["keyword", "ZERO"],
                -	["keyword", "AREA"],
                -	["keyword", "BACK"],
                -	["keyword", "BADI"],
                -	["keyword", "BYTE"],
                -	["keyword", "CAST"],
                -	["keyword", "EDIT"],
                -	["keyword", "EXEC"],
                -	["keyword", "FAIL"],
                -	["keyword", "FIND"],
                -	["keyword", "FKEQ"],
                -	["keyword", "FONT"],
                -	["keyword", "FREE"],
                -	["keyword", "GKEQ"],
                -	["keyword", "HIDE"],
                -	["keyword", "INIT"],
                -	["keyword", "ITNO"],
                -	["keyword", "LATE"],
                -	["keyword", "LOOP"],
                -	["keyword", "MAIN"],
                -	["keyword", "MARK"],
                -	["keyword", "MOVE"],
                -	["keyword", "NEXT"],
                -	["keyword", "NULL"],
                -	["keyword", "RISK"],
                -	["keyword", "ROLE"],
                -	["keyword", "UNIT"],
                -	["keyword", "WAIT"],
                -	["keyword", "ZONE"],
                -	["keyword", "BASE"],
                -	["keyword", "CALL"],
                -	["keyword", "CODE"],
                -	["keyword", "DATA"],
                -	["keyword", "DATE"],
                -	["keyword", "FKGE"],
                -	["keyword", "GKGE"],
                -	["keyword", "HIGH"],
                -	["keyword", "KIND"],
                -	["keyword", "LEFT"],
                -	["keyword", "LIST"],
                -	["keyword", "MASK"],
                -	["keyword", "MESH"],
                -	["keyword", "NAME"],
                -	["keyword", "NODE"],
                -	["keyword", "PACK"],
                -	["keyword", "PAGE"],
                -	["keyword", "POOL"],
                -	["keyword", "SEND"],
                -	["keyword", "SIGN"],
                -	["keyword", "SIZE"],
                -	["keyword", "SOME"],
                -	["keyword", "STOP"],
                -	["keyword", "TASK"],
                -	["keyword", "TEXT"],
                -	["keyword", "TIME"],
                -	["keyword", "USER"],
                -	["keyword", "VARY"],
                -	["keyword", "WITH"],
                -	["keyword", "WORD"],
                -	["keyword", "BLUE"],
                -	["keyword", "CONV"],
                -	["keyword", "COPY"],
                -	["keyword", "DEEP"],
                -	["keyword", "ELSE"],
                -	["keyword", "FORM"],
                -	["keyword", "FROM"],
                -	["keyword", "HINT"],
                -	["keyword", "ICON"],
                -	["keyword", "JOIN"],
                -	["keyword", "LIKE"],
                -	["keyword", "LOAD"],
                -	["keyword", "ONLY"],
                -	["keyword", "PART"],
                -	["keyword", "SCAN"],
                -	["keyword", "SKIP"],
                -	["keyword", "SORT"],
                -	["keyword", "TYPE"],
                -	["keyword", "UNIX"],
                -	["keyword", "VIEW"],
                -	["keyword", "WHEN"],
                -	["keyword", "WORK"],
                -	["keyword", "ACOS"],
                -	["keyword", "ASIN"],
                -	["keyword", "ATAN"],
                -	["keyword", "COSH"],
                -	["keyword", "EACH"],
                -	["keyword", "FRAC"],
                -	["keyword", "LESS"],
                -	["keyword", "RTTI"],
                -	["keyword", "SINH"],
                -	["keyword", "SQRT"],
                -	["keyword", "TANH"],
                -	["keyword", "AVG"],
                -	["keyword", "BIT"],
                -	["keyword", "DIV"],
                -	["keyword", "ISO"],
                -	["keyword", "LET"],
                -	["keyword", "OUT"],
                -	["keyword", "PAD"],
                -	["keyword", "SQL"],
                -	["keyword", "ALL"],
                -	["keyword", "CI_"],
                -	["keyword", "CPI"],
                -	["keyword", "END"],
                -	["keyword", "LOB"],
                -	["keyword", "LPI"],
                -	["keyword", "MAX"],
                -	["keyword", "MIN"],
                -	["keyword", "NEW"],
                -	["keyword", "OLE"],
                -	["keyword", "RUN"],
                -	["keyword", "SET"],
                -	["keyword", "?TO"],
                -	["keyword", "YES"],
                -	["keyword", "ABS"],
                -	["keyword", "ADD"],
                -	["keyword", "AND"],
                -	["keyword", "BIG"],
                -	["keyword", "FOR"],
                -	["keyword", "HDB"],
                -	["keyword", "JOB"],
                -	["keyword", "LOW"],
                -	["keyword", "NOT"],
                -	["keyword", "SAP"],
                -	["keyword", "TRY"],
                -	["keyword", "VIA"],
                -	["keyword", "XML"],
                -	["keyword", "ANY"],
                -	["keyword", "GET"],
                -	["keyword", "IDS"],
                -	["keyword", "KEY"],
                -	["keyword", "MOD"],
                -	["keyword", "OFF"],
                -	["keyword", "PUT"],
                -	["keyword", "RAW"],
                -	["keyword", "RED"],
                -	["keyword", "REF"],
                -	["keyword", "SUM"],
                -	["keyword", "TAB"],
                -	["keyword", "XSD"],
                -	["keyword", "CNT"],
                -	["keyword", "COS"],
                -	["keyword", "EXP"],
                -	["keyword", "LOG"],
                -	["keyword", "SIN"],
                -	["keyword", "TAN"],
                -	["keyword", "XOR"],
                -	["keyword", "AT"],
                -	["keyword", "CO"],
                -	["keyword", "CP"],
                -	["keyword", "DO"],
                -	["keyword", "GT"],
                -	["keyword", "ID"],
                -	["keyword", "IF"],
                -	["keyword", "NS"],
                -	["keyword", "OR"],
                -	["keyword", "BT"],
                -	["keyword", "CA"],
                -	["keyword", "CS"],
                -	["keyword", "GE"],
                -	["keyword", "NA"],
                -	["keyword", "NB"],
                -	["keyword", "EQ"],
                -	["keyword", "IN"],
                -	["keyword", "LT"],
                -	["keyword", "NE"],
                -	["keyword", "NO"],
                -	["keyword", "OF"],
                -	["keyword", "ON"],
                -	["keyword", "PF"],
                -	["keyword", "TO"],
                -	["keyword", "AS"],
                -	["keyword", "BY"],
                -	["keyword", "CN"],
                -	["keyword", "IS"],
                -	["keyword", "LE"],
                -	["keyword", "NP"],
                -	["keyword", "UP"],
                -	["keyword", "E"],
                -	["keyword", "I"],
                -	["keyword", "M"],
                -	["keyword", "O"],
                -	["keyword", "Z"],
                -	["keyword", "C"],
                -	["keyword", "X"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/abap/number_feature.test b/node_modules/prismjs/tests/languages/abap/number_feature.test
                deleted file mode 100644
                index 0c9556e..0000000
                --- a/node_modules/prismjs/tests/languages/abap/number_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -0
                -42
                -123456789
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0"],
                -	["number", "42"],
                -	["number", "123456789"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/abap/operator_feature.test b/node_modules/prismjs/tests/languages/abap/operator_feature.test
                deleted file mode 100644
                index 23cb4a0..0000000
                --- a/node_modules/prismjs/tests/languages/abap/operator_feature.test
                +++ /dev/null
                @@ -1,38 +0,0 @@
                -.
                -+ -
                -/ * **
                -< > <= >=
                -= ?= <>
                -
                -& &&
                -
                -a-b
                -a~b
                -a->b
                -a=>b
                -a|b
                -a{b}c
                -
                -----------------------------------------------------
                -
                -[
                -	["punctuation", "."],
                -	["operator", "+"], ["operator", "-"],
                -	["operator", "/"], ["operator", "*"], ["operator", "**"],
                -	["operator", "<"], ["operator", ">"], ["operator", "<="], ["operator", ">="],
                -	["operator", "="], ["operator", "?="], ["operator", "<>"],
                -
                -	["string-operator", "&"], ["string-operator", "&&"],
                -
                -	"\r\n\r\na", ["token-operator", "-"],
                -	"b\r\na", ["token-operator", "~"],
                -	"b\r\na", ["token-operator", "->"],
                -	"b\r\na", ["token-operator", "=>"],
                -	"b\r\na", ["token-operator", "|"],
                -	"b\r\na", ["token-operator", "{"], "b", ["token-operator", "}"], "c"
                -]
                -
                -----------------------------------------------------
                -
                -Checks for operators, string-operators and token-operators.
                -The leading dot serves only because tests are trimmed.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/abap/string-template_feature.test b/node_modules/prismjs/tests/languages/abap/string-template_feature.test
                deleted file mode 100644
                index 7979fbe..0000000
                --- a/node_modules/prismjs/tests/languages/abap/string-template_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -|foobar|
                -|foo\|b\{a}r|
                -|foo { bar } baz|
                -
                -----------------------------------------------------
                -
                -[
                -	["token-operator", "|"], ["string-template", "foobar"], ["token-operator", "|"],
                -	["token-operator", "|"], ["string-template", "foo\\|b\\{a}r"], ["token-operator", "|"],
                -	["token-operator", "|"], ["string-template", "foo "], ["token-operator", "{"],
                -	" bar ",
                -	["token-operator", "}"], ["string-template", " baz"], ["token-operator", "|"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for string templates.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/abap/string_feature.test b/node_modules/prismjs/tests/languages/abap/string_feature.test
                deleted file mode 100644
                index 808b027..0000000
                --- a/node_modules/prismjs/tests/languages/abap/string_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -''
                -'foo'
                -'foo\'bar'
                -``
                -`foo`
                -`foo\`bar`
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "''"],
                -	["string", "'foo'"],
                -	["string", "'foo\\'bar'"],
                -	["string", "``"],
                -	["string", "`foo`"],
                -	["string", "`foo\\`bar`"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/actionscript/keyword_feature.test b/node_modules/prismjs/tests/languages/actionscript/keyword_feature.test
                deleted file mode 100644
                index c41a852..0000000
                --- a/node_modules/prismjs/tests/languages/actionscript/keyword_feature.test
                +++ /dev/null
                @@ -1,71 +0,0 @@
                -as; break; case; catch; class;
                -const; default; delete; do; else;
                -extends; finally; for; function; if;
                -implements; import; in; instanceof; interface;
                -internal; is; native; new; null;
                -package; private; protected; public; return;
                -super; switch; this; throw; try;
                -typeof; use; var; void; while;
                -with; dynamic; each; final; get;
                -include; namespace; native; override; set;
                -static;
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "as"], ["punctuation", ";"],
                -	["keyword", "break"], ["punctuation", ";"],
                -	["keyword", "case"], ["punctuation", ";"],
                -	["keyword", "catch"], ["punctuation", ";"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "const"], ["punctuation", ";"],
                -	["keyword", "default"], ["punctuation", ";"],
                -	["keyword", "delete"], ["punctuation", ";"],
                -	["keyword", "do"], ["punctuation", ";"],
                -	["keyword", "else"], ["punctuation", ";"],
                -	["keyword", "extends"], ["punctuation", ";"],
                -	["keyword", "finally"], ["punctuation", ";"],
                -	["keyword", "for"], ["punctuation", ";"],
                -	["keyword", "function"], ["punctuation", ";"],
                -	["keyword", "if"], ["punctuation", ";"],
                -	["keyword", "implements"], ["punctuation", ";"],
                -	["keyword", "import"], ["punctuation", ";"],
                -	["keyword", "in"], ["punctuation", ";"],
                -	["keyword", "instanceof"], ["punctuation", ";"],
                -	["keyword", "interface"], ["punctuation", ";"],
                -	["keyword", "internal"], ["punctuation", ";"],
                -	["keyword", "is"], ["punctuation", ";"],
                -	["keyword", "native"], ["punctuation", ";"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "null"], ["punctuation", ";"],
                -	["keyword", "package"], ["punctuation", ";"],
                -	["keyword", "private"], ["punctuation", ";"],
                -	["keyword", "protected"], ["punctuation", ";"],
                -	["keyword", "public"], ["punctuation", ";"],
                -	["keyword", "return"], ["punctuation", ";"],
                -	["keyword", "super"], ["punctuation", ";"],
                -	["keyword", "switch"], ["punctuation", ";"],
                -	["keyword", "this"], ["punctuation", ";"],
                -	["keyword", "throw"], ["punctuation", ";"],
                -	["keyword", "try"], ["punctuation", ";"],
                -	["keyword", "typeof"], ["punctuation", ";"],
                -	["keyword", "use"], ["punctuation", ";"],
                -	["keyword", "var"], ["punctuation", ";"],
                -	["keyword", "void"], ["punctuation", ";"],
                -	["keyword", "while"], ["punctuation", ";"],
                -	["keyword", "with"], ["punctuation", ";"],
                -	["keyword", "dynamic"], ["punctuation", ";"],
                -	["keyword", "each"], ["punctuation", ";"],
                -	["keyword", "final"], ["punctuation", ";"],
                -	["keyword", "get"], ["punctuation", ";"],
                -	["keyword", "include"], ["punctuation", ";"],
                -	["keyword", "namespace"], ["punctuation", ";"],
                -	["keyword", "native"], ["punctuation", ";"],
                -	["keyword", "override"], ["punctuation", ";"],
                -	["keyword", "set"], ["punctuation", ";"],
                -	["keyword", "static"], ["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/actionscript/operator_feature.test b/node_modules/prismjs/tests/languages/actionscript/operator_feature.test
                deleted file mode 100644
                index 14c007c..0000000
                --- a/node_modules/prismjs/tests/languages/actionscript/operator_feature.test
                +++ /dev/null
                @@ -1,29 +0,0 @@
                -+ - * / % ^
                -+= -= *= /= %= ^=
                -& && | ||
                -&= &&= |= ||=
                -< << > >> >>>
                -<= <<= >= >>= >>>=
                -! != = ==
                -!== ===
                -~ ? @
                -++ --
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"], ["operator", "%"], ["operator", "^"],
                -	["operator", "+="], ["operator", "-="], ["operator", "*="], ["operator", "/="], ["operator", "%="], ["operator", "^="],
                -	["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"],
                -	["operator", "&="], ["operator", "&&="], ["operator", "|="], ["operator", "||="],
                -	["operator", "<"], ["operator", "<<"], ["operator", ">"], ["operator", ">>"], ["operator", ">>>"],
                -	["operator", "<="], ["operator", "<<="], ["operator", ">="], ["operator", ">>="], ["operator", ">>>="],
                -	["operator", "!"], ["operator", "!="], ["operator", "="], ["operator", "=="],
                -	["operator", "!=="], ["operator", "==="],
                -	["operator", "~"], ["operator", "?"], ["operator", "@"],
                -	["operator", "++"], ["operator", "--"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/attr-name_feature.test b/node_modules/prismjs/tests/languages/ada/attr-name_feature.test
                deleted file mode 100644
                index c30a2f5..0000000
                --- a/node_modules/prismjs/tests/languages/ada/attr-name_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -Integer'Size
                -Character'Val
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "Integer"], ["attr-name", "'Size"],
                -	["variable", "Character"], ["attr-name", "'Val"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for attributes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/boolean_feature.test b/node_modules/prismjs/tests/languages/ada/boolean_feature.test
                deleted file mode 100644
                index 4019c44..0000000
                --- a/node_modules/prismjs/tests/languages/ada/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -true
                -false
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"],
                -	["boolean", "false"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/char_feature.test b/node_modules/prismjs/tests/languages/ada/char_feature.test
                deleted file mode 100644
                index 145f2ce..0000000
                --- a/node_modules/prismjs/tests/languages/ada/char_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -'f'
                -'A'
                -
                -----------------------------------------------------
                -
                -[
                -	["char", "'f'"],
                -	["char", "'A'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for chars.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/comment_feature.test b/node_modules/prismjs/tests/languages/ada/comment_feature.test
                deleted file mode 100644
                index adf3e0c..0000000
                --- a/node_modules/prismjs/tests/languages/ada/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                ---
                --- Foo bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "--"],
                -	["comment", "-- Foo bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/keyword_feature.test b/node_modules/prismjs/tests/languages/ada/keyword_feature.test
                deleted file mode 100644
                index e5c815f..0000000
                --- a/node_modules/prismjs/tests/languages/ada/keyword_feature.test
                +++ /dev/null
                @@ -1,153 +0,0 @@
                -abort
                -abs
                -abstract
                -accept
                -access
                -aliased
                -all
                -and
                -array
                -at
                -begin
                -body
                -case
                -constant
                -declare
                -delay
                -delta
                -digits
                -do
                -else
                -new
                -return
                -elsif
                -end
                -entry
                -exception
                -exit
                -for
                -function
                -generic
                -goto
                -if
                -in
                -interface
                -is
                -limited
                -loop
                -mod
                -not
                -null
                -of
                -others
                -out
                -overriding
                -package
                -pragma
                -private
                -procedure
                -protected
                -raise
                -range
                -record
                -rem
                -renames
                -requeue
                -reverse
                -select
                -separate
                -some
                -subtype
                -synchronized
                -tagged
                -task
                -terminate
                -then
                -type
                -until
                -use
                -when
                -while
                -with
                -xor
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "abort"],
                -	["keyword", "abs"],
                -	["keyword", "abstract"],
                -	["keyword", "accept"],
                -	["keyword", "access"],
                -	["keyword", "aliased"],
                -	["keyword", "all"],
                -	["keyword", "and"],
                -	["keyword", "array"],
                -	["keyword", "at"],
                -	["keyword", "begin"],
                -	["keyword", "body"],
                -	["keyword", "case"],
                -	["keyword", "constant"],
                -	["keyword", "declare"],
                -	["keyword", "delay"],
                -	["keyword", "delta"],
                -	["keyword", "digits"],
                -	["keyword", "do"],
                -	["keyword", "else"],
                -	["keyword", "new"],
                -	["keyword", "return"],
                -	["keyword", "elsif"],
                -	["keyword", "end"],
                -	["keyword", "entry"],
                -	["keyword", "exception"],
                -	["keyword", "exit"],
                -	["keyword", "for"],
                -	["keyword", "function"],
                -	["keyword", "generic"],
                -	["keyword", "goto"],
                -	["keyword", "if"],
                -	["keyword", "in"],
                -	["keyword", "interface"],
                -	["keyword", "is"],
                -	["keyword", "limited"],
                -	["keyword", "loop"],
                -	["keyword", "mod"],
                -	["keyword", "not"],
                -	["keyword", "null"],
                -	["keyword", "of"],
                -	["keyword", "others"],
                -	["keyword", "out"],
                -	["keyword", "overriding"],
                -	["keyword", "package"],
                -	["keyword", "pragma"],
                -	["keyword", "private"],
                -	["keyword", "procedure"],
                -	["keyword", "protected"],
                -	["keyword", "raise"],
                -	["keyword", "range"],
                -	["keyword", "record"],
                -	["keyword", "rem"],
                -	["keyword", "renames"],
                -	["keyword", "requeue"],
                -	["keyword", "reverse"],
                -	["keyword", "select"],
                -	["keyword", "separate"],
                -	["keyword", "some"],
                -	["keyword", "subtype"],
                -	["keyword", "synchronized"],
                -	["keyword", "tagged"],
                -	["keyword", "task"],
                -	["keyword", "terminate"],
                -	["keyword", "then"],
                -	["keyword", "type"],
                -	["keyword", "until"],
                -	["keyword", "use"],
                -	["keyword", "when"],
                -	["keyword", "while"],
                -	["keyword", "with"],
                -	["keyword", "xor"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/number_feature.test b/node_modules/prismjs/tests/languages/ada/number_feature.test
                deleted file mode 100644
                index a27f1af..0000000
                --- a/node_modules/prismjs/tests/languages/ada/number_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -42
                -42_000
                -3.14_15_9
                -0.4E+123_456
                -3.7e-7
                -1_6#Bad_Face#E-32_1
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "42_000"],
                -	["number", "3.14_15_9"],
                -	["number", "0.4E+123_456"],
                -	["number", "3.7e-7"],
                -	["number", "1_6#Bad_Face#E-32_1"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/operator_feature.test b/node_modules/prismjs/tests/languages/ada/operator_feature.test
                deleted file mode 100644
                index 21a3137..0000000
                --- a/node_modules/prismjs/tests/languages/ada/operator_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -<>
                -=> :=
                -< <=
                -> >=
                -= /=
                -& + -
                -* ** /
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "<>"],
                -	["operator", "=>"], ["operator", ":="],
                -	["operator", "<"], ["operator", "<="],
                -	["operator", ">"], ["operator", ">="],
                -	["operator", "="], ["operator", "/="],
                -	["operator", "&"], ["operator", "+"], ["operator", "-"],
                -	["operator", "*"], ["operator", "**"], ["operator", "/"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/string_feature.test b/node_modules/prismjs/tests/languages/ada/string_feature.test
                deleted file mode 100644
                index c44e9cd..0000000
                --- a/node_modules/prismjs/tests/languages/ada/string_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -""
                -"Foo""bar"""
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"Foo\"\"bar\"\"\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/ada/variable_feature.test b/node_modules/prismjs/tests/languages/ada/variable_feature.test
                deleted file mode 100644
                index f47a4fc..0000000
                --- a/node_modules/prismjs/tests/languages/ada/variable_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -Byte
                -foo_bar42
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "Byte"],
                -	["variable", "foo_bar42"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/comment_feature.test b/node_modules/prismjs/tests/languages/apacheconf/comment_feature.test
                deleted file mode 100644
                index bde2288..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/comment_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -#foo
                -# bar
                -# Redirect 301 /2006/oldfile.html http://subdomain.domain.tld/newfile.html
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#foo"],
                -	["comment", "# bar"],
                -	["comment", "# Redirect 301 /2006/oldfile.html http://subdomain.domain.tld/newfile.html"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/directive-block_feature.test b/node_modules/prismjs/tests/languages/apacheconf/directive-block_feature.test
                deleted file mode 100644
                index 1af6add..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/directive-block_feature.test
                +++ /dev/null
                @@ -1,469 +0,0 @@
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -
                -----------------------------------------------------
                -
                -[
                -	["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"AuthnProviderAlias"
                -		]],
                -		["directive-block-parameter", [
                -			" file file2"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -		["directive-block", [
                -			["punctuation", ""]
                -	]],
                -
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", "<"],
                -            "AuthzProviderAlias"
                -        ]],
                -        ["directive-block-parameter", [
                -            " ldap-group ldap-group-alias1 ",
                -            ["string", [
                -                "\"cn=my-group,o=ctx\""
                -            ]]
                -        ]],
                -        ["punctuation", ">"]
                -    ]],
                -    ["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Directory"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\"/webpages/secure\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"DirectoryMatch"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\"^/www/(.+/)?[0-9]{3}\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Else"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"ElseIf"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\"-R '10.0.0.0/8'\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Files"
                -		]],
                -		["directive-block-parameter", [
                -			" ~ ",
                -			["string", [
                -				"\"\\.(gif|jpe?g|png)$\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"FilesMatch"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\".+\\.(gif|jpe?g|png)$\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"If"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\"-z req('Host')\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"IfDefine"
                -		]],
                -		["directive-block-parameter", [
                -			" !MemCache"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"IfModule"
                -		]],
                -		["directive-block-parameter", [
                -			" mod_rewrite.c"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"IfVersion"
                -		]],
                -		["directive-block-parameter", [
                -			" 2.1.0"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Limit"
                -		]],
                -		["directive-block-parameter", [
                -			" POST PUT DELETE"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"LimitExcept"
                -		]],
                -		["directive-block-parameter", [
                -			" POST GET"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Location"
                -		]],
                -		["directive-block-parameter", [
                -			" /private1"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"LocationMatch"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\"/(extra|special)/data\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Macro"
                -		]],
                -		["directive-block-parameter", [
                -			" LocalAccessPolicy"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"Proxy"
                -		]],
                -		["directive-block-parameter", [
                -			["string", [
                -				"\"*\""
                -			]]
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"RequireAll"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"RequireAny"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"RequireNone"
                -		]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]],
                -
                -    ["directive-block", [
                -		["directive-block", [
                -			["punctuation", "<"],
                -			"VirtualHost"
                -		]],
                -		["directive-block-parameter", [
                -			" [2001",
                -            ["punctuation", ":"],
                -            "db8",
                -            ["punctuation", ":"],
                -            ["punctuation", ":"],
                -            "a00",
                -            ["punctuation", ":"],
                -            "20ff",
                -            ["punctuation", ":"],
                -            "fea7",
                -            ["punctuation", ":"],
                -            "ccea]",
                -            ["punctuation", ":"],
                -            "80"
                -        ]],
                -		["punctuation", ">"]
                -	]],
                -	["directive-block", [
                -        ["directive-block", [
                -            ["punctuation", ""]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for directive blocks.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/directive-flags_feature.test b/node_modules/prismjs/tests/languages/apacheconf/directive-flags_feature.test
                deleted file mode 100644
                index 0bb206e..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/directive-flags_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -[OR]
                -[L,QSA]
                -
                -----------------------------------------------------
                -
                -[
                -	["directive-flags", "[OR]"],
                -	["directive-flags", "[L,QSA]"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for directive flags.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/directive-inline_feature.test b/node_modules/prismjs/tests/languages/apacheconf/directive-inline_feature.test
                deleted file mode 100644
                index 6b4df43..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/directive-inline_feature.test
                +++ /dev/null
                @@ -1,1163 +0,0 @@
                -AcceptFilter
                -AcceptPathInfo
                -AccessFileName
                -Action
                -AddAlt
                -AddAltByEncoding
                -AddAltByType
                -AddCharset
                -AddDefaultCharset
                -AddDescription
                -AddEncoding
                -AddHandler
                -AddIcon
                -AddIconByEncoding
                -AddIconByType
                -AddInputFilter
                -AddLanguage
                -AddModuleInfo
                -AddOutputFilter
                -AddOutputFilterByType
                -AddType
                -Alias
                -AliasMatch
                -Allow
                -AllowCONNECT
                -AllowEncodedSlashes
                -AllowMethods
                -AllowOverride
                -AllowOverrideList
                -Anonymous
                -Anonymous_LogEmail
                -Anonymous_MustGiveEmail
                -Anonymous_NoUserID
                -Anonymous_VerifyEmail
                -AsyncRequestWorkerFactor
                -AuthBasicAuthoritative
                -AuthBasicFake
                -AuthBasicProvider
                -AuthBasicUseDigestAlgorithm
                -AuthDBDUserPWQuery
                -AuthDBDUserRealmQuery
                -AuthDBMGroupFile
                -AuthDBMType
                -AuthDBMUserFile
                -AuthDigestAlgorithm
                -AuthDigestDomain
                -AuthDigestNonceLifetime
                -AuthDigestProvider
                -AuthDigestQop
                -AuthDigestShmemSize
                -AuthFormAuthoritative
                -AuthFormBody
                -AuthFormDisableNoStore
                -AuthFormFakeBasicAuth
                -AuthFormLocation
                -AuthFormLoginRequiredLocation
                -AuthFormLoginSuccessLocation
                -AuthFormLogoutLocation
                -AuthFormMethod
                -AuthFormMimetype
                -AuthFormPassword
                -AuthFormProvider
                -AuthFormSitePassphrase
                -AuthFormSize
                -AuthFormUsername
                -AuthGroupFile
                -AuthLDAPAuthorizePrefix
                -AuthLDAPBindAuthoritative
                -AuthLDAPBindDN
                -AuthLDAPBindPassword
                -AuthLDAPCharsetConfig
                -AuthLDAPCompareAsUser
                -AuthLDAPCompareDNOnServer
                -AuthLDAPDereferenceAliases
                -AuthLDAPGroupAttribute
                -AuthLDAPGroupAttributeIsDN
                -AuthLDAPInitialBindAsUser
                -AuthLDAPInitialBindPattern
                -AuthLDAPMaxSubGroupDepth
                -AuthLDAPRemoteUserAttribute
                -AuthLDAPRemoteUserIsDN
                -AuthLDAPSearchAsUser
                -AuthLDAPSubGroupAttribute
                -AuthLDAPSubGroupClass
                -AuthLDAPUrl
                -AuthMerging
                -AuthName
                -AuthnCacheContext
                -AuthnCacheEnable
                -AuthnCacheProvideFor
                -AuthnCacheSOCache
                -AuthnCacheTimeout
                -AuthnzFcgiCheckAuthnProvider
                -AuthnzFcgiDefineProvider
                -AuthType
                -AuthUserFile
                -AuthzDBDLoginToReferer
                -AuthzDBDQuery
                -AuthzDBDRedirectQuery
                -AuthzDBMType
                -AuthzSendForbiddenOnFailure
                -BalancerGrowth
                -BalancerInherit
                -BalancerMember
                -BalancerPersist
                -BrowserMatch
                -BrowserMatchNoCase
                -BufferedLogs
                -BufferSize
                -CacheDefaultExpire
                -CacheDetailHeader
                -CacheDirLength
                -CacheDirLevels
                -CacheDisable
                -CacheEnable
                -CacheFile
                -CacheHeader
                -CacheIgnoreCacheControl
                -CacheIgnoreHeaders
                -CacheIgnoreNoLastMod
                -CacheIgnoreQueryString
                -CacheIgnoreURLSessionIdentifiers
                -CacheKeyBaseURL
                -CacheLastModifiedFactor
                -CacheLock
                -CacheLockMaxAge
                -CacheLockPath
                -CacheMaxExpire
                -CacheMaxFileSize
                -CacheMinExpire
                -CacheMinFileSize
                -CacheNegotiatedDocs
                -CacheQuickHandler
                -CacheReadSize
                -CacheReadTime
                -CacheRoot
                -CacheSocache
                -CacheSocacheMaxSize
                -CacheSocacheMaxTime
                -CacheSocacheMinTime
                -CacheSocacheReadSize
                -CacheSocacheReadTime
                -CacheStaleOnError
                -CacheStoreExpired
                -CacheStoreNoStore
                -CacheStorePrivate
                -CGIDScriptTimeout
                -CGIMapExtension
                -CharsetDefault
                -CharsetOptions
                -CharsetSourceEnc
                -CheckCaseOnly
                -CheckSpelling
                -ChrootDir
                -ContentDigest
                -CookieDomain
                -CookieExpires
                -CookieName
                -CookieStyle
                -CookieTracking
                -CoreDumpDirectory
                -CustomLog
                -Dav
                -DavDepthInfinity
                -DavGenericLockDB
                -DavLockDB
                -DavMinTimeout
                -DBDExptime
                -DBDInitSQL
                -DBDKeep
                -DBDMax
                -DBDMin
                -DBDParams
                -DBDPersist
                -DBDPrepareSQL
                -DBDriver
                -DefaultIcon
                -DefaultLanguage
                -DefaultRuntimeDir
                -DefaultType
                -Define
                -DeflateBufferSize
                -DeflateCompressionLevel
                -DeflateFilterNote
                -DeflateInflateLimitRequestBody
                -DeflateInflateRatioBurst
                -DeflateInflateRatioLimit
                -DeflateMemLevel
                -DeflateWindowSize
                -Deny
                -DirectoryCheckHandler
                -DirectoryIndex
                -DirectoryIndexRedirect
                -DirectorySlash
                -DocumentRoot
                -DTracePrivileges
                -DumpIOInput
                -DumpIOOutput
                -EnableExceptionHook
                -EnableMMAP
                -EnableSendfile
                -Error
                -ErrorDocument
                -ErrorLog
                -ErrorLogFormat
                -Example
                -ExpiresActive
                -ExpiresByType
                -ExpiresDefault
                -ExtendedStatus
                -ExtFilterDefine
                -ExtFilterOptions
                -FallbackResource
                -FileETag
                -FilterChain
                -FilterDeclare
                -FilterProtocol
                -FilterProvider
                -FilterTrace
                -ForceLanguagePriority
                -ForceType
                -ForensicLog
                -GprofDir
                -GracefulShutdownTimeout
                -Group
                -Header
                -HeaderName
                -HeartbeatAddress
                -HeartbeatListen
                -HeartbeatMaxServers
                -HeartbeatStorage
                -HeartbeatStorage
                -HostnameLookups
                -IdentityCheck
                -IdentityCheckTimeout
                -ImapBase
                -ImapDefault
                -ImapMenu
                -Include
                -IncludeOptional
                -IndexHeadInsert
                -IndexIgnore
                -IndexIgnoreReset
                -IndexOptions
                -IndexOrderDefault
                -IndexStyleSheet
                -InputSed
                -ISAPIAppendLogToErrors
                -ISAPIAppendLogToQuery
                -ISAPICacheFile
                -ISAPIFakeAsync
                -ISAPILogNotSupported
                -ISAPIReadAheadBuffer
                -KeepAlive
                -KeepAliveTimeout
                -KeptBodySize
                -LanguagePriority
                -LDAPCacheEntries
                -LDAPCacheTTL
                -LDAPConnectionPoolTTL
                -LDAPConnectionTimeout
                -LDAPLibraryDebug
                -LDAPOpCacheEntries
                -LDAPOpCacheTTL
                -LDAPReferralHopLimit
                -LDAPReferrals
                -LDAPRetries
                -LDAPRetryDelay
                -LDAPSharedCacheFile
                -LDAPSharedCacheSize
                -LDAPTimeout
                -LDAPTrustedClientCert
                -LDAPTrustedGlobalCert
                -LDAPTrustedMode
                -LDAPVerifyServerCert
                -LimitInternalRecursion
                -LimitRequestBody
                -LimitRequestFields
                -LimitRequestFieldSize
                -LimitRequestLine
                -LimitXMLRequestBody
                -Listen
                -ListenBackLog
                -LoadFile
                -LoadModule
                -LogFormat
                -LogLevel
                -LogMessage
                -LuaAuthzProvider
                -LuaCodeCache
                -LuaHookAccessChecker
                -LuaHookAuthChecker
                -LuaHookCheckUserID
                -LuaHookFixups
                -LuaHookInsertFilter
                -LuaHookLog
                -LuaHookMapToStorage
                -LuaHookTranslateName
                -LuaHookTypeChecker
                -LuaInherit
                -LuaInputFilter
                -LuaMapHandler
                -LuaOutputFilter
                -LuaPackageCPath
                -LuaPackagePath
                -LuaQuickHandler
                -LuaRoot
                -LuaScope
                -MaxConnectionsPerChild
                -MaxKeepAliveRequests
                -MaxMemFree
                -MaxRangeOverlaps
                -MaxRangeReversals
                -MaxRanges
                -MaxRequestWorkers
                -MaxSpareServers
                -MaxSpareThreads
                -MaxThreads
                -MergeTrailers
                -MetaDir
                -MetaFiles
                -MetaSuffix
                -MimeMagicFile
                -MinSpareServers
                -MinSpareThreads
                -MMapFile
                -ModemStandard
                -ModMimeUsePathInfo
                -MultiviewsMatch
                -Mutex
                -NameVirtualHost
                -NoProxy
                -NWSSLTrustedCerts
                -NWSSLUpgradeable
                -Options
                -Order
                -OutputSed
                -PassEnv
                -PidFile
                -PrivilegesMode
                -Protocol
                -ProtocolEcho
                -ProxyAddHeaders
                -ProxyBadHeader
                -ProxyBlock
                -ProxyDomain
                -ProxyErrorOverride
                -ProxyExpressDBMFile
                -ProxyExpressDBMType
                -ProxyExpressEnable
                -ProxyFtpDirCharset
                -ProxyFtpEscapeWildcards
                -ProxyFtpListOnWildcard
                -ProxyHTMLBufSize
                -ProxyHTMLCharsetOut
                -ProxyHTMLDocType
                -ProxyHTMLEnable
                -ProxyHTMLEvents
                -ProxyHTMLExtended
                -ProxyHTMLFixups
                -ProxyHTMLInterp
                -ProxyHTMLLinks
                -ProxyHTMLMeta
                -ProxyHTMLStripComments
                -ProxyHTMLURLMap
                -ProxyIOBufferSize
                -ProxyMaxForwards
                -ProxyPass
                -ProxyPassInherit
                -ProxyPassInterpolateEnv
                -ProxyPassMatch
                -ProxyPassReverse
                -ProxyPassReverseCookieDomain
                -ProxyPassReverseCookiePath
                -ProxyPreserveHost
                -ProxyReceiveBufferSize
                -ProxyRemote
                -ProxyRemoteMatch
                -ProxyRequests
                -ProxySCGIInternalRedirect
                -ProxySCGISendfile
                -ProxySet
                -ProxySourceAddress
                -ProxyStatus
                -ProxyTimeout
                -ProxyVia
                -ReadmeName
                -ReceiveBufferSize
                -Redirect
                -RedirectMatch
                -RedirectPermanent
                -RedirectTemp
                -ReflectorHeader
                -RemoteIPHeader
                -RemoteIPInternalProxy
                -RemoteIPInternalProxyList
                -RemoteIPProxiesHeader
                -RemoteIPTrustedProxy
                -RemoteIPTrustedProxyList
                -RemoveCharset
                -RemoveEncoding
                -RemoveHandler
                -RemoveInputFilter
                -RemoveLanguage
                -RemoveOutputFilter
                -RemoveType
                -RequestHeader
                -RequestReadTimeout
                -Require
                -RewriteBase
                -RewriteCond
                -RewriteEngine
                -RewriteMap
                -RewriteOptions
                -RewriteRule
                -RLimitCPU
                -RLimitMEM
                -RLimitNPROC
                -Satisfy
                -ScoreBoardFile
                -Script
                -ScriptAlias
                -ScriptAliasMatch
                -ScriptInterpreterSource
                -ScriptLog
                -ScriptLogBuffer
                -ScriptLogLength
                -ScriptSock
                -SecureListen
                -SeeRequestTail
                -SendBufferSize
                -ServerAdmin
                -ServerAlias
                -ServerLimit
                -ServerName
                -ServerPath
                -ServerRoot
                -ServerSignature
                -ServerTokens
                -Session
                -SessionCookieName
                -SessionCookieName2
                -SessionCookieRemove
                -SessionCryptoCipher
                -SessionCryptoDriver
                -SessionCryptoPassphrase
                -SessionCryptoPassphraseFile
                -SessionDBDCookieName
                -SessionDBDCookieName2
                -SessionDBDCookieRemove
                -SessionDBDDeleteLabel
                -SessionDBDInsertLabel
                -SessionDBDPerUser
                -SessionDBDSelectLabel
                -SessionDBDUpdateLabel
                -SessionEnv
                -SessionExclude
                -SessionHeader
                -SessionInclude
                -SessionMaxAge
                -SetEnv
                -SetEnvIf
                -SetEnvIfExpr
                -SetEnvIfNoCase
                -SetHandler
                -SetInputFilter
                -SetOutputFilter
                -SSIEndTag
                -SSIErrorMsg
                -SSIETag
                -SSILastModified
                -SSILegacyExprParser
                -SSIStartTag
                -SSITimeFormat
                -SSIUndefinedEcho
                -SSLCACertificateFile
                -SSLCACertificatePath
                -SSLCADNRequestFile
                -SSLCADNRequestPath
                -SSLCARevocationCheck
                -SSLCARevocationFile
                -SSLCARevocationPath
                -SSLCertificateChainFile
                -SSLCertificateFile
                -SSLCertificateKeyFile
                -SSLCipherSuite
                -SSLCompression
                -SSLCryptoDevice
                -SSLEngine
                -SSLFIPS
                -SSLHonorCipherOrder
                -SSLInsecureRenegotiation
                -SSLOCSPDefaultResponder
                -SSLOCSPEnable
                -SSLOCSPOverrideResponder
                -SSLOCSPResponderTimeout
                -SSLOCSPResponseMaxAge
                -SSLOCSPResponseTimeSkew
                -SSLOCSPUseRequestNonce
                -SSLOpenSSLConfCmd
                -SSLOptions
                -SSLPassPhraseDialog
                -SSLProtocol
                -SSLProxyCACertificateFile
                -SSLProxyCACertificatePath
                -SSLProxyCARevocationCheck
                -SSLProxyCARevocationFile
                -SSLProxyCARevocationPath
                -SSLProxyCheckPeerCN
                -SSLProxyCheckPeerExpire
                -SSLProxyCheckPeerName
                -SSLProxyCipherSuite
                -SSLProxyEngine
                -SSLProxyMachineCertificateChainFile
                -SSLProxyMachineCertificateFile
                -SSLProxyMachineCertificatePath
                -SSLProxyProtocol
                -SSLProxyVerify
                -SSLProxyVerifyDepth
                -SSLRandomSeed
                -SSLRenegBufferSize
                -SSLRequire
                -SSLRequireSSL
                -SSLSessionCache
                -SSLSessionCacheTimeout
                -SSLSessionTicketKeyFile
                -SSLSRPUnknownUserSeed
                -SSLSRPVerifierFile
                -SSLStaplingCache
                -SSLStaplingErrorCacheTimeout
                -SSLStaplingFakeTryLater
                -SSLStaplingForceURL
                -SSLStaplingResponderTimeout
                -SSLStaplingResponseMaxAge
                -SSLStaplingResponseTimeSkew
                -SSLStaplingReturnResponderErrors
                -SSLStaplingStandardCacheTimeout
                -SSLStrictSNIVHostCheck
                -SSLUserName
                -SSLUseStapling
                -SSLVerifyClient
                -SSLVerifyDepth
                -StartServers
                -StartThreads
                -Substitute
                -Suexec
                -SuexecUserGroup
                -ThreadLimit
                -ThreadsPerChild
                -ThreadStackSize
                -TimeOut
                -TraceEnable
                -TransferLog
                -TypesConfig
                -UnDefine
                -UndefMacro
                -UnsetEnv
                -Use
                -UseCanonicalName
                -UseCanonicalPhysicalPort
                -User
                -UserDir
                -VHostCGIMode
                -VHostCGIPrivs
                -VHostGroup
                -VHostPrivs
                -VHostSecure
                -VHostUser
                -VirtualDocumentRoot
                -VirtualDocumentRootIP
                -VirtualScriptAlias
                -VirtualScriptAliasIP
                -WatchdogInterval
                -XBitHack
                -xml2EncAlias
                -xml2EncDefault
                -xml2StartParse
                -
                -----------------------------------------------------
                -
                -[
                -	["directive-inline", "AcceptFilter"],
                -	["directive-inline", "AcceptPathInfo"],
                -	["directive-inline", "AccessFileName"],
                -	["directive-inline", "Action"],
                -	["directive-inline", "AddAlt"],
                -	["directive-inline", "AddAltByEncoding"],
                -	["directive-inline", "AddAltByType"],
                -	["directive-inline", "AddCharset"],
                -	["directive-inline", "AddDefaultCharset"],
                -	["directive-inline", "AddDescription"],
                -	["directive-inline", "AddEncoding"],
                -	["directive-inline", "AddHandler"],
                -	["directive-inline", "AddIcon"],
                -	["directive-inline", "AddIconByEncoding"],
                -	["directive-inline", "AddIconByType"],
                -	["directive-inline", "AddInputFilter"],
                -	["directive-inline", "AddLanguage"],
                -	["directive-inline", "AddModuleInfo"],
                -	["directive-inline", "AddOutputFilter"],
                -	["directive-inline", "AddOutputFilterByType"],
                -	["directive-inline", "AddType"],
                -	["directive-inline", "Alias"],
                -	["directive-inline", "AliasMatch"],
                -	["directive-inline", "Allow"],
                -	["directive-inline", "AllowCONNECT"],
                -	["directive-inline", "AllowEncodedSlashes"],
                -	["directive-inline", "AllowMethods"],
                -	["directive-inline", "AllowOverride"],
                -	["directive-inline", "AllowOverrideList"],
                -	["directive-inline", "Anonymous"],
                -	["directive-inline", "Anonymous_LogEmail"],
                -	["directive-inline", "Anonymous_MustGiveEmail"],
                -	["directive-inline", "Anonymous_NoUserID"],
                -	["directive-inline", "Anonymous_VerifyEmail"],
                -	["directive-inline", "AsyncRequestWorkerFactor"],
                -	["directive-inline", "AuthBasicAuthoritative"],
                -	["directive-inline", "AuthBasicFake"],
                -	["directive-inline", "AuthBasicProvider"],
                -	["directive-inline", "AuthBasicUseDigestAlgorithm"],
                -	["directive-inline", "AuthDBDUserPWQuery"],
                -	["directive-inline", "AuthDBDUserRealmQuery"],
                -	["directive-inline", "AuthDBMGroupFile"],
                -	["directive-inline", "AuthDBMType"],
                -	["directive-inline", "AuthDBMUserFile"],
                -	["directive-inline", "AuthDigestAlgorithm"],
                -	["directive-inline", "AuthDigestDomain"],
                -	["directive-inline", "AuthDigestNonceLifetime"],
                -	["directive-inline", "AuthDigestProvider"],
                -	["directive-inline", "AuthDigestQop"],
                -	["directive-inline", "AuthDigestShmemSize"],
                -	["directive-inline", "AuthFormAuthoritative"],
                -	["directive-inline", "AuthFormBody"],
                -	["directive-inline", "AuthFormDisableNoStore"],
                -	["directive-inline", "AuthFormFakeBasicAuth"],
                -	["directive-inline", "AuthFormLocation"],
                -	["directive-inline", "AuthFormLoginRequiredLocation"],
                -	["directive-inline", "AuthFormLoginSuccessLocation"],
                -	["directive-inline", "AuthFormLogoutLocation"],
                -	["directive-inline", "AuthFormMethod"],
                -	["directive-inline", "AuthFormMimetype"],
                -	["directive-inline", "AuthFormPassword"],
                -	["directive-inline", "AuthFormProvider"],
                -	["directive-inline", "AuthFormSitePassphrase"],
                -	["directive-inline", "AuthFormSize"],
                -	["directive-inline", "AuthFormUsername"],
                -	["directive-inline", "AuthGroupFile"],
                -	["directive-inline", "AuthLDAPAuthorizePrefix"],
                -	["directive-inline", "AuthLDAPBindAuthoritative"],
                -	["directive-inline", "AuthLDAPBindDN"],
                -	["directive-inline", "AuthLDAPBindPassword"],
                -	["directive-inline", "AuthLDAPCharsetConfig"],
                -	["directive-inline", "AuthLDAPCompareAsUser"],
                -	["directive-inline", "AuthLDAPCompareDNOnServer"],
                -	["directive-inline", "AuthLDAPDereferenceAliases"],
                -	["directive-inline", "AuthLDAPGroupAttribute"],
                -	["directive-inline", "AuthLDAPGroupAttributeIsDN"],
                -	["directive-inline", "AuthLDAPInitialBindAsUser"],
                -	["directive-inline", "AuthLDAPInitialBindPattern"],
                -	["directive-inline", "AuthLDAPMaxSubGroupDepth"],
                -	["directive-inline", "AuthLDAPRemoteUserAttribute"],
                -	["directive-inline", "AuthLDAPRemoteUserIsDN"],
                -	["directive-inline", "AuthLDAPSearchAsUser"],
                -	["directive-inline", "AuthLDAPSubGroupAttribute"],
                -	["directive-inline", "AuthLDAPSubGroupClass"],
                -	["directive-inline", "AuthLDAPUrl"],
                -	["directive-inline", "AuthMerging"],
                -	["directive-inline", "AuthName"],
                -	["directive-inline", "AuthnCacheContext"],
                -	["directive-inline", "AuthnCacheEnable"],
                -	["directive-inline", "AuthnCacheProvideFor"],
                -	["directive-inline", "AuthnCacheSOCache"],
                -	["directive-inline", "AuthnCacheTimeout"],
                -	["directive-inline", "AuthnzFcgiCheckAuthnProvider"],
                -	["directive-inline", "AuthnzFcgiDefineProvider"],
                -	["directive-inline", "AuthType"],
                -	["directive-inline", "AuthUserFile"],
                -	["directive-inline", "AuthzDBDLoginToReferer"],
                -	["directive-inline", "AuthzDBDQuery"],
                -	["directive-inline", "AuthzDBDRedirectQuery"],
                -	["directive-inline", "AuthzDBMType"],
                -	["directive-inline", "AuthzSendForbiddenOnFailure"],
                -	["directive-inline", "BalancerGrowth"],
                -	["directive-inline", "BalancerInherit"],
                -	["directive-inline", "BalancerMember"],
                -	["directive-inline", "BalancerPersist"],
                -	["directive-inline", "BrowserMatch"],
                -	["directive-inline", "BrowserMatchNoCase"],
                -	["directive-inline", "BufferedLogs"],
                -	["directive-inline", "BufferSize"],
                -	["directive-inline", "CacheDefaultExpire"],
                -	["directive-inline", "CacheDetailHeader"],
                -	["directive-inline", "CacheDirLength"],
                -	["directive-inline", "CacheDirLevels"],
                -	["directive-inline", "CacheDisable"],
                -	["directive-inline", "CacheEnable"],
                -	["directive-inline", "CacheFile"],
                -	["directive-inline", "CacheHeader"],
                -	["directive-inline", "CacheIgnoreCacheControl"],
                -	["directive-inline", "CacheIgnoreHeaders"],
                -	["directive-inline", "CacheIgnoreNoLastMod"],
                -	["directive-inline", "CacheIgnoreQueryString"],
                -	["directive-inline", "CacheIgnoreURLSessionIdentifiers"],
                -	["directive-inline", "CacheKeyBaseURL"],
                -	["directive-inline", "CacheLastModifiedFactor"],
                -	["directive-inline", "CacheLock"],
                -	["directive-inline", "CacheLockMaxAge"],
                -	["directive-inline", "CacheLockPath"],
                -	["directive-inline", "CacheMaxExpire"],
                -	["directive-inline", "CacheMaxFileSize"],
                -	["directive-inline", "CacheMinExpire"],
                -	["directive-inline", "CacheMinFileSize"],
                -	["directive-inline", "CacheNegotiatedDocs"],
                -	["directive-inline", "CacheQuickHandler"],
                -	["directive-inline", "CacheReadSize"],
                -	["directive-inline", "CacheReadTime"],
                -	["directive-inline", "CacheRoot"],
                -	["directive-inline", "CacheSocache"],
                -	["directive-inline", "CacheSocacheMaxSize"],
                -	["directive-inline", "CacheSocacheMaxTime"],
                -	["directive-inline", "CacheSocacheMinTime"],
                -	["directive-inline", "CacheSocacheReadSize"],
                -	["directive-inline", "CacheSocacheReadTime"],
                -	["directive-inline", "CacheStaleOnError"],
                -	["directive-inline", "CacheStoreExpired"],
                -	["directive-inline", "CacheStoreNoStore"],
                -	["directive-inline", "CacheStorePrivate"],
                -	["directive-inline", "CGIDScriptTimeout"],
                -	["directive-inline", "CGIMapExtension"],
                -	["directive-inline", "CharsetDefault"],
                -	["directive-inline", "CharsetOptions"],
                -	["directive-inline", "CharsetSourceEnc"],
                -	["directive-inline", "CheckCaseOnly"],
                -	["directive-inline", "CheckSpelling"],
                -	["directive-inline", "ChrootDir"],
                -	["directive-inline", "ContentDigest"],
                -	["directive-inline", "CookieDomain"],
                -	["directive-inline", "CookieExpires"],
                -	["directive-inline", "CookieName"],
                -	["directive-inline", "CookieStyle"],
                -	["directive-inline", "CookieTracking"],
                -	["directive-inline", "CoreDumpDirectory"],
                -	["directive-inline", "CustomLog"],
                -	["directive-inline", "Dav"],
                -	["directive-inline", "DavDepthInfinity"],
                -	["directive-inline", "DavGenericLockDB"],
                -	["directive-inline", "DavLockDB"],
                -	["directive-inline", "DavMinTimeout"],
                -	["directive-inline", "DBDExptime"],
                -	["directive-inline", "DBDInitSQL"],
                -	["directive-inline", "DBDKeep"],
                -	["directive-inline", "DBDMax"],
                -	["directive-inline", "DBDMin"],
                -	["directive-inline", "DBDParams"],
                -	["directive-inline", "DBDPersist"],
                -	["directive-inline", "DBDPrepareSQL"],
                -	["directive-inline", "DBDriver"],
                -	["directive-inline", "DefaultIcon"],
                -	["directive-inline", "DefaultLanguage"],
                -	["directive-inline", "DefaultRuntimeDir"],
                -	["directive-inline", "DefaultType"],
                -	["directive-inline", "Define"],
                -	["directive-inline", "DeflateBufferSize"],
                -	["directive-inline", "DeflateCompressionLevel"],
                -	["directive-inline", "DeflateFilterNote"],
                -	["directive-inline", "DeflateInflateLimitRequestBody"],
                -	["directive-inline", "DeflateInflateRatioBurst"],
                -	["directive-inline", "DeflateInflateRatioLimit"],
                -	["directive-inline", "DeflateMemLevel"],
                -	["directive-inline", "DeflateWindowSize"],
                -	["directive-inline", "Deny"],
                -	["directive-inline", "DirectoryCheckHandler"],
                -	["directive-inline", "DirectoryIndex"],
                -	["directive-inline", "DirectoryIndexRedirect"],
                -	["directive-inline", "DirectorySlash"],
                -	["directive-inline", "DocumentRoot"],
                -	["directive-inline", "DTracePrivileges"],
                -	["directive-inline", "DumpIOInput"],
                -	["directive-inline", "DumpIOOutput"],
                -	["directive-inline", "EnableExceptionHook"],
                -	["directive-inline", "EnableMMAP"],
                -	["directive-inline", "EnableSendfile"],
                -	["directive-inline", "Error"],
                -	["directive-inline", "ErrorDocument"],
                -	["directive-inline", "ErrorLog"],
                -	["directive-inline", "ErrorLogFormat"],
                -	["directive-inline", "Example"],
                -	["directive-inline", "ExpiresActive"],
                -	["directive-inline", "ExpiresByType"],
                -	["directive-inline", "ExpiresDefault"],
                -	["directive-inline", "ExtendedStatus"],
                -	["directive-inline", "ExtFilterDefine"],
                -	["directive-inline", "ExtFilterOptions"],
                -	["directive-inline", "FallbackResource"],
                -	["directive-inline", "FileETag"],
                -	["directive-inline", "FilterChain"],
                -	["directive-inline", "FilterDeclare"],
                -	["directive-inline", "FilterProtocol"],
                -	["directive-inline", "FilterProvider"],
                -	["directive-inline", "FilterTrace"],
                -	["directive-inline", "ForceLanguagePriority"],
                -	["directive-inline", "ForceType"],
                -	["directive-inline", "ForensicLog"],
                -	["directive-inline", "GprofDir"],
                -	["directive-inline", "GracefulShutdownTimeout"],
                -	["directive-inline", "Group"],
                -	["directive-inline", "Header"],
                -	["directive-inline", "HeaderName"],
                -	["directive-inline", "HeartbeatAddress"],
                -	["directive-inline", "HeartbeatListen"],
                -	["directive-inline", "HeartbeatMaxServers"],
                -	["directive-inline", "HeartbeatStorage"],
                -	["directive-inline", "HeartbeatStorage"],
                -	["directive-inline", "HostnameLookups"],
                -	["directive-inline", "IdentityCheck"],
                -	["directive-inline", "IdentityCheckTimeout"],
                -	["directive-inline", "ImapBase"],
                -	["directive-inline", "ImapDefault"],
                -	["directive-inline", "ImapMenu"],
                -	["directive-inline", "Include"],
                -	["directive-inline", "IncludeOptional"],
                -	["directive-inline", "IndexHeadInsert"],
                -	["directive-inline", "IndexIgnore"],
                -	["directive-inline", "IndexIgnoreReset"],
                -	["directive-inline", "IndexOptions"],
                -	["directive-inline", "IndexOrderDefault"],
                -	["directive-inline", "IndexStyleSheet"],
                -	["directive-inline", "InputSed"],
                -	["directive-inline", "ISAPIAppendLogToErrors"],
                -	["directive-inline", "ISAPIAppendLogToQuery"],
                -	["directive-inline", "ISAPICacheFile"],
                -	["directive-inline", "ISAPIFakeAsync"],
                -	["directive-inline", "ISAPILogNotSupported"],
                -	["directive-inline", "ISAPIReadAheadBuffer"],
                -	["directive-inline", "KeepAlive"],
                -	["directive-inline", "KeepAliveTimeout"],
                -	["directive-inline", "KeptBodySize"],
                -	["directive-inline", "LanguagePriority"],
                -	["directive-inline", "LDAPCacheEntries"],
                -	["directive-inline", "LDAPCacheTTL"],
                -	["directive-inline", "LDAPConnectionPoolTTL"],
                -	["directive-inline", "LDAPConnectionTimeout"],
                -	["directive-inline", "LDAPLibraryDebug"],
                -	["directive-inline", "LDAPOpCacheEntries"],
                -	["directive-inline", "LDAPOpCacheTTL"],
                -	["directive-inline", "LDAPReferralHopLimit"],
                -	["directive-inline", "LDAPReferrals"],
                -	["directive-inline", "LDAPRetries"],
                -	["directive-inline", "LDAPRetryDelay"],
                -	["directive-inline", "LDAPSharedCacheFile"],
                -	["directive-inline", "LDAPSharedCacheSize"],
                -	["directive-inline", "LDAPTimeout"],
                -	["directive-inline", "LDAPTrustedClientCert"],
                -	["directive-inline", "LDAPTrustedGlobalCert"],
                -	["directive-inline", "LDAPTrustedMode"],
                -	["directive-inline", "LDAPVerifyServerCert"],
                -	["directive-inline", "LimitInternalRecursion"],
                -	["directive-inline", "LimitRequestBody"],
                -	["directive-inline", "LimitRequestFields"],
                -	["directive-inline", "LimitRequestFieldSize"],
                -	["directive-inline", "LimitRequestLine"],
                -	["directive-inline", "LimitXMLRequestBody"],
                -	["directive-inline", "Listen"],
                -	["directive-inline", "ListenBackLog"],
                -	["directive-inline", "LoadFile"],
                -	["directive-inline", "LoadModule"],
                -	["directive-inline", "LogFormat"],
                -	["directive-inline", "LogLevel"],
                -	["directive-inline", "LogMessage"],
                -	["directive-inline", "LuaAuthzProvider"],
                -	["directive-inline", "LuaCodeCache"],
                -	["directive-inline", "LuaHookAccessChecker"],
                -	["directive-inline", "LuaHookAuthChecker"],
                -	["directive-inline", "LuaHookCheckUserID"],
                -	["directive-inline", "LuaHookFixups"],
                -	["directive-inline", "LuaHookInsertFilter"],
                -	["directive-inline", "LuaHookLog"],
                -	["directive-inline", "LuaHookMapToStorage"],
                -	["directive-inline", "LuaHookTranslateName"],
                -	["directive-inline", "LuaHookTypeChecker"],
                -	["directive-inline", "LuaInherit"],
                -	["directive-inline", "LuaInputFilter"],
                -	["directive-inline", "LuaMapHandler"],
                -	["directive-inline", "LuaOutputFilter"],
                -	["directive-inline", "LuaPackageCPath"],
                -	["directive-inline", "LuaPackagePath"],
                -	["directive-inline", "LuaQuickHandler"],
                -	["directive-inline", "LuaRoot"],
                -	["directive-inline", "LuaScope"],
                -	["directive-inline", "MaxConnectionsPerChild"],
                -	["directive-inline", "MaxKeepAliveRequests"],
                -	["directive-inline", "MaxMemFree"],
                -	["directive-inline", "MaxRangeOverlaps"],
                -	["directive-inline", "MaxRangeReversals"],
                -	["directive-inline", "MaxRanges"],
                -	["directive-inline", "MaxRequestWorkers"],
                -	["directive-inline", "MaxSpareServers"],
                -	["directive-inline", "MaxSpareThreads"],
                -	["directive-inline", "MaxThreads"],
                -	["directive-inline", "MergeTrailers"],
                -	["directive-inline", "MetaDir"],
                -	["directive-inline", "MetaFiles"],
                -	["directive-inline", "MetaSuffix"],
                -	["directive-inline", "MimeMagicFile"],
                -	["directive-inline", "MinSpareServers"],
                -	["directive-inline", "MinSpareThreads"],
                -	["directive-inline", "MMapFile"],
                -	["directive-inline", "ModemStandard"],
                -	["directive-inline", "ModMimeUsePathInfo"],
                -	["directive-inline", "MultiviewsMatch"],
                -	["directive-inline", "Mutex"],
                -	["directive-inline", "NameVirtualHost"],
                -	["directive-inline", "NoProxy"],
                -	["directive-inline", "NWSSLTrustedCerts"],
                -	["directive-inline", "NWSSLUpgradeable"],
                -	["directive-inline", "Options"],
                -	["directive-inline", "Order"],
                -	["directive-inline", "OutputSed"],
                -	["directive-inline", "PassEnv"],
                -	["directive-inline", "PidFile"],
                -	["directive-inline", "PrivilegesMode"],
                -	["directive-inline", "Protocol"],
                -	["directive-inline", "ProtocolEcho"],
                -	["directive-inline", "ProxyAddHeaders"],
                -	["directive-inline", "ProxyBadHeader"],
                -	["directive-inline", "ProxyBlock"],
                -	["directive-inline", "ProxyDomain"],
                -	["directive-inline", "ProxyErrorOverride"],
                -	["directive-inline", "ProxyExpressDBMFile"],
                -	["directive-inline", "ProxyExpressDBMType"],
                -	["directive-inline", "ProxyExpressEnable"],
                -	["directive-inline", "ProxyFtpDirCharset"],
                -	["directive-inline", "ProxyFtpEscapeWildcards"],
                -	["directive-inline", "ProxyFtpListOnWildcard"],
                -	["directive-inline", "ProxyHTMLBufSize"],
                -	["directive-inline", "ProxyHTMLCharsetOut"],
                -	["directive-inline", "ProxyHTMLDocType"],
                -	["directive-inline", "ProxyHTMLEnable"],
                -	["directive-inline", "ProxyHTMLEvents"],
                -	["directive-inline", "ProxyHTMLExtended"],
                -	["directive-inline", "ProxyHTMLFixups"],
                -	["directive-inline", "ProxyHTMLInterp"],
                -	["directive-inline", "ProxyHTMLLinks"],
                -	["directive-inline", "ProxyHTMLMeta"],
                -	["directive-inline", "ProxyHTMLStripComments"],
                -	["directive-inline", "ProxyHTMLURLMap"],
                -	["directive-inline", "ProxyIOBufferSize"],
                -	["directive-inline", "ProxyMaxForwards"],
                -	["directive-inline", "ProxyPass"],
                -	["directive-inline", "ProxyPassInherit"],
                -	["directive-inline", "ProxyPassInterpolateEnv"],
                -	["directive-inline", "ProxyPassMatch"],
                -	["directive-inline", "ProxyPassReverse"],
                -	["directive-inline", "ProxyPassReverseCookieDomain"],
                -	["directive-inline", "ProxyPassReverseCookiePath"],
                -	["directive-inline", "ProxyPreserveHost"],
                -	["directive-inline", "ProxyReceiveBufferSize"],
                -	["directive-inline", "ProxyRemote"],
                -	["directive-inline", "ProxyRemoteMatch"],
                -	["directive-inline", "ProxyRequests"],
                -	["directive-inline", "ProxySCGIInternalRedirect"],
                -	["directive-inline", "ProxySCGISendfile"],
                -	["directive-inline", "ProxySet"],
                -	["directive-inline", "ProxySourceAddress"],
                -	["directive-inline", "ProxyStatus"],
                -	["directive-inline", "ProxyTimeout"],
                -	["directive-inline", "ProxyVia"],
                -	["directive-inline", "ReadmeName"],
                -	["directive-inline", "ReceiveBufferSize"],
                -	["directive-inline", "Redirect"],
                -	["directive-inline", "RedirectMatch"],
                -	["directive-inline", "RedirectPermanent"],
                -	["directive-inline", "RedirectTemp"],
                -	["directive-inline", "ReflectorHeader"],
                -	["directive-inline", "RemoteIPHeader"],
                -	["directive-inline", "RemoteIPInternalProxy"],
                -	["directive-inline", "RemoteIPInternalProxyList"],
                -	["directive-inline", "RemoteIPProxiesHeader"],
                -	["directive-inline", "RemoteIPTrustedProxy"],
                -	["directive-inline", "RemoteIPTrustedProxyList"],
                -	["directive-inline", "RemoveCharset"],
                -	["directive-inline", "RemoveEncoding"],
                -	["directive-inline", "RemoveHandler"],
                -	["directive-inline", "RemoveInputFilter"],
                -	["directive-inline", "RemoveLanguage"],
                -	["directive-inline", "RemoveOutputFilter"],
                -	["directive-inline", "RemoveType"],
                -	["directive-inline", "RequestHeader"],
                -	["directive-inline", "RequestReadTimeout"],
                -	["directive-inline", "Require"],
                -	["directive-inline", "RewriteBase"],
                -	["directive-inline", "RewriteCond"],
                -	["directive-inline", "RewriteEngine"],
                -	["directive-inline", "RewriteMap"],
                -	["directive-inline", "RewriteOptions"],
                -	["directive-inline", "RewriteRule"],
                -	["directive-inline", "RLimitCPU"],
                -	["directive-inline", "RLimitMEM"],
                -	["directive-inline", "RLimitNPROC"],
                -	["directive-inline", "Satisfy"],
                -	["directive-inline", "ScoreBoardFile"],
                -	["directive-inline", "Script"],
                -	["directive-inline", "ScriptAlias"],
                -	["directive-inline", "ScriptAliasMatch"],
                -	["directive-inline", "ScriptInterpreterSource"],
                -	["directive-inline", "ScriptLog"],
                -	["directive-inline", "ScriptLogBuffer"],
                -	["directive-inline", "ScriptLogLength"],
                -	["directive-inline", "ScriptSock"],
                -	["directive-inline", "SecureListen"],
                -	["directive-inline", "SeeRequestTail"],
                -	["directive-inline", "SendBufferSize"],
                -	["directive-inline", "ServerAdmin"],
                -	["directive-inline", "ServerAlias"],
                -	["directive-inline", "ServerLimit"],
                -	["directive-inline", "ServerName"],
                -	["directive-inline", "ServerPath"],
                -	["directive-inline", "ServerRoot"],
                -	["directive-inline", "ServerSignature"],
                -	["directive-inline", "ServerTokens"],
                -	["directive-inline", "Session"],
                -	["directive-inline", "SessionCookieName"],
                -	["directive-inline", "SessionCookieName2"],
                -	["directive-inline", "SessionCookieRemove"],
                -	["directive-inline", "SessionCryptoCipher"],
                -	["directive-inline", "SessionCryptoDriver"],
                -	["directive-inline", "SessionCryptoPassphrase"],
                -	["directive-inline", "SessionCryptoPassphraseFile"],
                -	["directive-inline", "SessionDBDCookieName"],
                -	["directive-inline", "SessionDBDCookieName2"],
                -	["directive-inline", "SessionDBDCookieRemove"],
                -	["directive-inline", "SessionDBDDeleteLabel"],
                -	["directive-inline", "SessionDBDInsertLabel"],
                -	["directive-inline", "SessionDBDPerUser"],
                -	["directive-inline", "SessionDBDSelectLabel"],
                -	["directive-inline", "SessionDBDUpdateLabel"],
                -	["directive-inline", "SessionEnv"],
                -	["directive-inline", "SessionExclude"],
                -	["directive-inline", "SessionHeader"],
                -	["directive-inline", "SessionInclude"],
                -	["directive-inline", "SessionMaxAge"],
                -	["directive-inline", "SetEnv"],
                -	["directive-inline", "SetEnvIf"],
                -	["directive-inline", "SetEnvIfExpr"],
                -	["directive-inline", "SetEnvIfNoCase"],
                -	["directive-inline", "SetHandler"],
                -	["directive-inline", "SetInputFilter"],
                -	["directive-inline", "SetOutputFilter"],
                -	["directive-inline", "SSIEndTag"],
                -	["directive-inline", "SSIErrorMsg"],
                -	["directive-inline", "SSIETag"],
                -	["directive-inline", "SSILastModified"],
                -	["directive-inline", "SSILegacyExprParser"],
                -	["directive-inline", "SSIStartTag"],
                -	["directive-inline", "SSITimeFormat"],
                -	["directive-inline", "SSIUndefinedEcho"],
                -	["directive-inline", "SSLCACertificateFile"],
                -	["directive-inline", "SSLCACertificatePath"],
                -	["directive-inline", "SSLCADNRequestFile"],
                -	["directive-inline", "SSLCADNRequestPath"],
                -	["directive-inline", "SSLCARevocationCheck"],
                -	["directive-inline", "SSLCARevocationFile"],
                -	["directive-inline", "SSLCARevocationPath"],
                -	["directive-inline", "SSLCertificateChainFile"],
                -	["directive-inline", "SSLCertificateFile"],
                -	["directive-inline", "SSLCertificateKeyFile"],
                -	["directive-inline", "SSLCipherSuite"],
                -	["directive-inline", "SSLCompression"],
                -	["directive-inline", "SSLCryptoDevice"],
                -	["directive-inline", "SSLEngine"],
                -	["directive-inline", "SSLFIPS"],
                -	["directive-inline", "SSLHonorCipherOrder"],
                -	["directive-inline", "SSLInsecureRenegotiation"],
                -	["directive-inline", "SSLOCSPDefaultResponder"],
                -	["directive-inline", "SSLOCSPEnable"],
                -	["directive-inline", "SSLOCSPOverrideResponder"],
                -	["directive-inline", "SSLOCSPResponderTimeout"],
                -	["directive-inline", "SSLOCSPResponseMaxAge"],
                -	["directive-inline", "SSLOCSPResponseTimeSkew"],
                -	["directive-inline", "SSLOCSPUseRequestNonce"],
                -	["directive-inline", "SSLOpenSSLConfCmd"],
                -	["directive-inline", "SSLOptions"],
                -	["directive-inline", "SSLPassPhraseDialog"],
                -	["directive-inline", "SSLProtocol"],
                -	["directive-inline", "SSLProxyCACertificateFile"],
                -	["directive-inline", "SSLProxyCACertificatePath"],
                -	["directive-inline", "SSLProxyCARevocationCheck"],
                -	["directive-inline", "SSLProxyCARevocationFile"],
                -	["directive-inline", "SSLProxyCARevocationPath"],
                -	["directive-inline", "SSLProxyCheckPeerCN"],
                -	["directive-inline", "SSLProxyCheckPeerExpire"],
                -	["directive-inline", "SSLProxyCheckPeerName"],
                -	["directive-inline", "SSLProxyCipherSuite"],
                -	["directive-inline", "SSLProxyEngine"],
                -	["directive-inline", "SSLProxyMachineCertificateChainFile"],
                -	["directive-inline", "SSLProxyMachineCertificateFile"],
                -	["directive-inline", "SSLProxyMachineCertificatePath"],
                -	["directive-inline", "SSLProxyProtocol"],
                -	["directive-inline", "SSLProxyVerify"],
                -	["directive-inline", "SSLProxyVerifyDepth"],
                -	["directive-inline", "SSLRandomSeed"],
                -	["directive-inline", "SSLRenegBufferSize"],
                -	["directive-inline", "SSLRequire"],
                -	["directive-inline", "SSLRequireSSL"],
                -	["directive-inline", "SSLSessionCache"],
                -	["directive-inline", "SSLSessionCacheTimeout"],
                -	["directive-inline", "SSLSessionTicketKeyFile"],
                -	["directive-inline", "SSLSRPUnknownUserSeed"],
                -	["directive-inline", "SSLSRPVerifierFile"],
                -	["directive-inline", "SSLStaplingCache"],
                -	["directive-inline", "SSLStaplingErrorCacheTimeout"],
                -	["directive-inline", "SSLStaplingFakeTryLater"],
                -	["directive-inline", "SSLStaplingForceURL"],
                -	["directive-inline", "SSLStaplingResponderTimeout"],
                -	["directive-inline", "SSLStaplingResponseMaxAge"],
                -	["directive-inline", "SSLStaplingResponseTimeSkew"],
                -	["directive-inline", "SSLStaplingReturnResponderErrors"],
                -	["directive-inline", "SSLStaplingStandardCacheTimeout"],
                -	["directive-inline", "SSLStrictSNIVHostCheck"],
                -	["directive-inline", "SSLUserName"],
                -	["directive-inline", "SSLUseStapling"],
                -	["directive-inline", "SSLVerifyClient"],
                -	["directive-inline", "SSLVerifyDepth"],
                -	["directive-inline", "StartServers"],
                -	["directive-inline", "StartThreads"],
                -	["directive-inline", "Substitute"],
                -	["directive-inline", "Suexec"],
                -	["directive-inline", "SuexecUserGroup"],
                -	["directive-inline", "ThreadLimit"],
                -	["directive-inline", "ThreadsPerChild"],
                -	["directive-inline", "ThreadStackSize"],
                -	["directive-inline", "TimeOut"],
                -	["directive-inline", "TraceEnable"],
                -	["directive-inline", "TransferLog"],
                -	["directive-inline", "TypesConfig"],
                -	["directive-inline", "UnDefine"],
                -	["directive-inline", "UndefMacro"],
                -	["directive-inline", "UnsetEnv"],
                -	["directive-inline", "Use"],
                -	["directive-inline", "UseCanonicalName"],
                -	["directive-inline", "UseCanonicalPhysicalPort"],
                -	["directive-inline", "User"],
                -	["directive-inline", "UserDir"],
                -	["directive-inline", "VHostCGIMode"],
                -	["directive-inline", "VHostCGIPrivs"],
                -	["directive-inline", "VHostGroup"],
                -	["directive-inline", "VHostPrivs"],
                -	["directive-inline", "VHostSecure"],
                -	["directive-inline", "VHostUser"],
                -	["directive-inline", "VirtualDocumentRoot"],
                -	["directive-inline", "VirtualDocumentRootIP"],
                -	["directive-inline", "VirtualScriptAlias"],
                -	["directive-inline", "VirtualScriptAliasIP"],
                -	["directive-inline", "WatchdogInterval"],
                -	["directive-inline", "XBitHack"],
                -	["directive-inline", "xml2EncAlias"],
                -	["directive-inline", "xml2EncDefault"],
                -	["directive-inline", "xml2StartParse"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all inline directives.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/regex_feature.test b/node_modules/prismjs/tests/languages/apacheconf/regex_feature.test
                deleted file mode 100644
                index 322e59f..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/regex_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -^(.*)$
                -^foo
                -bar$
                -
                -----------------------------------------------------
                -
                -[
                -	["regex", "^(.*)$"],
                -	["regex", "^foo"],
                -	["regex", "bar$"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for regex.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/string_feature.test b/node_modules/prismjs/tests/languages/apacheconf/string_feature.test
                deleted file mode 100644
                index d2849ca..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/string_feature.test
                +++ /dev/null
                @@ -1,24 +0,0 @@
                -"foo bar"
                -'foo bar'
                -"%{REMOTE_HOST}"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", [
                -		"\"foo bar\""
                -	]],
                -	["string", [
                -		"'foo bar'"
                -	]],
                -	["string", [
                -		"\"",
                -		["variable", "%{REMOTE_HOST}"],
                -		"\""
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                -Also checks for variables inside strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apacheconf/variable_feature.test b/node_modules/prismjs/tests/languages/apacheconf/variable_feature.test
                deleted file mode 100644
                index 025fe75..0000000
                --- a/node_modules/prismjs/tests/languages/apacheconf/variable_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -$port
                -${docroot}
                -%{REMOTE_HOST}
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "$port"],
                -	["variable", "${docroot}"],
                -	["variable", "%{REMOTE_HOST}"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/assignment_feature.test b/node_modules/prismjs/tests/languages/apl/assignment_feature.test
                deleted file mode 100644
                index b06cb39..0000000
                --- a/node_modules/prismjs/tests/languages/apl/assignment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -a←1 2 3
                -
                -----------------------------------------------------
                -
                -[
                -	"a",
                -	["assignment", "←"],
                -	["number", "1"], ["number", "2"], ["number", "3"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for assignment.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/comment_feature.test b/node_modules/prismjs/tests/languages/apl/comment_feature.test
                deleted file mode 100644
                index a308451..0000000
                --- a/node_modules/prismjs/tests/languages/apl/comment_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -⍝
                -⍝ Foobar
                -#!/usr/bin/env runapl
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "⍝"],
                -	["comment", "⍝ Foobar"],
                -	["comment", "#!/usr/bin/env runapl"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/constant_feature.test b/node_modules/prismjs/tests/languages/apl/constant_feature.test
                deleted file mode 100644
                index 9f63162..0000000
                --- a/node_modules/prismjs/tests/languages/apl/constant_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -⍬
                -⌾
                -#
                -⎕
                -⍞
                -
                -----------------------------------------------------
                -
                -[
                -	["constant", "⍬"],
                -	["constant", "⌾"],
                -	["constant", "#"],
                -	["constant", "⎕"],
                -	["constant", "⍞"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for constants.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/dfn_feature.test b/node_modules/prismjs/tests/languages/apl/dfn_feature.test
                deleted file mode 100644
                index ef4be35..0000000
                --- a/node_modules/prismjs/tests/languages/apl/dfn_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -{0=⍴⍴⍺:'hello' ⋄ ∇¨⍵}
                -
                -----------------------------------------------------
                -
                -[
                -	["dfn", "{"],
                -	["number", "0"],
                -	["function", "="],
                -	["function", "⍴"],
                -	["function", "⍴"],
                -	["dfn", "⍺"],
                -	["dfn", ":"],
                -	["string", "'hello'"],
                -	["punctuation", "⋄"],
                -	["dfn", "∇"],
                -	["monadic-operator", "¨"],
                -	["dfn", "⍵"],
                -	["dfn", "}"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for Dfns.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/dyadic-operator_feature.test b/node_modules/prismjs/tests/languages/apl/dyadic-operator_feature.test
                deleted file mode 100644
                index 8d7424c..0000000
                --- a/node_modules/prismjs/tests/languages/apl/dyadic-operator_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -. ⍣ ⍠
                -⍤ ∘ ⌸
                -
                -----------------------------------------------------
                -
                -[
                -	["dyadic-operator", "."], ["dyadic-operator", "⍣"], ["dyadic-operator", "⍠"],
                -	["dyadic-operator", "⍤"], ["dyadic-operator", "∘"], ["dyadic-operator", "⌸"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for dyadic operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/function_feature.test b/node_modules/prismjs/tests/languages/apl/function_feature.test
                deleted file mode 100644
                index 93be749..0000000
                --- a/node_modules/prismjs/tests/languages/apl/function_feature.test
                +++ /dev/null
                @@ -1,41 +0,0 @@
                -- + × ÷
                -⌈ ⌊ ∣ |
                -⍳ ⍸ ? *
                -⍟ ○ ! ⌹
                -< ≤ = >
                -≥ ≠ ≡ ≢
                -∊ ⍷ ∪ ∩
                -~ ∨ ∧ ⍱
                -⍲ ⍴ , ⍪
                -⌽ ⊖ ⍉
                -↑ ↓ ⊂ ⊃
                -⌷ ⍋ ⍒
                -⊤ ⊥ ⍕ ⍎
                -⊣ ⊢ ⍁ ⍂
                -≈ ⍯
                -↗ ¤ →
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "-"], ["function", "+"], ["function", "×"], ["function", "÷"],
                -	["function", "⌈"], ["function", "⌊"], ["function", "∣"], ["function", "|"],
                -	["function", "⍳"], ["function", "⍸"], ["function", "?"], ["function", "*"],
                -	["function", "⍟"], ["function", "○"], ["function", "!"], ["function", "⌹"],
                -	["function", "<"], ["function", "≤"], ["function", "="], ["function", ">"],
                -	["function", "≥"], ["function", "≠"], ["function", "≡"], ["function", "≢"],
                -	["function", "∊"], ["function", "⍷"], ["function", "∪"], ["function", "∩"],
                -	["function", "~"], ["function", "∨"], ["function", "∧"], ["function", "⍱"],
                -	["function", "⍲"], ["function", "⍴"], ["function", ","], ["function", "⍪"],
                -	["function", "⌽"], ["function", "⊖"], ["function", "⍉"],
                -	["function", "↑"], ["function", "↓"], ["function", "⊂"], ["function", "⊃"],
                -	["function", "⌷"], ["function", "⍋"], ["function", "⍒"],
                -	["function", "⊤"], ["function", "⊥"], ["function", "⍕"], ["function", "⍎"],
                -	["function", "⊣"], ["function", "⊢"], ["function", "⍁"], ["function", "⍂"],
                -	["function", "≈"], ["function", "⍯"],
                -	["function", "↗"], ["function", "¤"], ["function", "→"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/monadic-operator_feature.test b/node_modules/prismjs/tests/languages/apl/monadic-operator_feature.test
                deleted file mode 100644
                index 0dcc9b0..0000000
                --- a/node_modules/prismjs/tests/languages/apl/monadic-operator_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -\ / ⌿ ⍀
                -¨ ⍨ ⌶
                -& ∥
                -
                -----------------------------------------------------
                -
                -[
                -	["monadic-operator", "\\"], ["monadic-operator", "/"], ["monadic-operator", "⌿"], ["monadic-operator", "⍀"],
                -	["monadic-operator", "¨"], ["monadic-operator", "⍨"], ["monadic-operator", "⌶"],
                -	["monadic-operator", "&"], ["monadic-operator", "∥"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for monadic operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/number_feature.test b/node_modules/prismjs/tests/languages/apl/number_feature.test
                deleted file mode 100644
                index 815d1ca..0000000
                --- a/node_modules/prismjs/tests/languages/apl/number_feature.test
                +++ /dev/null
                @@ -1,27 +0,0 @@
                -42
                -3.14159
                -¯2
                -∞
                -3E12
                -2.8e¯4
                -0.1e+7
                -2j3
                -¯4.3e2J1.9e¯4
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "¯2"],
                -	["number", "∞"],
                -	["number", "3E12"],
                -	["number", "2.8e¯4"],
                -	["number", "0.1e+7"],
                -	["number", "2j3"],
                -	["number", "¯4.3e2J1.9e¯4"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/statement_feature.test b/node_modules/prismjs/tests/languages/apl/statement_feature.test
                deleted file mode 100644
                index 24c6874..0000000
                --- a/node_modules/prismjs/tests/languages/apl/statement_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -:Ab
                -:FooBar
                -
                -----------------------------------------------------
                -
                -[
                -	["statement", ":Ab"],
                -	["statement", ":FooBar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for statements.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/string_feature.test b/node_modules/prismjs/tests/languages/apl/string_feature.test
                deleted file mode 100644
                index 8bc8dd1..0000000
                --- a/node_modules/prismjs/tests/languages/apl/string_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -''
                -'foobar'
                -'fo''obar'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "''"],
                -	["string", "'foobar'"],
                -	["string", "'fo''obar'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/apl/system-function_feature.test b/node_modules/prismjs/tests/languages/apl/system-function_feature.test
                deleted file mode 100644
                index 81cbcaa..0000000
                --- a/node_modules/prismjs/tests/languages/apl/system-function_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -⎕IO
                -⎕WA
                -⎕CR
                -⎕TCNL
                -
                -----------------------------------------------------
                -
                -[
                -	["system-function", "⎕IO"],
                -	["system-function", "⎕WA"],
                -	["system-function", "⎕CR"],
                -	["system-function", "⎕TCNL"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for system functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/applescript/class_feature.test b/node_modules/prismjs/tests/languages/applescript/class_feature.test
                deleted file mode 100644
                index 547906d..0000000
                --- a/node_modules/prismjs/tests/languages/applescript/class_feature.test
                +++ /dev/null
                @@ -1,39 +0,0 @@
                -alias application boolean class constant
                -date file integer list number
                -POSIX file
                -real record reference
                -RGB color
                -script text centimetres centimeters feet
                -inches kilometres kilometers metres meters
                -miles yards
                -square feet square kilometres square kilometers square metres
                -square meters square miles square yards
                -cubic centimetres cubic centimeters cubic feet cubic inches
                -cubic metres cubic meters cubic yards
                -gallons litres liters quarts grams
                -kilograms ounces pounds
                -degrees Celsius degrees Fahrenheit degrees Kelvin
                -
                -----------------------------------------------------
                -
                -[
                -	["class", "alias"], ["class", "application"], ["class", "boolean"], ["class", "class"], ["class", "constant"],
                -	["class", "date"], ["class", "file"], ["class", "integer"], ["class", "list"], ["class", "number"],
                -	["class", "POSIX file"],
                -	["class", "real"], ["class", "record"], ["class", "reference"],
                -	["class", "RGB color"],
                -	["class", "script"], ["class", "text"], ["class", "centimetres"], ["class", "centimeters"], ["class", "feet"],
                -	["class", "inches"], ["class", "kilometres"], ["class", "kilometers"], ["class", "metres"], ["class", "meters"],
                -	["class", "miles"], ["class", "yards"],
                -	["class", "square feet"], ["class", "square kilometres"], ["class", "square kilometers"], ["class", "square metres"],
                -	["class", "square meters"], ["class", "square miles"], ["class", "square yards"],
                -	["class", "cubic centimetres"], ["class", "cubic centimeters"], ["class", "cubic feet"], ["class", "cubic inches"],
                -	["class", "cubic metres"], ["class", "cubic meters"], ["class", "cubic yards"],
                -	["class", "gallons"], ["class", "litres"], ["class", "liters"], ["class", "quarts"], ["class", "grams"],
                -	["class", "kilograms"], ["class", "ounces"], ["class", "pounds"],
                -	["class", "degrees Celsius"], ["class", "degrees Fahrenheit"], ["class", "degrees Kelvin"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all classes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/applescript/comment_feature.test b/node_modules/prismjs/tests/languages/applescript/comment_feature.test
                deleted file mode 100644
                index d823ba4..0000000
                --- a/node_modules/prismjs/tests/languages/applescript/comment_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                --- foo bar
                -# foo bar
                -(* foo
                -bar *)
                -(* foo
                -(* bar *)
                -*)
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "-- foo bar"],
                -	["comment", "# foo bar"],
                -	["comment", "(* foo\r\nbar *)"],
                -	["comment", "(* foo\r\n(* bar *)\r\n*)"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line and multi-line comments.
                -Also checks for one level of nesting.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/applescript/keyword_feature.test b/node_modules/prismjs/tests/languages/applescript/keyword_feature.test
                deleted file mode 100644
                index bde63a1..0000000
                --- a/node_modules/prismjs/tests/languages/applescript/keyword_feature.test
                +++ /dev/null
                @@ -1,59 +0,0 @@
                -about above after against
                -apart from
                -around
                -aside from
                -at back before beginning behind below
                -beneath beside between but by
                -considering continue copy
                -does eighth else end
                -equal error every exit
                -false fifth first for fourth
                -from front get given global
                -if ignoring in
                -instead of
                -into is it its last
                -local me middle my
                -ninth of on onto
                -out of
                -over prop property put
                -repeat return returning
                -second set seventh since sixth
                -some tell tenth that the
                -then third through thru timeout
                -times to transaction true try
                -until where while whose with
                -without
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "about"], ["keyword", "above"], ["keyword", "after"], ["keyword", "against"],
                -	["keyword", "apart from"],
                -	["keyword", "around"],
                -	["keyword", "aside from"],
                -	["keyword", "at"], ["keyword", "back"], ["keyword", "before"], ["keyword", "beginning"], ["keyword", "behind"], ["keyword", "below"],
                -	["keyword", "beneath"], ["keyword", "beside"], ["keyword", "between"], ["keyword", "but"], ["keyword", "by"],
                -	["keyword", "considering"], ["keyword", "continue"], ["keyword", "copy"],
                -	["keyword", "does"], ["keyword", "eighth"], ["keyword", "else"], ["keyword", "end"],
                -	["keyword", "equal"], ["keyword", "error"], ["keyword", "every"], ["keyword", "exit"],
                -	["keyword", "false"], ["keyword", "fifth"], ["keyword", "first"], ["keyword", "for"], ["keyword", "fourth"],
                -	["keyword", "from"], ["keyword", "front"], ["keyword", "get"], ["keyword", "given"], ["keyword", "global"],
                -	["keyword", "if"], ["keyword", "ignoring"], ["keyword", "in"],
                -	["keyword", "instead of"],
                -	["keyword", "into"], ["keyword", "is"], ["keyword", "it"], ["keyword", "its"], ["keyword", "last"],
                -	["keyword", "local"], ["keyword", "me"], ["keyword", "middle"], ["keyword", "my"],
                -	["keyword", "ninth"], ["keyword", "of"], ["keyword", "on"], ["keyword", "onto"],
                -	["keyword", "out of"],
                -	["keyword", "over"], ["keyword", "prop"], ["keyword", "property"], ["keyword", "put"],
                -	["keyword", "repeat"], ["keyword", "return"], ["keyword", "returning"],
                -	["keyword", "second"], ["keyword", "set"], ["keyword", "seventh"], ["keyword", "since"], ["keyword", "sixth"],
                -	["keyword", "some"], ["keyword", "tell"], ["keyword", "tenth"], ["keyword", "that"], ["keyword", "the"],
                -	["keyword", "then"], ["keyword", "third"], ["keyword", "through"], ["keyword", "thru"], ["keyword", "timeout"],
                -	["keyword", "times"], ["keyword", "to"], ["keyword", "transaction"], ["keyword", "true"], ["keyword", "try"],
                -	["keyword", "until"], ["keyword", "where"], ["keyword", "while"], ["keyword", "whose"], ["keyword", "with"],
                -	["keyword", "without"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/applescript/number_feature.test b/node_modules/prismjs/tests/languages/applescript/number_feature.test
                deleted file mode 100644
                index 96eb6f2..0000000
                --- a/node_modules/prismjs/tests/languages/applescript/number_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -42
                -3.14159
                -3e10
                -4.2E-5
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "3e10"],
                -	["number", "4.2E-5"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/applescript/operator_feature.test b/node_modules/prismjs/tests/languages/applescript/operator_feature.test
                deleted file mode 100644
                index fb4acf4..0000000
                --- a/node_modules/prismjs/tests/languages/applescript/operator_feature.test
                +++ /dev/null
                @@ -1,48 +0,0 @@
                -& = ≠ ≤ ≥
                -* + - / ÷ ^
                -< <= > >=
                -
                -start with begin with end with
                -starts with begins with ends with
                -does not contain doesn't contain
                -contain contains
                -is in isn't in is not in
                -is contained by isn't contained by is not contained by
                -greater than greater than or equal greater than or equal to
                -less than less than or equal less than or equal to
                -does not come before doesn't come before comes before
                -does not come after doesn't come after comes after
                -is equal isn't equal is not equal
                -is equal to isn't equal to is not equal to
                -does not equal doesn't equal equals
                -isn't is not
                -ref a ref to a reference to
                -and or div mod as not
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "&"], ["operator", "="], ["operator", "≠"], ["operator", "≤"], ["operator", "≥"],
                -	["operator", "*"], ["operator", "+"], ["operator", "-"], ["operator", "/"], ["operator", "÷"], ["operator", "^"],
                -	["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="],
                -	["operator", "start with"], ["operator", "begin with"], ["operator", "end with"],
                -	["operator", "starts with"], ["operator", "begins with"], ["operator", "ends with"],
                -	["operator", "does not contain"], ["operator", "doesn't contain"],
                -	["operator", "contain"], ["operator", "contains"],
                -	["operator", "is in"], ["operator", "isn't in"], ["operator", "is not in"],
                -	["operator", "is contained by"], ["operator", "isn't contained by"], ["operator", "is not contained by"],
                -	["operator", "greater than"], ["operator", "greater than or equal"], ["operator", "greater than or equal to"],
                -	["operator", "less than"], ["operator", "less than or equal"], ["operator", "less than or equal to"],
                -	["operator", "does not come before"], ["operator", "doesn't come before"], ["operator", "comes before"],
                -	["operator", "does not come after"], ["operator", "doesn't come after"], ["operator", "comes after"],
                -	["operator", "is equal"], ["operator", "isn't equal"], ["operator", "is not equal"],
                -	["operator", "is equal to"], ["operator", "isn't equal to"], ["operator", "is not equal to"],
                -	["operator", "does not equal"], ["operator", "doesn't equal"], ["operator", "equals"],
                -	["operator", "isn't"], ["operator", "is not"],
                -	["operator", "ref"], ["operator", "a ref to"], ["operator", "a reference to"],
                -	["operator", "and"], ["operator", "or"], ["operator", "div"], ["operator", "mod"], ["operator", "as"], ["operator", "not"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for most of the operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/applescript/string_feature.test b/node_modules/prismjs/tests/languages/applescript/string_feature.test
                deleted file mode 100644
                index 42770f6..0000000
                --- a/node_modules/prismjs/tests/languages/applescript/string_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -""
                -"foo bar"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"foo bar\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/admonition_feature.test b/node_modules/prismjs/tests/languages/asciidoc/admonition_feature.test
                deleted file mode 100644
                index 6b1688f..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/admonition_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -TIP: Foobar
                -NOTE: Foo bar baz
                -IMPORTANT: Foobar
                -WARNING: Foo bar baz
                -CAUTION: Foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["admonition", "TIP:"], " Foobar\r\n",
                -	["admonition", "NOTE:"], " Foo bar baz\r\n",
                -	["admonition", "IMPORTANT:"], " Foobar\r\n",
                -	["admonition", "WARNING:"], " Foo bar baz\r\n",
                -	["admonition", "CAUTION:"], " Foobar"
                -]
                -
                -----------------------------------------------------
                -
                -Checks for admonitions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/attribute-entry_feature.test b/node_modules/prismjs/tests/languages/asciidoc/attribute-entry_feature.test
                deleted file mode 100644
                index a12299a..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/attribute-entry_feature.test
                +++ /dev/null
                @@ -1,58 +0,0 @@
                -:Foo bar: baz
                -
                -:Foobar: Foo +
                -bar +
                -baz
                -
                -:Foo bar!:
                -:Foobar!:
                -
                -=====
                -:Foo bar: baz
                -
                -:Foobar: Foo +
                -bar +
                -baz
                -
                -:Foo bar!:
                -:Foobar!:
                -=====
                -
                -|=====
                -|
                -:Foo bar: baz
                -
                -:Foobar: Foo +
                -bar +
                -baz
                -|=====
                -
                -----------------------------------------------------
                -
                -[
                -	["attribute-entry", ":Foo bar: baz"],
                -	["attribute-entry", ":Foobar: Foo +\r\nbar +\r\nbaz"],
                -	["attribute-entry", ":Foo bar!:"],
                -	["attribute-entry", ":Foobar!:"],
                -
                -	["other-block", [
                -		["punctuation", "====="],
                -		["attribute-entry", ":Foo bar: baz"],
                -		["attribute-entry", ":Foobar: Foo +\r\nbar +\r\nbaz"],
                -		["attribute-entry", ":Foo bar!:"],
                -		["attribute-entry", ":Foobar!:"],
                -		["punctuation", "====="]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|====="],
                -		["punctuation", "|"],
                -		["attribute-entry", ":Foo bar: baz"],
                -		["attribute-entry", ":Foobar: Foo +\r\nbar +\r\nbaz"],
                -		["punctuation", "|====="]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for attribute entries.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/attributes_feature.test b/node_modules/prismjs/tests/languages/asciidoc/attributes_feature.test
                deleted file mode 100644
                index a4eb9e2..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/attributes_feature.test
                +++ /dev/null
                @@ -1,403 +0,0 @@
                -Foo [big red yellow-background]#obvious#
                -
                -[float]
                -[quote,'http://en.wikipedia.org/wiki/Samuel_Johnson[Samuel Johnson]']
                -[quote,'"with *an* image" image:foo.png[] (TM)']
                -
                -[NOTE]
                -[icon="./images/icons/wink.png"]
                -[icons=None, caption="My Special Note"]
                -[start=7]
                -
                -[cols="e,m,^,>s",width="25%"]
                -
                -=====
                -Foo [big red yellow-background]#obvious#
                -
                -[float]
                -[quote,'http://en.wikipedia.org/wiki/Samuel_Johnson[Samuel Johnson]']
                -[quote,'"with *an* image" image:foo.png[] (TM)']
                -
                -[NOTE]
                -[icon="./images/icons/wink.png"]
                -[icons=None, caption="My Special Note"]
                -[start=7]
                -
                -[cols="e,m,^,>s",width="25%"]
                -=====
                -
                -|=====
                -|
                -Foo [big red yellow-background]#obvious#
                -
                -[float]
                -[quote,'http://en.wikipedia.org/wiki/Samuel_Johnson[Samuel Johnson]']
                -[quote,'"with *an* image" image:foo.png[] (TM)']
                -
                -[NOTE]
                -[icon="./images/icons/wink.png"]
                -[icons=None, caption="My Special Note"]
                -[start=7]
                -
                -[cols="e,m,^,>s",width="25%"]
                -|=====
                -
                -
                -latexmath:[$C = \alpha + \beta Y^{\gamma} + \epsilon$]
                -asciimath:[`x/x={(1,if x!=0),(text{undefined},if x=0):}`]
                -latexmath:[$\sum_{n=1}^\infty \frac{1}{2^n}$]
                -
                -----------------------------------------------------
                -
                -[
                -	"Foo ",
                -	["inline", [
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "big red yellow-background"],
                -			["punctuation", "]"]
                -		]],
                -		["punctuation", "#"], "obvious", ["punctuation", "#"]
                -	]],
                -
                -	["attributes", [
                -		["punctuation", "["], ["attr-value", "float"], ["punctuation", "]"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["attr-value", "quote"], ["punctuation", ","],
                -		["interpreted", [
                -			["punctuation", "'"],
                -			["macro", [
                -				["function", "http"], ["punctuation", ":"],
                -				"//en.wikipedia.org/wiki/Samuel_Johnson",
                -				["attributes", [
                -					["punctuation", "["],
                -					["attr-value", "Samuel Johnson"],
                -					["punctuation", "]"]
                -				]]
                -			]],
                -			["punctuation", "'"]
                -		]],
                -		["punctuation", "]"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["attr-value", "quote"], ["punctuation", ","],
                -		["interpreted", [
                -			["punctuation", "'"],
                -			["entity", """],
                -			"with ",
                -			["inline", [
                -				["bold", [
                -					["punctuation", "*"], "an", ["punctuation", "*"]
                -				]]
                -			]],
                -			" image",
                -			["entity", """],
                -			["macro", [
                -				["function", "image"], ["punctuation", ":"],
                -				"foo.png",
                -				["attributes", [
                -					["punctuation", "["], ["punctuation", "]"]
                -				]]
                -			]],
                -			["replacement", "(TM)"],
                -			["punctuation", "'"]
                -		]],
                -		["punctuation", "]"]
                -	]],
                -
                -	["attributes", [
                -		["punctuation", "["], ["attr-value", "NOTE"], ["punctuation", "]"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["variable", "icon"],
                -		["operator", "="],
                -		["string", "\"./images/icons/wink.png\""],
                -		["punctuation", "]"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["variable", "icons"],
                -		["operator", "="],
                -		["attr-value", "None"],
                -		["punctuation", ","],
                -		["variable", "caption"],
                -		["operator", "="],
                -		["string", "\"My Special Note\""],
                -		["punctuation", "]"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["variable", "start"],
                -		["operator", "="],
                -		["attr-value", "7"],
                -		["punctuation", "]"]
                -	]],
                -
                -	["attributes", [
                -		["punctuation", "["],
                -		["variable", "cols"],
                -		["operator", "="],
                -		["string", "\"e,m,^,>s\""],
                -		["punctuation", ","],
                -		["variable", "width"],
                -		["operator", "="],
                -		["string", "\"25%\""],
                -		["punctuation", "]"]
                -	]],
                -
                -	["other-block", [
                -		["punctuation", "====="],
                -
                -		"\r\nFoo ",
                -		["inline", [
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "big red yellow-background"],
                -				["punctuation", "]"]
                -			]],
                -			["punctuation", "#"], "obvious", ["punctuation", "#"]
                -		]],
                -
                -		["attributes", [
                -			["punctuation", "["], ["attr-value", "float"], ["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "quote"], ["punctuation", ","],
                -			["interpreted", [
                -				["punctuation", "'"],
                -				["macro", [
                -					["function", "http"], ["punctuation", ":"],
                -					"//en.wikipedia.org/wiki/Samuel_Johnson",
                -					["attributes", [
                -						["punctuation", "["],
                -						["attr-value", "Samuel Johnson"],
                -						["punctuation", "]"]
                -					]]
                -				]],
                -				["punctuation", "'"]
                -			]],
                -			["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "quote"], ["punctuation", ","],
                -			["interpreted", [
                -				["punctuation", "'"],
                -				["entity", """],
                -				"with ",
                -				["inline", [
                -					["bold", [
                -						["punctuation", "*"], "an", ["punctuation", "*"]
                -					]]
                -				]],
                -				" image",
                -				["entity", """],
                -				["macro", [
                -					["function", "image"], ["punctuation", ":"],
                -					"foo.png",
                -					["attributes", [
                -						["punctuation", "["], ["punctuation", "]"]
                -					]]
                -				]],
                -				["replacement", "(TM)"],
                -				["punctuation", "'"]
                -			]],
                -			["punctuation", "]"]
                -		]],
                -
                -		["attributes", [
                -			["punctuation", "["], ["attr-value", "NOTE"], ["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "icon"],
                -			["operator", "="],
                -			["string", "\"./images/icons/wink.png\""],
                -			["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "icons"],
                -			["operator", "="],
                -			["attr-value", "None"],
                -			["punctuation", ","],
                -			["variable", "caption"],
                -			["operator", "="],
                -			["string", "\"My Special Note\""],
                -			["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "start"],
                -			["operator", "="],
                -			["attr-value", "7"],
                -			["punctuation", "]"]
                -		]],
                -
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "cols"],
                -			["operator", "="],
                -			["string", "\"e,m,^,>s\""],
                -			["punctuation", ","],
                -			["variable", "width"],
                -			["operator", "="],
                -			["string", "\"25%\""],
                -			["punctuation", "]"]
                -		]],
                -
                -		["punctuation", "====="]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|====="],
                -		["punctuation", "|"],
                -
                -		"\r\nFoo ",
                -		["inline", [
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "big red yellow-background"],
                -				["punctuation", "]"]
                -			]],
                -			["punctuation", "#"], "obvious", ["punctuation", "#"]
                -		]],
                -
                -		["attributes", [
                -			["punctuation", "["], ["attr-value", "float"], ["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "quote"], ["punctuation", ","],
                -			["interpreted", [
                -				["punctuation", "'"],
                -				["macro", [
                -					["function", "http"], ["punctuation", ":"],
                -					"//en.wikipedia.org/wiki/Samuel_Johnson",
                -					["attributes", [
                -						["punctuation", "["],
                -						["attr-value", "Samuel Johnson"],
                -						["punctuation", "]"]
                -					]]
                -				]],
                -				["punctuation", "'"]
                -			]],
                -			["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "quote"], ["punctuation", ","],
                -			["interpreted", [
                -				["punctuation", "'"],
                -				["entity", """],
                -				"with ",
                -				["inline", [
                -					["bold", [
                -						["punctuation", "*"], "an", ["punctuation", "*"]
                -					]]
                -				]],
                -				" image",
                -				["entity", """],
                -				["macro", [
                -					["function", "image"], ["punctuation", ":"],
                -					"foo.png",
                -					["attributes", [
                -						["punctuation", "["], ["punctuation", "]"]
                -					]]
                -				]],
                -				["replacement", "(TM)"],
                -				["punctuation", "'"]
                -			]],
                -			["punctuation", "]"]
                -		]],
                -
                -		["attributes", [
                -			["punctuation", "["], ["attr-value", "NOTE"], ["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "icon"],
                -			["operator", "="],
                -			["string", "\"./images/icons/wink.png\""],
                -			["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "icons"],
                -			["operator", "="],
                -			["attr-value", "None"],
                -			["punctuation", ","],
                -			["variable", "caption"],
                -			["operator", "="],
                -			["string", "\"My Special Note\""],
                -			["punctuation", "]"]
                -		]],
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "start"],
                -			["operator", "="],
                -			["attr-value", "7"],
                -			["punctuation", "]"]
                -		]],
                -
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "cols"],
                -			["operator", "="],
                -			["string", "\"e,m,^,>s\""],
                -			["punctuation", ","],
                -			["variable", "width"],
                -			["operator", "="],
                -			["string", "\"25%\""],
                -			["punctuation", "]"]
                -		]],
                -
                -		["punctuation", "|====="]
                -	]],
                -
                -	["macro", [
                -		["function", "latexmath"], ["punctuation", ":"],
                -		["attributes", [
                -			["punctuation", "["],
                -			["quoted", [
                -				["punctuation", "$"],
                -				"C = \\alpha + \\beta Y^{\\gamma} + \\epsilon",
                -				["punctuation", "$"]
                -			]],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "asciimath"], ["punctuation", ":"],
                -		["attributes", [
                -			["punctuation", "["],
                -			["quoted", [
                -				["punctuation", "`"],
                -				"x/x={(1,if x!=0),(text{undefined},if x=0):}",
                -				["punctuation", "`"]
                -			]],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "latexmath"], ["punctuation", ":"],
                -		["attributes", [
                -			["punctuation", "["],
                -			["quoted", [
                -				["punctuation", "$"],
                -				"\\sum_{n=1}^\\infty \\frac{1}{2^n}",
                -				["punctuation", "$"]
                -			]],
                -			["punctuation", "]"]
                -		]]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for attributes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/callout_feature.test b/node_modules/prismjs/tests/languages/asciidoc/callout_feature.test
                deleted file mode 100644
                index b7de9b1..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/callout_feature.test
                +++ /dev/null
                @@ -1,34 +0,0 @@
                -Foobar <1>
                -<1> Foo
                -1> Bar
                -> Baz
                -
                -|====
                -| Foobar <1>
                -<1> Foo
                -1> Bar
                -> Baz
                -|====
                -
                -----------------------------------------------------
                -
                -[
                -	"Foobar ", ["callout", "<1>"],
                -	["callout", "<1>"], " Foo\r\n",
                -	["callout", "1>"], " Bar\r\n",
                -	["callout", ">"], " Baz\r\n\r\n",
                -
                -	["table", [
                -		["punctuation", "|===="],
                -		["punctuation", "|"],
                -		" Foobar ", ["callout", "<1>"],
                -		["callout", "<1>"], " Foo\r\n",
                -		["callout", "1>"], " Bar\r\n",
                -		["callout", ">"], " Baz\r\n",
                -		["punctuation", "|===="]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for callouts.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/comment-block_feature.test b/node_modules/prismjs/tests/languages/asciidoc/comment-block_feature.test
                deleted file mode 100644
                index 4c4248e..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/comment-block_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -////
                -////
                -
                -////
                -Foobar
                -
                -Baz
                -////
                -
                -----------------------------------------------------
                -
                -[
                -	["comment-block", "////\r\n////"],
                -	["comment-block", "////\r\nFoobar\r\n\r\nBaz\r\n////"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comment blocks.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/comment_feature.test b/node_modules/prismjs/tests/languages/asciidoc/comment_feature.test
                deleted file mode 100644
                index c2ccc51..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/comment_feature.test
                +++ /dev/null
                @@ -1,41 +0,0 @@
                -//
                -// Foobar
                -
                -******
                -//
                -// Foobar
                -******
                -
                -|======
                -|
                -//
                -|
                -// Foobar
                -|======
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "//"],
                -	["comment", "// Foobar"],
                -
                -	["other-block", [
                -		["punctuation", "******"],
                -		["comment", "//"],
                -		["comment", "// Foobar"],
                -		["punctuation", "******"]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|======"],
                -		["punctuation", "|"],
                -		["comment", "//"],
                -		["punctuation", "|"],
                -		["comment", "// Foobar"],
                -		["punctuation", "|======"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/entity_feature.js b/node_modules/prismjs/tests/languages/asciidoc/entity_feature.js
                deleted file mode 100644
                index 2e99cd1..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/entity_feature.js
                +++ /dev/null
                @@ -1,4 +0,0 @@
                -module.exports = {
                -	'➊': '&#x278a;',
                -	'¶': '&#182;'
                -};
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/entity_feature.test b/node_modules/prismjs/tests/languages/asciidoc/entity_feature.test
                deleted file mode 100644
                index a3d5ce8..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/entity_feature.test
                +++ /dev/null
                @@ -1,48 +0,0 @@
                -➊ ¶
                -
                -➊ ¶
                -============
                -
                -['➊ ¶']
                -
                ---
                -➊ ¶
                ---
                -
                -|======
                -| ➊ ¶
                -|======
                -
                -----------------------------------------------------
                -
                -[
                -	["entity", "➊"], ["entity", "¶"],
                -	["title", [
                -		["entity", "➊"], ["entity", "¶"],
                -		["punctuation", "============"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["interpreted", [
                -			["punctuation", "'"],
                -			["entity", "➊"], ["entity", "¶"],
                -			["punctuation", "'"]
                -		]],
                -		["punctuation", "]"]
                -	]],
                -	["other-block", [
                -		["punctuation", "--"],
                -		["entity", "➊"], ["entity", "¶"],
                -		["punctuation", "--"]
                -	]],
                -	["table", [
                -		["punctuation", "|======"],
                -		["punctuation", "|"],
                -		["entity", "➊"], ["entity", "¶"],
                -		["punctuation", "|======"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for entities.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/hr_feature.test b/node_modules/prismjs/tests/languages/asciidoc/hr_feature.test
                deleted file mode 100644
                index 822a7db..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/hr_feature.test
                +++ /dev/null
                @@ -1,14 +0,0 @@
                -'''
                -
                -''''''''''
                -
                -----------------------------------------------------
                -
                -[
                -	["hr", "'''"],
                -	["hr", "''''''''''"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for hr.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/indented-block_feature.test b/node_modules/prismjs/tests/languages/asciidoc/indented-block_feature.test
                deleted file mode 100644
                index c6d6657..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/indented-block_feature.test
                +++ /dev/null
                @@ -1,28 +0,0 @@
                -.
                -
                -	(TM) __foobar__
                -	:bar: baz
                -
                - Foo *bar* baz
                - // Foobar
                - == Foobar ==
                -
                -    Title
                -    ~~~~~
                -    .....
                -    .....
                -
                -----------------------------------------------------
                -
                -[
                -	".\r\n\r\n",
                -	["indented-block", "\t(TM) __foobar__\r\n\t:bar: baz"],
                -	["indented-block", " Foo *bar* baz\r\n // Foobar\r\n == Foobar =="],
                -	["indented-block", "    Title\r\n    ~~~~~\r\n    .....\r\n    ....."]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for indented blocks.
                -Also checks that nothing gets highlighted inside.
                -The initial dot is required because tests are trimmed.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/inline_feature.test b/node_modules/prismjs/tests/languages/asciidoc/inline_feature.test
                deleted file mode 100644
                index d88a570..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/inline_feature.test
                +++ /dev/null
                @@ -1,521 +0,0 @@
                -_emphasis_
                -``double quotes''
                -`single quotes'
                -`monospace`
                -'emphasis'
                -*strong*
                -+monospace+
                -#unquoted#
                -
                -_foo _ bar baz_
                -`foo ' bar baz'
                -`foo ` bar baz`
                -'foo ' bar baz'
                -*foo * bar baz*
                -+foo + bar baz+
                -#foo # bar baz#
                -
                -_foo
                -bar_
                -``foo
                -bar''
                -`foo
                -bar'
                -`foo
                -bar`
                -'foo
                -bar'
                -*foo
                -bar*
                -+foo
                -bar+
                -#foo
                -bar#
                -
                -foo__emphasis__bar
                -foo**strong**bar
                -foo++monospace++bar
                -foo+++passthrough+++bar
                -foo##unquoted##bar
                -foo$$passthrough$$bar
                -foo~subscript~bar
                -foo^superscript^bar
                -foo{attribute-reference}bar
                -foo[[anchor]]bar
                -foo[[[bibliography anchor]]]bar
                -foo<>bar
                -foo(((indexes)))bar
                -foo((indexes))bar
                -
                -====
                -_emphasis_
                -``double quotes''
                -`single quotes'
                -`monospace`
                -'emphasis'
                -*strong*
                -+monospace+
                -#unquoted#
                -__emphasis__
                -**strong**
                -++monospace++
                -+++passthrough+++
                -##unquoted##
                -$$passthrough$$
                -~subscript~
                -^superscript^
                -{attribute-reference}
                -[[anchor]]
                -[[[bibliography anchor]]]
                -<>
                -(((indexes)))
                -((indexes))
                -====
                -
                -|====
                -|
                -_emphasis_
                -``double quotes''
                -`single quotes'
                -`monospace`
                -'emphasis'
                -*strong*
                -+monospace+
                -#unquoted#
                -__emphasis__
                -**strong**
                -++monospace++
                -+++passthrough+++
                -##unquoted##
                -$$passthrough$$
                -~subscript~
                -^superscript^
                -{attribute-reference}
                -[[anchor]]
                -[[[bibliography anchor]]]
                -<>
                -(((indexes)))
                -((indexes))
                -|====
                -
                -['foo *bar* baz']
                -
                -== foo *bar* baz ==
                -
                -{names=value}
                -{names?value}
                -{names!value}
                -{names#value}
                -{names%value}
                -{names@regexp:value1:value2}
                -{names$regexp:value1:value2}
                -{names$regexp::value}
                -{foo,bar=foobar}
                -{foo+bar=foobar}
                -{counter:attrname}
                -
                -----------------------------------------------------
                -
                -[
                -	["inline", [
                -		["italic", [["punctuation", "_"], "emphasis", ["punctuation", "_"]]]
                -	]],
                -	["inline", [
                -		["punctuation", "``"], "double quotes", ["punctuation", "''"]
                -	]],
                -	["inline", [
                -		["punctuation", "`"], "single quotes", ["punctuation", "'"]
                -	]],
                -	["inline", [
                -		["punctuation", "`"], "monospace", ["punctuation", "`"]
                -	]],
                -	["inline", [
                -		["italic", [["punctuation", "'"], "emphasis", ["punctuation", "'"]]]
                -	]],
                -	["inline", [
                -		["bold", [["punctuation", "*"], "strong", ["punctuation", "*"]]]
                -	]],
                -	["inline", [
                -		["punctuation", "+"], "monospace", ["punctuation", "+"]
                -	]],
                -	["inline", [
                -		["punctuation", "#"], "unquoted", ["punctuation", "#"]
                -	]],
                -
                -	["inline", [
                -		["italic", [["punctuation", "_"], "foo _ bar baz", ["punctuation", "_"]]]
                -	]],
                -	["inline", [
                -		["punctuation", "`"], "foo ' bar baz", ["punctuation", "'"]
                -	]],
                -	["inline", [
                -		["punctuation", "`"], "foo ` bar baz", ["punctuation", "`"]
                -	]],
                -	["inline", [
                -		["italic", [["punctuation", "'"], "foo ' bar baz", ["punctuation", "'"]]]
                -	]],
                -	["inline", [
                -		["bold", [["punctuation", "*"], "foo * bar baz", ["punctuation", "*"]]]
                -	]],
                -	["inline", [
                -		["punctuation", "+"], "foo + bar baz", ["punctuation", "+"]
                -	]],
                -	["inline", [
                -		["punctuation", "#"], "foo # bar baz", ["punctuation", "#"]
                -	]],
                -
                -	["inline", [
                -		["italic", [["punctuation", "_"], "foo\r\nbar", ["punctuation", "_"]]]
                -	]],
                -	["inline", [
                -		["punctuation", "``"], "foo\r\nbar", ["punctuation", "''"]
                -	]],
                -	["inline", [
                -		["punctuation", "`"], "foo\r\nbar", ["punctuation", "'"]
                -	]],
                -	["inline", [
                -		["punctuation", "`"], "foo\r\nbar", ["punctuation", "`"]
                -	]],
                -	["inline", [
                -		["italic", [["punctuation", "'"], "foo\r\nbar", ["punctuation", "'"]]]
                -	]],
                -	["inline", [
                -		["bold", [["punctuation", "*"], "foo\r\nbar", ["punctuation", "*"]]]
                -	]],
                -	["inline", [
                -		["punctuation", "+"], "foo\r\nbar", ["punctuation", "+"]
                -	]],
                -	["inline", [
                -		["punctuation", "#"], "foo\r\nbar", ["punctuation", "#"]
                -	]],
                -
                -	"\r\n\r\nfoo",
                -	["inline", [
                -		["italic", [["punctuation", "__"], "emphasis", ["punctuation", "__"]]]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["bold", [["punctuation", "**"], "strong", ["punctuation", "**"]]]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "++"], "monospace", ["punctuation", "++"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "+++"], "passthrough", ["punctuation", "+++"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "##"], "unquoted", ["punctuation", "##"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "$$"], "passthrough", ["punctuation", "$$"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "~"], "subscript", ["punctuation", "~"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "^"], "superscript", ["punctuation", "^"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["attribute-ref", [["punctuation", "{"], ["variable", "attribute-reference"], ["punctuation", "}"]]]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["url", [["punctuation", "[["], "anchor", ["punctuation", "]]"]]]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["url", [["punctuation", "[[["], "bibliography anchor", ["punctuation", "]]]"]]]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["url", [["punctuation", "<<"], "xref", ["punctuation", ">>"]]]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "((("], "indexes", ["punctuation", ")))"]
                -	]],
                -	"bar\r\nfoo",
                -	["inline", [
                -		["punctuation", "(("], "indexes", ["punctuation", "))"]
                -	]],
                -	"bar\r\n\r\n",
                -
                -	["other-block", [
                -		["punctuation", "===="],
                -
                -		["inline", [
                -			["italic", [["punctuation", "_"], "emphasis", ["punctuation", "_"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "``"], "double quotes", ["punctuation", "''"]
                -		]],
                -		["inline", [
                -			["punctuation", "`"], "single quotes", ["punctuation", "'"]
                -		]],
                -		["inline", [
                -			["punctuation", "`"], "monospace", ["punctuation", "`"]
                -		]],
                -		["inline", [
                -			["italic", [["punctuation", "'"], "emphasis", ["punctuation", "'"]]]
                -		]],
                -		["inline", [
                -			["bold", [["punctuation", "*"], "strong", ["punctuation", "*"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "+"], "monospace", ["punctuation", "+"]
                -		]],
                -		["inline", [
                -			["punctuation", "#"], "unquoted", ["punctuation", "#"]
                -		]],
                -		["inline", [
                -			["italic", [["punctuation", "__"], "emphasis", ["punctuation", "__"]]]
                -		]],
                -		["inline", [
                -			["bold", [["punctuation", "**"], "strong", ["punctuation", "**"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "++"], "monospace", ["punctuation", "++"]
                -		]],
                -		["inline", [
                -			["punctuation", "+++"], "passthrough", ["punctuation", "+++"]
                -		]],
                -		["inline", [
                -			["punctuation", "##"], "unquoted", ["punctuation", "##"]
                -		]],
                -		["inline", [
                -			["punctuation", "$$"], "passthrough", ["punctuation", "$$"]
                -		]],
                -		["inline", [
                -			["punctuation", "~"], "subscript", ["punctuation", "~"]
                -		]],
                -		["inline", [
                -			["punctuation", "^"], "superscript", ["punctuation", "^"]
                -		]],
                -		["inline", [
                -			["attribute-ref", [["punctuation", "{"], ["variable", "attribute-reference"], ["punctuation", "}"]]]
                -		]],
                -		["inline", [
                -			["url", [["punctuation", "[["], "anchor", ["punctuation", "]]"]]]
                -		]],
                -		["inline", [
                -			["url", [["punctuation", "[[["], "bibliography anchor", ["punctuation", "]]]"]]]
                -		]],
                -		["inline", [
                -			["url", [["punctuation", "<<"], "xref", ["punctuation", ">>"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "((("], "indexes", ["punctuation", ")))"]
                -		]],
                -		["inline", [
                -			["punctuation", "(("], "indexes", ["punctuation", "))"]
                -		]],
                -
                -		["punctuation", "===="]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|===="],
                -		["punctuation", "|"],
                -
                -		["inline", [
                -			["italic", [["punctuation", "_"], "emphasis", ["punctuation", "_"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "``"], "double quotes", ["punctuation", "''"]
                -		]],
                -		["inline", [
                -			["punctuation", "`"], "single quotes", ["punctuation", "'"]
                -		]],
                -		["inline", [
                -			["punctuation", "`"], "monospace", ["punctuation", "`"]
                -		]],
                -		["inline", [
                -			["italic", [["punctuation", "'"], "emphasis", ["punctuation", "'"]]]
                -		]],
                -		["inline", [
                -			["bold", [["punctuation", "*"], "strong", ["punctuation", "*"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "+"], "monospace", ["punctuation", "+"]
                -		]],
                -		["inline", [
                -			["punctuation", "#"], "unquoted", ["punctuation", "#"]
                -		]],
                -		["inline", [
                -			["italic", [["punctuation", "__"], "emphasis", ["punctuation", "__"]]]
                -		]],
                -		["inline", [
                -			["bold", [["punctuation", "**"], "strong", ["punctuation", "**"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "++"], "monospace", ["punctuation", "++"]
                -		]],
                -		["inline", [
                -			["punctuation", "+++"], "passthrough", ["punctuation", "+++"]
                -		]],
                -		["inline", [
                -			["punctuation", "##"], "unquoted", ["punctuation", "##"]
                -		]],
                -		["inline", [
                -			["punctuation", "$$"], "passthrough", ["punctuation", "$$"]
                -		]],
                -		["inline", [
                -			["punctuation", "~"], "subscript", ["punctuation", "~"]
                -		]],
                -		["inline", [
                -			["punctuation", "^"], "superscript", ["punctuation", "^"]
                -		]],
                -		["inline", [
                -			["attribute-ref", [["punctuation", "{"], ["variable", "attribute-reference"], ["punctuation", "}"]]]
                -		]],
                -		["inline", [
                -			["url", [["punctuation", "[["], "anchor", ["punctuation", "]]"]]]
                -		]],
                -		["inline", [
                -			["url", [["punctuation", "[[["], "bibliography anchor", ["punctuation", "]]]"]]]
                -		]],
                -		["inline", [
                -			["url", [["punctuation", "<<"], "xref", ["punctuation", ">>"]]]
                -		]],
                -		["inline", [
                -			["punctuation", "((("], "indexes", ["punctuation", ")))"]
                -		]],
                -		["inline", [
                -			["punctuation", "(("], "indexes", ["punctuation", "))"]
                -		]],
                -
                -		["punctuation", "|===="]
                -	]],
                -
                -	["attributes", [
                -		["punctuation", "["],
                -		["interpreted", [
                -			["punctuation", "'"],
                -			"foo ", ["inline", [["bold", [["punctuation", "*"], "bar", ["punctuation", "*"]]]]], " baz",
                -			["punctuation", "'"]
                -		]],
                -		["punctuation", "]"]
                -	]],
                -
                -	["title", [
                -		["punctuation", "=="],
                -		" foo ", ["inline", [["bold", [["punctuation", "*"], "bar", ["punctuation", "*"]]]]], " baz ",
                -		["punctuation", "=="]
                -	]],
                -
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "="],
                -			"value",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "?"],
                -			"value",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "!"],
                -			"value",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "#"],
                -			"value",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "%"],
                -			"value",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "@"],
                -			"regexp", ["punctuation", ":"],
                -			"value1", ["punctuation", ":"],
                -			"value2",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "$"],
                -			"regexp", ["punctuation", ":"],
                -			"value1", ["punctuation", ":"],
                -			"value2",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "names"],
                -			["operator", "$"],
                -			"regexp", ["punctuation", "::"],
                -			"value",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -    ["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "foo,bar"],
                -			["operator", "="],
                -			"foobar",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "foo+bar"],
                -			["operator", "="],
                -			"foobar",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -	["inline", [
                -		["attribute-ref", [
                -			["punctuation", "{"],
                -			["variable", "counter"],
                -			["punctuation", ":"],
                -			"attrname",
                -			["punctuation", "}"]
                -		]]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all kinds of inline quoted text.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/line-continuation_feature.test b/node_modules/prismjs/tests/languages/asciidoc/line-continuation_feature.test
                deleted file mode 100644
                index 651fa81..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/line-continuation_feature.test
                +++ /dev/null
                @@ -1,18 +0,0 @@
                -Foo +
                -bar
                -
                -* Foo
                -+
                -bar
                -
                -----------------------------------------------------
                -
                -[
                -	"Foo ", ["line-continuation", "+"], "\r\nbar\r\n\r\n",
                -	["list-punctuation", "*"], " Foo\r\n",
                -	["line-continuation", "+"], "\r\nbar"
                -]
                -
                -----------------------------------------------------
                -
                -Checks for line continuations.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/list-label_feature.test b/node_modules/prismjs/tests/languages/asciidoc/list-label_feature.test
                deleted file mode 100644
                index 3e95bb6..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/list-label_feature.test
                +++ /dev/null
                @@ -1,73 +0,0 @@
                -In::
                -Lorem::
                -  Foo bar baz
                -Dolor:::
                -  Ipsum::::
                -    Donec;;
                -      Foobar
                -
                -____
                -In::
                -Lorem::
                -  Foo bar baz
                -Dolor:::
                -  Ipsum::::
                -    Donec;;
                -      Foobar
                -____
                -
                -|========
                -|
                -In::
                -Lorem::
                -  Foo bar baz
                -Dolor:::
                -  Ipsum::::
                -    Donec;;
                -      Foobar
                -|========
                -
                -----------------------------------------------------
                -
                -[
                -	["list-label", "In::"],
                -	["list-label", "Lorem::"],
                -	"\r\n  Foo bar baz\r\n",
                -	["list-label", "Dolor:::"],
                -	["list-label", "Ipsum::::"],
                -	["list-label", "Donec;;"],
                -	"\r\n      Foobar\r\n\r\n",
                -
                -	["other-block", [
                -		["punctuation", "____"],
                -
                -		["list-label", "In::"],
                -		["list-label", "Lorem::"],
                -		"\r\n  Foo bar baz\r\n",
                -		["list-label", "Dolor:::"],
                -		["list-label", "Ipsum::::"],
                -		["list-label", "Donec;;"],
                -		"\r\n      Foobar\r\n",
                -
                -		["punctuation", "____"]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|========"],
                -		["punctuation", "|"],
                -
                -		["list-label", "In::"],
                -		["list-label", "Lorem::"],
                -		"\r\n  Foo bar baz\r\n",
                -		["list-label", "Dolor:::"],
                -		["list-label", "Ipsum::::"],
                -		["list-label", "Donec;;"],
                -		"\r\n      Foobar\r\n",
                -
                -		["punctuation", "|========"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for list labels.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/list-punctuation_feature.test b/node_modules/prismjs/tests/languages/asciidoc/list-punctuation_feature.test
                deleted file mode 100644
                index 60dbf13..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/list-punctuation_feature.test
                +++ /dev/null
                @@ -1,77 +0,0 @@
                -- Foo
                -* Foo
                -** Foo bar
                -*** Foo
                -	1. Foo
                -	2. Foo bar
                -	42. Foo
                -**** Foo
                -***** Foo bar
                -
                -. Foo
                -.. Foo
                -    a. Foo
                -    b. Foo
                -    z. Foo
                -... Foo bar
                -.... Foo
                -	i) Foo
                -	vi) Bar
                -	xxvii) Baz
                -..... Foo
                -
                -____
                -. 1
                -.. 2
                -____
                -
                -|===
                -|
                -xi) a
                -xii) b
                -|===
                -
                -----------------------------------------------------
                -
                -[
                -	["list-punctuation", "-"], " Foo\r\n",
                -	["list-punctuation", "*"], " Foo\r\n",
                -	["list-punctuation", "**"], " Foo bar\r\n",
                -	["list-punctuation", "***"], " Foo\r\n\t",
                -	["list-punctuation", "1."], " Foo\r\n\t",
                -	["list-punctuation", "2."], " Foo bar\r\n\t",
                -	["list-punctuation", "42."], " Foo\r\n",
                -	["list-punctuation", "****"], " Foo\r\n",
                -	["list-punctuation", "*****"], " Foo bar\r\n\r\n",
                -
                -	["list-punctuation", "."], " Foo\r\n",
                -	["list-punctuation", ".."], " Foo\r\n    ",
                -	["list-punctuation", "a."], " Foo\r\n    ",
                -	["list-punctuation", "b."], " Foo\r\n    ",
                -	["list-punctuation", "z."], " Foo\r\n",
                -	["list-punctuation", "..."], " Foo bar\r\n",
                -	["list-punctuation", "...."], " Foo\r\n\t",
                -	["list-punctuation", "i)"], " Foo\r\n\t",
                -	["list-punctuation", "vi)"], " Bar\r\n\t",
                -	["list-punctuation", "xxvii)"], " Baz\r\n",
                -	["list-punctuation", "....."], " Foo\r\n\r\n",
                -
                -	["other-block", [
                -		["punctuation", "____"],
                -		["list-punctuation", "."], " 1\r\n",
                -		["list-punctuation", ".."], " 2\r\n",
                -		["punctuation", "____"]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|==="],
                -		["punctuation", "|"],
                -		["list-punctuation", "xi)"], " a\r\n",
                -		["list-punctuation", "xii)"], " b\r\n",
                -		["punctuation", "|==="]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for list punctuation.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/literal-block_feature.test b/node_modules/prismjs/tests/languages/asciidoc/literal-block_feature.test
                deleted file mode 100644
                index 9449ca0..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/literal-block_feature.test
                +++ /dev/null
                @@ -1,46 +0,0 @@
                -----
                -== Foobar ==
                -Bar _baz_ (TM) <1>
                -* Foo <2>
                -<1> Foobar
                -2> Baz
                -----
                -
                -.......
                -.Foo
                -. Foobar <1>
                -include::addendum.txt <2>
                -> Foo
                -> Bar
                -__Foo__**bar**{baz}
                -.......
                -
                -----------------------------------------------------
                -
                -[
                -	["literal-block", [
                -		["punctuation", "----"],
                -		"\r\n== Foobar ==\r\nBar _baz_ (TM) ",
                -		["callout", "<1>"],
                -		"\r\n* Foo ",
                -		["callout", "<2>"],
                -		["callout", "<1>"], " Foobar\r\n",
                -		["callout", "2>"], " Baz\r\n",
                -		["punctuation", "----"]
                -	]],
                -	["literal-block", [
                -		["punctuation", "......."],
                -		"\r\n.Foo\r\n. Foobar ",
                -		["callout", "<1>"],
                -		"\r\ninclude::addendum.txt ",
                -		["callout", "<2>"],
                -		["callout", ">"], " Foo\r\n",
                -		["callout", ">"], " Bar\r\n__Foo__**bar**{baz}\r\n",
                -		["punctuation", "......."]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for literal blocks and listing blocks.
                -Also checks that nothing gets highlighted inside expect callouts.
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/macro_feature.test b/node_modules/prismjs/tests/languages/asciidoc/macro_feature.test
                deleted file mode 100644
                index 50ee161..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/macro_feature.test
                +++ /dev/null
                @@ -1,250 +0,0 @@
                -footnote:[An example footnote.]
                -indexterm:[Tigers,Big cats]
                -
                -http://www.docbook.org/[DocBook.org]
                -include::chapt1.txt[tabsize=2]
                -mailto:srackham@gmail.com[]
                -
                -image:screen-thumbnail.png[height=32,link="screen.png"]
                -
                -== Foo image:foo.jpg[] ==
                -
                ---
                -footnote:[An example footnote.]
                -indexterm:[Tigers,Big cats]
                -
                -http://www.docbook.org/[DocBook.org]
                -include::chapt1.txt[tabsize=2]
                -mailto:srackham@gmail.com[]
                -
                -image:screen-thumbnail.png[height=32,link="screen.png"]
                ---
                -
                -|====
                -|
                -footnote:[An example footnote.]
                -indexterm:[Tigers,Big cats]
                -
                -http://www.docbook.org/[DocBook.org]
                -include::chapt1.txt[tabsize=2]
                -mailto:srackham@gmail.com[]
                -
                -image:screen-thumbnail.png[height=32,link="screen.png"]
                -|====
                -
                -----------------------------------------------------
                -
                -[
                -	["macro", [
                -		["function", "footnote"], ["punctuation", ":"],
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "An example footnote."],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "indexterm"], ["punctuation", ":"],
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "Tigers"],
                -			["punctuation", ","],
                -			["attr-value", "Big cats"],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "http"], ["punctuation", ":"],
                -		"//www.docbook.org/",
                -		["attributes", [
                -			["punctuation", "["],
                -			["attr-value", "DocBook.org"],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "include"], ["punctuation", "::"],
                -		"chapt1.txt",
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "tabsize"],
                -			["operator", "="],
                -			["attr-value", "2"],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "mailto"], ["punctuation", ":"],
                -		"srackham@gmail.com",
                -		["attributes", [
                -			["punctuation", "["], ["punctuation", "]"]
                -		]]
                -	]],
                -	["macro", [
                -		["function", "image"], ["punctuation", ":"],
                -		"screen-thumbnail.png",
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "height"],
                -			["operator", "="],
                -			["attr-value", "32"],
                -			["punctuation", ","],
                -			["variable", "link"],
                -			["operator", "="],
                -			["string", "\"screen.png\""],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -
                -	["title", [
                -		["punctuation", "=="],
                -		" Foo ",
                -		["macro", [
                -			["function", "image"], ["punctuation", ":"],
                -			"foo.jpg",
                -			["attributes", [
                -				["punctuation", "["], ["punctuation", "]"]
                -			]]
                -		]],
                -		["punctuation", "=="]
                -	]],
                -
                -	["other-block", [
                -		["punctuation", "--"],
                -
                -		["macro", [
                -			["function", "footnote"], ["punctuation", ":"],
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "An example footnote."],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "indexterm"], ["punctuation", ":"],
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "Tigers"],
                -				["punctuation", ","],
                -				["attr-value", "Big cats"],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "http"], ["punctuation", ":"],
                -			"//www.docbook.org/",
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "DocBook.org"],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "include"], ["punctuation", "::"],
                -			"chapt1.txt",
                -			["attributes", [
                -				["punctuation", "["],
                -				["variable", "tabsize"],
                -				["operator", "="],
                -				["attr-value", "2"],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "mailto"], ["punctuation", ":"],
                -			"srackham@gmail.com",
                -			["attributes", [
                -				["punctuation", "["], ["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "image"], ["punctuation", ":"],
                -			"screen-thumbnail.png",
                -			["attributes", [
                -				["punctuation", "["],
                -				["variable", "height"],
                -				["operator", "="],
                -				["attr-value", "32"],
                -				["punctuation", ","],
                -				["variable", "link"],
                -				["operator", "="],
                -				["string", "\"screen.png\""],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -
                -		["punctuation", "--"]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|===="],
                -		["punctuation", "|"],
                -
                -		["macro", [
                -			["function", "footnote"], ["punctuation", ":"],
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "An example footnote."],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "indexterm"], ["punctuation", ":"],
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "Tigers"],
                -				["punctuation", ","],
                -				["attr-value", "Big cats"],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "http"], ["punctuation", ":"],
                -			"//www.docbook.org/",
                -			["attributes", [
                -				["punctuation", "["],
                -				["attr-value", "DocBook.org"],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "include"], ["punctuation", "::"],
                -			"chapt1.txt",
                -			["attributes", [
                -				["punctuation", "["],
                -				["variable", "tabsize"],
                -				["operator", "="],
                -				["attr-value", "2"],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "mailto"], ["punctuation", ":"],
                -			"srackham@gmail.com",
                -			["attributes", [
                -				["punctuation", "["], ["punctuation", "]"]
                -			]]
                -		]],
                -		["macro", [
                -			["function", "image"], ["punctuation", ":"],
                -			"screen-thumbnail.png",
                -			["attributes", [
                -				["punctuation", "["],
                -				["variable", "height"],
                -				["operator", "="],
                -				["attr-value", "32"],
                -				["punctuation", ","],
                -				["variable", "link"],
                -				["operator", "="],
                -				["string", "\"screen.png\""],
                -				["punctuation", "]"]
                -			]]
                -		]],
                -
                -		["punctuation", "|===="]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for macros.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/other-block_feature.test b/node_modules/prismjs/tests/languages/asciidoc/other-block_feature.test
                deleted file mode 100644
                index fb33c20..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/other-block_feature.test
                +++ /dev/null
                @@ -1,45 +0,0 @@
                -****
                -Sidebar block <1>
                -****
                -
                -______
                -Quote block <2>
                -______
                -
                -========
                -Example block <3>
                -========
                -
                ---
                -Open block <4>
                ---
                -
                -----------------------------------------------------
                -
                -[
                -	["other-block", [
                -		["punctuation", "****"],
                -		"\r\nSidebar block <1>\r\n",
                -		["punctuation", "****"]
                -	]],
                -	["other-block", [
                -		["punctuation", "______"],
                -		"\r\nQuote block <2>\r\n",
                -		["punctuation", "______"]
                -	]],
                -	["other-block", [
                -		["punctuation", "========"],
                -		"\r\nExample block <3>\r\n",
                -		["punctuation", "========"]
                -	]],
                -	["other-block", [
                -		["punctuation", "--"],
                -		"\r\nOpen block <4>\r\n",
                -		["punctuation", "--"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for sidebar blocks, quote blocks, example blocks and open blocks.
                -Also checks that callouts are not highlighted.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/page-break_feature.test b/node_modules/prismjs/tests/languages/asciidoc/page-break_feature.test
                deleted file mode 100644
                index 010a590..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/page-break_feature.test
                +++ /dev/null
                @@ -1,14 +0,0 @@
                -<<<
                -
                -<<<<<<<<<<<<<
                -
                -----------------------------------------------------
                -
                -[
                -	["page-break", "<<<"],
                -	["page-break", "<<<<<<<<<<<<<"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for page breaks.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/passthrough-block_feature.test b/node_modules/prismjs/tests/languages/asciidoc/passthrough-block_feature.test
                deleted file mode 100644
                index a5bb08b..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/passthrough-block_feature.test
                +++ /dev/null
                @@ -1,29 +0,0 @@
                -++++
                -.Fo__o__bar *baz*
                -Fo(((o)))bar baz
                -* Foobar baz
                -include::addendum.txt[]
                -++++
                -
                -----------------------------------------------------
                -
                -[
                -	["passthrough-block", [
                -		["punctuation", "++++"],
                -		"\r\n.Fo__o__bar *baz*\r\nFo(((o)))bar baz\r\n* Foobar baz\r\n",
                -		["macro", [
                -			["function", "include"],
                -			["punctuation", "::"],
                -			"addendum.txt",
                -			["attributes", [
                -				["punctuation", "["], ["punctuation", "]"]
                -			]]
                -		]],
                -		["punctuation", "++++"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for passthrough blocks.
                -Also checks that nothing gets highlighted inside expect macros.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/replacement_feature.test b/node_modules/prismjs/tests/languages/asciidoc/replacement_feature.test
                deleted file mode 100644
                index ca27610..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/replacement_feature.test
                +++ /dev/null
                @@ -1,48 +0,0 @@
                -(C) (TM) (R)
                -
                -(C) (TM) (R)
                -============
                -
                -['(C) (TM) (R)']
                -
                ---
                -(C) (TM) (R)
                ---
                -
                -|======
                -| (C) (TM) (R)
                -|======
                -
                -----------------------------------------------------
                -
                -[
                -	["replacement", "(C)"], ["replacement", "(TM)"], ["replacement", "(R)"],
                -	["title", [
                -		["replacement", "(C)"], ["replacement", "(TM)"], ["replacement", "(R)"],
                -		["punctuation", "============"]
                -	]],
                -	["attributes", [
                -		["punctuation", "["],
                -		["interpreted", [
                -			["punctuation", "'"],
                -			["replacement", "(C)"], ["replacement", "(TM)"], ["replacement", "(R)"],
                -			["punctuation", "'"]
                -		]],
                -		["punctuation", "]"]
                -	]],
                -	["other-block", [
                -		["punctuation", "--"],
                -		["replacement", "(C)"], ["replacement", "(TM)"], ["replacement", "(R)"],
                -		["punctuation", "--"]
                -	]],
                -	["table", [
                -		["punctuation", "|======"],
                -		["punctuation", "|"],
                -		["replacement", "(C)"], ["replacement", "(TM)"], ["replacement", "(R)"],
                -		["punctuation", "|======"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for replacements.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/table_feature.test b/node_modules/prismjs/tests/languages/asciidoc/table_feature.test
                deleted file mode 100644
                index 0b4bd3c..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/table_feature.test
                +++ /dev/null
                @@ -1,61 +0,0 @@
                -|===
                -|1
                -|===
                -
                -|============================
                -|1 >s|2 |3 |4
                -^|5 2.2+^.^|6 .3+<.>m|7
                -2*^|8
                -|9 2+>|10
                -|============================
                -
                -|==============================================
                -|Normal cell
                -
                -|Cell with nested table
                -
                -!==============================================
                -!Nested table cell 1 !Nested table cell 2
                -!==============================================
                -
                -|==============================================
                -
                -----------------------------------------------------
                -
                -[
                -	["table", [
                -		["punctuation", "|==="],
                -		["punctuation", "|"], "1\r\n",
                -		["punctuation", "|==="]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|============================"],
                -		["punctuation", "|"], "1 ",
                -		["specifiers", ">s"], ["punctuation", "|"], "2 ",
                -		["punctuation", "|"], "3 ",
                -		["punctuation", "|"], "4\r\n",
                -		["specifiers", "^"], ["punctuation", "|"], "5 ",
                -		["specifiers", "2.2+^.^"], ["punctuation", "|"], "6 ",
                -		["specifiers", ".3+<.>m"], ["punctuation", "|"], "7\r\n",
                -		["specifiers", "2*^"], ["punctuation", "|"], "8\r\n",
                -		["punctuation", "|"], "9 ",
                -		["specifiers", "2+>"], ["punctuation", "|"], "10\r\n",
                -		["punctuation", "|============================"]
                -	]],
                -
                -	["table", [
                -		["punctuation", "|=============================================="],
                -		["punctuation", "|"], "Normal cell\r\n\r\n",
                -		["punctuation", "|"], "Cell with nested table\r\n\r\n",
                -		["punctuation", "!=============================================="],
                -		["punctuation", "!"], "Nested table cell 1 ",
                -		["punctuation", "!"], "Nested table cell 2\r\n",
                -		["punctuation", "!=============================================="],
                -		["punctuation", "|=============================================="]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for tables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/asciidoc/title_feature.test b/node_modules/prismjs/tests/languages/asciidoc/title_feature.test
                deleted file mode 100644
                index a9d4047..0000000
                --- a/node_modules/prismjs/tests/languages/asciidoc/title_feature.test
                +++ /dev/null
                @@ -1,80 +0,0 @@
                -Foobar
                -======
                -
                -Foobar
                -------
                -
                -Foobar
                -~~~~~~
                -
                -Foobar
                -^^^^^^
                -
                -Foo
                -+++
                -
                -= Foo bar baz =
                -== Foo bar baz
                -=== Foo bar baz ===
                -==== Foo bar baz
                -===== Foo bar baz =====
                -
                -.Foo bar baz
                -
                -----------------------------------------------------
                -
                -[
                -	["title", [
                -		"Foobar\r\n",
                -		["punctuation", "======"]
                -	]],
                -	["title", [
                -		"Foobar\r\n",
                -		["punctuation", "------"]
                -	]],
                -	["title", [
                -		"Foobar\r\n",
                -		["punctuation", "~~~~~~"]
                -	]],
                -	["title", [
                -		"Foobar\r\n",
                -		["punctuation", "^^^^^^"]
                -	]],
                -	["title", [
                -		"Foo\r\n",
                -		["punctuation", "+++"]
                -	]],
                -
                -	["title", [
                -		["punctuation", "="],
                -		" Foo bar baz ",
                -		["punctuation", "="]
                -	]],
                -	["title", [
                -		["punctuation", "=="],
                -		" Foo bar baz"
                -	]],
                -	["title", [
                -		["punctuation", "==="],
                -		" Foo bar baz ",
                -		["punctuation", "==="]
                -	]],
                -	["title", [
                -		["punctuation", "===="],
                -		" Foo bar baz"
                -	]],
                -	["title", [
                -		["punctuation", "====="],
                -		" Foo bar baz ",
                -		["punctuation", "====="]
                -	]],
                -
                -	["title", [
                -		["punctuation", "."],
                -		"Foo bar baz"
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for titles.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/aspnet/comment_feature.test b/node_modules/prismjs/tests/languages/aspnet/comment_feature.test
                deleted file mode 100644
                index da388e5..0000000
                --- a/node_modules/prismjs/tests/languages/aspnet/comment_feature.test
                +++ /dev/null
                @@ -1,16 +0,0 @@
                -<%----%>
                -<%--foo--%>
                -<%-- foo
                -bar --%>
                -
                -----------------------------------------------------
                -
                -[
                -	["asp comment", "<%----%>"],
                -	["asp comment", "<%--foo--%>"],
                -	["asp comment", "<%-- foo\r\nbar --%>"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/aspnet/page-directive_feature.test b/node_modules/prismjs/tests/languages/aspnet/page-directive_feature.test
                deleted file mode 100644
                index 3d79dae..0000000
                --- a/node_modules/prismjs/tests/languages/aspnet/page-directive_feature.test
                +++ /dev/null
                @@ -1,92 +0,0 @@
                -<%@Assembly foo="bar"%>
                -<% @Control foo="bar" %>
                -<%@ Implements%>
                -<%@Import%>
                -<%@Master%>
                -<%@MasterType%>
                -<%@OutputCache%>
                -<%@Page%>
                -<%@PreviousPageType%>
                -<%@Reference%>
                -<%@Register%>
                -
                -----------------------------------------------------
                -
                -[
                -	["page-directive tag", [
                -		["page-directive tag", "<%@Assembly"],
                -		["attr-name", [
                -			"foo"
                -		]],
                -		["attr-value", [
                -			["punctuation", "="],
                -			["punctuation", "\""],
                -			"bar",
                -			["punctuation", "\""]
                -		]],
                -		["page-directive tag", "%>"]
                -	]],
                -
                -	["page-directive tag", [
                -        ["page-directive tag", "<% @Control"],
                -        ["attr-name", [
                -            "foo"
                -        ]],
                -        ["attr-value", [
                -            ["punctuation", "="],
                -            ["punctuation", "\""],
                -            "bar",
                -            ["punctuation", "\""]
                -        ]],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@ Implements"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@Import"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@Master"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@MasterType"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@OutputCache"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@Page"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@PreviousPageType"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@Reference"],
                -        ["page-directive tag", "%>"]
                -    ]],
                -
                -    ["page-directive tag", [
                -        ["page-directive tag", "<%@Register"],
                -        ["page-directive tag", "%>"]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all page directives.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/boolean_feature.test b/node_modules/prismjs/tests/languages/autohotkey/boolean_feature.test
                deleted file mode 100644
                index 6d97d4b..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -true
                -false
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"],
                -	["boolean", "false"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/builtin_feature.test b/node_modules/prismjs/tests/languages/autohotkey/builtin_feature.test
                deleted file mode 100644
                index afbe8d3..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/builtin_feature.test
                +++ /dev/null
                @@ -1,147 +0,0 @@
                -abs
                -acos
                -asc
                -asin
                -atan
                -ceil
                -chr
                -class
                -cos
                -dllcall
                -exp
                -fileexist
                -Fileopen
                -floor
                -il_add
                -il_create
                -il_destroy
                -instr
                -substr
                -isfunc
                -islabel
                -IsObject
                -ln
                -log
                -lv_add
                -lv_delete
                -lv_deletecol
                -lv_getcount
                -lv_getnext
                -lv_gettext
                -lv_insert
                -lv_insertcol
                -lv_modify
                -lv_modifycol
                -lv_setimagelist
                -mod
                -onmessage
                -numget
                -numput
                -registercallback
                -regexmatch
                -regexreplace
                -round
                -sin
                -tan
                -sqrt
                -strlen
                -sb_seticon
                -sb_setparts
                -sb_settext
                -strsplit
                -tv_add
                -tv_delete
                -tv_getchild
                -tv_getcount
                -tv_getnext
                -tv_get
                -tv_getparent
                -tv_getprev
                -tv_getselection
                -tv_gettext
                -tv_modify
                -varsetcapacity
                -winactive
                -winexist
                -__New
                -__Call
                -__Get
                -__Set
                -
                -----------------------------------------------------
                -
                -[
                -	["builtin", "abs"],
                -	["builtin", "acos"],
                -	["builtin", "asc"],
                -	["builtin", "asin"],
                -	["builtin", "atan"],
                -	["builtin", "ceil"],
                -	["builtin", "chr"],
                -	["builtin", "class"],
                -	["builtin", "cos"],
                -	["builtin", "dllcall"],
                -	["builtin", "exp"],
                -	["builtin", "fileexist"],
                -	["builtin", "Fileopen"],
                -	["builtin", "floor"],
                -	["builtin", "il_add"],
                -	["builtin", "il_create"],
                -	["builtin", "il_destroy"],
                -	["builtin", "instr"],
                -	["builtin", "substr"],
                -	["builtin", "isfunc"],
                -	["builtin", "islabel"],
                -	["builtin", "IsObject"],
                -	["builtin", "ln"],
                -	["builtin", "log"],
                -	["builtin", "lv_add"],
                -	["builtin", "lv_delete"],
                -	["builtin", "lv_deletecol"],
                -	["builtin", "lv_getcount"],
                -	["builtin", "lv_getnext"],
                -	["builtin", "lv_gettext"],
                -	["builtin", "lv_insert"],
                -	["builtin", "lv_insertcol"],
                -	["builtin", "lv_modify"],
                -	["builtin", "lv_modifycol"],
                -	["builtin", "lv_setimagelist"],
                -	["builtin", "mod"],
                -	["builtin", "onmessage"],
                -	["builtin", "numget"],
                -	["builtin", "numput"],
                -	["builtin", "registercallback"],
                -	["builtin", "regexmatch"],
                -	["builtin", "regexreplace"],
                -	["builtin", "round"],
                -	["builtin", "sin"],
                -	["builtin", "tan"],
                -	["builtin", "sqrt"],
                -	["builtin", "strlen"],
                -	["builtin", "sb_seticon"],
                -	["builtin", "sb_setparts"],
                -	["builtin", "sb_settext"],
                -	["builtin", "strsplit"],
                -	["builtin", "tv_add"],
                -	["builtin", "tv_delete"],
                -	["builtin", "tv_getchild"],
                -	["builtin", "tv_getcount"],
                -	["builtin", "tv_getnext"],
                -	["builtin", "tv_get"],
                -	["builtin", "tv_getparent"],
                -	["builtin", "tv_getprev"],
                -	["builtin", "tv_getselection"],
                -	["builtin", "tv_gettext"],
                -	["builtin", "tv_modify"],
                -	["builtin", "varsetcapacity"],
                -	["builtin", "winactive"],
                -	["builtin", "winexist"],
                -	["builtin", "__New"],
                -	["builtin", "__Call"],
                -	["builtin", "__Get"],
                -	["builtin", "__Set"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all builtins.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/comment_feature.test b/node_modules/prismjs/tests/languages/autohotkey/comment_feature.test
                deleted file mode 100644
                index 5b00ce2..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -;foo
                -; bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", ";foo"],
                -	["comment", "; bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/constant_feature.test b/node_modules/prismjs/tests/languages/autohotkey/constant_feature.test
                deleted file mode 100644
                index ab11673..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/constant_feature.test
                +++ /dev/null
                @@ -1,275 +0,0 @@
                -a_ahkpath
                -a_ahkversion
                -a_appdata
                -a_appdatacommon
                -a_autotrim
                -a_batchlines
                -a_caretx
                -a_carety
                -a_computername
                -a_controldelay
                -a_cursor
                -a_dd
                -a_ddd
                -a_dddd
                -a_defaultmousespeed
                -a_desktop
                -a_desktopcommon
                -a_detecthiddentext
                -a_detecthiddenwindows
                -a_endchar
                -a_eventinfo
                -a_exitreason
                -a_formatfloat
                -a_formatinteger
                -a_gui
                -a_guievent
                -a_guicontrol
                -a_guicontrolevent
                -a_guiheight
                -a_guiwidth
                -a_guix
                -a_guiy
                -a_hour
                -a_iconfile
                -a_iconhidden
                -a_iconnumber
                -a_icontip
                -a_index
                -a_ipaddress1
                -a_ipaddress2
                -a_ipaddress3
                -a_ipaddress4
                -a_isadmin
                -a_iscompiled
                -a_iscritical
                -a_ispaused
                -a_issuspended
                -a_isunicode
                -a_keydelay
                -a_language
                -a_lasterror
                -a_linefile
                -a_linenumber
                -a_loopfield
                -a_loopfileattrib
                -a_loopfiledir
                -a_loopfileext
                -a_loopfilefullpath
                -a_loopfilelongpath
                -a_loopfilename
                -a_loopfileshortname
                -a_loopfileshortpath
                -a_loopfilesize
                -a_loopfilesizekb
                -a_loopfilesizemb
                -a_loopfiletimeaccessed
                -a_loopfiletimecreated
                -a_loopfiletimemodified
                -a_loopreadline
                -a_loopregkey
                -a_loopregname
                -a_loopregsubkey
                -a_loopregtimemodified
                -a_loopregtype
                -a_mday
                -a_min
                -a_mm
                -a_mmm
                -a_mmmm
                -a_mon
                -a_mousedelay
                -a_msec
                -a_mydocuments
                -a_now
                -a_nowutc
                -a_numbatchlines
                -a_ostype
                -a_osversion
                -a_priorhotkey
                -programfiles
                -a_programfiles
                -a_programs
                -a_programscommon
                -a_screenheight
                -a_screenwidth
                -a_scriptdir
                -a_scriptfullpath
                -a_scriptname
                -a_sec
                -a_space
                -a_startmenu
                -a_startmenucommon
                -a_startup
                -a_startupcommon
                -a_stringcasesense
                -a_tab
                -a_temp
                -a_thisfunc
                -a_thishotkey
                -a_thislabel
                -a_thismenu
                -a_thismenuitem
                -a_thismenuitempos
                -a_tickcount
                -a_timeidle
                -a_timeidlephysical
                -a_timesincepriorhotkey
                -a_timesincethishotkey
                -a_titlematchmode
                -a_titlematchmodespeed
                -a_username
                -a_wday
                -a_windelay
                -a_windir
                -a_workingdir
                -a_yday
                -a_year
                -a_yweek
                -a_yyyy
                -clipboard
                -clipboardall
                -comspec
                -errorlevel
                -
                -----------------------------------------------------
                -
                -[
                -	["constant", "a_ahkpath"],
                -	["constant", "a_ahkversion"],
                -	["constant", "a_appdata"],
                -	["constant", "a_appdatacommon"],
                -	["constant", "a_autotrim"],
                -	["constant", "a_batchlines"],
                -	["constant", "a_caretx"],
                -	["constant", "a_carety"],
                -	["constant", "a_computername"],
                -	["constant", "a_controldelay"],
                -	["constant", "a_cursor"],
                -	["constant", "a_dd"],
                -	["constant", "a_ddd"],
                -	["constant", "a_dddd"],
                -	["constant", "a_defaultmousespeed"],
                -	["constant", "a_desktop"],
                -	["constant", "a_desktopcommon"],
                -	["constant", "a_detecthiddentext"],
                -	["constant", "a_detecthiddenwindows"],
                -	["constant", "a_endchar"],
                -	["constant", "a_eventinfo"],
                -	["constant", "a_exitreason"],
                -	["constant", "a_formatfloat"],
                -	["constant", "a_formatinteger"],
                -	["constant", "a_gui"],
                -	["constant", "a_guievent"],
                -	["constant", "a_guicontrol"],
                -	["constant", "a_guicontrolevent"],
                -	["constant", "a_guiheight"],
                -	["constant", "a_guiwidth"],
                -	["constant", "a_guix"],
                -	["constant", "a_guiy"],
                -	["constant", "a_hour"],
                -	["constant", "a_iconfile"],
                -	["constant", "a_iconhidden"],
                -	["constant", "a_iconnumber"],
                -	["constant", "a_icontip"],
                -	["constant", "a_index"],
                -	["constant", "a_ipaddress1"],
                -	["constant", "a_ipaddress2"],
                -	["constant", "a_ipaddress3"],
                -	["constant", "a_ipaddress4"],
                -	["constant", "a_isadmin"],
                -	["constant", "a_iscompiled"],
                -	["constant", "a_iscritical"],
                -	["constant", "a_ispaused"],
                -	["constant", "a_issuspended"],
                -	["constant", "a_isunicode"],
                -	["constant", "a_keydelay"],
                -	["constant", "a_language"],
                -	["constant", "a_lasterror"],
                -	["constant", "a_linefile"],
                -	["constant", "a_linenumber"],
                -	["constant", "a_loopfield"],
                -	["constant", "a_loopfileattrib"],
                -	["constant", "a_loopfiledir"],
                -	["constant", "a_loopfileext"],
                -	["constant", "a_loopfilefullpath"],
                -	["constant", "a_loopfilelongpath"],
                -	["constant", "a_loopfilename"],
                -	["constant", "a_loopfileshortname"],
                -	["constant", "a_loopfileshortpath"],
                -	["constant", "a_loopfilesize"],
                -	["constant", "a_loopfilesizekb"],
                -	["constant", "a_loopfilesizemb"],
                -	["constant", "a_loopfiletimeaccessed"],
                -	["constant", "a_loopfiletimecreated"],
                -	["constant", "a_loopfiletimemodified"],
                -	["constant", "a_loopreadline"],
                -	["constant", "a_loopregkey"],
                -	["constant", "a_loopregname"],
                -	["constant", "a_loopregsubkey"],
                -	["constant", "a_loopregtimemodified"],
                -	["constant", "a_loopregtype"],
                -	["constant", "a_mday"],
                -	["constant", "a_min"],
                -	["constant", "a_mm"],
                -	["constant", "a_mmm"],
                -	["constant", "a_mmmm"],
                -	["constant", "a_mon"],
                -	["constant", "a_mousedelay"],
                -	["constant", "a_msec"],
                -	["constant", "a_mydocuments"],
                -	["constant", "a_now"],
                -	["constant", "a_nowutc"],
                -	["constant", "a_numbatchlines"],
                -	["constant", "a_ostype"],
                -	["constant", "a_osversion"],
                -	["constant", "a_priorhotkey"],
                -	["constant", "programfiles"],
                -	["constant", "a_programfiles"],
                -	["constant", "a_programs"],
                -	["constant", "a_programscommon"],
                -	["constant", "a_screenheight"],
                -	["constant", "a_screenwidth"],
                -	["constant", "a_scriptdir"],
                -	["constant", "a_scriptfullpath"],
                -	["constant", "a_scriptname"],
                -	["constant", "a_sec"],
                -	["constant", "a_space"],
                -	["constant", "a_startmenu"],
                -	["constant", "a_startmenucommon"],
                -	["constant", "a_startup"],
                -	["constant", "a_startupcommon"],
                -	["constant", "a_stringcasesense"],
                -	["constant", "a_tab"],
                -	["constant", "a_temp"],
                -	["constant", "a_thisfunc"],
                -	["constant", "a_thishotkey"],
                -	["constant", "a_thislabel"],
                -	["constant", "a_thismenu"],
                -	["constant", "a_thismenuitem"],
                -	["constant", "a_thismenuitempos"],
                -	["constant", "a_tickcount"],
                -	["constant", "a_timeidle"],
                -	["constant", "a_timeidlephysical"],
                -	["constant", "a_timesincepriorhotkey"],
                -	["constant", "a_timesincethishotkey"],
                -	["constant", "a_titlematchmode"],
                -	["constant", "a_titlematchmodespeed"],
                -	["constant", "a_username"],
                -	["constant", "a_wday"],
                -	["constant", "a_windelay"],
                -	["constant", "a_windir"],
                -	["constant", "a_workingdir"],
                -	["constant", "a_yday"],
                -	["constant", "a_year"],
                -	["constant", "a_yweek"],
                -	["constant", "a_yyyy"],
                -	["constant", "clipboard"],
                -	["constant", "clipboardall"],
                -	["constant", "comspec"],
                -	["constant", "errorlevel"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all constants.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/function_feature.test b/node_modules/prismjs/tests/languages/autohotkey/function_feature.test
                deleted file mode 100644
                index f38a186..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/function_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -foo(
                -foo_bar(
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "foo"],
                -	["punctuation", "("],
                -	["function", "foo_bar"],
                -	["punctuation", "("]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/important_feature.test b/node_modules/prismjs/tests/languages/autohotkey/important_feature.test
                deleted file mode 100644
                index aa9cbeb..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/important_feature.test
                +++ /dev/null
                @@ -1,67 +0,0 @@
                -#AllowSameLineComments
                -#ClipboardTimeout
                -#CommentFlag
                -#ErrorStdOut
                -#EscapeChar
                -#HotkeyInterval
                -#HotkeyModifierTimeout
                -#Hotstring
                -#IfWinActive
                -#IfWinExist
                -#IfWinNotActive
                -#IfWinNotExist
                -#Include
                -#IncludeAgain
                -#InstallKeybdHook
                -#InstallMouseHook
                -#KeyHistory
                -#LTrim
                -#MaxHotkeysPerInterval
                -#MaxMem
                -#MaxThreads
                -#MaxThreadsBuffer
                -#MaxThreadsPerHotkey
                -#NoEnv
                -#NoTrayIcon
                -#Persistent
                -#SingleInstance
                -#UseHook
                -#WinActivateForce
                -
                -----------------------------------------------------
                -
                -[
                -	["important", "#AllowSameLineComments"],
                -	["important", "#ClipboardTimeout"],
                -	["important", "#CommentFlag"],
                -	["important", "#ErrorStdOut"],
                -	["important", "#EscapeChar"],
                -	["important", "#HotkeyInterval"],
                -	["important", "#HotkeyModifierTimeout"],
                -	["important", "#Hotstring"],
                -	["important", "#IfWinActive"],
                -	["important", "#IfWinExist"],
                -	["important", "#IfWinNotActive"],
                -	["important", "#IfWinNotExist"],
                -	["important", "#Include"],
                -	["important", "#IncludeAgain"],
                -	["important", "#InstallKeybdHook"],
                -	["important", "#InstallMouseHook"],
                -	["important", "#KeyHistory"],
                -	["important", "#LTrim"],
                -	["important", "#MaxHotkeysPerInterval"],
                -	["important", "#MaxMem"],
                -	["important", "#MaxThreads"],
                -	["important", "#MaxThreadsBuffer"],
                -	["important", "#MaxThreadsPerHotkey"],
                -	["important", "#NoEnv"],
                -	["important", "#NoTrayIcon"],
                -	["important", "#Persistent"],
                -	["important", "#SingleInstance"],
                -	["important", "#UseHook"],
                -	["important", "#WinActivateForce"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all important keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/keyword_feature.test b/node_modules/prismjs/tests/languages/autohotkey/keyword_feature.test
                deleted file mode 100644
                index 9167135..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/keyword_feature.test
                +++ /dev/null
                @@ -1,537 +0,0 @@
                -Abort
                -AboveNormal
                -Add
                -ahk_class
                -ahk_group
                -ahk_id
                -ahk_pid
                -All
                -Alnum
                -Alpha
                -AltSubmit
                -AltTab
                -AltTabAndMenu
                -AltTabMenu
                -AltTabMenuDismiss
                -AlwaysOnTop
                -AutoSize
                -Background
                -BackgroundTrans
                -BelowNormal
                -between
                -BitAnd
                -BitNot
                -BitOr
                -BitShiftLeft
                -BitShiftRight
                -BitXOr
                -Bold
                -Border
                -Button
                -ByRef
                -Checkbox
                -Checked
                -CheckedGray
                -Choose
                -ChooseString
                -Close
                -Color
                -ComboBox
                -Contains
                -ControlList
                -Count
                -Date
                -DateTime
                -Days
                -DDL
                -Default
                -DeleteAll
                -Delimiter
                -Deref
                -Destroy
                -Digit
                -Disable
                -Disabled
                -DropDownList
                -Edit
                -Eject
                -Else
                -Enable
                -Enabled
                -Error
                -Exist
                -Expand
                -ExStyle
                -FileSystem
                -First
                -Flash
                -Float
                -FloatFast
                -Focus
                -Font
                -for
                -global
                -Grid
                -Group
                -GroupBox
                -GuiClose
                -GuiContextMenu
                -GuiDropFiles
                -GuiEscape
                -GuiSize
                -Hdr
                -Hidden
                -Hide
                -High
                -HKCC
                -HKCR
                -HKCU
                -HKEY_CLASSES_ROOT
                -HKEY_CURRENT_CONFIG
                -HKEY_CURRENT_USER
                -HKEY_LOCAL_MACHINE
                -HKEY_USERS
                -HKLM
                -HKU
                -Hours
                -HScroll
                -Icon
                -IconSmall
                -ID
                -IDLast
                -If
                -IfEqual
                -IfExist
                -IfGreater
                -IfGreaterOrEqual
                -IfInString
                -IfLess
                -IfLessOrEqual
                -IfMsgBox
                -IfNotEqual
                -IfNotExist
                -IfNotInString
                -IfWinActive
                -IfWinExist
                -IfWinNotActive
                -IfWinNotExist
                -Ignore
                -ImageList
                -in
                -Integer
                -IntegerFast
                -Interrupt
                -is
                -italic
                -Join
                -Label
                -LastFound
                -LastFoundExist
                -Limit
                -Lines
                -List
                -ListBox
                -ListView
                -local
                -Lock
                -Logoff
                -Low
                -Lower
                -Lowercase
                -MainWindow
                -Margin
                -Maximize
                -MaximizeBox
                -MaxSize
                -Minimize
                -MinimizeBox
                -MinMax
                -MinSize
                -Minutes
                -MonthCal
                -Mouse
                -Move
                -Multi
                -NA
                -No
                -NoActivate
                -NoDefault
                -NoHide
                -NoIcon
                -NoMainWindow
                -norm
                -Normal
                -NoSort
                -NoSortHdr
                -NoStandard
                -Not
                -NoTab
                -NoTimers
                -Number
                -Off
                -Ok
                -On
                -OwnDialogs
                -Owner
                -Parse
                -Password
                -Picture
                -Pixel
                -Pos
                -Pow
                -Priority
                -ProcessName
                -Radio
                -Range
                -Read
                -ReadOnly
                -Realtime
                -Redraw
                -REG_BINARY
                -REG_DWORD
                -REG_EXPAND_SZ
                -REG_MULTI_SZ
                -REG_SZ
                -Region
                -Relative
                -Rename
                -Report
                -Resize
                -Restore
                -Retry
                -RGB
                -Screen
                -Seconds
                -Section
                -Serial
                -SetLabel
                -ShiftAltTab
                -Show
                -Single
                -Slider
                -SortDesc
                -Standard
                -static
                -Status
                -StatusBar
                -StatusCD
                -strike
                -Style
                -Submit
                -SysMenu
                -Tab2
                -TabStop
                -Text
                -Theme
                -Tile
                -ToggleCheck
                -ToggleEnable
                -ToolWindow
                -Top
                -Topmost
                -TransColor
                -Transparent
                -Tray
                -TreeView
                -TryAgain
                -Type
                -UnCheck
                -underline
                -Unicode
                -Unlock
                -UpDown
                -Upper
                -Uppercase
                -UseErrorLevel
                -Vis
                -VisFirst
                -Visible
                -VScroll
                -Wait
                -WaitClose
                -WantCtrlA
                -WantF2
                -WantReturn
                -While
                -Wrap
                -Xdigit
                -xm
                -xp
                -xs
                -Yes
                -ym
                -yp
                -ys
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "Abort"],
                -	["keyword", "AboveNormal"],
                -	["keyword", "Add"],
                -	["keyword", "ahk_class"],
                -	["keyword", "ahk_group"],
                -	["keyword", "ahk_id"],
                -	["keyword", "ahk_pid"],
                -	["keyword", "All"],
                -	["keyword", "Alnum"],
                -	["keyword", "Alpha"],
                -	["keyword", "AltSubmit"],
                -	["keyword", "AltTab"],
                -	["keyword", "AltTabAndMenu"],
                -	["keyword", "AltTabMenu"],
                -	["keyword", "AltTabMenuDismiss"],
                -	["keyword", "AlwaysOnTop"],
                -	["keyword", "AutoSize"],
                -	["keyword", "Background"],
                -	["keyword", "BackgroundTrans"],
                -	["keyword", "BelowNormal"],
                -	["keyword", "between"],
                -	["keyword", "BitAnd"],
                -	["keyword", "BitNot"],
                -	["keyword", "BitOr"],
                -	["keyword", "BitShiftLeft"],
                -	["keyword", "BitShiftRight"],
                -	["keyword", "BitXOr"],
                -	["keyword", "Bold"],
                -	["keyword", "Border"],
                -	["keyword", "Button"],
                -	["keyword", "ByRef"],
                -	["keyword", "Checkbox"],
                -	["keyword", "Checked"],
                -	["keyword", "CheckedGray"],
                -	["keyword", "Choose"],
                -	["keyword", "ChooseString"],
                -	["keyword", "Close"],
                -	["keyword", "Color"],
                -	["keyword", "ComboBox"],
                -	["keyword", "Contains"],
                -	["keyword", "ControlList"],
                -	["keyword", "Count"],
                -	["keyword", "Date"],
                -	["keyword", "DateTime"],
                -	["keyword", "Days"],
                -	["keyword", "DDL"],
                -	["keyword", "Default"],
                -	["keyword", "DeleteAll"],
                -	["keyword", "Delimiter"],
                -	["keyword", "Deref"],
                -	["keyword", "Destroy"],
                -	["keyword", "Digit"],
                -	["keyword", "Disable"],
                -	["keyword", "Disabled"],
                -	["keyword", "DropDownList"],
                -	["keyword", "Edit"],
                -	["keyword", "Eject"],
                -	["keyword", "Else"],
                -	["keyword", "Enable"],
                -	["keyword", "Enabled"],
                -	["keyword", "Error"],
                -	["keyword", "Exist"],
                -	["keyword", "Expand"],
                -	["keyword", "ExStyle"],
                -	["keyword", "FileSystem"],
                -	["keyword", "First"],
                -	["keyword", "Flash"],
                -	["keyword", "Float"],
                -	["keyword", "FloatFast"],
                -	["keyword", "Focus"],
                -	["keyword", "Font"],
                -	["keyword", "for"],
                -	["keyword", "global"],
                -	["keyword", "Grid"],
                -	["keyword", "Group"],
                -	["keyword", "GroupBox"],
                -	["keyword", "GuiClose"],
                -	["keyword", "GuiContextMenu"],
                -	["keyword", "GuiDropFiles"],
                -	["keyword", "GuiEscape"],
                -	["keyword", "GuiSize"],
                -	["keyword", "Hdr"],
                -	["keyword", "Hidden"],
                -	["keyword", "Hide"],
                -	["keyword", "High"],
                -	["keyword", "HKCC"],
                -	["keyword", "HKCR"],
                -	["keyword", "HKCU"],
                -	["keyword", "HKEY_CLASSES_ROOT"],
                -	["keyword", "HKEY_CURRENT_CONFIG"],
                -	["keyword", "HKEY_CURRENT_USER"],
                -	["keyword", "HKEY_LOCAL_MACHINE"],
                -	["keyword", "HKEY_USERS"],
                -	["keyword", "HKLM"],
                -	["keyword", "HKU"],
                -	["keyword", "Hours"],
                -	["keyword", "HScroll"],
                -	["keyword", "Icon"],
                -	["keyword", "IconSmall"],
                -	["keyword", "ID"],
                -	["keyword", "IDLast"],
                -	["keyword", "If"],
                -	["keyword", "IfEqual"],
                -	["keyword", "IfExist"],
                -	["keyword", "IfGreater"],
                -	["keyword", "IfGreaterOrEqual"],
                -	["keyword", "IfInString"],
                -	["keyword", "IfLess"],
                -	["keyword", "IfLessOrEqual"],
                -	["keyword", "IfMsgBox"],
                -	["keyword", "IfNotEqual"],
                -	["keyword", "IfNotExist"],
                -	["keyword", "IfNotInString"],
                -	["keyword", "IfWinActive"],
                -	["keyword", "IfWinExist"],
                -	["keyword", "IfWinNotActive"],
                -	["keyword", "IfWinNotExist"],
                -	["keyword", "Ignore"],
                -	["keyword", "ImageList"],
                -	["keyword", "in"],
                -	["keyword", "Integer"],
                -	["keyword", "IntegerFast"],
                -	["keyword", "Interrupt"],
                -	["keyword", "is"],
                -	["keyword", "italic"],
                -	["keyword", "Join"],
                -	["keyword", "Label"],
                -	["keyword", "LastFound"],
                -	["keyword", "LastFoundExist"],
                -	["keyword", "Limit"],
                -	["keyword", "Lines"],
                -	["keyword", "List"],
                -	["keyword", "ListBox"],
                -	["keyword", "ListView"],
                -	["keyword", "local"],
                -	["keyword", "Lock"],
                -	["keyword", "Logoff"],
                -	["keyword", "Low"],
                -	["keyword", "Lower"],
                -	["keyword", "Lowercase"],
                -	["keyword", "MainWindow"],
                -	["keyword", "Margin"],
                -	["keyword", "Maximize"],
                -	["keyword", "MaximizeBox"],
                -	["keyword", "MaxSize"],
                -	["keyword", "Minimize"],
                -	["keyword", "MinimizeBox"],
                -	["keyword", "MinMax"],
                -	["keyword", "MinSize"],
                -	["keyword", "Minutes"],
                -	["keyword", "MonthCal"],
                -	["keyword", "Mouse"],
                -	["keyword", "Move"],
                -	["keyword", "Multi"],
                -	["keyword", "NA"],
                -	["keyword", "No"],
                -	["keyword", "NoActivate"],
                -	["keyword", "NoDefault"],
                -	["keyword", "NoHide"],
                -	["keyword", "NoIcon"],
                -	["keyword", "NoMainWindow"],
                -	["keyword", "norm"],
                -	["keyword", "Normal"],
                -	["keyword", "NoSort"],
                -	["keyword", "NoSortHdr"],
                -	["keyword", "NoStandard"],
                -	["keyword", "Not"],
                -	["keyword", "NoTab"],
                -	["keyword", "NoTimers"],
                -	["keyword", "Number"],
                -	["keyword", "Off"],
                -	["keyword", "Ok"],
                -	["keyword", "On"],
                -	["keyword", "OwnDialogs"],
                -	["keyword", "Owner"],
                -	["keyword", "Parse"],
                -	["keyword", "Password"],
                -	["keyword", "Picture"],
                -	["keyword", "Pixel"],
                -	["keyword", "Pos"],
                -	["keyword", "Pow"],
                -	["keyword", "Priority"],
                -	["keyword", "ProcessName"],
                -	["keyword", "Radio"],
                -	["keyword", "Range"],
                -	["keyword", "Read"],
                -	["keyword", "ReadOnly"],
                -	["keyword", "Realtime"],
                -	["keyword", "Redraw"],
                -	["keyword", "REG_BINARY"],
                -	["keyword", "REG_DWORD"],
                -	["keyword", "REG_EXPAND_SZ"],
                -	["keyword", "REG_MULTI_SZ"],
                -	["keyword", "REG_SZ"],
                -	["keyword", "Region"],
                -	["keyword", "Relative"],
                -	["keyword", "Rename"],
                -	["keyword", "Report"],
                -	["keyword", "Resize"],
                -	["keyword", "Restore"],
                -	["keyword", "Retry"],
                -	["keyword", "RGB"],
                -	["keyword", "Screen"],
                -	["keyword", "Seconds"],
                -	["keyword", "Section"],
                -	["keyword", "Serial"],
                -	["keyword", "SetLabel"],
                -	["keyword", "ShiftAltTab"],
                -	["keyword", "Show"],
                -	["keyword", "Single"],
                -	["keyword", "Slider"],
                -	["keyword", "SortDesc"],
                -	["keyword", "Standard"],
                -	["keyword", "static"],
                -	["keyword", "Status"],
                -	["keyword", "StatusBar"],
                -	["keyword", "StatusCD"],
                -	["keyword", "strike"],
                -	["keyword", "Style"],
                -	["keyword", "Submit"],
                -	["keyword", "SysMenu"],
                -	["keyword", "Tab2"],
                -	["keyword", "TabStop"],
                -	["keyword", "Text"],
                -	["keyword", "Theme"],
                -	["keyword", "Tile"],
                -	["keyword", "ToggleCheck"],
                -	["keyword", "ToggleEnable"],
                -	["keyword", "ToolWindow"],
                -	["keyword", "Top"],
                -	["keyword", "Topmost"],
                -	["keyword", "TransColor"],
                -	["keyword", "Transparent"],
                -	["keyword", "Tray"],
                -	["keyword", "TreeView"],
                -	["keyword", "TryAgain"],
                -	["keyword", "Type"],
                -	["keyword", "UnCheck"],
                -	["keyword", "underline"],
                -	["keyword", "Unicode"],
                -	["keyword", "Unlock"],
                -	["keyword", "UpDown"],
                -	["keyword", "Upper"],
                -	["keyword", "Uppercase"],
                -	["keyword", "UseErrorLevel"],
                -	["keyword", "Vis"],
                -	["keyword", "VisFirst"],
                -	["keyword", "Visible"],
                -	["keyword", "VScroll"],
                -	["keyword", "Wait"],
                -	["keyword", "WaitClose"],
                -	["keyword", "WantCtrlA"],
                -	["keyword", "WantF2"],
                -	["keyword", "WantReturn"],
                -	["keyword", "While"],
                -	["keyword", "Wrap"],
                -	["keyword", "Xdigit"],
                -	["keyword", "xm"],
                -	["keyword", "xp"],
                -	["keyword", "xs"],
                -	["keyword", "Yes"],
                -	["keyword", "ym"],
                -	["keyword", "yp"],
                -	["keyword", "ys"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/number_feature.test b/node_modules/prismjs/tests/languages/autohotkey/number_feature.test
                deleted file mode 100644
                index 35a493a..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/number_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -42
                -3.14159
                -3.2e10
                -2.9E-7
                -0xbabe
                -0xBABE
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "3.2e10"],
                -	["number", "2.9E-7"],
                -	["number", "0xbabe"],
                -	["number", "0xBABE"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/operator_feature.test b/node_modules/prismjs/tests/languages/autohotkey/operator_feature.test
                deleted file mode 100644
                index ec9e23e..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/operator_feature.test
                +++ /dev/null
                @@ -1,33 +0,0 @@
                -+ - * /
                -= ? & |
                -< >
                -++ -- ** //
                -! ~ ^ .
                -<< >> <= >=
                -~= == <> !=
                -NOT AND && OR ||
                -:= += -= *=
                -/= //= .=
                -|= &= ^=
                ->>= <<=
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"],
                -	["operator", "="], ["operator", "?"], ["operator", "&"], ["operator", "|"],
                -	["operator", "<"], ["operator", ">"],
                -	["operator", "++"], ["operator", "--"], ["operator", "**"], ["operator", "//"],
                -	["operator", "!"], ["operator", "~"], ["operator", "^"], ["operator", "."],
                -	["operator", "<<"], ["operator", ">>"], ["operator", "<="], ["operator", ">="],
                -	["operator", "~="], ["operator", "=="], ["operator", "<>"], ["operator", "!="],
                -	["operator", "NOT"], ["operator", "AND"], ["operator", "&&"], ["operator", "OR"], ["operator", "||"],
                -	["operator", ":="], ["operator", "+="], ["operator", "-="], ["operator", "*="],
                -	["operator", "/="], ["operator", "//="], ["operator", ".="],
                -	["operator", "|="], ["operator", "&="], ["operator", "^="],
                -	["operator", ">>="], ["operator", "<<="]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/selector_feature.test b/node_modules/prismjs/tests/languages/autohotkey/selector_feature.test
                deleted file mode 100644
                index 29210c2..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/selector_feature.test
                +++ /dev/null
                @@ -1,381 +0,0 @@
                -AutoTrim
                -BlockInput
                -Break
                -Click
                -ClipWait
                -Continue
                -Control
                -ControlClick
                -ControlFocus
                -ControlGet
                -ControlGetFocus
                -ControlGetPos
                -ControlGetText
                -ControlMove
                -ControlSend
                -ControlSendRaw
                -ControlSetText
                -CoordMode
                -Critical
                -DetectHiddenText
                -DetectHiddenWindows
                -Drive
                -DriveGet
                -DriveSpaceFree
                -EnvAdd
                -EnvDiv
                -EnvGet
                -EnvMult
                -EnvSet
                -EnvSub
                -EnvUpdate
                -Exit
                -ExitApp
                -FileAppend
                -FileCopy
                -FileCopyDir
                -FileCreateDir
                -FileCreateShortcut
                -FileDelete
                -FileEncoding
                -FileGetAttrib
                -FileGetShortcut
                -FileGetSize
                -FileGetTime
                -FileGetVersion
                -FileInstall
                -FileMove
                -FileMoveDir
                -FileRead
                -FileReadLine
                -FileRecycle
                -FileRecycleEmpty
                -FileRemoveDir
                -FileSelectFile
                -FileSelectFolder
                -FileSetAttrib
                -FileSetTime
                -FormatTime
                -GetKeyState
                -Gosub
                -Goto
                -GroupActivate
                -GroupAdd
                -GroupClose
                -GroupDeactivate
                -Gui
                -GuiControl
                -GuiControlGet
                -Hotkey
                -ImageSearch
                -IniDelete
                -IniRead
                -IniWrite
                -Input
                -InputBox
                -KeyWait
                -ListHotkeys
                -ListLines
                -ListVars
                -Loop
                -Menu
                -MouseClick
                -MouseClickDrag
                -MouseGetPos
                -MouseMove
                -MsgBox
                -OnExit
                -OutputDebug
                -Pause
                -PixelGetColor
                -PixelSearch
                -PostMessage
                -Process
                -Progress
                -Random
                -RegDelete
                -RegRead
                -RegWrite
                -Reload
                -Repeat
                -Return
                -Run
                -RunAs
                -RunWait
                -Send
                -SendEvent
                -SendInput
                -SendMessage
                -SendMode
                -SendPlay
                -SendRaw
                -SetBatchLines
                -SetCapslockState
                -SetControlDelay
                -SetDefaultMouseSpeed
                -SetEnv
                -SetFormat
                -SetKeyDelay
                -SetMouseDelay
                -SetNumlockState
                -SetScrollLockState
                -SetStoreCapslockMode
                -SetTimer
                -SetTitleMatchMode
                -SetWinDelay
                -SetWorkingDir
                -Shutdown
                -Sleep
                -Sort
                -SoundBeep
                -SoundGet
                -SoundGetWaveVolume
                -SoundPlay
                -SoundSet
                -SoundSetWaveVolume
                -SplashImage
                -SplashTextOff
                -SplashTextOn
                -SplitPath
                -StatusBarGetText
                -StatusBarWait
                -StringCaseSense
                -StringGetPos
                -StringLeft
                -StringLen
                -StringLower
                -StringMid
                -StringReplace
                -StringRight
                -StringSplit
                -StringTrimLeft
                -StringTrimRight
                -StringUpper
                -Suspend
                -SysGet
                -Thread
                -ToolTip
                -Transform
                -TrayTip
                -URLDownloadToFile
                -WinActivate
                -WinActivateBottom
                -WinClose
                -WinGet
                -WinGetActiveStats
                -WinGetActiveTitle
                -WinGetClass
                -WinGetPos
                -WinGetText
                -WinGetTitle
                -WinHide
                -WinKill
                -WinMaximize
                -WinMenuSelectItem
                -WinMinimize
                -WinMinimizeAll
                -WinMinimizeAllUndo
                -WinMove
                -WinRestore
                -WinSet
                -WinSetTitle
                -WinShow
                -WinWait
                -WinWaitActive
                -WinWaitClose
                -WinWaitNotActive
                -
                -----------------------------------------------------
                -
                -[
                -	["selector", "AutoTrim"],
                -	["selector", "BlockInput"],
                -	["selector", "Break"],
                -	["selector", "Click"],
                -	["selector", "ClipWait"],
                -	["selector", "Continue"],
                -	["selector", "Control"],
                -	["selector", "ControlClick"],
                -	["selector", "ControlFocus"],
                -	["selector", "ControlGet"],
                -	["selector", "ControlGetFocus"],
                -	["selector", "ControlGetPos"],
                -	["selector", "ControlGetText"],
                -	["selector", "ControlMove"],
                -	["selector", "ControlSend"],
                -	["selector", "ControlSendRaw"],
                -	["selector", "ControlSetText"],
                -	["selector", "CoordMode"],
                -	["selector", "Critical"],
                -	["selector", "DetectHiddenText"],
                -	["selector", "DetectHiddenWindows"],
                -	["selector", "Drive"],
                -	["selector", "DriveGet"],
                -	["selector", "DriveSpaceFree"],
                -	["selector", "EnvAdd"],
                -	["selector", "EnvDiv"],
                -	["selector", "EnvGet"],
                -	["selector", "EnvMult"],
                -	["selector", "EnvSet"],
                -	["selector", "EnvSub"],
                -	["selector", "EnvUpdate"],
                -	["selector", "Exit"],
                -	["selector", "ExitApp"],
                -	["selector", "FileAppend"],
                -	["selector", "FileCopy"],
                -	["selector", "FileCopyDir"],
                -	["selector", "FileCreateDir"],
                -	["selector", "FileCreateShortcut"],
                -	["selector", "FileDelete"],
                -	["selector", "FileEncoding"],
                -	["selector", "FileGetAttrib"],
                -	["selector", "FileGetShortcut"],
                -	["selector", "FileGetSize"],
                -	["selector", "FileGetTime"],
                -	["selector", "FileGetVersion"],
                -	["selector", "FileInstall"],
                -	["selector", "FileMove"],
                -	["selector", "FileMoveDir"],
                -	["selector", "FileRead"],
                -	["selector", "FileReadLine"],
                -	["selector", "FileRecycle"],
                -	["selector", "FileRecycleEmpty"],
                -	["selector", "FileRemoveDir"],
                -	["selector", "FileSelectFile"],
                -	["selector", "FileSelectFolder"],
                -	["selector", "FileSetAttrib"],
                -	["selector", "FileSetTime"],
                -	["selector", "FormatTime"],
                -	["selector", "GetKeyState"],
                -	["selector", "Gosub"],
                -	["selector", "Goto"],
                -	["selector", "GroupActivate"],
                -	["selector", "GroupAdd"],
                -	["selector", "GroupClose"],
                -	["selector", "GroupDeactivate"],
                -	["selector", "Gui"],
                -	["selector", "GuiControl"],
                -	["selector", "GuiControlGet"],
                -	["selector", "Hotkey"],
                -	["selector", "ImageSearch"],
                -	["selector", "IniDelete"],
                -	["selector", "IniRead"],
                -	["selector", "IniWrite"],
                -	["selector", "Input"],
                -	["selector", "InputBox"],
                -	["selector", "KeyWait"],
                -	["selector", "ListHotkeys"],
                -	["selector", "ListLines"],
                -	["selector", "ListVars"],
                -	["selector", "Loop"],
                -	["selector", "Menu"],
                -	["selector", "MouseClick"],
                -	["selector", "MouseClickDrag"],
                -	["selector", "MouseGetPos"],
                -	["selector", "MouseMove"],
                -	["selector", "MsgBox"],
                -	["selector", "OnExit"],
                -	["selector", "OutputDebug"],
                -	["selector", "Pause"],
                -	["selector", "PixelGetColor"],
                -	["selector", "PixelSearch"],
                -	["selector", "PostMessage"],
                -	["selector", "Process"],
                -	["selector", "Progress"],
                -	["selector", "Random"],
                -	["selector", "RegDelete"],
                -	["selector", "RegRead"],
                -	["selector", "RegWrite"],
                -	["selector", "Reload"],
                -	["selector", "Repeat"],
                -	["selector", "Return"],
                -	["selector", "Run"],
                -	["selector", "RunAs"],
                -	["selector", "RunWait"],
                -	["selector", "Send"],
                -	["selector", "SendEvent"],
                -	["selector", "SendInput"],
                -	["selector", "SendMessage"],
                -	["selector", "SendMode"],
                -	["selector", "SendPlay"],
                -	["selector", "SendRaw"],
                -	["selector", "SetBatchLines"],
                -	["selector", "SetCapslockState"],
                -	["selector", "SetControlDelay"],
                -	["selector", "SetDefaultMouseSpeed"],
                -	["selector", "SetEnv"],
                -	["selector", "SetFormat"],
                -	["selector", "SetKeyDelay"],
                -	["selector", "SetMouseDelay"],
                -	["selector", "SetNumlockState"],
                -	["selector", "SetScrollLockState"],
                -	["selector", "SetStoreCapslockMode"],
                -	["selector", "SetTimer"],
                -	["selector", "SetTitleMatchMode"],
                -	["selector", "SetWinDelay"],
                -	["selector", "SetWorkingDir"],
                -	["selector", "Shutdown"],
                -	["selector", "Sleep"],
                -	["selector", "Sort"],
                -	["selector", "SoundBeep"],
                -	["selector", "SoundGet"],
                -	["selector", "SoundGetWaveVolume"],
                -	["selector", "SoundPlay"],
                -	["selector", "SoundSet"],
                -	["selector", "SoundSetWaveVolume"],
                -	["selector", "SplashImage"],
                -	["selector", "SplashTextOff"],
                -	["selector", "SplashTextOn"],
                -	["selector", "SplitPath"],
                -	["selector", "StatusBarGetText"],
                -	["selector", "StatusBarWait"],
                -	["selector", "StringCaseSense"],
                -	["selector", "StringGetPos"],
                -	["selector", "StringLeft"],
                -	["selector", "StringLen"],
                -	["selector", "StringLower"],
                -	["selector", "StringMid"],
                -	["selector", "StringReplace"],
                -	["selector", "StringRight"],
                -	["selector", "StringSplit"],
                -	["selector", "StringTrimLeft"],
                -	["selector", "StringTrimRight"],
                -	["selector", "StringUpper"],
                -	["selector", "Suspend"],
                -	["selector", "SysGet"],
                -	["selector", "Thread"],
                -	["selector", "ToolTip"],
                -	["selector", "Transform"],
                -	["selector", "TrayTip"],
                -	["selector", "URLDownloadToFile"],
                -	["selector", "WinActivate"],
                -	["selector", "WinActivateBottom"],
                -	["selector", "WinClose"],
                -	["selector", "WinGet"],
                -	["selector", "WinGetActiveStats"],
                -	["selector", "WinGetActiveTitle"],
                -	["selector", "WinGetClass"],
                -	["selector", "WinGetPos"],
                -	["selector", "WinGetText"],
                -	["selector", "WinGetTitle"],
                -	["selector", "WinHide"],
                -	["selector", "WinKill"],
                -	["selector", "WinMaximize"],
                -	["selector", "WinMenuSelectItem"],
                -	["selector", "WinMinimize"],
                -	["selector", "WinMinimizeAll"],
                -	["selector", "WinMinimizeAllUndo"],
                -	["selector", "WinMove"],
                -	["selector", "WinRestore"],
                -	["selector", "WinSet"],
                -	["selector", "WinSetTitle"],
                -	["selector", "WinShow"],
                -	["selector", "WinWait"],
                -	["selector", "WinWaitActive"],
                -	["selector", "WinWaitClose"],
                -	["selector", "WinWaitNotActive"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all selectors.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/string_feature.test b/node_modules/prismjs/tests/languages/autohotkey/string_feature.test
                deleted file mode 100644
                index 76168fd..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/string_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -""
                -"foo"
                -"foo""bar"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"foo\""],
                -	["string", "\"foo\"\"bar\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/symbol_feature.test b/node_modules/prismjs/tests/languages/autohotkey/symbol_feature.test
                deleted file mode 100644
                index 2c47777..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/symbol_feature.test
                +++ /dev/null
                @@ -1,347 +0,0 @@
                -alt
                -altdown
                -altup
                -appskey
                -backspace
                -browser_back
                -browser_favorites
                -browser_forward
                -browser_home
                -browser_refresh
                -browser_search
                -browser_stop
                -bs
                -capslock
                -ctrl
                -ctrlbreak
                -ctrldown
                -ctrlup
                -del
                -delete
                -down
                -end
                -enter
                -esc
                -escape
                -f1
                -f10
                -f11
                -f12
                -f13
                -f14
                -f15
                -f16
                -f17
                -f18
                -f19
                -f2
                -f20
                -f21
                -f22
                -f23
                -f24
                -f3
                -f4
                -f5
                -f6
                -f7
                -f8
                -f9
                -home
                -ins
                -insert
                -joy1
                -joy10
                -joy11
                -joy12
                -joy13
                -joy14
                -joy15
                -joy16
                -joy17
                -joy18
                -joy19
                -joy2
                -joy20
                -joy21
                -joy22
                -joy23
                -joy24
                -joy25
                -joy26
                -joy27
                -joy28
                -joy29
                -joy3
                -joy30
                -joy31
                -joy32
                -joy4
                -joy5
                -joy6
                -joy7
                -joy8
                -joy9
                -joyaxes
                -joybuttons
                -joyinfo
                -joyname
                -joypov
                -joyr
                -joyu
                -joyv
                -joyx
                -joyy
                -joyz
                -lalt
                -launch_app1
                -launch_app2
                -launch_mail
                -launch_media
                -lbutton
                -lcontrol
                -lctrl
                -left
                -lshift
                -lwin
                -lwindown
                -lwinup
                -mbutton
                -media_next
                -media_play_pause
                -media_prev
                -media_stop
                -numlock
                -numpad0
                -numpad1
                -numpad2
                -numpad3
                -numpad4
                -numpad5
                -numpad6
                -numpad7
                -numpad8
                -numpad9
                -numpadadd
                -numpadclear
                -numpaddel
                -numpaddiv
                -numpaddot
                -numpaddown
                -numpadend
                -numpadenter
                -numpadhome
                -numpadins
                -numpadleft
                -numpadmult
                -numpadpgdn
                -numpadpgup
                -numpadright
                -numpadsub
                -numpadup
                -pgdn
                -pgup
                -printscreen
                -ralt
                -rbutton
                -rcontrol
                -rctrl
                -right
                -rshift
                -rwin
                -rwindown
                -rwinup
                -scrolllock
                -shift
                -shiftdown
                -shiftup
                -space
                -tab
                -up
                -volume_down
                -volume_mute
                -volume_up
                -wheeldown
                -wheelleft
                -wheelright
                -wheelup
                -xbutton1
                -xbutton2
                -
                -----------------------------------------------------
                -
                -[
                -	["symbol", "alt"],
                -	["symbol", "altdown"],
                -	["symbol", "altup"],
                -	["symbol", "appskey"],
                -	["symbol", "backspace"],
                -	["symbol", "browser_back"],
                -	["symbol", "browser_favorites"],
                -	["symbol", "browser_forward"],
                -	["symbol", "browser_home"],
                -	["symbol", "browser_refresh"],
                -	["symbol", "browser_search"],
                -	["symbol", "browser_stop"],
                -	["symbol", "bs"],
                -	["symbol", "capslock"],
                -	["symbol", "ctrl"],
                -	["symbol", "ctrlbreak"],
                -	["symbol", "ctrldown"],
                -	["symbol", "ctrlup"],
                -	["symbol", "del"],
                -	["symbol", "delete"],
                -	["symbol", "down"],
                -	["symbol", "end"],
                -	["symbol", "enter"],
                -	["symbol", "esc"],
                -	["symbol", "escape"],
                -	["symbol", "f1"],
                -	["symbol", "f10"],
                -	["symbol", "f11"],
                -	["symbol", "f12"],
                -	["symbol", "f13"],
                -	["symbol", "f14"],
                -	["symbol", "f15"],
                -	["symbol", "f16"],
                -	["symbol", "f17"],
                -	["symbol", "f18"],
                -	["symbol", "f19"],
                -	["symbol", "f2"],
                -	["symbol", "f20"],
                -	["symbol", "f21"],
                -	["symbol", "f22"],
                -	["symbol", "f23"],
                -	["symbol", "f24"],
                -	["symbol", "f3"],
                -	["symbol", "f4"],
                -	["symbol", "f5"],
                -	["symbol", "f6"],
                -	["symbol", "f7"],
                -	["symbol", "f8"],
                -	["symbol", "f9"],
                -	["symbol", "home"],
                -	["symbol", "ins"],
                -	["symbol", "insert"],
                -	["symbol", "joy1"],
                -	["symbol", "joy10"],
                -	["symbol", "joy11"],
                -	["symbol", "joy12"],
                -	["symbol", "joy13"],
                -	["symbol", "joy14"],
                -	["symbol", "joy15"],
                -	["symbol", "joy16"],
                -	["symbol", "joy17"],
                -	["symbol", "joy18"],
                -	["symbol", "joy19"],
                -	["symbol", "joy2"],
                -	["symbol", "joy20"],
                -	["symbol", "joy21"],
                -	["symbol", "joy22"],
                -	["symbol", "joy23"],
                -	["symbol", "joy24"],
                -	["symbol", "joy25"],
                -	["symbol", "joy26"],
                -	["symbol", "joy27"],
                -	["symbol", "joy28"],
                -	["symbol", "joy29"],
                -	["symbol", "joy3"],
                -	["symbol", "joy30"],
                -	["symbol", "joy31"],
                -	["symbol", "joy32"],
                -	["symbol", "joy4"],
                -	["symbol", "joy5"],
                -	["symbol", "joy6"],
                -	["symbol", "joy7"],
                -	["symbol", "joy8"],
                -	["symbol", "joy9"],
                -	["symbol", "joyaxes"],
                -	["symbol", "joybuttons"],
                -	["symbol", "joyinfo"],
                -	["symbol", "joyname"],
                -	["symbol", "joypov"],
                -	["symbol", "joyr"],
                -	["symbol", "joyu"],
                -	["symbol", "joyv"],
                -	["symbol", "joyx"],
                -	["symbol", "joyy"],
                -	["symbol", "joyz"],
                -	["symbol", "lalt"],
                -	["symbol", "launch_app1"],
                -	["symbol", "launch_app2"],
                -	["symbol", "launch_mail"],
                -	["symbol", "launch_media"],
                -	["symbol", "lbutton"],
                -	["symbol", "lcontrol"],
                -	["symbol", "lctrl"],
                -	["symbol", "left"],
                -	["symbol", "lshift"],
                -	["symbol", "lwin"],
                -	["symbol", "lwindown"],
                -	["symbol", "lwinup"],
                -	["symbol", "mbutton"],
                -	["symbol", "media_next"],
                -	["symbol", "media_play_pause"],
                -	["symbol", "media_prev"],
                -	["symbol", "media_stop"],
                -	["symbol", "numlock"],
                -	["symbol", "numpad0"],
                -	["symbol", "numpad1"],
                -	["symbol", "numpad2"],
                -	["symbol", "numpad3"],
                -	["symbol", "numpad4"],
                -	["symbol", "numpad5"],
                -	["symbol", "numpad6"],
                -	["symbol", "numpad7"],
                -	["symbol", "numpad8"],
                -	["symbol", "numpad9"],
                -	["symbol", "numpadadd"],
                -	["symbol", "numpadclear"],
                -	["symbol", "numpaddel"],
                -	["symbol", "numpaddiv"],
                -	["symbol", "numpaddot"],
                -	["symbol", "numpaddown"],
                -	["symbol", "numpadend"],
                -	["symbol", "numpadenter"],
                -	["symbol", "numpadhome"],
                -	["symbol", "numpadins"],
                -	["symbol", "numpadleft"],
                -	["symbol", "numpadmult"],
                -	["symbol", "numpadpgdn"],
                -	["symbol", "numpadpgup"],
                -	["symbol", "numpadright"],
                -	["symbol", "numpadsub"],
                -	["symbol", "numpadup"],
                -	["symbol", "pgdn"],
                -	["symbol", "pgup"],
                -	["symbol", "printscreen"],
                -	["symbol", "ralt"],
                -	["symbol", "rbutton"],
                -	["symbol", "rcontrol"],
                -	["symbol", "rctrl"],
                -	["symbol", "right"],
                -	["symbol", "rshift"],
                -	["symbol", "rwin"],
                -	["symbol", "rwindown"],
                -	["symbol", "rwinup"],
                -	["symbol", "scrolllock"],
                -	["symbol", "shift"],
                -	["symbol", "shiftdown"],
                -	["symbol", "shiftup"],
                -	["symbol", "space"],
                -	["symbol", "tab"],
                -	["symbol", "up"],
                -	["symbol", "volume_down"],
                -	["symbol", "volume_mute"],
                -	["symbol", "volume_up"],
                -	["symbol", "wheeldown"],
                -	["symbol", "wheelleft"],
                -	["symbol", "wheelright"],
                -	["symbol", "wheelup"],
                -	["symbol", "xbutton1"],
                -	["symbol", "xbutton2"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all symbols.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/tag_feature.test b/node_modules/prismjs/tests/languages/autohotkey/tag_feature.test
                deleted file mode 100644
                index 0ca9258..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/tag_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -foo:
                -foo_bar:
                -
                -----------------------------------------------------
                -
                -[
                -	["tag", "foo"],
                -	["punctuation", ":"],
                -	["tag", "foo_bar"],
                -	["punctuation", ":"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for tags (labels).
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autohotkey/variable_feature.test b/node_modules/prismjs/tests/languages/autohotkey/variable_feature.test
                deleted file mode 100644
                index 5ed8a4c..0000000
                --- a/node_modules/prismjs/tests/languages/autohotkey/variable_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -%foo%
                -%foo_bar%
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "%foo%"],
                -	["variable", "%foo_bar%"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/boolean_feature.test b/node_modules/prismjs/tests/languages/autoit/boolean_feature.test
                deleted file mode 100644
                index 5750be0..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -True
                -False
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "True"],
                -	["boolean", "False"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/comment_feature.test b/node_modules/prismjs/tests/languages/autoit/comment_feature.test
                deleted file mode 100644
                index d88708f..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/comment_feature.test
                +++ /dev/null
                @@ -1,33 +0,0 @@
                -;
                -; foo
                -#comments-start
                -	foobar()
                -#comments-end
                -#cs
                -	foobar()
                -#ce
                -;#comments-start
                -	foobar()
                -;#comments-end
                -;#cs
                -	foobar()
                -;#ce
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", ";"],
                -	["comment", "; foo"],
                -	["comment", "#comments-start\r\n\tfoobar()\r\n#comments-end"],
                -	["comment", "#cs\r\n\tfoobar()\r\n#ce"],
                -	["comment", ";#comments-start"],
                -	["function", "foobar"], ["punctuation", "("], ["punctuation", ")"],
                -	["comment", ";#comments-end"],
                -	["comment", ";#cs"],
                -	["function", "foobar"], ["punctuation", "("], ["punctuation", ")"],
                -	["comment", ";#ce"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/directive_feature.test b/node_modules/prismjs/tests/languages/autoit/directive_feature.test
                deleted file mode 100644
                index 9219f70..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/directive_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -#NoTrayIcon
                -#OnAutoItStartRegister "Example"
                -
                -----------------------------------------------------
                -
                -[
                -	["directive", "#NoTrayIcon"],
                -	["directive", "#OnAutoItStartRegister"], ["string", ["\"Example\""]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for directives.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/function_feature.test b/node_modules/prismjs/tests/languages/autoit/function_feature.test
                deleted file mode 100644
                index 13c82dd..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/function_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -foo()
                -foo_bar()
                -foo_bar_42()
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "foo"], ["punctuation", "("], ["punctuation", ")"],
                -	["function", "foo_bar"], ["punctuation", "("], ["punctuation", ")"],
                -	["function", "foo_bar_42"], ["punctuation", "("], ["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/keyword_feature.test b/node_modules/prismjs/tests/languages/autoit/keyword_feature.test
                deleted file mode 100644
                index 2db276c..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/keyword_feature.test
                +++ /dev/null
                @@ -1,83 +0,0 @@
                -Case
                -Const
                -ContinueCase
                -ContinueLoop
                -Default
                -Dim
                -Do
                -Else
                -ElseIf
                -EndFunc
                -EndIf
                -EndSelect
                -EndSwitch
                -EndWith
                -Enum
                -Exit
                -ExitLoop
                -For
                -Func
                -Global
                -If
                -In
                -Local
                -Next
                -Null
                -ReDim
                -Select
                -Static
                -Step
                -Switch
                -Then
                -To
                -Until
                -Volatile
                -WEnd
                -While
                -With
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "Case"],
                -	["keyword", "Const"],
                -	["keyword", "ContinueCase"],
                -	["keyword", "ContinueLoop"],
                -	["keyword", "Default"],
                -	["keyword", "Dim"],
                -	["keyword", "Do"],
                -	["keyword", "Else"],
                -	["keyword", "ElseIf"],
                -	["keyword", "EndFunc"],
                -	["keyword", "EndIf"],
                -	["keyword", "EndSelect"],
                -	["keyword", "EndSwitch"],
                -	["keyword", "EndWith"],
                -	["keyword", "Enum"],
                -	["keyword", "Exit"],
                -	["keyword", "ExitLoop"],
                -	["keyword", "For"],
                -	["keyword", "Func"],
                -	["keyword", "Global"],
                -	["keyword", "If"],
                -	["keyword", "In"],
                -	["keyword", "Local"],
                -	["keyword", "Next"],
                -	["keyword", "Null"],
                -	["keyword", "ReDim"],
                -	["keyword", "Select"],
                -	["keyword", "Static"],
                -	["keyword", "Step"],
                -	["keyword", "Switch"],
                -	["keyword", "Then"],
                -	["keyword", "To"],
                -	["keyword", "Until"],
                -	["keyword", "Volatile"],
                -	["keyword", "WEnd"],
                -	["keyword", "While"],
                -	["keyword", "With"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/number_feature.test b/node_modules/prismjs/tests/languages/autoit/number_feature.test
                deleted file mode 100644
                index 5c6ac5b..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/number_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -42
                -3.14159
                -4e8
                -3.5E-9
                -0.7e+12
                -0xBadFace
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "4e8"],
                -	["number", "3.5E-9"],
                -	["number", "0.7e+12"],
                -	["number", "0xBadFace"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/operator_feature.test b/node_modules/prismjs/tests/languages/autoit/operator_feature.test
                deleted file mode 100644
                index 65f4ce4..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/operator_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -< <= <>
                -> >=
                -+ += - -=
                -* *= / /=
                -& &=
                -? ^
                -And Or Not
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "<"], ["operator", "<="], ["operator", "<>"],
                -	["operator", ">"], ["operator", ">="],
                -	["operator", "+"], ["operator", "+="], ["operator", "-"], ["operator", "-="],
                -	["operator", "*"], ["operator", "*="], ["operator", "/"], ["operator", "/="],
                -	["operator", "&"], ["operator", "&="],
                -	["operator", "?"], ["operator", "^"],
                -	["operator", "And"], ["operator", "Or"], ["operator", "Not"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/string_feature.test b/node_modules/prismjs/tests/languages/autoit/string_feature.test
                deleted file mode 100644
                index 5ae4bb7..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/string_feature.test
                +++ /dev/null
                @@ -1,37 +0,0 @@
                -""
                -"foo""bar"
                -"foo %foo% bar $bar$ baz @baz@"
                -''
                -'foo''bar'
                -'foo %foo% bar $bar$ baz @baz@'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", ["\"\""]],
                -	["string", ["\"foo\"\"bar\""]],
                -	["string", [
                -		"\"foo ",
                -		["variable", "%foo%"],
                -		" bar ",
                -		["variable", "$bar$"],
                -		" baz ",
                -		["variable", "@baz@"],
                -		"\""
                -	]],
                -	["string", ["''"]],
                -	["string", ["'foo''bar'"]],
                -	["string", [
                -		"'foo ",
                -		["variable", "%foo%"],
                -		" bar ",
                -		["variable", "$bar$"],
                -		" baz ",
                -		["variable", "@baz@"],
                -		"'"
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings and interpolation.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/url_feature.test b/node_modules/prismjs/tests/languages/autoit/url_feature.test
                deleted file mode 100644
                index 1f6d3cd..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/url_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -#include 
                -#include "foo.au3"
                -
                -----------------------------------------------------
                -
                -[
                -	["directive", "#include"],
                -	["url", ""],
                -	["directive", "#include"],
                -	["url", "\"foo.au3\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for files in includes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/autoit/variable_feature.test b/node_modules/prismjs/tests/languages/autoit/variable_feature.test
                deleted file mode 100644
                index e36ffe3..0000000
                --- a/node_modules/prismjs/tests/languages/autoit/variable_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -$foo
                -$foo_bar_42
                -@ComputerName
                -@CPUArch
                -@TAB
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "$foo"],
                -	["variable", "$foo_bar_42"],
                -	["variable", "@ComputerName"],
                -	["variable", "@CPUArch"],
                -	["variable", "@TAB"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables and macros.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/arithmetic_environment_feature.test b/node_modules/prismjs/tests/languages/bash/arithmetic_environment_feature.test
                deleted file mode 100644
                index a9c5663..0000000
                --- a/node_modules/prismjs/tests/languages/bash/arithmetic_environment_feature.test
                +++ /dev/null
                @@ -1,53 +0,0 @@
                -(( 4 + 5 ))
                -$((5 * 7))
                -"foo $((5 * 7)) bar"
                -for (( NUM=1 ; NUM<=1000 ; NUM++ ))
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", [
                -		["punctuation", "(("],
                -		["number", "4"],
                -		["operator", "+"],
                -		["number", "5"],
                -		["punctuation", "))"]
                -	]],
                -	["variable", [
                -		["variable", "$(("],
                -		["number", "5"],
                -		["operator", "*"],
                -		["number", "7"],
                -		["variable", "))"]
                -	]],
                -	["string", [
                -		"\"foo ",
                -		["variable", [
                -			["variable", "$(("],
                -			["number", "5"],
                -			["operator", "*"],
                -			["number", "7"],
                -			["variable", "))"]
                -		]],
                -		" bar\""
                -	]],
                -	["keyword", "for"],
                -	["variable", [
                -		["punctuation", "(("],
                -		" NUM",
                -		["operator", "="],
                -		["number", "1"],
                -		["punctuation", ";"],
                -		" NUM",
                -		["operator", "<="],
                -		["number", "1000"],
                -		["punctuation", ";"],
                -		" NUM",
                -		["operator", "++"],
                -		["punctuation", "))"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks arithmetic environments
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/command_substitution_feature.test b/node_modules/prismjs/tests/languages/bash/command_substitution_feature.test
                deleted file mode 100644
                index f849829..0000000
                --- a/node_modules/prismjs/tests/languages/bash/command_substitution_feature.test
                +++ /dev/null
                @@ -1,34 +0,0 @@
                -$(echo foo)
                -`echo foo`
                -"$(echo foo) bar"
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", [
                -		["variable", "$("],
                -		["keyword", "echo"], 
                -		" foo",
                -		["variable", ")"]
                -	]],
                -	["variable", [
                -		["variable", "`"],
                -		["keyword", "echo"], 
                -		" foo",
                -		["variable", "`"]
                -	]],
                -	["string", [
                -		"\"",
                -		["variable", [
                -			["variable", "$("],
                -			["keyword", "echo"], 
                -			" foo",
                -			["variable", ")"]
                -		]],
                -		" bar\""
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for command substitution.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/comment_feature.test b/node_modules/prismjs/tests/languages/bash/comment_feature.test
                deleted file mode 100644
                index 5824909..0000000
                --- a/node_modules/prismjs/tests/languages/bash/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -#foo
                -# bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#foo"],
                -	["comment", "# bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/function_feature.test b/node_modules/prismjs/tests/languages/bash/function_feature.test
                deleted file mode 100644
                index cb0def2..0000000
                --- a/node_modules/prismjs/tests/languages/bash/function_feature.test
                +++ /dev/null
                @@ -1,101 +0,0 @@
                -alias apropos apt-get aptitude aspell
                -awk basename bash bc bg
                -builtin bzip2 cal cat cd
                -cfdisk chgrp chmod chown chroot
                -chkconfig cksum clear cmp comm
                -command cp cron crontab csplit
                -cut date dc dd ddrescue
                -df diff diff3 dig dir dircolors
                -dirname dirs dmesg du
                -egrep eject enable env ethtool
                -eval exec expand expect
                -export expr fdformat fdisk
                -fg fgrep file find fmt
                -fold format free fsck ftp
                -fuser gawk getopts git grep
                -groupadd groupdel groupmod groups
                -gzip hash head help hg history
                -hostname htop iconv id ifconfig
                -ifdown ifup import install jobs
                -join kill killall less link ln
                -locate logname logout look lpc lpr
                -lprint lprintd lprintq lprm ls
                -lsof make man mkdir mkfifo
                -mkisofs mknod more most mount
                -mtools mtr mv mmv nano netstat
                -nice nl nohup notify-send nslookup
                -open op passwd paste pathchk ping
                -pkill popd pr printcap printenv
                -printf ps pushd pv pwd quota
                -quotacheck quotactl ram rar rcp
                -read readarray readonly reboot
                -rename renice remsync rev rm
                -rmdir rsync screen scp sdiff sed
                -seq service sftp shift
                -shopt shutdown sleep slocate
                -sort source split ssh stat strace
                -su sudo sum suspend sync tail tar
                -tee test time timeout times
                -touch top traceroute trap tr
                -tsort tty type ulimit umask
                -umount unalias uname unexpand uniq
                -units unrar unshar uptime
                -useradd userdel usermod users uuencode
                -uudecode v vdir vi vmstat wait watch
                -wc wget whereis which who whoami write
                -xargs xdg-open yes zip
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "alias"], ["function", "apropos"], ["function", "apt-get"], ["function", "aptitude"], ["function", "aspell"],
                -	["function", "awk"], ["function", "basename"], ["function", "bash"], ["function", "bc"], ["function", "bg"],
                -	["function", "builtin"], ["function", "bzip2"], ["function", "cal"], ["function", "cat"], ["function", "cd"],
                -	["function", "cfdisk"], ["function", "chgrp"], ["function", "chmod"], ["function", "chown"], ["function", "chroot"],
                -	["function", "chkconfig"], ["function", "cksum"], ["function", "clear"], ["function", "cmp"], ["function", "comm"],
                -	["function", "command"], ["function", "cp"], ["function", "cron"], ["function", "crontab"], ["function", "csplit"],
                -	["function", "cut"], ["function", "date"], ["function", "dc"], ["function", "dd"], ["function", "ddrescue"],
                -	["function", "df"], ["function", "diff"], ["function", "diff3"], ["function", "dig"], ["function", "dir"], ["function", "dircolors"],
                -	["function", "dirname"], ["function", "dirs"], ["function", "dmesg"], ["function", "du"],
                -	["function", "egrep"], ["function", "eject"], ["function", "enable"], ["function", "env"], ["function", "ethtool"],
                -	["function", "eval"], ["function", "exec"], ["function", "expand"], ["function", "expect"],
                -	["function", "export"], ["function", "expr"], ["function", "fdformat"], ["function", "fdisk"],
                -	["function", "fg"], ["function", "fgrep"], ["function", "file"], ["function", "find"], ["function", "fmt"],
                -	["function", "fold"], ["function", "format"], ["function", "free"], ["function", "fsck"], ["function", "ftp"],
                -	["function", "fuser"], ["function", "gawk"], ["function", "getopts"], ["function", "git"], ["function", "grep"],
                -	["function", "groupadd"], ["function", "groupdel"], ["function", "groupmod"], ["function", "groups"],
                -	["function", "gzip"], ["function", "hash"], ["function", "head"], ["function", "help"], ["function", "hg"], ["function", "history"],
                -	["function", "hostname"], ["function", "htop"], ["function", "iconv"], ["function", "id"], ["function", "ifconfig"],
                -	["function", "ifdown"], ["function", "ifup"], ["function", "import"], ["function", "install"], ["function", "jobs"],
                -	["function", "join"], ["function", "kill"], ["function", "killall"], ["function", "less"], ["function", "link"], ["function", "ln"],
                -	["function", "locate"], ["function", "logname"], ["function", "logout"], ["function", "look"], ["function", "lpc"], ["function", "lpr"],
                -	["function", "lprint"], ["function", "lprintd"], ["function", "lprintq"], ["function", "lprm"], ["function", "ls"],
                -	["function", "lsof"], ["function", "make"], ["function", "man"], ["function", "mkdir"], ["function", "mkfifo"],
                -	["function", "mkisofs"], ["function", "mknod"], ["function", "more"], ["function", "most"], ["function", "mount"],
                -	["function", "mtools"], ["function", "mtr"], ["function", "mv"], ["function", "mmv"], ["function", "nano"], ["function", "netstat"],
                -	["function", "nice"], ["function", "nl"], ["function", "nohup"], ["function", "notify-send"], ["function", "nslookup"],
                -	["function", "open"], ["function", "op"], ["function", "passwd"], ["function", "paste"], ["function", "pathchk"], ["function", "ping"],
                -	["function", "pkill"], ["function", "popd"], ["function", "pr"], ["function", "printcap"], ["function", "printenv"],
                -	["function", "printf"], ["function", "ps"], ["function", "pushd"], ["function", "pv"], ["function", "pwd"], ["function", "quota"],
                -	["function", "quotacheck"], ["function", "quotactl"], ["function", "ram"], ["function", "rar"], ["function", "rcp"],
                -	["function", "read"], ["function", "readarray"], ["function", "readonly"], ["function", "reboot"],
                -	["function", "rename"], ["function", "renice"], ["function", "remsync"], ["function", "rev"], ["function", "rm"],
                -	["function", "rmdir"], ["function", "rsync"], ["function", "screen"], ["function", "scp"], ["function", "sdiff"], ["function", "sed"],
                -	["function", "seq"], ["function", "service"], ["function", "sftp"], ["function", "shift"],
                -	["function", "shopt"], ["function", "shutdown"], ["function", "sleep"], ["function", "slocate"],
                -	["function", "sort"], ["function", "source"], ["function", "split"], ["function", "ssh"], ["function", "stat"], ["function", "strace"],
                -	["function", "su"], ["function", "sudo"], ["function", "sum"], ["function", "suspend"], ["function", "sync"], ["function", "tail"], ["function", "tar"],
                -	["function", "tee"], ["function", "test"], ["function", "time"], ["function", "timeout"], ["function", "times"],
                -	["function", "touch"], ["function", "top"], ["function", "traceroute"], ["function", "trap"], ["function", "tr"],
                -	["function", "tsort"], ["function", "tty"], ["function", "type"], ["function", "ulimit"], ["function", "umask"],
                -	["function", "umount"], ["function", "unalias"], ["function", "uname"], ["function", "unexpand"], ["function", "uniq"],
                -	["function", "units"], ["function", "unrar"], ["function", "unshar"], ["function", "uptime"],
                -	["function", "useradd"], ["function", "userdel"], ["function", "usermod"], ["function", "users"], ["function", "uuencode"],
                -	["function", "uudecode"], ["function", "v"], ["function", "vdir"], ["function", "vi"], ["function", "vmstat"], ["function", "wait"], ["function", "watch"],
                -	["function", "wc"], ["function", "wget"], ["function", "whereis"], ["function", "which"], ["function", "who"], ["function", "whoami"], ["function", "write"],
                -	["function", "xargs"], ["function", "xdg-open"], ["function", "yes"], ["function", "zip"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/keyword_feature.test b/node_modules/prismjs/tests/languages/bash/keyword_feature.test
                deleted file mode 100644
                index b3bacf5..0000000
                --- a/node_modules/prismjs/tests/languages/bash/keyword_feature.test
                +++ /dev/null
                @@ -1,20 +0,0 @@
                -if then else elif fi
                -for break continue while
                -in case function select
                -do done until echo exit
                -return set declare
                -. :
                -----------------------------------------------------
                -
                -[
                -	["keyword", "if"], ["keyword", "then"], ["keyword", "else"], ["keyword", "elif"], ["keyword", "fi"],
                -	["keyword", "for"], ["keyword", "break"], ["keyword", "continue"], ["keyword", "while"],
                -	["keyword", "in"], ["keyword", "case"], ["keyword", "function"], ["keyword", "select"],
                -	["keyword", "do"], ["keyword", "done"], ["keyword", "until"], ["keyword", "echo"], ["keyword", "exit"],
                -	["keyword", "return"], ["keyword", "set"], ["keyword", "declare"],
                -	["keyword", "."], ["keyword", ":"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/shebang_feature.test b/node_modules/prismjs/tests/languages/bash/shebang_feature.test
                deleted file mode 100644
                index c41860d..0000000
                --- a/node_modules/prismjs/tests/languages/bash/shebang_feature.test
                +++ /dev/null
                @@ -1,11 +0,0 @@
                -#!/bin/bash
                -
                -----------------------------------------------------
                -
                -[
                -	["shebang", "#!/bin/bash"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for shebang.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/string_feature.test b/node_modules/prismjs/tests/languages/bash/string_feature.test
                deleted file mode 100644
                index fd2a303..0000000
                --- a/node_modules/prismjs/tests/languages/bash/string_feature.test
                +++ /dev/null
                @@ -1,67 +0,0 @@
                -""
                -''
                -"foo"
                -'foo'
                -"foo
                -bar"
                -'foo
                -bar'
                -"'foo'"
                -'"bar"'
                -"$@"
                -"${foo}"
                -<< STRING_END
                -foo
                -bar
                -STRING_END
                -<<   EOF
                -foo $@
                -bar
                -EOF
                -<< 'EOF'
                -'single quoted string'
                -"double quoted string"
                -EOF
                -<< "EOF"
                -foo
                -bar
                -EOF
                -<< STRING_END
                -# comment
                -STRING_END
                -"  # comment  "
                -
                -----------------------------------------------------
                -
                -[
                -	["string", ["\"\""]],
                -	["string", ["''"]],
                -	["string", ["\"foo\""]],
                -	["string", ["'foo'"]],
                -	["string", ["\"foo\r\nbar\""]],
                -	["string", ["'foo\r\nbar'"]],
                -	["string", ["\"'foo'\""]],
                -	["string", ["'\"bar\"'"]],
                -	["string", [
                -		"\"", ["variable", "$@"], "\""
                -	]],
                -	["string", [
                -		"\"", ["variable", "${foo}"], "\""
                -	]],
                -	["operator", "<<"],
                -	["string", ["STRING_END\r\nfoo\r\nbar\r\nSTRING_END"]],
                -	["operator", "<<"],
                -	["string", ["EOF\r\nfoo ", ["variable", "$@"], "\r\nbar\r\nEOF"]],
                -	["operator", "<<"],
                -	["string", ["'EOF'\r\n'single quoted string'\r\n\"double quoted string\"\r\nEOF"]],
                -	["operator", "<<"],
                -	["string", ["\"EOF\"\r\nfoo\r\nbar\r\nEOF"]],
                -	["operator", "<<"],
                -	["string", ["STRING_END\r\n# comment\r\nSTRING_END"]],
                -	["string", ["\"  # comment  \""]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-quoted and double-quoted strings.
                -Also checks for variables in strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bash/variable_feature.test b/node_modules/prismjs/tests/languages/bash/variable_feature.test
                deleted file mode 100644
                index 16b7448..0000000
                --- a/node_modules/prismjs/tests/languages/bash/variable_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -$foo
                -$@
                -${foo bar}
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "$foo"],
                -	["variable", "$@"],
                -	["variable", "${foo bar}"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/basic/comment_feature.test b/node_modules/prismjs/tests/languages/basic/comment_feature.test
                deleted file mode 100644
                index d306176..0000000
                --- a/node_modules/prismjs/tests/languages/basic/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -! Foobar
                -REM Foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", ["! Foobar"]],
                -	["comment", [["keyword", "REM"], " Foobar"]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/basic/function_feature.test b/node_modules/prismjs/tests/languages/basic/function_feature.test
                deleted file mode 100644
                index 5fe8d76..0000000
                --- a/node_modules/prismjs/tests/languages/basic/function_feature.test
                +++ /dev/null
                @@ -1,309 +0,0 @@
                -ABS
                -ACCESS
                -ACOS
                -ANGLE
                -AREA
                -ARITHMETIC
                -ARRAY
                -ASIN
                -ASK
                -AT
                -ATN
                -BASE
                -BEGIN
                -BREAK
                -CAUSE
                -CEIL
                -CHR
                -CLIP
                -COLLATE
                -COLOR
                -CON
                -COS
                -COSH
                -COT
                -CSC
                -DATE
                -DATUM
                -DEBUG
                -DECIMAL
                -DEF
                -DEG
                -DEGREES
                -DELETE
                -DET
                -DEVICE
                -DISPLAY
                -DOT
                -ELAPSED
                -EPS
                -ERASABLE
                -EXLINE
                -EXP
                -EXTERNAL
                -EXTYPE
                -FILETYPE
                -FIXED
                -FP
                -GO
                -GRAPH
                -HANDLER
                -IDN
                -IMAGE
                -IN
                -INT
                -INTERNAL
                -IP
                -IS
                -KEYED
                -LBOUND
                -LCASE
                -LEFT
                -LEN
                -LENGTH
                -LET
                -LINE
                -LINES
                -LOG
                -LOG10
                -LOG2
                -LTRIM
                -MARGIN
                -MAT
                -MAX
                -MAXNUM
                -MID
                -MIN
                -MISSING
                -MOD
                -NATIVE
                -NUL
                -NUMERIC
                -OF
                -OPTION
                -ORD
                -ORGANIZATION
                -OUTIN
                -OUTPUT
                -PI
                -POINT
                -POINTER
                -POINTS
                -POS
                -PRINT
                -PROGRAM
                -PROMPT
                -RAD
                -RADIANS
                -RANDOMIZE
                -RECORD
                -RECSIZE
                -RECTYPE
                -RELATIVE
                -REMAINDER
                -REPEAT
                -REST
                -RETRY
                -REWRITE
                -RIGHT
                -RND
                -ROUND
                -RTRIM
                -SAME
                -SEC
                -SELECT
                -SEQUENTIAL
                -SET
                -SETTER
                -SGN
                -SIN
                -SINH
                -SIZE
                -SKIP
                -SQR
                -STANDARD
                -STATUS
                -STR
                -STREAM
                -STYLE
                -TAB
                -TAN
                -TANH
                -TEMPLATE
                -TEXT
                -THERE
                -TIME
                -TIMEOUT
                -TRACE
                -TRANSFORM
                -TRUNCATE
                -UBOUND
                -UCASE
                -USE
                -VAL
                -VARIABLE
                -VIEWPORT
                -WHEN
                -WINDOW
                -WITH
                -ZER
                -ZONEWIDTH
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "ABS"],
                -	["function", "ACCESS"],
                -	["function", "ACOS"],
                -	["function", "ANGLE"],
                -	["function", "AREA"],
                -	["function", "ARITHMETIC"],
                -	["function", "ARRAY"],
                -	["function", "ASIN"],
                -	["function", "ASK"],
                -	["function", "AT"],
                -	["function", "ATN"],
                -	["function", "BASE"],
                -	["function", "BEGIN"],
                -	["function", "BREAK"],
                -	["function", "CAUSE"],
                -	["function", "CEIL"],
                -	["function", "CHR"],
                -	["function", "CLIP"],
                -	["function", "COLLATE"],
                -	["function", "COLOR"],
                -	["function", "CON"],
                -	["function", "COS"],
                -	["function", "COSH"],
                -	["function", "COT"],
                -	["function", "CSC"],
                -	["function", "DATE"],
                -	["function", "DATUM"],
                -	["function", "DEBUG"],
                -	["function", "DECIMAL"],
                -	["function", "DEF"],
                -	["function", "DEG"],
                -	["function", "DEGREES"],
                -	["function", "DELETE"],
                -	["function", "DET"],
                -	["function", "DEVICE"],
                -	["function", "DISPLAY"],
                -	["function", "DOT"],
                -	["function", "ELAPSED"],
                -	["function", "EPS"],
                -	["function", "ERASABLE"],
                -	["function", "EXLINE"],
                -	["function", "EXP"],
                -	["function", "EXTERNAL"],
                -	["function", "EXTYPE"],
                -	["function", "FILETYPE"],
                -	["function", "FIXED"],
                -	["function", "FP"],
                -	["function", "GO"],
                -	["function", "GRAPH"],
                -	["function", "HANDLER"],
                -	["function", "IDN"],
                -	["function", "IMAGE"],
                -	["function", "IN"],
                -	["function", "INT"],
                -	["function", "INTERNAL"],
                -	["function", "IP"],
                -	["function", "IS"],
                -	["function", "KEYED"],
                -	["function", "LBOUND"],
                -	["function", "LCASE"],
                -	["function", "LEFT"],
                -	["function", "LEN"],
                -	["function", "LENGTH"],
                -	["function", "LET"],
                -	["function", "LINE"],
                -	["function", "LINES"],
                -	["function", "LOG"],
                -	["function", "LOG10"],
                -	["function", "LOG2"],
                -	["function", "LTRIM"],
                -	["function", "MARGIN"],
                -	["function", "MAT"],
                -	["function", "MAX"],
                -	["function", "MAXNUM"],
                -	["function", "MID"],
                -	["function", "MIN"],
                -	["function", "MISSING"],
                -	["function", "MOD"],
                -	["function", "NATIVE"],
                -	["function", "NUL"],
                -	["function", "NUMERIC"],
                -	["function", "OF"],
                -	["function", "OPTION"],
                -	["function", "ORD"],
                -	["function", "ORGANIZATION"],
                -	["function", "OUTIN"],
                -	["function", "OUTPUT"],
                -	["function", "PI"],
                -	["function", "POINT"],
                -	["function", "POINTER"],
                -	["function", "POINTS"],
                -	["function", "POS"],
                -	["function", "PRINT"],
                -	["function", "PROGRAM"],
                -	["function", "PROMPT"],
                -	["function", "RAD"],
                -	["function", "RADIANS"],
                -	["function", "RANDOMIZE"],
                -	["function", "RECORD"],
                -	["function", "RECSIZE"],
                -	["function", "RECTYPE"],
                -	["function", "RELATIVE"],
                -	["function", "REMAINDER"],
                -	["function", "REPEAT"],
                -	["function", "REST"],
                -	["function", "RETRY"],
                -	["function", "REWRITE"],
                -	["function", "RIGHT"],
                -	["function", "RND"],
                -	["function", "ROUND"],
                -	["function", "RTRIM"],
                -	["function", "SAME"],
                -	["function", "SEC"],
                -	["function", "SELECT"],
                -	["function", "SEQUENTIAL"],
                -	["function", "SET"],
                -	["function", "SETTER"],
                -	["function", "SGN"],
                -	["function", "SIN"],
                -	["function", "SINH"],
                -	["function", "SIZE"],
                -	["function", "SKIP"],
                -	["function", "SQR"],
                -	["function", "STANDARD"],
                -	["function", "STATUS"],
                -	["function", "STR"],
                -	["function", "STREAM"],
                -	["function", "STYLE"],
                -	["function", "TAB"],
                -	["function", "TAN"],
                -	["function", "TANH"],
                -	["function", "TEMPLATE"],
                -	["function", "TEXT"],
                -	["function", "THERE"],
                -	["function", "TIME"],
                -	["function", "TIMEOUT"],
                -	["function", "TRACE"],
                -	["function", "TRANSFORM"],
                -	["function", "TRUNCATE"],
                -	["function", "UBOUND"],
                -	["function", "UCASE"],
                -	["function", "USE"],
                -	["function", "VAL"],
                -	["function", "VARIABLE"],
                -	["function", "VIEWPORT"],
                -	["function", "WHEN"],
                -	["function", "WINDOW"],
                -	["function", "WITH"],
                -	["function", "ZER"],
                -	["function", "ZONEWIDTH"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/basic/keyword_feature.test b/node_modules/prismjs/tests/languages/basic/keyword_feature.test
                deleted file mode 100644
                index ecac685..0000000
                --- a/node_modules/prismjs/tests/languages/basic/keyword_feature.test
                +++ /dev/null
                @@ -1,213 +0,0 @@
                -AS
                -BEEP
                -BLOAD
                -BSAVE
                -CALL
                -CALL ABSOLUTE
                -CASE
                -CHAIN
                -CHDIR
                -CLEAR
                -CLOSE
                -CLS
                -COM
                -COMMON
                -CONST
                -DATA
                -DECLARE
                -DEF FN
                -DEF SEG
                -DEFDBL
                -DEFINT
                -DEFLNG
                -DEFSNG
                -DEFSTR
                -DIM
                -DO
                -DOUBLE
                -ELSE
                -ELSEIF
                -END
                -ENVIRON
                -ERASE
                -ERROR
                -EXIT
                -FIELD
                -FILES
                -FOR
                -FUNCTION
                -GET
                -GOSUB
                -GOTO
                -IF
                -INPUT
                -INTEGER
                -IOCTL
                -KEY
                -KILL
                -LINE INPUT
                -LOCATE
                -LOCK
                -LONG
                -LOOP
                -LSET
                -MKDIR
                -NAME
                -NEXT
                -OFF
                -ON
                -ON COM
                -ON ERROR
                -ON KEY
                -ON TIMER
                -OPEN
                -OPTION BASE
                -OUT
                -POKE
                -PUT
                -READ
                -REDIM
                -REM
                -RESTORE
                -RESUME
                -RETURN
                -RMDIR
                -RSET
                -RUN
                -SHARED
                -SINGLE
                -SELECT CASE
                -SHELL
                -SLEEP
                -STATIC
                -STEP
                -STOP
                -STRING
                -SUB
                -SWAP
                -SYSTEM
                -THEN
                -TIMER
                -TO
                -TROFF
                -TRON
                -TYPE
                -UNLOCK
                -UNTIL
                -USING
                -VIEW PRINT
                -WAIT
                -WEND
                -WHILE
                -WRITE
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "AS"],
                -	["keyword", "BEEP"],
                -	["keyword", "BLOAD"],
                -	["keyword", "BSAVE"],
                -	["keyword", "CALL"],
                -	["keyword", "CALL ABSOLUTE"],
                -	["keyword", "CASE"],
                -	["keyword", "CHAIN"],
                -	["keyword", "CHDIR"],
                -	["keyword", "CLEAR"],
                -	["keyword", "CLOSE"],
                -	["keyword", "CLS"],
                -	["keyword", "COM"],
                -	["keyword", "COMMON"],
                -	["keyword", "CONST"],
                -	["keyword", "DATA"],
                -	["keyword", "DECLARE"],
                -	["keyword", "DEF FN"],
                -	["keyword", "DEF SEG"],
                -	["keyword", "DEFDBL"],
                -	["keyword", "DEFINT"],
                -	["keyword", "DEFLNG"],
                -	["keyword", "DEFSNG"],
                -	["keyword", "DEFSTR"],
                -	["keyword", "DIM"],
                -	["keyword", "DO"],
                -	["keyword", "DOUBLE"],
                -	["keyword", "ELSE"],
                -	["keyword", "ELSEIF"],
                -	["keyword", "END"],
                -	["keyword", "ENVIRON"],
                -	["keyword", "ERASE"],
                -	["keyword", "ERROR"],
                -	["keyword", "EXIT"],
                -	["keyword", "FIELD"],
                -	["keyword", "FILES"],
                -	["keyword", "FOR"],
                -	["keyword", "FUNCTION"],
                -	["keyword", "GET"],
                -	["keyword", "GOSUB"],
                -	["keyword", "GOTO"],
                -	["keyword", "IF"],
                -	["keyword", "INPUT"],
                -	["keyword", "INTEGER"],
                -	["keyword", "IOCTL"],
                -	["keyword", "KEY"],
                -	["keyword", "KILL"],
                -	["keyword", "LINE INPUT"],
                -	["keyword", "LOCATE"],
                -	["keyword", "LOCK"],
                -	["keyword", "LONG"],
                -	["keyword", "LOOP"],
                -	["keyword", "LSET"],
                -	["keyword", "MKDIR"],
                -	["keyword", "NAME"],
                -	["keyword", "NEXT"],
                -	["keyword", "OFF"],
                -	["keyword", "ON"],
                -	["keyword", "ON COM"],
                -	["keyword", "ON ERROR"],
                -	["keyword", "ON KEY"],
                -	["keyword", "ON TIMER"],
                -	["keyword", "OPEN"],
                -	["keyword", "OPTION BASE"],
                -	["keyword", "OUT"],
                -	["keyword", "POKE"],
                -	["keyword", "PUT"],
                -	["keyword", "READ"],
                -	["keyword", "REDIM"],
                -	["keyword", "REM"],
                -	["keyword", "RESTORE"],
                -	["keyword", "RESUME"],
                -	["keyword", "RETURN"],
                -	["keyword", "RMDIR"],
                -	["keyword", "RSET"],
                -	["keyword", "RUN"],
                -	["keyword", "SHARED"],
                -	["keyword", "SINGLE"],
                -	["keyword", "SELECT CASE"],
                -	["keyword", "SHELL"],
                -	["keyword", "SLEEP"],
                -	["keyword", "STATIC"],
                -	["keyword", "STEP"],
                -	["keyword", "STOP"],
                -	["keyword", "STRING"],
                -	["keyword", "SUB"],
                -	["keyword", "SWAP"],
                -	["keyword", "SYSTEM"],
                -	["keyword", "THEN"],
                -	["keyword", "TIMER"],
                -	["keyword", "TO"],
                -	["keyword", "TROFF"],
                -	["keyword", "TRON"],
                -	["keyword", "TYPE"],
                -	["keyword", "UNLOCK"],
                -	["keyword", "UNTIL"],
                -	["keyword", "USING"],
                -	["keyword", "VIEW PRINT"],
                -	["keyword", "WAIT"],
                -	["keyword", "WEND"],
                -	["keyword", "WHILE"],
                -	["keyword", "WRITE"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/basic/number_feature.test b/node_modules/prismjs/tests/languages/basic/number_feature.test
                deleted file mode 100644
                index 5adeb7a..0000000
                --- a/node_modules/prismjs/tests/languages/basic/number_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -42
                -3.14159
                -2e8
                -3.4E-9
                -0.7E+12
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "2e8"],
                -	["number", "3.4E-9"],
                -	["number", "0.7E+12"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/basic/operator_feature.test b/node_modules/prismjs/tests/languages/basic/operator_feature.test
                deleted file mode 100644
                index b2d93f6..0000000
                --- a/node_modules/prismjs/tests/languages/basic/operator_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -< <= <>
                -> >=
                -+ - * /
                -^ = &
                -AND EQV IMP
                -NOT OR XOR
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "<"], ["operator", "<="], ["operator", "<>"],
                -	["operator", ">"], ["operator", ">="],
                -	["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"],
                -	["operator", "^"], ["operator", "="], ["operator", "&"],
                -	["operator", "AND"], ["operator", "EQV"], ["operator", "IMP"],
                -	["operator", "NOT"], ["operator", "OR"], ["operator", "XOR"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/basic/string_feature.test b/node_modules/prismjs/tests/languages/basic/string_feature.test
                deleted file mode 100644
                index 83fea35..0000000
                --- a/node_modules/prismjs/tests/languages/basic/string_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -""
                -"fo""obar"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"fo\"\"obar\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/batch/command_feature.test b/node_modules/prismjs/tests/languages/batch/command_feature.test
                deleted file mode 100644
                index 350788a..0000000
                --- a/node_modules/prismjs/tests/languages/batch/command_feature.test
                +++ /dev/null
                @@ -1,103 +0,0 @@
                -FOR /l %%a in (5,-1,1) do (TITLE %title% -- closing in %%as)
                -SET title=%~n0
                -echo.Hello World
                -@ECHO OFF
                -if not defined ProgressFormat set "ProgressFormat=[PPPP]"
                -EXIT /b
                -set /a ProgressCnt+=1
                -IF "%~1" NEQ "" (SET %~1=%new%) ELSE (echo.%new%)
                -
                -----------------------------------------------------
                -
                -[
                -	["command", [
                -		["keyword", "FOR"],
                -		["parameter", ["/l"]],
                -		["variable", "%%a"],
                -		["keyword", "in"],
                -		["punctuation", "("],
                -		["number", "5"], ["punctuation", ","],
                -		["number", "-1"], ["punctuation", ","],
                -		["number", "1"], ["punctuation", ")"],
                -		["keyword", "do"]
                -	]],
                -	["punctuation", "("],
                -	["command", [
                -		["keyword", "TITLE"],
                -		["variable", "%title%"],
                -		" -- closing in ",
                -		["variable", "%%as"]
                -	]],
                -	["punctuation", ")"],
                -
                -	["command", [
                -		["keyword", "SET"],
                -		["variable", "title"],
                -		["operator", "="],
                -		["variable", "%~n0"]
                -	]],
                -
                -	["command", [
                -		["keyword", "echo"],
                -		".Hello World"
                -	]],
                -
                -	["operator", "@"],
                -	["command", [
                -		["keyword", "ECHO"],
                -		" OFF"
                -	]],
                -
                -	["command", [
                -		["keyword", "if"],
                -		["keyword", "not"],
                -		["keyword", "defined"],
                -		" ProgressFormat"
                -	]],
                -	["command", [
                -		["keyword", "set"],
                -		["string", "\"ProgressFormat=[PPPP]\""]
                -	]],
                -
                -	["command", [
                -		["keyword", "EXIT"],
                -		["parameter", ["/b"]]
                -	]],
                -
                -	["command", [
                -		["keyword", "set"],
                -		["parameter", ["/a"]],
                -		["variable", "ProgressCnt"],
                -		["operator", "+="],
                -		["number", "1"]
                -	]],
                -
                -	["command", [
                -		["keyword", "IF"],
                -		["string", "\"%~1\""],
                -		["operator", "NEQ"],
                -		["string", "\"\""]
                -	]],
                -	["punctuation", "("],
                -	["command", [
                -		["keyword", "SET"],
                -		["variable", "%~1"],
                -		["operator", "="],
                -		["variable", "%new%"]
                -	]],
                -	["punctuation", ")"],
                -	["command", [
                -		["keyword", "ELSE"]
                -	]],
                -	["punctuation", "("],
                -	["command", [
                -		["keyword", "echo"],
                -		".",
                -		["variable", "%new%"]
                -	]],
                -	["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for commands.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/batch/comment_feature.test b/node_modules/prismjs/tests/languages/batch/comment_feature.test
                deleted file mode 100644
                index 83759d8..0000000
                --- a/node_modules/prismjs/tests/languages/batch/comment_feature.test
                +++ /dev/null
                @@ -1,18 +0,0 @@
                -::
                -:: Foobar
                -REM Foobar
                -rem foo^
                -bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "::"],
                -	["comment", ":: Foobar"],
                -	["comment", "REM Foobar"],
                -	["comment", "rem foo^\r\nbar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/batch/label_feature.test b/node_modules/prismjs/tests/languages/batch/label_feature.test
                deleted file mode 100644
                index a672ba0..0000000
                --- a/node_modules/prismjs/tests/languages/batch/label_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -:foo
                -:Foo_Bar
                -
                -----------------------------------------------------
                -
                -[
                -	["label", ":foo"],
                -	["label", ":Foo_Bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for labels.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bison/c_feature.test b/node_modules/prismjs/tests/languages/bison/c_feature.test
                deleted file mode 100644
                index 4d8be83..0000000
                --- a/node_modules/prismjs/tests/languages/bison/c_feature.test
                +++ /dev/null
                @@ -1,56 +0,0 @@
                -%{
                -	#include 
                -%}
                -%code {
                -	if(foo) {
                -
                -	}
                -}
                -%%
                -exp:
                -	NUM {
                -		$$ = f($3, $4);
                -		@$.first_column = @1.first_column;
                -		$result = $left + $1;
                -	}
                -%%
                -
                -----------------------------------------------------
                -
                -[
                -	["bison", [
                -		["c", [
                -			["delimiter", "%{"],
                -			["macro", ["#", ["directive", "include"], ["string", ""]]],
                -			["delimiter", "%}"]
                -		]],
                -		["keyword", "%code"],
                -		["c", [
                -			["delimiter", "{"],
                -			["keyword", "if"], ["punctuation", "("], "foo", ["punctuation", ")"],
                -			["punctuation", "{"], ["punctuation", "}"],
                -			["delimiter", "}"]
                -		]],
                -		["punctuation", "%%"],
                -		["property", "exp"], ["punctuation", ":"],
                -		"\r\n\tNUM ",
                -		["c", [
                -			["delimiter", "{"],
                -			["bison-variable", ["$$"]], ["operator", "="],
                -			["function", "f"], ["punctuation", "("],
                -			["bison-variable", ["$3"]], ["punctuation", ","],
                -			["bison-variable", ["$4"]], ["punctuation", ")"], ["punctuation", ";"],
                -			["bison-variable", ["@$"]], ["punctuation", "."], "first_column ", ["operator", "="],
                -			["bison-variable", ["@1"]], ["punctuation", "."], "first_column", ["punctuation", ";"],
                -			["bison-variable", ["$result"]], ["operator", "="],
                -			["bison-variable", ["$left"]], ["operator", "+"],
                -			["bison-variable", ["$", ["punctuation", "<"], "itype", ["punctuation", ">"], "1"]], ["punctuation", ";"],
                -			["delimiter", "}"]
                -		]],
                -		["punctuation", "%%"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for C inside Bison, along with special Bison variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bison/comment_feature.test b/node_modules/prismjs/tests/languages/bison/comment_feature.test
                deleted file mode 100644
                index 15ed152..0000000
                --- a/node_modules/prismjs/tests/languages/bison/comment_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -// Foobar
                -/* Foo
                -bar */
                -%%
                -// Foobar
                -/* Foo
                -bar */
                -%%
                -
                -----------------------------------------------------
                -
                -[
                -	["bison", [
                -		["comment", "// Foobar"],
                -		["comment", "/* Foo\r\nbar */"],
                -		["punctuation", "%%"],
                -		["comment", "// Foobar"],
                -		["comment", "/* Foo\r\nbar */"],
                -		["punctuation", "%%"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bison/keyword_feature.test b/node_modules/prismjs/tests/languages/bison/keyword_feature.test
                deleted file mode 100644
                index 49fb373..0000000
                --- a/node_modules/prismjs/tests/languages/bison/keyword_feature.test
                +++ /dev/null
                @@ -1,22 +0,0 @@
                -%union
                -%token
                -%%
                -exp: %empty
                -%%
                -
                -----------------------------------------------------
                -
                -[
                -	["bison", [
                -		["keyword", "%union"],
                -		["keyword", "%token"],
                -		["punctuation", "%%"],
                -		["property", "exp"], ["punctuation", ":"],
                -		["keyword", "%empty"],
                -		["punctuation", "%%"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bison/number_feature.test b/node_modules/prismjs/tests/languages/bison/number_feature.test
                deleted file mode 100644
                index ddbacff..0000000
                --- a/node_modules/prismjs/tests/languages/bison/number_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -42
                -0
                -0xBadFace
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "0"],
                -	["number", "0xBadFace"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bison/property_feature.test b/node_modules/prismjs/tests/languages/bison/property_feature.test
                deleted file mode 100644
                index c1b6cb2..0000000
                --- a/node_modules/prismjs/tests/languages/bison/property_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -%%
                -foo:
                -bar_42:
                -$@1:
                -%%
                -
                -----------------------------------------------------
                -
                -[
                -	["bison", [
                -		["punctuation", "%%"],
                -		["property", "foo"], ["punctuation", ":"],
                -		["property", "bar_42"], ["punctuation", ":"],
                -		["property", "$@1"], ["punctuation", ":"],
                -		["punctuation", "%%"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for properties.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bison/string_feature.test b/node_modules/prismjs/tests/languages/bison/string_feature.test
                deleted file mode 100644
                index 3f3f6c0..0000000
                --- a/node_modules/prismjs/tests/languages/bison/string_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -%%
                -foo: 'foo' "foo";
                -bar: '\'' "\"";
                -%%
                -
                -----------------------------------------------------
                -
                -[
                -	["bison", [
                -		["punctuation", "%%"],
                -		["property", "foo"], ["punctuation", ":"],
                -		["string", "'foo'"], ["string", "\"foo\""], ["punctuation", ";"],
                -		["property", "bar"], ["punctuation", ":"],
                -		["string", "'\\''"], ["string", "\"\\\"\""], ["punctuation", ";"],
                -		["punctuation", "%%"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/brainfuck/all_feature.test b/node_modules/prismjs/tests/languages/brainfuck/all_feature.test
                deleted file mode 100644
                index 284f758..0000000
                --- a/node_modules/prismjs/tests/languages/brainfuck/all_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -++ foobar
                -[
                -	>.
                -	<-,
                -]
                -
                -----------------------------------------------------
                -
                -[
                -	["increment", "+"], ["increment", "+"], ["comment", "foobar"],
                -	["branching", "["],
                -	["pointer", ">"], ["operator", "."],
                -	["pointer", "<"], ["decrement", "-"], ["operator", ","],
                -	["branching", "]"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all patterns.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bro/builtin_feature.test b/node_modules/prismjs/tests/languages/bro/builtin_feature.test
                deleted file mode 100644
                index cd5a121..0000000
                --- a/node_modules/prismjs/tests/languages/bro/builtin_feature.test
                +++ /dev/null
                @@ -1,29 +0,0 @@
                -@load-sigs
                -@load-plugin
                -@unload
                -@prefixes
                -@ifndef
                -@ifdef
                -@else
                -&redef
                -&priority
                -redef
                -
                -----------------------------------------------------
                -
                -[
                -	["builtin", "@load-sigs"],
                -	["builtin", "@load-plugin"],
                -	["builtin", "@unload"],
                -	["builtin", "@prefixes"],
                -	["builtin", "@ifndef"],
                -	["builtin", "@ifdef"],
                -	["builtin", "@else"],
                -	["builtin", "&redef"],
                -	["builtin", "&priority"],
                -	["builtin", "redef"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for the builtins
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bro/comment_feature.test b/node_modules/prismjs/tests/languages/bro/comment_feature.test
                deleted file mode 100644
                index e1eff30..0000000
                --- a/node_modules/prismjs/tests/languages/bro/comment_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -## comment
                -#TODO
                -## FIXME
                -# XXX
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", [ "## comment"]],
                -	["comment", [ "#", ["italic", "TODO"]]],
                -	["comment", [ "## ", ["italic", "FIXME"]]],
                -	["comment", [ "# ", ["italic", "XXX"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for the highlighting of comments
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bro/function_feature.test b/node_modules/prismjs/tests/languages/bro/function_feature.test
                deleted file mode 100644
                index a10d792..0000000
                --- a/node_modules/prismjs/tests/languages/bro/function_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -function foo
                -hook foo
                -event foo
                -function foo::bar
                -hook foo::bar
                -event foo::bar
                -
                -----------------------------------------------------
                -
                -[
                -	["function", [["keyword", "function"], " foo"]],
                -	["function", [["keyword", "hook"], " foo"]],
                -	["function", [["keyword", "event"], " foo"]],
                -	["function", [["keyword", "function"], " foo::bar"]],
                -	["function", [["keyword", "hook"], " foo::bar"]],
                -	["function", [["keyword", "event"], " foo::bar"]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for the function feature
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bro/keyword_feature.test b/node_modules/prismjs/tests/languages/bro/keyword_feature.test
                deleted file mode 100644
                index aa025cd..0000000
                --- a/node_modules/prismjs/tests/languages/bro/keyword_feature.test
                +++ /dev/null
                @@ -1,87 +0,0 @@
                -break
                -next
                -continue
                -alarm
                -using
                -of
                -add
                -delete
                -export
                -print
                -return
                -schedule
                -when
                -timeout
                -addr
                -any
                -bool
                -count
                -double
                -enum
                -file
                -int
                -interval
                -pattern
                -opaque
                -port
                -record
                -set
                -string
                -subnet
                -table
                -time
                -vector
                -for
                -if
                -else
                -in
                -module
                -function
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "break"],
                -	["keyword", "next"],
                -	["keyword", "continue"],
                -	["keyword", "alarm"],
                -	["keyword", "using"],
                -	["keyword", "of"],
                -	["keyword", "add"],
                -	["keyword", "delete"],
                -	["keyword", "export"],
                -	["keyword", "print"],
                -	["keyword", "return"],
                -	["keyword", "schedule"],
                -	["keyword", "when"],
                -	["keyword", "timeout"],
                -	["keyword", "addr"],
                -	["keyword", "any"],
                -	["keyword", "bool"],
                -	["keyword", "count"],
                -	["keyword", "double"],
                -	["keyword", "enum"],
                -	["keyword", "file"],
                -	["keyword", "int"],
                -	["keyword", "interval"],
                -	["keyword", "pattern"],
                -	["keyword", "opaque"],
                -	["keyword", "port"],
                -	["keyword", "record"],
                -	["keyword", "set"],
                -	["keyword", "string"],
                -	["keyword", "subnet"],
                -	["keyword", "table"],
                -	["keyword", "time"],
                -	["keyword", "vector"],
                -	["keyword", "for"],
                -	["keyword", "if"],
                -	["keyword", "else"],
                -	["keyword", "in"],
                -	["keyword", "module"],
                -	["keyword", "function"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for the builtins
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bro/string_feature.test b/node_modules/prismjs/tests/languages/bro/string_feature.test
                deleted file mode 100644
                index 68277b5..0000000
                --- a/node_modules/prismjs/tests/languages/bro/string_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -""
                -''
                -"foo"
                -'foo'
                -"'foo'"
                -'"bar"'
                -"  # comment  "
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "''"],
                -	["string", "\"foo\""],
                -	["string", "'foo'"],
                -	["string", "\"'foo'\""],
                -	["string", "'\"bar\"'"],
                -	["string", "\"  # comment  \""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-quoted and double-quoted strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/bro/variable_feature.test b/node_modules/prismjs/tests/languages/bro/variable_feature.test
                deleted file mode 100644
                index daf5120..0000000
                --- a/node_modules/prismjs/tests/languages/bro/variable_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -local foo
                -global foo
                -local bool = T;
                -const bar
                -local baz = 66;
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", [["keyword", "local"], " foo"]],
                -	["variable", [["keyword", "global"], " foo"]],
                -	["variable", [["keyword", "local"], " bool"]],
                -	["operator", "="],
                -	["boolean", "T"],
                -	["punctuation", ";"],
                -	["constant", [["keyword", "const"], " bar"]],
                -	["variable", [["keyword", "local"], " baz"]],
                -	["operator", "="],
                -	["number", "66"],
                -	["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for the highlighting of variables
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/c+pure/c_inclusion.test b/node_modules/prismjs/tests/languages/c+pure/c_inclusion.test
                deleted file mode 100644
                index 312fde2..0000000
                --- a/node_modules/prismjs/tests/languages/c+pure/c_inclusion.test
                +++ /dev/null
                @@ -1,28 +0,0 @@
                -%<
                -asm ();
                -%>
                -
                -%< -*- C -*-
                -asm ();
                -%>
                -
                -----------------------------------------------------
                -
                -[
                -	["inline-lang", [
                -		["delimiter", "%<"],
                -		["keyword", "asm"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ";"],
                -		["delimiter", "%>"]
                -	]],
                -
                -	["inline-lang-c", [
                -		["delimiter", "%< "],
                -		["lang", "-*- C -*-"],
                -		["keyword", "asm"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ";"],
                -		["delimiter", "%>"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for C in Pure.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/c/keyword_feature.test b/node_modules/prismjs/tests/languages/c/keyword_feature.test
                deleted file mode 100644
                index 3c9f6e0..0000000
                --- a/node_modules/prismjs/tests/languages/c/keyword_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -asm typeof inline auto break
                -case char const continue default
                -do double else enum extern
                -float for goto if int
                -long register return short signed
                -sizeof static struct switch typedef
                -union unsigned void volatile while
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "asm"], ["keyword", "typeof"], ["keyword", "inline"], ["keyword", "auto"], ["keyword", "break"],
                -	["keyword", "case"], ["keyword", "char"], ["keyword", "const"], ["keyword", "continue"], ["keyword", "default"],
                -	["keyword", "do"], ["keyword", "double"], ["keyword", "else"], ["keyword", "enum"], ["keyword", "extern"],
                -	["keyword", "float"], ["keyword", "for"], ["keyword", "goto"], ["keyword", "if"], ["keyword", "int"],
                -	["keyword", "long"], ["keyword", "register"], ["keyword", "return"], ["keyword", "short"], ["keyword", "signed"],
                -	["keyword", "sizeof"], ["keyword", "static"], ["keyword", "struct"], ["keyword", "switch"], ["keyword", "typedef"],
                -	["keyword", "union"], ["keyword", "unsigned"], ["keyword", "void"], ["keyword", "volatile"], ["keyword", "while"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/c/macro_feature.test b/node_modules/prismjs/tests/languages/c/macro_feature.test
                deleted file mode 100644
                index 2860f54..0000000
                --- a/node_modules/prismjs/tests/languages/c/macro_feature.test
                +++ /dev/null
                @@ -1,43 +0,0 @@
                -# include 
                -  #define PG_locked 0
                -
                -#elif
                -#else
                -#endif
                -#error
                -#ifdef
                -#ifndef
                -#if
                -#import
                -#include
                -#line
                -#pragma
                -#undef
                -#using
                -
                -----------------------------------------------------
                -
                -[
                -	["macro", [
                -		"# ", ["directive", "include"],
                -		["string", ""]
                -	]],
                -	["macro", ["#", ["directive", "define"], " PG_locked 0"]],
                -	["macro", ["#", ["directive", "elif"]]],
                -	["macro", ["#", ["directive", "else"]]],
                -    ["macro", ["#", ["directive", "endif"]]],
                -    ["macro", ["#", ["directive", "error"]]],
                -    ["macro", ["#", ["directive", "ifdef"]]],
                -    ["macro", ["#", ["directive", "ifndef"]]],
                -    ["macro", ["#", ["directive", "if"]]],
                -    ["macro", ["#", ["directive", "import"]]],
                -    ["macro", ["#", ["directive", "include"]]],
                -    ["macro", ["#", ["directive", "line"]]],
                -    ["macro", ["#", ["directive", "pragma"]]],
                -    ["macro", ["#", ["directive", "undef"]]],
                -    ["macro", ["#", ["directive", "using"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for macros, multi-line macros and paths inside include statements.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/c/number_feature.test b/node_modules/prismjs/tests/languages/c/number_feature.test
                deleted file mode 100644
                index 0542683..0000000
                --- a/node_modules/prismjs/tests/languages/c/number_feature.test
                +++ /dev/null
                @@ -1,35 +0,0 @@
                -42
                -3.14159
                -4e10
                -2.1e-10
                -0.4e+2
                -0xbabe
                -0xBABE
                -42f
                -42F
                -42u
                -42U
                -42l
                -42L
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "4e10"],
                -	["number", "2.1e-10"],
                -	["number", "0.4e+2"],
                -	["number", "0xbabe"],
                -	["number", "0xBABE"],
                -	["number", "42f"],
                -	["number", "42F"],
                -	["number", "42u"],
                -	["number", "42U"],
                -	["number", "42l"],
                -	["number", "42L"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for decimal numbers and hexadecimal numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/c/operator_feature.test b/node_modules/prismjs/tests/languages/c/operator_feature.test
                deleted file mode 100644
                index fdcfb19..0000000
                --- a/node_modules/prismjs/tests/languages/c/operator_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -+ - ++ -- ! !=
                -< << <= <<=
                -> >> >= >>=
                --> == ^ ~ %
                -& && | || ? * /
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "+"], ["operator", "-"], ["operator", "++"], ["operator", "--"], ["operator", "!"], ["operator", "!="],
                -	["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", "<<="],
                -	["operator", ">"], ["operator", ">>"], ["operator", ">="], ["operator", ">>="],
                -	["operator", "->"], ["operator", "=="], ["operator", "^"], ["operator", "~"], ["operator", "%"],
                -	["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"], ["operator", "?"], ["operator", "*"], ["operator", "/"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/boolean_feature.test b/node_modules/prismjs/tests/languages/clike/boolean_feature.test
                deleted file mode 100644
                index 6a1ad0c..0000000
                --- a/node_modules/prismjs/tests/languages/clike/boolean_feature.test
                +++ /dev/null
                @@ -1,12 +0,0 @@
                -true; false;
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"], ["punctuation", ";"],
                -	["boolean", "false"], ["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/class-name_feature.test b/node_modules/prismjs/tests/languages/clike/class-name_feature.test
                deleted file mode 100644
                index 04c2112..0000000
                --- a/node_modules/prismjs/tests/languages/clike/class-name_feature.test
                +++ /dev/null
                @@ -1,53 +0,0 @@
                -class Foo
                -interface bar
                -extends Foo
                -implements bar
                -trait Foo
                -instanceof \bar
                -new \Foo
                -catch (bar)
                -
                -----------------------------------------------------
                -
                -[
                -	"class ",
                -	["class-name", [
                -		"Foo"
                -	]],
                -	"\r\ninterface ",
                -	["class-name", [
                -		"bar"
                -	]],
                -	"\r\nextends ",
                -	["class-name", [
                -		"Foo"
                -	]],
                -	"\r\nimplements ",
                -	["class-name", [
                -		"bar"
                -	]],
                -	"\r\ntrait ",
                -	["class-name", [
                -		"Foo"
                -	]],
                -	["keyword", "instanceof"],
                -	["class-name", [
                -		["punctuation", "\\"],
                -		"bar"
                -	]],
                -	["keyword", "new"],
                -	["class-name", [
                -		["punctuation", "\\"],
                -		"Foo"
                -	]],
                -	["keyword", "catch"],
                -	["punctuation", "("],
                -	["class-name", [
                -		"bar"
                -	]],
                -	["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for class names.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/comment_feature.test b/node_modules/prismjs/tests/languages/clike/comment_feature.test
                deleted file mode 100644
                index 00bb289..0000000
                --- a/node_modules/prismjs/tests/languages/clike/comment_feature.test
                +++ /dev/null
                @@ -1,16 +0,0 @@
                -// foobar
                -/**/
                -/* foo
                -bar */
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "// foobar"],
                -	["comment", "/**/"],
                -	["comment", "/* foo\r\nbar */"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line and multi-line comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/function_feature.test b/node_modules/prismjs/tests/languages/clike/function_feature.test
                deleted file mode 100644
                index 031ed1c..0000000
                --- a/node_modules/prismjs/tests/languages/clike/function_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -foo()
                -foo_bar()
                -f42()
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "foo"],
                -	["punctuation", "("],
                -	["punctuation", ")"],
                -
                -	["function", "foo_bar"],
                -	["punctuation", "("],
                -	["punctuation", ")"],
                -
                -	["function", "f42"],
                -	["punctuation", "("],
                -	["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/keyword_feature.test b/node_modules/prismjs/tests/languages/clike/keyword_feature.test
                deleted file mode 100644
                index 4313f7c..0000000
                --- a/node_modules/prismjs/tests/languages/clike/keyword_feature.test
                +++ /dev/null
                @@ -1,30 +0,0 @@
                -if; else; while; do; for;
                -return; in; instanceof; function; new;
                -try; throw; catch; finally; null;
                -break; continue;
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "if"], ["punctuation", ";"],
                -	["keyword", "else"], ["punctuation", ";"],
                -	["keyword", "while"], ["punctuation", ";"],
                -	["keyword", "do"], ["punctuation", ";"],
                -	["keyword", "for"], ["punctuation", ";"],
                -	["keyword", "return"], ["punctuation", ";"],
                -	["keyword", "in"], ["punctuation", ";"],
                -	["keyword", "instanceof"], ["punctuation", ";"],
                -	["keyword", "function"], ["punctuation", ";"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "try"], ["punctuation", ";"],
                -	["keyword", "throw"], ["punctuation", ";"],
                -	["keyword", "catch"], ["punctuation", ";"],
                -	["keyword", "finally"], ["punctuation", ";"],
                -	["keyword", "null"], ["punctuation", ";"],
                -	["keyword", "break"], ["punctuation", ";"],
                -	["keyword", "continue"], ["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/number_feature.test b/node_modules/prismjs/tests/languages/clike/number_feature.test
                deleted file mode 100644
                index f6bcc0b..0000000
                --- a/node_modules/prismjs/tests/languages/clike/number_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -42
                -3.14159
                -4e10
                -2.1e-10
                -0.4e+2
                -0xbabe
                -0xBABE
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "4e10"],
                -	["number", "2.1e-10"],
                -	["number", "0.4e+2"],
                -	["number", "0xbabe"],
                -	["number", "0xBABE"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for decimal numbers and hexadecimal numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/operator_feature.test b/node_modules/prismjs/tests/languages/clike/operator_feature.test
                deleted file mode 100644
                index 1a4c649..0000000
                --- a/node_modules/prismjs/tests/languages/clike/operator_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -- + -- ++
                -< <= > >=
                -= == ===
                -! != !==
                -& && | ||
                -? * / ~ ^ %
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "-"], ["operator", "+"], ["operator", "--"], ["operator", "++"],
                -	["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="],
                -	["operator", "="], ["operator", "=="], ["operator", "==="],
                -	["operator", "!"], ["operator", "!="], ["operator", "!=="],
                -	["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"],
                -	["operator", "?"], ["operator", "*"], ["operator", "/"], ["operator", "~"], ["operator", "^"], ["operator", "%"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/clike/string_feature.test b/node_modules/prismjs/tests/languages/clike/string_feature.test
                deleted file mode 100644
                index 983ca42..0000000
                --- a/node_modules/prismjs/tests/languages/clike/string_feature.test
                +++ /dev/null
                @@ -1,28 +0,0 @@
                -""
                -''
                -"f\"oo"
                -'b\'ar'
                -"foo\
                -bar"
                -'foo\
                -bar'
                -"foo /* comment */ bar"
                -'foo // bar'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "''"],
                -	["string", "\"f\\\"oo\""],
                -	["string", "'b\\'ar'"],
                -	["string", "\"foo\\\r\nbar\""],
                -	["string", "'foo\\\r\nbar'"],
                -	["string", "\"foo /* comment */ bar\""],
                -	["string", "'foo // bar'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for empty strings, single-line strings and
                -multi-line strings, both single-quoted and double-quoted.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript+haml/coffeescript_inclusion.test b/node_modules/prismjs/tests/languages/coffeescript+haml/coffeescript_inclusion.test
                deleted file mode 100644
                index 7a77516..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript+haml/coffeescript_inclusion.test
                +++ /dev/null
                @@ -1,24 +0,0 @@
                -:coffee
                -	'This is coffee script'
                -
                -~
                -	:coffee
                -	  'This is coffee script'
                -
                -----------------------------------------------------
                -
                -[
                -	["filter-coffee", [
                -		["filter-name", ":coffee"],
                -		["string", "'This is coffee script'"]
                -	]],
                -	["punctuation", "~"],
                -	["filter-coffee", [
                -        ["filter-name", ":coffee"],
                -        ["string", "'This is coffee script'"]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for CoffeeScript filter in Haml. The tilde serves only as a separator.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript+jade/coffeescript_inclusion.test b/node_modules/prismjs/tests/languages/coffeescript+jade/coffeescript_inclusion.test
                deleted file mode 100644
                index ccf8963..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript+jade/coffeescript_inclusion.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -:coffee
                -	"#{foo}"
                -
                -----------------------------------------------------
                -
                -[
                -	["filter-coffee", [
                -		["filter-name", ":coffee"],
                -		["string", [
                -			"\"",
                -			["interpolation", "#{foo}"],
                -			"\""
                -		]]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for coffee filter (CoffeeScript) in Jade.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/block-regex_feature.test b/node_modules/prismjs/tests/languages/coffeescript/block-regex_feature.test
                deleted file mode 100644
                index b01a9a4..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/block-regex_feature.test
                +++ /dev/null
                @@ -1,33 +0,0 @@
                -///foo[bar]///
                -///foo
                -[bar]///
                -///foo
                -b#{ar}baz///
                -///foo #bar
                -baz///
                -
                -----------------------------------------------------
                -
                -[
                -	["block-regex", [
                -        "///foo[bar]///"
                -    ]],
                -    ["block-regex", [
                -        "///foo\r\n[bar]///"
                -    ]],
                -    ["block-regex", [
                -        "///foo\r\nb",
                -        ["interpolation", "#{ar}"],
                -        "baz///"
                -    ]],
                -    ["block-regex", [
                -        "///foo ",
                -        ["comment", "#bar"],
                -        "\r\nbaz///"
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for block regex.
                -Also checks for comments and interpolations inside block regex.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/class-member_feature.test b/node_modules/prismjs/tests/languages/coffeescript/class-member_feature.test
                deleted file mode 100644
                index 6fdbcf3..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/class-member_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -@name
                -@foo_bar
                -
                -----------------------------------------------------
                -
                -[
                -	["class-member", "@name"],
                -	["class-member", "@foo_bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for class members.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/comment_feature.test b/node_modules/prismjs/tests/languages/coffeescript/comment_feature.test
                deleted file mode 100644
                index 5d034ff..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/comment_feature.test
                +++ /dev/null
                @@ -1,16 +0,0 @@
                -#foo
                -# foo bar
                -### foo bar
                -baz ###
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#foo"],
                -	["comment", "# foo bar"],
                -	["multiline-comment", "### foo bar\r\nbaz ###"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line and multi-line comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/inline-javascript_feature.test b/node_modules/prismjs/tests/languages/coffeescript/inline-javascript_feature.test
                deleted file mode 100644
                index cf15e26..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/inline-javascript_feature.test
                +++ /dev/null
                @@ -1,22 +0,0 @@
                -`/* JS here */`
                -`/*
                -JS here */`
                -
                -----------------------------------------------------
                -
                -[
                -	["inline-javascript", [
                -		["delimiter", "`"],
                -		["comment", "/* JS here */"],
                -		["delimiter", "`"]
                -	]],
                -	["inline-javascript", [
                -        ["delimiter", "`"],
                -        ["comment", "/*\r\nJS here */"],
                -        ["delimiter", "`"]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for inline JavaScript.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/keyword_feature.test b/node_modules/prismjs/tests/languages/coffeescript/keyword_feature.test
                deleted file mode 100644
                index 3207e39..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/keyword_feature.test
                +++ /dev/null
                @@ -1,41 +0,0 @@
                -and break by catch
                -class;
                -continue debugger delete
                -do each else extend
                -extends;
                -false finally for if in
                -instanceof;
                -is isnt let
                -loop namespace
                -new;
                -no not null of off on
                -or own return super
                -switch then this throw
                -true try typeof undefined
                -unless until when while
                -window with yes yield
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "and"], ["keyword", "break"], ["keyword", "by"], ["keyword", "catch"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "continue"], ["keyword", "debugger"], ["keyword", "delete"],
                -	["keyword", "do"], ["keyword", "each"], ["keyword", "else"], ["keyword", "extend"],
                -	["keyword", "extends"], ["punctuation", ";"],
                -	["keyword", "false"], ["keyword", "finally"], ["keyword", "for"], ["keyword", "if"], ["keyword", "in"],
                -	["keyword", "instanceof"], ["punctuation", ";"],
                -	["keyword", "is"], ["keyword", "isnt"], ["keyword", "let"],
                -	["keyword", "loop"], ["keyword", "namespace"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "no"], ["keyword", "not"], ["keyword", "null"], ["keyword", "of"], ["keyword", "off"], ["keyword", "on"],
                -	["keyword", "or"], ["keyword", "own"], ["keyword", "return"], ["keyword", "super"],
                -	["keyword", "switch"], ["keyword", "then"], ["keyword", "this"], ["keyword", "throw"],
                -	["keyword", "true"], ["keyword", "try"], ["keyword", "typeof"], ["keyword", "undefined"],
                -	["keyword", "unless"], ["keyword", "until"], ["keyword", "when"], ["keyword", "while"],
                -	["keyword", "window"], ["keyword", "with"], ["keyword", "yes"], ["keyword", "yield"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/property_feature.test b/node_modules/prismjs/tests/languages/coffeescript/property_feature.test
                deleted file mode 100644
                index 0f25679..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/property_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -foo:
                -foo_bar :
                -
                -----------------------------------------------------
                -
                -[
                -	["property", "foo"],
                -	["punctuation", ":"],
                -	["property", "foo_bar"],
                -	["punctuation", ":"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for object properties.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/coffeescript/string_feature.test b/node_modules/prismjs/tests/languages/coffeescript/string_feature.test
                deleted file mode 100644
                index f5a6868..0000000
                --- a/node_modules/prismjs/tests/languages/coffeescript/string_feature.test
                +++ /dev/null
                @@ -1,64 +0,0 @@
                -''
                -'foo'
                -'foo\
                -bar'
                -""
                -"foo"
                -"foo\
                -bar"
                -"foo #{interpolation} bar"
                -''''''
                -'''foo'''
                -'''foo
                -bar'''
                -
                -""""""
                -"""foo"""
                -"""foo
                -bar"""
                -"""foo #{interpolation} bar"""
                -"foo # comment bar"
                -'foo # bar'
                -"""foo
                -#comment
                -bar"""
                -'''foo
                -#comment
                -bar'''
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "''"],
                -	["string", "'foo'"],
                -	["string", "'foo\\\r\nbar'"],
                -	["string", ["\"\""]],
                -	["string", ["\"foo\""]],
                -	["string", ["\"foo\\\r\nbar\""]],
                -	["string", [
                -		"\"foo ",
                -		["interpolation", "#{interpolation}"],
                -		" bar\""
                -	]],
                -
                -	["multiline-string", "''''''"],
                -	["multiline-string", "'''foo'''"],
                -	["multiline-string", "'''foo\r\nbar'''"],
                -	["multiline-string", ["\"\"\"\"\"\""]],
                -	["multiline-string", ["\"\"\"foo\"\"\""]],
                -	["multiline-string", ["\"\"\"foo\r\nbar\"\"\""]],
                -	["multiline-string", [
                -		"\"\"\"foo ",
                -		["interpolation", "#{interpolation}"],
                -		" bar\"\"\""
                -	]],
                -	["string", ["\"foo # comment bar\""]],
                -	["string", "'foo # bar'"],
                -	["multiline-string", ["\"\"\"foo\r\n#comment\r\nbar\"\"\""]],
                -	["multiline-string", "'''foo\r\n#comment\r\nbar'''"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line and multi-line strings and block strings.
                -Also checks for string interpolation inside double-quoted strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/cpp+pure/cpp_inclusion.test b/node_modules/prismjs/tests/languages/cpp+pure/cpp_inclusion.test
                deleted file mode 100644
                index 150080e..0000000
                --- a/node_modules/prismjs/tests/languages/cpp+pure/cpp_inclusion.test
                +++ /dev/null
                @@ -1,18 +0,0 @@
                -%< -*- C++ -*-
                -alignas
                -%>
                -
                -----------------------------------------------------
                -
                -[
                -	["inline-lang-cpp", [
                -		["delimiter", "%< "],
                -		["lang", "-*- C++ -*-"],
                -		["keyword", "alignas"],
                -		["delimiter", "%>"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for C++ in Pure.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/cpp/boolean_feature.test b/node_modules/prismjs/tests/languages/cpp/boolean_feature.test
                deleted file mode 100644
                index 4019c44..0000000
                --- a/node_modules/prismjs/tests/languages/cpp/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -true
                -false
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"],
                -	["boolean", "false"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/cpp/class-name_feature.test b/node_modules/prismjs/tests/languages/cpp/class-name_feature.test
                deleted file mode 100644
                index f3d5df5..0000000
                --- a/node_modules/prismjs/tests/languages/cpp/class-name_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -class Foo
                -class Foo_bar
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "class"], ["class-name", "Foo"],
                -	["keyword", "class"], ["class-name", "Foo_bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for class names.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/cpp/keyword_feature.test b/node_modules/prismjs/tests/languages/cpp/keyword_feature.test
                deleted file mode 100644
                index e3ca630..0000000
                --- a/node_modules/prismjs/tests/languages/cpp/keyword_feature.test
                +++ /dev/null
                @@ -1,45 +0,0 @@
                -alignas alignof asm auto bool
                -break case catch char char16_t char32_t
                -class;
                -compl const constexpr
                -const_cast continue decltype default
                -delete do double dynamic_cast
                -else enum explicit export extern
                -float for friend goto if
                -inline int long mutable namespace
                -new noexcept nullptr operator
                -private protected public register
                -reinterpret_cast return short
                -signed sizeof static static_assert
                -static_cast struct switch template
                -this thread_local throw try
                -typedef typeid typename union
                -unsigned using virtual void
                -volatile wchar_t while
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "alignas"], ["keyword", "alignof"], ["keyword", "asm"], ["keyword", "auto"], ["keyword", "bool"],
                -	["keyword", "break"], ["keyword", "case"], ["keyword", "catch"], ["keyword", "char"], ["keyword", "char16_t"], ["keyword", "char32_t"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "compl"], ["keyword", "const"], ["keyword", "constexpr"],
                -	["keyword", "const_cast"], ["keyword", "continue"], ["keyword", "decltype"], ["keyword", "default"],
                -	["keyword", "delete"], ["keyword", "do"], ["keyword", "double"], ["keyword", "dynamic_cast"],
                -	["keyword", "else"], ["keyword", "enum"], ["keyword", "explicit"], ["keyword", "export"], ["keyword", "extern"],
                -	["keyword", "float"], ["keyword", "for"], ["keyword", "friend"], ["keyword", "goto"], ["keyword", "if"],
                -	["keyword", "inline"], ["keyword", "int"], ["keyword", "long"], ["keyword", "mutable"], ["keyword", "namespace"],
                -	["keyword", "new"], ["keyword", "noexcept"], ["keyword", "nullptr"], ["keyword", "operator"],
                -	["keyword", "private"], ["keyword", "protected"], ["keyword", "public"], ["keyword", "register"],
                -	["keyword", "reinterpret_cast"], ["keyword", "return"], ["keyword", "short"],
                -	["keyword", "signed"], ["keyword", "sizeof"], ["keyword", "static"], ["keyword", "static_assert"],
                -	["keyword", "static_cast"], ["keyword", "struct"], ["keyword", "switch"], ["keyword", "template"],
                -	["keyword", "this"], ["keyword", "thread_local"], ["keyword", "throw"], ["keyword", "try"],
                -	["keyword", "typedef"], ["keyword", "typeid"], ["keyword", "typename"], ["keyword", "union"],
                -	["keyword", "unsigned"], ["keyword", "using"], ["keyword", "virtual"], ["keyword", "void"],
                -	["keyword", "volatile"], ["keyword", "wchar_t"], ["keyword", "while"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/crystal/attribute_feature.test b/node_modules/prismjs/tests/languages/crystal/attribute_feature.test
                deleted file mode 100644
                index 02d07af..0000000
                --- a/node_modules/prismjs/tests/languages/crystal/attribute_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -@[AlwaysInline]
                -@[CallConvention("X86_StdCall")]
                -
                -----------------------------------------------------
                -
                -[
                -	["attribute", [
                -		["delimiter", "@["],
                -		["constant", "AlwaysInline"],
                -		["delimiter", "]"]
                -	]],
                -	["attribute", [
                -		["delimiter", "@["],
                -		["function", "CallConvention"], ["punctuation", "("], ["string", [ "\"X86_StdCall\"" ]], ["punctuation", ")"],
                -		["delimiter", "]"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for attributes.
                diff --git a/node_modules/prismjs/tests/languages/crystal/expansion_feature.test b/node_modules/prismjs/tests/languages/crystal/expansion_feature.test
                deleted file mode 100644
                index b40bd1f..0000000
                --- a/node_modules/prismjs/tests/languages/crystal/expansion_feature.test
                +++ /dev/null
                @@ -1,37 +0,0 @@
                -{{ 1_u32 }}
                -{% 2_u32 %}
                -{{ { 3_u32 } }}
                -{% % 4_u32 % %}
                -
                -----------------------------------------------------
                -
                -[
                -	["expansion", [
                -		["delimiter", "{{"],
                -		["number", "1_u32"],
                -		["delimiter", "}}"]
                -	]],
                -	["expansion", [
                -		["delimiter", "{%"],
                -		["number", "2_u32"],
                -		["delimiter", "%}"]
                -	]],
                -	["expansion", [
                -		["delimiter", "{{"],
                -		["punctuation", "{"],
                -		["number", "3_u32"],
                -		["punctuation", "}"],
                -		["delimiter", "}}"]
                -	]],
                -	["expansion", [
                -		["delimiter", "{%"],
                -		["operator", "%"],
                -		["number", "4_u32"],
                -		["operator", "%"],
                -		["delimiter", "%}"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for macro expansions.
                diff --git a/node_modules/prismjs/tests/languages/crystal/keyword_feature.test b/node_modules/prismjs/tests/languages/crystal/keyword_feature.test
                deleted file mode 100644
                index ca575ef..0000000
                --- a/node_modules/prismjs/tests/languages/crystal/keyword_feature.test
                +++ /dev/null
                @@ -1,33 +0,0 @@
                -abstract alias as asm begin break case
                -class;
                -def do else elsif
                -end ensure enum extend for fun
                -if ifdef include instance_sizeof
                -.is_a?
                -lib macro module next of out pointerof
                -private protected rescue
                -.responds_to?
                -return require self sizeof struct super
                -then type typeof union unless until when
                -while with yield __DIR__ __FILE__ __LINE__
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "abstract"], ["keyword", "alias"], ["keyword", "as"], ["keyword", "asm"], ["keyword", "begin"], ["keyword", "break"], ["keyword", "case"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "def"], ["keyword", "do"], ["keyword", "else"], ["keyword", "elsif"],
                -	["keyword", "end"], ["keyword", "ensure"], ["keyword", "enum"], ["keyword", "extend"], ["keyword", "for"], ["keyword", "fun"],
                -	["keyword", "if"], ["keyword", "ifdef"], ["keyword", "include"], ["keyword", "instance_sizeof"],
                -	["punctuation", "."], ["keyword", "is_a?"],
                -	["keyword", "lib"], ["keyword", "macro"], ["keyword", "module"], ["keyword", "next"], ["keyword", "of"], ["keyword", "out"], ["keyword", "pointerof"],
                -	["keyword", "private"], ["keyword", "protected"], ["keyword", "rescue"],
                -	["punctuation", "."], ["keyword", "responds_to?"],
                -	["keyword", "return"], ["keyword", "require"], ["keyword", "self"], ["keyword", "sizeof"], ["keyword", "struct"], ["keyword", "super"],
                -	["keyword", "then"], ["keyword", "type"], ["keyword", "typeof"], ["keyword", "union"], ["keyword", "unless"], ["keyword", "until"], ["keyword", "when"],
                -	["keyword", "while"], ["keyword", "with"], ["keyword", "yield"], ["keyword", "__DIR__"], ["keyword", "__FILE__"], ["keyword", "__LINE__"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                diff --git a/node_modules/prismjs/tests/languages/crystal/number_feature.test b/node_modules/prismjs/tests/languages/crystal/number_feature.test
                deleted file mode 100644
                index cefdc5e..0000000
                --- a/node_modules/prismjs/tests/languages/crystal/number_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -1
                -1_1
                -1_1_1
                -0b10_01
                -0o1_2_3
                -0x123456789abcdef
                -012_345.678_9e+10_f64
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "1"],
                -	["number", "1_1"],
                -	["number", "1_1_1"],
                -	["number", "0b10_01"],
                -	["number", "0o1_2_3"],
                -	["number", "0x123456789abcdef"],
                -	["number", "012_345.678_9e+10_f64"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for number literals.
                diff --git a/node_modules/prismjs/tests/languages/csharp+aspnet/directive_feature.test b/node_modules/prismjs/tests/languages/csharp+aspnet/directive_feature.test
                deleted file mode 100644
                index 9eaa005..0000000
                --- a/node_modules/prismjs/tests/languages/csharp+aspnet/directive_feature.test
                +++ /dev/null
                @@ -1,71 +0,0 @@
                -<%: Page.Title %>
                -<%#:Item.ProductID%>
                -
                -<% if(foo) { %>
                -	foobar
                -<% } %>
                -
                -----------------------------------------------------
                -
                -[
                -	["directive tag", [
                -		["directive tag", "<%:"],
                -		" Page",
                -		["punctuation", "."],
                -		"Title ",
                -		["directive tag", "%>"]
                -	]],
                -
                -	["directive tag", [
                -        ["directive tag", "<%#:"],
                -        "Item",
                -        ["punctuation", "."],
                -        "ProductID",
                -        ["directive tag", "%>"]
                -    ]],
                -
                -    ["tag", [
                -        ["tag", [
                -            ["punctuation", "<"],
                -            "a"
                -        ]],
                -        ["attr-name", [
                -            "href"
                -        ]],
                -        ["attr-value", [
                -            ["punctuation", "="],
                -            ["punctuation", "\""],
                -            "ProductDetails.aspx?productID",
                -            ["punctuation", "="],
                -            ["directive tag", [
                -                ["directive tag", "<%#:"],
                -                "Item",
                -		        ["punctuation", "."],
                -		        "ProductID",
                -		        ["directive tag", "%>"]
                -            ]],
                -            ["punctuation", "\""]
                -        ]],
                -        ["punctuation", ">"]
                -    ]],
                -
                -    ["directive tag", [
                -        ["directive tag", "<%"],
                -        ["keyword", "if"],
                -        ["punctuation", "("],
                -        "foo",
                -        ["punctuation", ")"],
                -        ["punctuation", "{"],
                -        ["directive tag", "%>"]
                -    ]],
                -    "\r\n\tfoobar\r\n",
                -    ["directive tag", [
                -        ["directive tag", "<%"],
                -        ["punctuation", "}"],
                -        ["directive tag", "%>"]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for directives.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/csharp/generic_feature.test b/node_modules/prismjs/tests/languages/csharp/generic_feature.test
                deleted file mode 100644
                index 01115cf..0000000
                --- a/node_modules/prismjs/tests/languages/csharp/generic_feature.test
                +++ /dev/null
                @@ -1,32 +0,0 @@
                -void method();
                -method();
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "void"],
                -	["generic-method", [ "method",
                -		["punctuation", "<"],
                -		"T",
                -		["punctuation", ","],
                -		" U",
                -		["punctuation", ">"]
                -	]],
                -	["punctuation", "("],
                -	["punctuation", ")"],
                -	["punctuation", ";"],
                -	["generic-method", [ "method",
                -		["punctuation", "<"],
                -		["keyword", "int"],
                -		["punctuation", ","],
                -		["keyword", "char"],
                -		["punctuation", ">"]
                -	]],
                -	["punctuation", "("],
                -	["punctuation", ")"],
                -	["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for generic methods
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/csharp/issue806.test b/node_modules/prismjs/tests/languages/csharp/issue806.test
                deleted file mode 100644
                index f7a4096..0000000
                --- a/node_modules/prismjs/tests/languages/csharp/issue806.test
                +++ /dev/null
                @@ -1,12 +0,0 @@
                -0.3f
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0.3f"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks that "f" prefix is properly highlighted as part of the number.
                -See #806.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/csharp/keyword_feature.test b/node_modules/prismjs/tests/languages/csharp/keyword_feature.test
                deleted file mode 100644
                index 1a729bc..0000000
                --- a/node_modules/prismjs/tests/languages/csharp/keyword_feature.test
                +++ /dev/null
                @@ -1,63 +0,0 @@
                -abstract as async await base
                -bool break byte case catch
                -char checked
                -class;
                -const continue
                -decimal default delegate do
                -double else enum event explicit
                -extern false finally fixed float
                -for foreach goto if implicit in
                -int
                -interface;
                -internal is lock
                -long namespace
                -new;
                -null object
                -operator out override params
                -private protected public readonly
                -ref return sbyte sealed short
                -sizeof stackalloc static string
                -struct switch this throw true
                -try typeof uint ulong unchecked
                -unsafe ushort using virtual void
                -volatile while add alias ascending
                -async await descending dynamic
                -from get global group into
                -join let orderby partial remove
                -select set value var where yield
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "abstract"], ["keyword", "as"], ["keyword", "async"], ["keyword", "await"], ["keyword", "base"],
                -	["keyword", "bool"], ["keyword", "break"], ["keyword", "byte"], ["keyword", "case"], ["keyword", "catch"],
                -	["keyword", "char"], ["keyword", "checked"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "const"], ["keyword", "continue"],
                -	["keyword", "decimal"], ["keyword", "default"], ["keyword", "delegate"], ["keyword", "do"],
                -	["keyword", "double"], ["keyword", "else"], ["keyword", "enum"], ["keyword", "event"], ["keyword", "explicit"],
                -	["keyword", "extern"], ["keyword", "false"], ["keyword", "finally"], ["keyword", "fixed"], ["keyword", "float"],
                -	["keyword", "for"], ["keyword", "foreach"], ["keyword", "goto"], ["keyword", "if"], ["keyword", "implicit"], ["keyword", "in"],
                -	["keyword", "int"],
                -	["keyword", "interface"], ["punctuation", ";"],
                -	["keyword", "internal"], ["keyword", "is"], ["keyword", "lock"],
                -	["keyword", "long"], ["keyword", "namespace"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "null"], ["keyword", "object"],
                -	["keyword", "operator"], ["keyword", "out"], ["keyword", "override"], ["keyword", "params"],
                -	["keyword", "private"], ["keyword", "protected"], ["keyword", "public"], ["keyword", "readonly"],
                -	["keyword", "ref"], ["keyword", "return"], ["keyword", "sbyte"], ["keyword", "sealed"], ["keyword", "short"],
                -	["keyword", "sizeof"], ["keyword", "stackalloc"], ["keyword", "static"], ["keyword", "string"],
                -	["keyword", "struct"], ["keyword", "switch"], ["keyword", "this"], ["keyword", "throw"], ["keyword", "true"],
                -	["keyword", "try"], ["keyword", "typeof"], ["keyword", "uint"], ["keyword", "ulong"], ["keyword", "unchecked"],
                -	["keyword", "unsafe"], ["keyword", "ushort"], ["keyword", "using"], ["keyword", "virtual"], ["keyword", "void"],
                -	["keyword", "volatile"], ["keyword", "while"], ["keyword", "add"], ["keyword", "alias"], ["keyword", "ascending"],
                -	["keyword", "async"], ["keyword", "await"], ["keyword", "descending"], ["keyword", "dynamic"],
                -	["keyword", "from"], ["keyword", "get"], ["keyword", "global"], ["keyword", "group"], ["keyword", "into"],
                -	["keyword", "join"], ["keyword", "let"], ["keyword", "orderby"], ["keyword", "partial"], ["keyword", "remove"],
                -	["keyword", "select"], ["keyword", "set"], ["keyword", "value"], ["keyword", "var"], ["keyword", "where"], ["keyword", "yield"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/csharp/number_feature.test b/node_modules/prismjs/tests/languages/csharp/number_feature.test
                deleted file mode 100644
                index 1268080..0000000
                --- a/node_modules/prismjs/tests/languages/csharp/number_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -42
                -3.14159
                -0xbabe
                -0XBABE
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "0xbabe"],
                -	["number", "0XBABE"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for decimal and hexadecimal numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/csharp/preprocessor_feature.test b/node_modules/prismjs/tests/languages/csharp/preprocessor_feature.test
                deleted file mode 100644
                index 93ad490..0000000
                --- a/node_modules/prismjs/tests/languages/csharp/preprocessor_feature.test
                +++ /dev/null
                @@ -1,35 +0,0 @@
                -#define DEBUG
                -#if DEBUG
                -#endif
                -
                -#elif
                -#else
                -#endregion
                -#error
                -#line
                -#pragma
                -#region
                -#undef
                -#warning
                -
                -----------------------------------------------------
                -
                -[
                -	["preprocessor", ["#", ["directive", "define"], " DEBUG"]],
                -	["preprocessor", ["#", ["directive", "if"], " DEBUG"]],
                -	["preprocessor", ["#", ["directive", "endif"]]],
                -	
                -	["preprocessor", ["#", ["directive", "elif"]]],
                -    ["preprocessor", ["#", ["directive", "else"]]],
                -    ["preprocessor", ["#", ["directive", "endregion"]]],
                -    ["preprocessor", ["#", ["directive", "error"]]],
                -    ["preprocessor", ["#", ["directive", "line"]]],
                -    ["preprocessor", ["#", ["directive", "pragma"]]],
                -    ["preprocessor", ["#", ["directive", "region"]]],
                -    ["preprocessor", ["#", ["directive", "undef"]]],
                -    ["preprocessor", ["#", ["directive", "warning"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for preprocessor directives.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/csharp/string_feature.test b/node_modules/prismjs/tests/languages/csharp/string_feature.test
                deleted file mode 100644
                index 2814cb5..0000000
                --- a/node_modules/prismjs/tests/languages/csharp/string_feature.test
                +++ /dev/null
                @@ -1,32 +0,0 @@
                -""
                -"fo\"o"
                -
                -@""
                -@"foo"
                -@"fo""o"
                -@"foo
                -bar"
                -
                -'a'
                -'\''
                -'\\'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"fo\\\"o\""],
                -
                -	["string", "@\"\""],
                -	["string", "@\"foo\""],
                -	["string", "@\"fo\"\"o\""],
                -	["string", "@\"foo\r\nbar\""],
                -	["string", "'a'"],
                -	["string", "'\\''"],
                -	["string", "'\\\\'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for normal and verbatim strings.
                -Also checks for single quoted characters.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css!+css-extras/entity_feature.test b/node_modules/prismjs/tests/languages/css!+css-extras/entity_feature.test
                deleted file mode 100644
                index c1c91a2..0000000
                --- a/node_modules/prismjs/tests/languages/css!+css-extras/entity_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -\0022
                -\20B9
                -
                -----------------------------------------------------
                -
                -[
                -	["entity", "\\0022"],
                -	["entity", "\\20B9"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for entities.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css!+css-extras/hexcode_feature.test b/node_modules/prismjs/tests/languages/css!+css-extras/hexcode_feature.test
                deleted file mode 100644
                index cac0b44..0000000
                --- a/node_modules/prismjs/tests/languages/css!+css-extras/hexcode_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -#ff0000
                -#BADA55
                -#4dd
                -#D0C
                -
                -----------------------------------------------------
                -
                -[
                -	["hexcode", "#ff0000"],
                -	["hexcode", "#BADA55"],
                -	["hexcode", "#4dd"],
                -	["hexcode", "#D0C"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for hexadecimal colors.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css!+css-extras/number_feature.test b/node_modules/prismjs/tests/languages/css!+css-extras/number_feature.test
                deleted file mode 100644
                index 24ed530..0000000
                --- a/node_modules/prismjs/tests/languages/css!+css-extras/number_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -42
                -3.14159
                -42%
                -3.14%
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "42%"],
                -	["number", "3.14%"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                diff --git a/node_modules/prismjs/tests/languages/css!+css-extras/selector_feature.test b/node_modules/prismjs/tests/languages/css!+css-extras/selector_feature.test
                deleted file mode 100644
                index 3931a66..0000000
                --- a/node_modules/prismjs/tests/languages/css!+css-extras/selector_feature.test
                +++ /dev/null
                @@ -1,58 +0,0 @@
                -foo:after {
                -foo::first-letter {
                -
                -foo:nth-child(2n+1) {
                -
                -foo.bar {
                -
                -foo#bar {
                -
                -#foo > .bar:not(baz):after {
                -
                -div[foo="bar"] {
                -
                -----------------------------------------------------
                -
                -[
                -	["selector", [
                -		"foo",
                -		["pseudo-element", ":after"]
                -	]], ["punctuation", "{"],
                -
                -	["selector", [
                -		"foo",
                -		["pseudo-element", "::first-letter"]
                -	]], ["punctuation", "{"],
                -
                -	["selector", [
                -		"foo",
                -		["pseudo-class", ":nth-child(2n+1)"]
                -	]], ["punctuation", "{"],
                -
                -	["selector", [
                -		"foo",
                -		["class", ".bar"]
                -	]], ["punctuation", "{"],
                -
                -	["selector", [
                -		"foo",
                -		["id", "#bar"]
                -	]], ["punctuation", "{"],
                -
                -	["selector", [
                -		["id", "#foo"],
                -		" > ",
                -		["class", ".bar"],
                -		["pseudo-class", ":not(baz)"],
                -		["pseudo-element", ":after"]
                -	]], ["punctuation", "{"],
                -
                -	["selector", [
                -		"div",
                -		["attribute", "[foo=\"bar\"]"]
                -	]], ["punctuation", "{"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for pseudo-elements, pseudo-classes, classes and ids inside selectors.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css+haml/css+haml_usage.test b/node_modules/prismjs/tests/languages/css+haml/css+haml_usage.test
                deleted file mode 100644
                index c90047f..0000000
                --- a/node_modules/prismjs/tests/languages/css+haml/css+haml_usage.test
                +++ /dev/null
                @@ -1,28 +0,0 @@
                -:css
                -	.test {}
                -
                -~
                -	:css
                -	  .test {}
                -
                -----------------------------------------------------
                -
                -[
                -	["filter-css", [
                -		["filter-name", ":css"],
                -		["selector", ".test"],
                -		["punctuation", "{"],
                -		["punctuation", "}"]
                -	]],
                -	["punctuation", "~"],
                -	["filter-css", [
                -        ["filter-name", ":css"],
                -        ["selector", ".test"],
                -        ["punctuation", "{"],
                -        ["punctuation", "}"]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for CSS filter in Haml. The tilde serves only as a separator.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css+textile/css_inclusion.test b/node_modules/prismjs/tests/languages/css+textile/css_inclusion.test
                deleted file mode 100644
                index 8b6f605..0000000
                --- a/node_modules/prismjs/tests/languages/css+textile/css_inclusion.test
                +++ /dev/null
                @@ -1,117 +0,0 @@
                -h3{color: red}. Baz
                -
                -h4[fr]{text-decoration:underline;}(#bar). Foobar
                -
                -*{color:red}bold*
                -"(foo)[en]{color:blue;}Foo":bar
                -
                -#[fr](#foo){background:pink} Foobar
                -
                -!(foo)[en]{border:1px solid #ccc}foo.png!
                -
                -{color: blue}.|{font-weight:bold}.Baz|
                -(foo#bar){font-style:italic}[fr].|{background:red;}(bar#baz)[en].Baz|
                -
                -----------------------------------------------------
                -
                -[
                -	["phrase", [
                -		["block-tag", [
                -			["tag", "h3"],
                -			["modifier", [
                -				["css", [["punctuation", "{"], ["property", "color"], ["punctuation", ":"], " red", ["punctuation", "}"]]]
                -			]],
                -			["punctuation", "."]
                -		]],
                -		" Baz"
                -	]],
                -	["phrase", [
                -		["block-tag", [
                -			["tag", "h4"],
                -			["modifier", [
                -				["punctuation", "["], ["lang", "fr"], ["punctuation", "]"],
                -				["css", [["punctuation", "{"], ["property", "text-decoration"], ["punctuation", ":"], "underline", ["punctuation", ";"], ["punctuation", "}"]]],
                -				["punctuation", "("], ["class-id", "#bar"], ["punctuation", ")"]
                -			]],
                -			["punctuation", "."]
                -		]],
                -		" Foobar"
                -	]],
                -
                -	["phrase", [
                -		["inline", [
                -			["punctuation", "*"],
                -			["modifier", [
                -				["css", [["punctuation", "{"], ["property", "color"], ["punctuation", ":"], "red", ["punctuation", "}"]]]
                -			]],
                -			["bold", ["bold"]],
                -			["punctuation", "*"]
                -		]],
                -		["link", [
                -			["punctuation", "\""],
                -			["modifier", [
                -				["punctuation", "("], ["class-id", "foo"], ["punctuation", ")"],
                -				["punctuation", "["], ["lang", "en"], ["punctuation", "]"],
                -				["css", [["punctuation", "{"], ["property", "color"], ["punctuation", ":"], "blue", ["punctuation", ";"], ["punctuation", "}"]]]
                -			]],
                -			["text", "Foo"],
                -			["punctuation", "\""], ["punctuation", ":"],
                -			["url", "bar"]
                -		]]
                -	]],
                -
                -	["phrase", [
                -		["list", [
                -			["punctuation", "#"],
                -			["modifier", [
                -				["punctuation", "["], ["lang", "fr"], ["punctuation", "]"],
                -				["punctuation", "("], ["class-id", "#foo"], ["punctuation", ")"],
                -				["css", [["punctuation", "{"], ["property", "background"], ["punctuation", ":"], "pink", ["punctuation", "}"]]]
                -			]],
                -			" Foobar"
                -		]]
                -	]],
                -
                -	["phrase", [
                -		["image", [
                -			["punctuation", "!"],
                -			["modifier", [
                -				["punctuation", "("], ["class-id", "foo"], ["punctuation", ")"],
                -				["punctuation", "["], ["lang", "en"], ["punctuation", "]"],
                -				["css", [["punctuation", "{"], ["property", "border"], ["punctuation", ":"], "1px solid #ccc", ["punctuation", "}"]]]
                -			]],
                -			["source", "foo.png"],
                -			["punctuation", "!"]
                -		]]
                -	]],
                -
                -	["phrase", [
                -		["table", [
                -			["modifier", [
                -				["css", [["punctuation", "{"], ["property", "color"], ["punctuation", ":"], " blue", ["punctuation", "}"]]]
                -			]],
                -			["punctuation", "."], ["punctuation", "|"],
                -			["modifier", [
                -				["css", [["punctuation", "{"], ["property", "font-weight"], ["punctuation", ":"], "bold", ["punctuation", "}"]]]
                -			]],
                -			["punctuation", "."], "Baz", ["punctuation", "|"],
                -
                -			["modifier", [
                -				["punctuation", "("], ["class-id", "foo#bar"], ["punctuation", ")"],
                -				["css", [["punctuation", "{"], ["property", "font-style"], ["punctuation", ":"], "italic", ["punctuation", "}"]]],
                -				["punctuation", "["], ["lang", "fr"], ["punctuation", "]"]
                -			]],
                -			["punctuation", "."], ["punctuation", "|"],
                -			["modifier", [
                -				["css", [["punctuation", "{"], ["property", "background"], ["punctuation", ":"], "red", ["punctuation", ";"], ["punctuation", "}"]]],
                -				["punctuation", "("], ["class-id", "bar#baz"], ["punctuation", ")"],
                -				["punctuation", "["], ["lang", "en"], ["punctuation", "]"]
                -			]],
                -			["punctuation", "."], "Baz", ["punctuation", "|"]
                -		]]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for CSS modifier.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/atrule_feature.test b/node_modules/prismjs/tests/languages/css/atrule_feature.test
                deleted file mode 100644
                index abc75de..0000000
                --- a/node_modules/prismjs/tests/languages/css/atrule_feature.test
                +++ /dev/null
                @@ -1,47 +0,0 @@
                -@import url(foo.css);
                -@media print {}
                -@media (min-width: 640px) and (min-height: 1000px) {}
                -@main-color: red;
                -
                -----------------------------------------------------
                -
                -[
                -	["atrule", [
                -		["rule", "@import"],
                -		["url", "url(foo.css)"],
                -		["punctuation", ";"]
                -	]],
                -	["atrule", [
                -		["rule", "@media"],
                -		" print"
                -	]],
                -	["punctuation", "{"],
                -	["punctuation", "}"],
                -	["atrule", [
                -		["rule", "@media"],
                -		["punctuation", "("],
                -		["property", "min-width"],
                -		["punctuation", ":"],
                -		" 640px",
                -		["punctuation", ")"],
                -		" and ",
                -		["punctuation", "("],
                -        ["property", "min-height"],
                -        ["punctuation", ":"],
                -        " 1000px",
                -        ["punctuation", ")"]
                -	]],
                -	["punctuation", "{"],
                -    ["punctuation", "}"],
                -	["atrule", [
                -		["rule", "@main-color"],
                -		["punctuation", ":"],
                -		" red",
                -		["punctuation", ";"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for at-rules.
                -Also checks for LESS variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/comment_feature.test b/node_modules/prismjs/tests/languages/css/comment_feature.test
                deleted file mode 100644
                index a3899ed..0000000
                --- a/node_modules/prismjs/tests/languages/css/comment_feature.test
                +++ /dev/null
                @@ -1,16 +0,0 @@
                -/**/
                -/* foo */
                -/* foo
                -bar */
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "/**/"],
                -	["comment", "/* foo */"],
                -	["comment", "/* foo\r\nbar */"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for empty comment, single-line comment and multi-line comment.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/function_feature.test b/node_modules/prismjs/tests/languages/css/function_feature.test
                deleted file mode 100644
                index 0ed4f12..0000000
                --- a/node_modules/prismjs/tests/languages/css/function_feature.test
                +++ /dev/null
                @@ -1,35 +0,0 @@
                -transform: translate(-50%);
                -background: rgba(0, 0, 0, 0.2);
                -filter: opacity(alpha=0);
                -
                -----------------------------------------------------
                -
                -[
                -	["property", "transform"],
                -	["punctuation", ":"],
                -	["function", "translate"],
                -	["punctuation", "("],
                -	"-50%",
                -	["punctuation", ")"],
                -	["punctuation", ";"],
                -
                -	["property", "background"],
                -	["punctuation", ":"],
                -	["function", "rgba"],
                -	["punctuation", "("],
                -	"0, 0, 0, 0.2",
                -	["punctuation", ")"],
                -	["punctuation", ";"],
                -
                -	["property", "filter"],
                -	["punctuation", ":"],
                -	["function", "opacity"],
                -	["punctuation", "("],
                -	"alpha=0",
                -	["punctuation", ")"],
                -	["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/important_feature.test b/node_modules/prismjs/tests/languages/css/important_feature.test
                deleted file mode 100644
                index ad69c39..0000000
                --- a/node_modules/prismjs/tests/languages/css/important_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -color: red !important;
                -padding: 10px 20px 30px !important;
                -
                -----------------------------------------------------
                -
                -[
                -	["property", "color"],
                -	["punctuation", ":"],
                -	" red ",
                -	["important", "!important"],
                -	["punctuation", ";"],
                -	["property", "padding"],
                -    ["punctuation", ":"],
                -    " 10px 20px 30px ",
                -    ["important", "!important"],
                -    ["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for !important rule.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/property_feature.test b/node_modules/prismjs/tests/languages/css/property_feature.test
                deleted file mode 100644
                index 30ff466..0000000
                --- a/node_modules/prismjs/tests/languages/css/property_feature.test
                +++ /dev/null
                @@ -1,24 +0,0 @@
                -color: red;
                -background-color: blue;
                --webkit-transform: none;
                -
                -----------------------------------------------------
                -
                -[
                -	["property", "color"],
                -	["punctuation", ":"],
                -	" red",
                -	["punctuation", ";"],
                -	["property", "background-color"],
                -	["punctuation", ":"],
                -	" blue",
                -    ["punctuation", ";"],
                -	["property", "-webkit-transform"],
                -	["punctuation", ":"],
                -	" none",
                -    ["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for properties.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/selector_feature.test b/node_modules/prismjs/tests/languages/css/selector_feature.test
                deleted file mode 100644
                index 5a59720..0000000
                --- a/node_modules/prismjs/tests/languages/css/selector_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -foo{
                -foo + bar {
                -foo:first-child:hover {
                -* {
                -foo,
                -bar{
                -
                -----------------------------------------------------
                -
                -[
                -	["selector", "foo"],
                -	["punctuation", "{"],
                -	["selector", "foo + bar"],
                -	["punctuation", "{"],
                -	["selector", "foo:first-child:hover"],
                -	["punctuation", "{"],
                -	["selector", "*"],
                -	["punctuation", "{"],
                -	["selector", "foo,\r\nbar"],
                -	["punctuation", "{"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line and multi-line selectors.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/string_feature.test b/node_modules/prismjs/tests/languages/css/string_feature.test
                deleted file mode 100644
                index c7dee29..0000000
                --- a/node_modules/prismjs/tests/languages/css/string_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -"f\"oo"
                -'f\'oo'
                -"foo\
                -bar"
                -'foo\
                -bar'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"f\\\"oo\""],
                -	["string", "'f\\'oo'"],
                -	["string", "\"foo\\\r\nbar\""],
                -    ["string", "'foo\\\r\nbar'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-quoted and double-quoted strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/css/url_feature.test b/node_modules/prismjs/tests/languages/css/url_feature.test
                deleted file mode 100644
                index 05ce8f9..0000000
                --- a/node_modules/prismjs/tests/languages/css/url_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -url(foo.png)
                -url('foo.png')
                -url("foo.png")
                -url('foo\
                -bar.png')
                -url("foo\
                -bar.png")
                -
                -----------------------------------------------------
                -
                -[
                -	["url", "url(foo.png)"],
                -	["url", "url('foo.png')"],
                -	["url", "url(\"foo.png\")"],
                -	["url", "url('foo\\\r\nbar.png')"],
                -	["url", "url(\"foo\\\r\nbar.png\")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for url(), unquoted, single-quoted and double-quoted.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/comment_feature.test b/node_modules/prismjs/tests/languages/d/comment_feature.test
                deleted file mode 100644
                index fbc2389..0000000
                --- a/node_modules/prismjs/tests/languages/d/comment_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -#!/usr/bin/env rdmd
                -
                -/++/
                -/+ foo
                -bar +/
                -/+ foo
                -	/+
                -	bar +/
                -baz +/
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#!/usr/bin/env rdmd"],
                -	["comment", "/++/"],
                -	["comment", "/+ foo\r\nbar +/"],
                -	["comment", "/+ foo\r\n\t/+\r\n\tbar +/\r\nbaz +/"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for shebang and nestable multi-line comments.
                -Other comments are tested in clike.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/keyword_feature.test b/node_modules/prismjs/tests/languages/d/keyword_feature.test
                deleted file mode 100644
                index a5a0368..0000000
                --- a/node_modules/prismjs/tests/languages/d/keyword_feature.test
                +++ /dev/null
                @@ -1,251 +0,0 @@
                -$
                -abstract
                -alias
                -align
                -asm
                -assert
                -auto
                -body
                -bool
                -break
                -byte
                -case
                -cast
                -catch
                -cdouble
                -cent
                -cfloat
                -char
                -class;
                -const
                -continue
                -creal
                -dchar
                -debug
                -default
                -delegate
                -delete
                -deprecated
                -do
                -double
                -else
                -enum
                -export
                -extern
                -false
                -final
                -finally
                -float
                -for
                -foreach
                -foreach_reverse
                -function
                -goto
                -idouble
                -if
                -ifloat
                -immutable
                -import
                -inout
                -int
                -interface;
                -invariant
                -ireal
                -lazy
                -long
                -macro
                -mixin
                -module
                -new;
                -nothrow
                -null
                -out
                -override
                -package
                -pragma
                -private
                -protected
                -public
                -pure
                -real
                -ref
                -return
                -scope
                -shared
                -short
                -static
                -struct
                -super
                -switch
                -synchronized
                -template
                -this
                -throw
                -true
                -try
                -typedef
                -typeid
                -typeof
                -ubyte
                -ucent
                -uint
                -ulong
                -union
                -unittest
                -ushort
                -version
                -void
                -volatile
                -wchar
                -while
                -with
                -__FILE__
                -__MODULE__
                -__LINE__
                -__FUNCTION__
                -__PRETTY_FUNCTION__
                -__DATE__
                -__EOF__
                -__TIME__
                -__TIMESTAMP__
                -__VENDOR__
                -__VERSION__
                -__gshared
                -__traits
                -__vector
                -__parameters
                -string
                -wstring
                -dstring
                -size_t
                -ptrdiff_t
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "$"],
                -	["keyword", "abstract"],
                -	["keyword", "alias"],
                -	["keyword", "align"],
                -	["keyword", "asm"],
                -	["keyword", "assert"],
                -	["keyword", "auto"],
                -	["keyword", "body"],
                -	["keyword", "bool"],
                -	["keyword", "break"],
                -	["keyword", "byte"],
                -	["keyword", "case"],
                -	["keyword", "cast"],
                -	["keyword", "catch"],
                -	["keyword", "cdouble"],
                -	["keyword", "cent"],
                -	["keyword", "cfloat"],
                -	["keyword", "char"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "const"],
                -	["keyword", "continue"],
                -	["keyword", "creal"],
                -	["keyword", "dchar"],
                -	["keyword", "debug"],
                -	["keyword", "default"],
                -	["keyword", "delegate"],
                -	["keyword", "delete"],
                -	["keyword", "deprecated"],
                -	["keyword", "do"],
                -	["keyword", "double"],
                -	["keyword", "else"],
                -	["keyword", "enum"],
                -	["keyword", "export"],
                -	["keyword", "extern"],
                -	["keyword", "false"],
                -	["keyword", "final"],
                -	["keyword", "finally"],
                -	["keyword", "float"],
                -	["keyword", "for"],
                -	["keyword", "foreach"],
                -	["keyword", "foreach_reverse"],
                -	["keyword", "function"],
                -	["keyword", "goto"],
                -	["keyword", "idouble"],
                -	["keyword", "if"],
                -	["keyword", "ifloat"],
                -	["keyword", "immutable"],
                -	["keyword", "import"],
                -	["keyword", "inout"],
                -	["keyword", "int"],
                -	["keyword", "interface"], ["punctuation", ";"],
                -	["keyword", "invariant"],
                -	["keyword", "ireal"],
                -	["keyword", "lazy"],
                -	["keyword", "long"],
                -	["keyword", "macro"],
                -	["keyword", "mixin"],
                -	["keyword", "module"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "nothrow"],
                -	["keyword", "null"],
                -	["keyword", "out"],
                -	["keyword", "override"],
                -	["keyword", "package"],
                -	["keyword", "pragma"],
                -	["keyword", "private"],
                -	["keyword", "protected"],
                -	["keyword", "public"],
                -	["keyword", "pure"],
                -	["keyword", "real"],
                -	["keyword", "ref"],
                -	["keyword", "return"],
                -	["keyword", "scope"],
                -	["keyword", "shared"],
                -	["keyword", "short"],
                -	["keyword", "static"],
                -	["keyword", "struct"],
                -	["keyword", "super"],
                -	["keyword", "switch"],
                -	["keyword", "synchronized"],
                -	["keyword", "template"],
                -	["keyword", "this"],
                -	["keyword", "throw"],
                -	["keyword", "true"],
                -	["keyword", "try"],
                -	["keyword", "typedef"],
                -	["keyword", "typeid"],
                -	["keyword", "typeof"],
                -	["keyword", "ubyte"],
                -	["keyword", "ucent"],
                -	["keyword", "uint"],
                -	["keyword", "ulong"],
                -	["keyword", "union"],
                -	["keyword", "unittest"],
                -	["keyword", "ushort"],
                -	["keyword", "version"],
                -	["keyword", "void"],
                -	["keyword", "volatile"],
                -	["keyword", "wchar"],
                -	["keyword", "while"],
                -	["keyword", "with"],
                -	["keyword", "__FILE__"],
                -	["keyword", "__MODULE__"],
                -	["keyword", "__LINE__"],
                -	["keyword", "__FUNCTION__"],
                -	["keyword", "__PRETTY_FUNCTION__"],
                -	["keyword", "__DATE__"],
                -	["keyword", "__EOF__"],
                -	["keyword", "__TIME__"],
                -	["keyword", "__TIMESTAMP__"],
                -	["keyword", "__VENDOR__"],
                -	["keyword", "__VERSION__"],
                -	["keyword", "__gshared"],
                -	["keyword", "__traits"],
                -	["keyword", "__vector"],
                -	["keyword", "__parameters"],
                -	["keyword", "string"],
                -	["keyword", "wstring"],
                -	["keyword", "dstring"],
                -	["keyword", "size_t"],
                -	["keyword", "ptrdiff_t"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for $, keywords, special tokens and globally defined symbols.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/number_feature.test b/node_modules/prismjs/tests/languages/d/number_feature.test
                deleted file mode 100644
                index 817bd7e..0000000
                --- a/node_modules/prismjs/tests/languages/d/number_feature.test
                +++ /dev/null
                @@ -1,55 +0,0 @@
                -42
                -42_000
                -42L
                -42U
                -42UL
                -3.14_15_9
                -3.2e8
                -0.4e-7
                -62.14e+4
                -
                -0xBAD_FACE
                -0xFFU
                -0xfaL
                -0x42UL
                -0x2.AFp4
                -0xFp-3
                -0xFBp+9
                -
                -0b0000_1111
                -
                -6.3i
                -6.3fi
                -6.3Li
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "42_000"],
                -	["number", "42L"],
                -	["number", "42U"],
                -	["number", "42UL"],
                -	["number", "3.14_15_9"],
                -	["number", "3.2e8"],
                -	["number", "0.4e-7"],
                -	["number", "62.14e+4"],
                -
                -	["number", "0xBAD_FACE"],
                -	["number", "0xFFU"],
                -	["number", "0xfaL"],
                -	["number", "0x42UL"],
                -	["number", "0x2.AFp4"],
                -	["number", "0xFp-3"],
                -	["number", "0xFBp+9"],
                -
                -	["number", "0b0000_1111"],
                -
                -	["number", "6.3i"],
                -	["number", "6.3fi"],
                -	["number", "6.3Li"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/operator_feature.test b/node_modules/prismjs/tests/languages/d/operator_feature.test
                deleted file mode 100644
                index d7e291d..0000000
                --- a/node_modules/prismjs/tests/languages/d/operator_feature.test
                +++ /dev/null
                @@ -1,63 +0,0 @@
                -||
                -&&
                -++
                ---
                -.. ...
                -=>
                -in is
                -!in !is
                -<< <<=
                ->> >>> >>= >>>=
                -^^ ^^=
                -<> !<> <>= !<>=
                -!< !<=
                -!> !>=
                -+ +=
                -- -=
                -* *=
                -/ /=
                -% %=
                -& &=
                -| |=
                -^ ^=
                -~ ~=
                -= ==
                -! !=
                -< <=
                -> >=
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "||"],
                -	["operator", "&&"],
                -	["operator", "++"],
                -	["operator", "--"],
                -	["operator", ".."], ["operator", "..."],
                -	["operator", "=>"],
                -	["operator", "in"], ["operator", "is"],
                -	["operator", "!in"], ["operator", "!is"],
                -	["operator", "<<"], ["operator", "<<="],
                -	["operator", ">>"], ["operator", ">>>"], ["operator", ">>="], ["operator", ">>>="],
                -	["operator", "^^"], ["operator", "^^="],
                -	["operator", "<>"], ["operator", "!<>"], ["operator", "<>="], ["operator", "!<>="],
                -	["operator", "!<"], ["operator", "!<="],
                -	["operator", "!>"], ["operator", "!>="],
                -	["operator", "+"], ["operator", "+="],
                -	["operator", "-"], ["operator", "-="],
                -	["operator", "*"], ["operator", "*="],
                -	["operator", "/"], ["operator", "/="],
                -	["operator", "%"], ["operator", "%="],
                -	["operator", "&"], ["operator", "&="],
                -	["operator", "|"], ["operator", "|="],
                -	["operator", "^"], ["operator", "^="],
                -	["operator", "~"], ["operator", "~="],
                -	["operator", "="], ["operator", "=="],
                -	["operator", "!"], ["operator", "!="],
                -	["operator", "<"], ["operator", "<="],
                -	["operator", ">"], ["operator", ">="]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/property_feature.test b/node_modules/prismjs/tests/languages/d/property_feature.test
                deleted file mode 100644
                index 9e61b06..0000000
                --- a/node_modules/prismjs/tests/languages/d/property_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -@property int data()
                -@disable this();
                -
                -----------------------------------------------------
                -
                -[
                -	["property", "@property"],
                -	["keyword", "int"],
                -	["function", "data"], ["punctuation", "("], ["punctuation", ")"],
                -	["property", "@disable"],
                -	["keyword", "this"], ["punctuation", "("], ["punctuation", ")"],
                -	["punctuation", ";"]
                -]
                -
                -----------------------------------------------------
                -
                -Check for properties.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/register_feature.test b/node_modules/prismjs/tests/languages/d/register_feature.test
                deleted file mode 100644
                index 3eb57c6..0000000
                --- a/node_modules/prismjs/tests/languages/d/register_feature.test
                +++ /dev/null
                @@ -1,75 +0,0 @@
                -AL AH AX EAX
                -BL BH BX EBX
                -CL CH CX ECX
                -DL DH DX EDX
                -BP EBP
                -SP ESP
                -DI EDI
                -SI ESI
                -ES CS SS DS GS FS
                -CR0 CR2 CR3 CR4
                -DR0 DR1 DR2 DR3 DR6 DR7
                -TR3 TR4 TR5 TR6 TR7
                -ST
                -ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7)
                -MM0  MM1  MM2  MM3  MM4  MM5  MM6  MM7
                -XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7
                -
                -RAX  RBX  RCX  RDX
                -BPL  RBP
                -SPL  RSP
                -DIL  RDI
                -SIL  RSI
                -R8B  R8W  R8D  R8
                -R9B  R9W  R9D  R9
                -R10B R10W R10D R10
                -R11B R11W R11D R11
                -R12B R12W R12D R12
                -R13B R13W R13D R13
                -R14B R14W R14D R14
                -R15B R15W R15D R15
                -XMM8 XMM9 XMM10 XMM11 XMM12 XMM13 XMM14 XMM15
                -YMM0 YMM1 YMM2  YMM3  YMM4  YMM5  YMM6  YMM7
                -YMM8 YMM9 YMM10 YMM11 YMM12 YMM13 YMM14 YMM15
                -
                -----------------------------------------------------
                -
                -[
                -	["register", "AL"], ["register", "AH"], ["register", "AX"], ["register", "EAX"],
                -	["register", "BL"], ["register", "BH"], ["register", "BX"], ["register", "EBX"],
                -	["register", "CL"], ["register", "CH"], ["register", "CX"], ["register", "ECX"],
                -	["register", "DL"], ["register", "DH"], ["register", "DX"], ["register", "EDX"],
                -	["register", "BP"], ["register", "EBP"],
                -	["register", "SP"], ["register", "ESP"],
                -	["register", "DI"], ["register", "EDI"],
                -	["register", "SI"], ["register", "ESI"],
                -	["register", "ES"], ["register", "CS"], ["register", "SS"], ["register", "DS"], ["register", "GS"], ["register", "FS"],
                -	["register", "CR0"], ["register", "CR2"], ["register", "CR3"], ["register", "CR4"],
                -	["register", "DR0"], ["register", "DR1"], ["register", "DR2"], ["register", "DR3"], ["register", "DR6"], ["register", "DR7"],
                -	["register", "TR3"], ["register", "TR4"], ["register", "TR5"], ["register", "TR6"], ["register", "TR7"],
                -	["register", "ST"],
                -	["register", "ST(0)"], ["register", "ST(1)"], ["register", "ST(2)"], ["register", "ST(3)"], ["register", "ST(4)"], ["register", "ST(5)"], ["register", "ST(6)"], ["register", "ST(7)"],
                -	["register", "MM0"],  ["register", "MM1"],  ["register", "MM2"],  ["register", "MM3"],  ["register", "MM4"],  ["register", "MM5"],  ["register", "MM6"],  ["register", "MM7"],
                -	["register", "XMM0"], ["register", "XMM1"], ["register", "XMM2"], ["register", "XMM3"], ["register", "XMM4"], ["register", "XMM5"], ["register", "XMM6"], ["register", "XMM7"],
                -
                -	["register", "RAX"],  ["register", "RBX"],  ["register", "RCX"],  ["register", "RDX"],
                -	["register", "BPL"],  ["register", "RBP"],
                -	["register", "SPL"],  ["register", "RSP"],
                -	["register", "DIL"],  ["register", "RDI"],
                -	["register", "SIL"],  ["register", "RSI"],
                -	["register", "R8B"],  ["register", "R8W"],  ["register", "R8D"],  ["register", "R8"],
                -	["register", "R9B"],  ["register", "R9W"],  ["register", "R9D"],  ["register", "R9"],
                -	["register", "R10B"], ["register", "R10W"], ["register", "R10D"], ["register", "R10"],
                -	["register", "R11B"], ["register", "R11W"], ["register", "R11D"], ["register", "R11"],
                -	["register", "R12B"], ["register", "R12W"], ["register", "R12D"], ["register", "R12"],
                -	["register", "R13B"], ["register", "R13W"], ["register", "R13D"], ["register", "R13"],
                -	["register", "R14B"], ["register", "R14W"], ["register", "R14D"], ["register", "R14"],
                -	["register", "R15B"], ["register", "R15W"], ["register", "R15D"], ["register", "R15"],
                -	["register", "XMM8"], ["register", "XMM9"], ["register", "XMM10"], ["register", "XMM11"], ["register", "XMM12"], ["register", "XMM13"], ["register", "XMM14"], ["register", "XMM15"],
                -	["register", "YMM0"], ["register", "YMM1"], ["register", "YMM2"],  ["register", "YMM3"],  ["register", "YMM4"],  ["register", "YMM5"],  ["register", "YMM6"],  ["register", "YMM7"],
                -	["register", "YMM8"], ["register", "YMM9"], ["register", "YMM10"], ["register", "YMM11"], ["register", "YMM12"], ["register", "YMM13"], ["register", "YMM14"], ["register", "YMM15"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for Iasm registers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/string_feature.test b/node_modules/prismjs/tests/languages/d/string_feature.test
                deleted file mode 100644
                index fc501b1..0000000
                --- a/node_modules/prismjs/tests/languages/d/string_feature.test
                +++ /dev/null
                @@ -1,56 +0,0 @@
                -r"" x""
                -r"fo\"o"c x"00 FBCD"w r"baz"d
                -
                -q"[fo"o
                -bar]"
                -q"(fo"o
                -bar)"
                -q""
                -q"{fo"o
                -bar}"
                -
                -q"FOO
                -Bar "baz"
                -FOO"
                -
                -q"/fo"o
                -bar/"
                -q"|fo"o
                -bar|"
                -
                -'a' '\'' '\u000A'
                -
                -""
                -"foo"c "bar"w "baz"d
                -"fo\"o
                -bar"
                -`foo`
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "r\"\""], ["string", "x\"\""],
                -	["string", "r\"fo\\\"o\"c"], ["string", "x\"00 FBCD\"w"], ["string", "r\"baz\"d"],
                -
                -	["string", "q\"[fo\"o\r\nbar]\""],
                -	["string", "q\"(fo\"o\r\nbar)\""],
                -	["string", "q\"\""],
                -	["string", "q\"{fo\"o\r\nbar}\""],
                -
                -	["string", "q\"FOO\r\nBar \"baz\"\r\nFOO\""],
                -
                -	["string", "q\"/fo\"o\r\nbar/\""],
                -	["string", "q\"|fo\"o\r\nbar|\""],
                -
                -	["string", "'a'"], ["string", "'\\''"], ["string", "'\\u000A'"],
                -
                -	["string", "\"\""],
                -	["string", "\"foo\"c"], ["string", "\"bar\"w"], ["string", "\"baz\"d"],
                -	["string", "\"fo\\\"o\r\nbar\""],
                -	["string", "`foo`"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/d/token-string_feature.test b/node_modules/prismjs/tests/languages/d/token-string_feature.test
                deleted file mode 100644
                index 01627c4..0000000
                --- a/node_modules/prismjs/tests/languages/d/token-string_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -q{foo}
                -q{ q{bar} }
                -
                -----------------------------------------------------
                -
                -[
                -	["token-string", "q{foo}"],
                -	["token-string", "q{ q{bar} }"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for token strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/dart/keyword_feature.test b/node_modules/prismjs/tests/languages/dart/keyword_feature.test
                deleted file mode 100644
                index a5e3c6c..0000000
                --- a/node_modules/prismjs/tests/languages/dart/keyword_feature.test
                +++ /dev/null
                @@ -1,49 +0,0 @@
                -async* sync* yield*
                -abstract assert async await
                -break case catch
                -class;
                -const
                -continue default deferred
                -do dynamic else enum
                -export external
                -extends;
                -factory final finally for
                -get if
                -implements;
                -import
                -in library
                -new;
                -null
                -operator part rethrow return
                -set static super switch this
                -throw try typedef var
                -void while with yield
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "async*"], ["keyword", "sync*"], ["keyword", "yield*"],
                -	["keyword", "abstract"], ["keyword", "assert"], ["keyword", "async"], ["keyword", "await"],
                -	["keyword", "break"], ["keyword", "case"], ["keyword", "catch"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "const"],
                -	["keyword", "continue"], ["keyword", "default"], ["keyword", "deferred"],
                -	["keyword", "do"], ["keyword", "dynamic"], ["keyword", "else"], ["keyword", "enum"],
                -	["keyword", "export"], ["keyword", "external"],
                -	["keyword", "extends"], ["punctuation", ";"],
                -	["keyword", "factory"], ["keyword", "final"], ["keyword", "finally"], ["keyword", "for"],
                -	["keyword", "get"], ["keyword", "if"],
                -	["keyword", "implements"], ["punctuation", ";"],
                -	["keyword", "import"],
                -	["keyword", "in"], ["keyword", "library"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "null"],
                -	["keyword", "operator"], ["keyword", "part"], ["keyword", "rethrow"], ["keyword", "return"],
                -	["keyword", "set"], ["keyword", "static"], ["keyword", "super"], ["keyword", "switch"], ["keyword", "this"],
                -	["keyword", "throw"], ["keyword", "try"], ["keyword", "typedef"], ["keyword", "var"],
                -	["keyword", "void"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/dart/metadata_feature.test b/node_modules/prismjs/tests/languages/dart/metadata_feature.test
                deleted file mode 100644
                index e88e7ba..0000000
                --- a/node_modules/prismjs/tests/languages/dart/metadata_feature.test
                +++ /dev/null
                @@ -1,20 +0,0 @@
                -@deprecated
                -@override
                -@todo('seth', 'make this do something')
                -
                -----------------------------------------------------
                -
                -[
                -	["metadata", "@deprecated"],
                -	["metadata", "@override"],
                -	["metadata", "@todo"],
                -	["punctuation", "("],
                -	["string", "'seth'"],
                -	["punctuation", ","],
                -	["string", "'make this do something'"],
                -	["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for metadata.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/dart/operator_feature.test b/node_modules/prismjs/tests/languages/dart/operator_feature.test
                deleted file mode 100644
                index 5d631fd..0000000
                --- a/node_modules/prismjs/tests/languages/dart/operator_feature.test
                +++ /dev/null
                @@ -1,33 +0,0 @@
                -++ --
                -* / % ~/
                -+ - ! ~
                -<< >> ?
                -& ^ |
                ->= > <= <
                -as is is!
                -== != && ||
                -= *= /= ~/=
                -%= += -=
                -<<= >>=
                -&= ^= |=
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "++"], ["operator", "--"],
                -	["operator", "*"], ["operator", "/"], ["operator", "%"], ["operator", "~/"],
                -	["operator", "+"], ["operator", "-"], ["operator", "!"], ["operator", "~"],
                -	["operator", "<<"], ["operator", ">>"], ["operator", "?"],
                -	["operator", "&"], ["operator", "^"], ["operator", "|"],
                -	["operator", ">="], ["operator", ">"], ["operator", "<="], ["operator", "<"],
                -	["operator", "as"], ["operator", "is"], ["operator", "is!"],
                -	["operator", "=="], ["operator", "!="], ["operator", "&&"], ["operator", "||"],
                -	["operator", "="], ["operator", "*="], ["operator", "/="], ["operator", "~/="],
                -	["operator", "%="], ["operator", "+="], ["operator", "-="],
                -	["operator", "<<="], ["operator", ">>="],
                -	["operator", "&="], ["operator", "^="], ["operator", "|="]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/dart/string_feature.test b/node_modules/prismjs/tests/languages/dart/string_feature.test
                deleted file mode 100644
                index feffdbc..0000000
                --- a/node_modules/prismjs/tests/languages/dart/string_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -"" ''
                -r"" r''
                -"""""" ''''''
                -r"""""" r''''''
                -"fo\"o" 'fo\'o'
                -"""foo
                -bar"""
                -'''foo
                -bar'''
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""], ["string", "''"],
                -	["string", "r\"\""], ["string", "r''"],
                -	["string", "\"\"\"\"\"\""], ["string", "''''''"],
                -	["string", "r\"\"\"\"\"\""], ["string", "r''''''"],
                -	["string", "\"fo\\\"o\""], ["string", "'fo\\'o'"],
                -	["string", "\"\"\"foo\r\nbar\"\"\""], ["string", "'''foo\r\nbar'''"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single quoted and double quoted strings,
                -multi-line strings and "raw" strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/diff/coord_feature.test b/node_modules/prismjs/tests/languages/diff/coord_feature.test
                deleted file mode 100644
                index c082693..0000000
                --- a/node_modules/prismjs/tests/languages/diff/coord_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -7c7
                -
                -*** 4,8 ****
                ---- 4,8 ----
                -
                -@@ -4,5 +4,5 @@
                -
                -----------------------------------------------------
                -
                -[
                -	["coord", "7c7"],
                -
                -	["coord", "*** 4,8 ****"],
                -	["coord", "--- 4,8 ----"],
                -
                -	["coord", "@@ -4,5 +4,5 @@"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for coords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/diff/diff_feature.test b/node_modules/prismjs/tests/languages/diff/diff_feature.test
                deleted file mode 100644
                index 0e53490..0000000
                --- a/node_modules/prismjs/tests/languages/diff/diff_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -!     qt: core
                -
                --    qt: core
                -+    qt: core gui
                -
                -< qt: core
                -> qt: core quick
                -
                -----------------------------------------------------
                -
                -[
                -	["diff", "!     qt: core"],
                -	["deleted", "-    qt: core"],
                -	["inserted", "+    qt: core gui"],
                -	["deleted", "< qt: core"],
                -	["inserted", "> qt: core quick"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for deleted, inserted and different lines.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/docker/comment_feature.test b/node_modules/prismjs/tests/languages/docker/comment_feature.test
                deleted file mode 100644
                index 054d602..0000000
                --- a/node_modules/prismjs/tests/languages/docker/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -#
                -# foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#"],
                -	["comment", "# foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/docker/keyword_feature.test b/node_modules/prismjs/tests/languages/docker/keyword_feature.test
                deleted file mode 100644
                index 8b39af9..0000000
                --- a/node_modules/prismjs/tests/languages/docker/keyword_feature.test
                +++ /dev/null
                @@ -1,37 +0,0 @@
                -ONBUILD ADD . /app/src
                -FROM ubuntu
                -MAINTAINER SvenDowideit@home.org.au
                -RUN cd /tmp
                -EXPOSE 5900
                -ENV myName John Doe
                -COPY hom* /mydir/
                -VOLUME /myvol
                -USER daemon
                -WORKDIR /a
                -CMD echo "foo"
                -LABEL version="1.0"
                -ENTRYPOINT ["top", "-b"]
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "ONBUILD"], ["keyword", "ADD"], " . /app/src\r\n",
                -	["keyword", "FROM"], " ubuntu\r\n",
                -	["keyword", "MAINTAINER"], " SvenDowideit@home.org.au\r\n",
                -	["keyword", "RUN"], " cd /tmp\r\n",
                -	["keyword", "EXPOSE"], " 5900\r\n",
                -	["keyword", "ENV"], " myName John Doe\r\n",
                -	["keyword", "COPY"], " hom* /mydir/\r\n",
                -	["keyword", "VOLUME"], " /myvol\r\n",
                -	["keyword", "USER"], " daemon\r\n",
                -	["keyword", "WORKDIR"], " /a\r\n",
                -	["keyword", "CMD"], " echo ", ["string", "\"foo\""],
                -	["keyword", "LABEL"], " version=", ["string", "\"1.0\""],
                -	["keyword", "ENTRYPOINT"],
                -	["punctuation", "["], ["string", "\"top\""], ["punctuation", ","],
                -	["string", "\"-b\""], ["punctuation", "]"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/docker/string_feature.test b/node_modules/prismjs/tests/languages/docker/string_feature.test
                deleted file mode 100644
                index e131f02..0000000
                --- a/node_modules/prismjs/tests/languages/docker/string_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -""
                -"fo\"obar"
                -"foo\
                -bar"
                -''
                -'fo\'obar'
                -'foo\
                -bar'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"fo\\\"obar\""],
                -	["string", "\"foo\\\r\nbar\""],
                -	["string", "''"],
                -	["string", "'fo\\'obar'"],
                -	["string", "'foo\\\r\nbar'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/eiffel/boolean_feature.test b/node_modules/prismjs/tests/languages/eiffel/boolean_feature.test
                deleted file mode 100644
                index 5750be0..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -True
                -False
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "True"],
                -	["boolean", "False"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/eiffel/char_feature.test b/node_modules/prismjs/tests/languages/eiffel/char_feature.test
                deleted file mode 100644
                index 6a9b124..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/char_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -'a'
                -'%''
                -'%/123/'
                -
                -----------------------------------------------------
                -
                -[
                -	["char", "'a'"],
                -	["char", "'%''"],
                -	["char", "'%/123/'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for chars.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/eiffel/comment_feature.test b/node_modules/prismjs/tests/languages/eiffel/comment_feature.test
                deleted file mode 100644
                index d911aa7..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                ---
                --- foo bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "--"],
                -	["comment", "-- foo bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/eiffel/keyword_feature.test b/node_modules/prismjs/tests/languages/eiffel/keyword_feature.test
                deleted file mode 100644
                index cb6ae29..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/keyword_feature.test
                +++ /dev/null
                @@ -1,39 +0,0 @@
                -across agent alias all and
                -attached as assign attribute
                -check class convert create
                -Current debug deferred detachable
                -do else elseif end ensure
                -expanded export external
                -feature from frozen if
                -implies inherit inspect
                -invariant like local loop
                -not note obsolete old
                -once or Precursor redefine
                -rename require rescue Result
                -retry select separate some
                -then undefine until variant
                -Void when xor
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "across"], ["keyword", "agent"], ["keyword", "alias"], ["keyword", "all"], ["keyword", "and"],
                -	["keyword", "attached"], ["keyword", "as"], ["keyword", "assign"], ["keyword", "attribute"],
                -	["keyword", "check"], ["keyword", "class"], ["keyword", "convert"], ["keyword", "create"],
                -	["keyword", "Current"], ["keyword", "debug"], ["keyword", "deferred"], ["keyword", "detachable"],
                -	["keyword", "do"], ["keyword", "else"], ["keyword", "elseif"], ["keyword", "end"], ["keyword", "ensure"],
                -	["keyword", "expanded"], ["keyword", "export"], ["keyword", "external"],
                -	["keyword", "feature"], ["keyword", "from"], ["keyword", "frozen"], ["keyword", "if"],
                -	["keyword", "implies"], ["keyword", "inherit"], ["keyword", "inspect"],
                -	["keyword", "invariant"], ["keyword", "like"], ["keyword", "local"], ["keyword", "loop"],
                -	["keyword", "not"], ["keyword", "note"], ["keyword", "obsolete"], ["keyword", "old"],
                -	["keyword", "once"], ["keyword", "or"], ["keyword", "Precursor"], ["keyword", "redefine"],
                -	["keyword", "rename"], ["keyword", "require"], ["keyword", "rescue"], ["keyword", "Result"],
                -	["keyword", "retry"], ["keyword", "select"], ["keyword", "separate"], ["keyword", "some"],
                -	["keyword", "then"], ["keyword", "undefine"], ["keyword", "until"], ["keyword", "variant"],
                -	["keyword", "Void"], ["keyword", "when"], ["keyword", "xor"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/eiffel/number_feature.test b/node_modules/prismjs/tests/languages/eiffel/number_feature.test
                deleted file mode 100644
                index beb3cc7..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/number_feature.test
                +++ /dev/null
                @@ -1,29 +0,0 @@
                -0xbabe
                -0xBAD_A55
                -0c7654_1234
                -0b1111_0000_0101
                -42
                -42.
                -.42
                -1_845.123_456
                -3.14e+4
                -4_2.5_7e-1_0
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0xbabe"],
                -	["number", "0xBAD_A55"],
                -	["number", "0c7654_1234"],
                -	["number", "0b1111_0000_0101"],
                -	["number", "42"],
                -	["number", "42."],
                -	["number", ".42"],
                -	["number", "1_845.123_456"],
                -	["number", "3.14e+4"],
                -	["number", "4_2.5_7e-1_0"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for hexadecimal, octal, binary and decimal numbers.
                diff --git a/node_modules/prismjs/tests/languages/eiffel/operator_feature.test b/node_modules/prismjs/tests/languages/eiffel/operator_feature.test
                deleted file mode 100644
                index fcba4b3..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/operator_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -\\ |..| .. //
                -/~ / /=
                -< <= > >=
                -+ - *
                -^ = ~
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "\\\\"], ["operator", "|..|"], ["operator", ".."], ["operator", "//"],
                -	["operator", "/~"], ["operator", "/"], ["operator", "/="],
                -	["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="],
                -	["operator", "+"], ["operator", "-"], ["operator", "*"],
                -	["operator", "^"], ["operator", "="], ["operator", "~"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/eiffel/string_feature.test b/node_modules/prismjs/tests/languages/eiffel/string_feature.test
                deleted file mode 100644
                index 183bf99..0000000
                --- a/node_modules/prismjs/tests/languages/eiffel/string_feature.test
                +++ /dev/null
                @@ -1,30 +0,0 @@
                -""
                -"fo%"o"
                -"foo%
                -%bar"
                -
                -"[fo"o
                -bar]"
                -"!-[fo"o[]
                -bar]!-"
                -"{fo"o
                -bar}"
                -"*?{fo"o{}
                -bar}*?"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"fo%\"o\""],
                -	["string", "\"foo%\r\n%bar\""],
                -
                -	["string", "\"[fo\"o\r\nbar]\""],
                -	["string", "\"!-[fo\"o[]\r\nbar]!-\""],
                -	["string", "\"{fo\"o\r\nbar}\""],
                -	["string", "\"*?{fo\"o{}\r\nbar}*?\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings, multi-line strings, and aligned and non aligned verbatim strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/atom_feature.test b/node_modules/prismjs/tests/languages/elixir/atom_feature.test
                deleted file mode 100644
                index 5b1c47d..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/atom_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -:true
                -:false
                -:FooBar42
                -
                -----------------------------------------------------
                -
                -[
                -	["atom", ":true"],
                -	["atom", ":false"],
                -	["atom", ":FooBar42"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for atoms.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/attr-name_feature.test b/node_modules/prismjs/tests/languages/elixir/attr-name_feature.test
                deleted file mode 100644
                index de7cadc..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/attr-name_feature.test
                +++ /dev/null
                @@ -1,24 +0,0 @@
                -[a: 1, b: 2]
                -do: :this, else: :that
                -where: foo,
                -select: bar
                -
                -----------------------------------------------------
                -
                -[
                -	["punctuation", "["],
                -	["attr-name", "a:"],
                -	["number", "1"], ["punctuation", ","],
                -	["attr-name", "b:"],
                -	["number", "2"], ["punctuation", "]"],
                -
                -	["attr-name", "do:"], ["atom", ":this"],
                -	["punctuation", ","],
                -	["attr-name", "else:"], ["atom", ":that"],
                -	["attr-name", "where:"], " foo", ["punctuation", ","],
                -	["attr-name", "select:"], " bar"
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keyword list keys.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/attribute_feature.test b/node_modules/prismjs/tests/languages/elixir/attribute_feature.test
                deleted file mode 100644
                index 273c2a4..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/attribute_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -@vsn 2
                -@moduledoc """
                -foobar
                -"""
                -@tag :external
                -
                -----------------------------------------------------
                -
                -[
                -	["attribute", "@vsn"], ["number", "2"],
                -	["attribute", "@moduledoc"], ["string", [
                -		"\"\"\"\r\nfoobar\r\n\"\"\""
                -	]],
                -	["attribute", "@tag"], ["atom", ":external"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for module attributes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/boolean_feature.test b/node_modules/prismjs/tests/languages/elixir/boolean_feature.test
                deleted file mode 100644
                index aa94979..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/boolean_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -true
                -false
                -nil
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"],
                -	["boolean", "false"],
                -	["boolean", "nil"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans and nil.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/capture_feature.test b/node_modules/prismjs/tests/languages/elixir/capture_feature.test
                deleted file mode 100644
                index 8a64b66..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/capture_feature.test
                +++ /dev/null
                @@ -1,28 +0,0 @@
                -fun = &Math.zero?/1
                -(&is_function/1).(fun)
                -fun = &(&1 + 1)
                -&List.flatten(&1, &2)
                -
                -----------------------------------------------------
                -
                -[
                -	"fun ", ["operator", "="],
                -	["capture", "&Math.zero?/1"],
                -	["punctuation", "("],
                -	["capture", "&is_function/1"],
                -	["punctuation", ")"],
                -	["punctuation", "."],
                -	["punctuation", "("], "fun", ["punctuation", ")"],
                -	"\r\nfun ", ["operator", "="],
                -	["capture", "&"],
                -	["punctuation", "("], ["argument", "&1"],
                -	["operator", "+"], ["number", "1"], ["punctuation", ")"],
                -	["capture", "&List.flatten"],
                -	["punctuation", "("], ["argument", "&1"],
                -	["punctuation", ","], ["argument", "&2"],
                -	["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for function capturing and arguments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/comment_feature.test b/node_modules/prismjs/tests/languages/elixir/comment_feature.test
                deleted file mode 100644
                index 09493ab..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -#
                -# Foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#"],
                -	["comment", "# Foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/issue775.test b/node_modules/prismjs/tests/languages/elixir/issue775.test
                deleted file mode 100644
                index d3243f8..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/issue775.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -@doc """
                -## Parameters
                -"""
                -
                -----------------------------------------------------
                -
                -[
                -	["attribute", "@doc"],
                -	["string", [
                -		"\"\"\"\r\n## Parameters\r\n\"\"\""
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Ensures that markdown headers are not highlighted as comments inside strings.
                -See #775 for details.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/keyword_feature.test b/node_modules/prismjs/tests/languages/elixir/keyword_feature.test
                deleted file mode 100644
                index e1b02a1..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/keyword_feature.test
                +++ /dev/null
                @@ -1,31 +0,0 @@
                -after alias and case
                -catch cond def
                -defcallback
                -defexception
                -defimpl defmodule
                -defp defprotocol
                -defstruct do else
                -end fn for if
                -import not or
                -require rescue try
                -unless use when
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "after"], ["keyword", "alias"], ["keyword", "and"], ["keyword", "case"],
                -	["keyword", "catch"], ["keyword", "cond"], ["keyword", "def"],
                -	["keyword", "defcallback"],
                -	["keyword", "defexception"],
                -	["keyword", "defimpl"], ["keyword", "defmodule"],
                -	["keyword", "defp"], ["keyword", "defprotocol"],
                -	["keyword", "defstruct"], ["keyword", "do"], ["keyword", "else"],
                -	["keyword", "end"], ["keyword", "fn"], ["keyword", "for"], ["keyword", "if"],
                -	["keyword", "import"], ["keyword", "not"], ["keyword", "or"],
                -	["keyword", "require"], ["keyword", "rescue"], ["keyword", "try"],
                -	["keyword", "unless"], ["keyword", "use"], ["keyword", "when"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/number_feature.test b/node_modules/prismjs/tests/languages/elixir/number_feature.test
                deleted file mode 100644
                index ae06684..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/number_feature.test
                +++ /dev/null
                @@ -1,27 +0,0 @@
                -0b1111_0000
                -0o754_123
                -0xBadFace
                -42
                -42_000
                -3.14159
                -2e6
                -3.241_753E-7
                -0.7e+15
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0b1111_0000"],
                -	["number", "0o754_123"],
                -	["number", "0xBadFace"],
                -	["number", "42"],
                -	["number", "42_000"],
                -	["number", "3.14159"],
                -	["number", "2e6"],
                -	["number", "3.241_753E-7"],
                -	["number", "0.7e+15"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for binary, octal, hexadecimal and decimal numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/operator_feature.test b/node_modules/prismjs/tests/languages/elixir/operator_feature.test
                deleted file mode 100644
                index c97dcce..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/operator_feature.test
                +++ /dev/null
                @@ -1,41 +0,0 @@
                -in
                -\\
                -::
                -..
                -...
                -+ ++
                -- -- ->
                -*
                -/
                -^
                -& &&
                -| || |>
                -< <= <> <-
                -> >=
                -! != !==
                -= =~ == === =>
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "in"],
                -	["operator", "\\\\"],
                -	["operator", "::"],
                -	["operator", ".."],
                -	["operator", "..."],
                -	["operator", "+"], ["operator", "++"],
                -	["operator", "-"], ["operator", "--"], ["operator", "->"],
                -	["operator", "*"],
                -	["operator", "/"],
                -	["operator", "^"],
                -	["operator", "&"], ["operator", "&&"],
                -	["operator", "|"], ["operator", "||"], ["operator", "|>"],
                -	["operator", "<"], ["operator", "<="], ["operator", "<>"], ["operator", "<-"],
                -	["operator", ">"], ["operator", ">="],
                -	["operator", "!"], ["operator", "!="], ["operator", "!=="],
                -	["operator", "="], ["operator", "=~"], ["operator", "=="], ["operator", "==="], ["operator", "=>"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                diff --git a/node_modules/prismjs/tests/languages/elixir/regex_feature.test b/node_modules/prismjs/tests/languages/elixir/regex_feature.test
                deleted file mode 100644
                index 81eb31a..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/regex_feature.test
                +++ /dev/null
                @@ -1,29 +0,0 @@
                -~r"""foobar"""im
                -~R'''foobar'''ux
                -~r/fo\/obar/smfr
                -~R|fo\|obar|uismxfr
                -~r"fo\"obar"x
                -~R'fo\'obar's
                -~r(fo\)obar)
                -~R[fo\]obar]
                -~r{fo\}obar}
                -~Robar>
                -
                -----------------------------------------------------
                -
                -[
                -	["regex", "~r\"\"\"foobar\"\"\"im"],
                -	["regex", "~R'''foobar'''ux"],
                -	["regex", "~r/fo\\/obar/smfr"],
                -	["regex", "~R|fo\\|obar|uismxfr"],
                -	["regex", "~r\"fo\\\"obar\"x"],
                -	["regex", "~R'fo\\'obar's"],
                -	["regex", "~r(fo\\)obar)"],
                -	["regex", "~R[fo\\]obar]"],
                -	["regex", "~r{fo\\}obar}"],
                -	["regex", "~Robar>"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for regexes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/elixir/string_feature.test b/node_modules/prismjs/tests/languages/elixir/string_feature.test
                deleted file mode 100644
                index ca54f4b..0000000
                --- a/node_modules/prismjs/tests/languages/elixir/string_feature.test
                +++ /dev/null
                @@ -1,115 +0,0 @@
                -~s/foobar/
                -~s/foo#{42}bar/
                -~S|foobar|
                -~c"foobar"
                -~c"foo#{42}bar"
                -~C'foobar'
                -~w(foobar)c
                -~w(foo#{42}bar)s
                -~W[foobar]a
                -~s{foobar}
                -~s{foo#{42}bar}
                -~S
                -
                -"""
                -Foo bar
                -"""
                -
                -'''
                -Foo bar
                -'''
                -
                -~S"""
                -Foo bar
                -"""
                -
                -~c"""
                -Foo bar
                -"""
                -
                -~w"""
                -Foo bar
                -"""
                -
                -""
                -"foo"
                -"fo\"o\
                -#{42}bar"
                -''
                -'foo'
                -'fo\'o\
                -bar'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", ["~s/foobar/"]],
                -	["string", [
                -		"~s/foo",
                -		["interpolation", [
                -			["delimiter", "#{"],
                -			["number", "42"],
                -			["delimiter", "}"]
                -		]],
                -		"bar/"
                -	]],
                -	["string", ["~S|foobar|"]],
                -	["string", ["~c\"foobar\""]],
                -	["string", [
                -		"~c\"foo",
                -		["interpolation", [
                -			["delimiter", "#{"],
                -			["number", "42"],
                -			["delimiter", "}"]
                -		]],
                -		"bar\""
                -	]],
                -	["string", ["~C'foobar'"]],
                -	["string", ["~w(foobar)c"]],
                -	["string", [
                -		"~w(foo",
                -		["interpolation", [
                -			["delimiter", "#{"],
                -			["number", "42"],
                -			["delimiter", "}"]
                -		]],
                -		"bar)s"
                -	]],
                -	["string", ["~W[foobar]a"]],
                -	["string", ["~s{foobar}"]],
                -	["string", [
                -		"~s{foo",
                -		["interpolation", [
                -			["delimiter", "#{"],
                -			["number", "42"],
                -			["delimiter", "}"]
                -		]],
                -		"bar}"
                -	]],
                -	["string", ["~S"]],
                -
                -	["string", ["\"\"\"\r\nFoo bar\r\n\"\"\""]],
                -	["string", ["'''\r\nFoo bar\r\n'''"]],
                -	["string", ["~S\"\"\"\r\nFoo bar\r\n\"\"\""]],
                -	["string", ["~c\"\"\"\r\nFoo bar\r\n\"\"\""]],
                -	["string", ["~w\"\"\"\r\nFoo bar\r\n\"\"\""]],
                -
                -	["string", ["\"\""]],
                -	["string", ["\"foo\""]],
                -	["string", [
                -		"\"fo\\\"o\\\r\n",
                -		["interpolation", [
                -			["delimiter", "#{"],
                -			["number", "42"],
                -			["delimiter", "}"]
                -		]],
                -		"bar\""
                -	]],
                -	["string", ["''"]],
                -	["string", ["'foo'"]],
                -	["string", ["'fo\\'o\\\r\nbar'"]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/atom_feature.test b/node_modules/prismjs/tests/languages/erlang/atom_feature.test
                deleted file mode 100644
                index 1761a8b..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/atom_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -foo
                -foo@_bar
                -'foo bar'
                -'\'\\'
                -
                -----------------------------------------------------
                -
                -[
                -	["atom", "foo"],
                -	["atom", "foo@_bar"],
                -	["quoted-atom", "'foo bar'"],
                -    ["quoted-atom", "'\\'\\\\'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for atoms and quoted atoms.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/boolean_feature.test b/node_modules/prismjs/tests/languages/erlang/boolean_feature.test
                deleted file mode 100644
                index 4019c44..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -true
                -false
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"],
                -	["boolean", "false"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/comment_feature.test b/node_modules/prismjs/tests/languages/erlang/comment_feature.test
                deleted file mode 100644
                index b879c5e..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/comment_feature.test
                +++ /dev/null
                @@ -1,11 +0,0 @@
                -% foo bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "% foo bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/function_feature.test b/node_modules/prismjs/tests/languages/erlang/function_feature.test
                deleted file mode 100644
                index 72d8857..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/function_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -spawn(
                -foo@_bar(
                -'foo bar'(
                -'\'\\'(
                -
                -----------------------------------------------------
                -
                -[
                -	["function", "spawn"], ["punctuation", "("],
                -	["function", "foo@_bar"], ["punctuation", "("],
                -	["quoted-function", "'foo bar'"], ["punctuation", "("],
                -	["quoted-function", "'\\'\\\\'"], ["punctuation", "("]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for functions and quoted functions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/keyword_feature.test b/node_modules/prismjs/tests/languages/erlang/keyword_feature.test
                deleted file mode 100644
                index 3af1da3..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/keyword_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -fun when case of
                -end if receive
                -after try catch
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "fun"], ["keyword", "when"], ["keyword", "case"], ["keyword", "of"],
                -	["keyword", "end"], ["keyword", "if"], ["keyword", "receive"],
                -	["keyword", "after"], ["keyword", "try"], ["keyword", "catch"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/number_feature.test b/node_modules/prismjs/tests/languages/erlang/number_feature.test
                deleted file mode 100644
                index 0e5890f..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/number_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -42
                -2#101
                -16#1f
                -2.3
                -2.3e3
                -2.3e-3
                -$A
                -$\n
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "2#101"],
                -	["number", "16#1f"],
                -	["number", "2.3"],
                -	["number", "2.3e3"],
                -	["number", "2.3e-3"],
                -	["number", "$A"],
                -	["number", "$\\n"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers and character codes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/operator_feature.test b/node_modules/prismjs/tests/languages/erlang/operator_feature.test
                deleted file mode 100644
                index addd5d3..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/operator_feature.test
                +++ /dev/null
                @@ -1,27 +0,0 @@
                -== /= >= :=
                -=:= =/=
                -+ ++ - --
                -= * / !
                -<= < >
                -bnot div rem band
                -bor bxor bsl bsr
                -not and or xor
                -orelse andalso
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "=="], ["operator", "/="], ["operator", ">="], ["operator", ":="],
                -	["operator", "=:="], ["operator", "=/="],
                -	["operator", "+"], ["operator", "++"], ["operator", "-"], ["operator", "--"],
                -	["operator", "="], ["operator", "*"], ["operator", "/"], ["operator", "!"],
                -	["operator", "<="], ["operator", "<"], ["operator", ">"],
                -	["operator", "bnot"], ["operator", "div"], ["operator", "rem"], ["operator", "band"],
                -	["operator", "bor"], ["operator", "bxor"], ["operator", "bsl"], ["operator", "bsr"],
                -	["operator", "not"], ["operator", "and"], ["operator", "or"], ["operator", "xor"],
                -	["operator", "orelse"], ["operator", "andalso"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/string_feature.test b/node_modules/prismjs/tests/languages/erlang/string_feature.test
                deleted file mode 100644
                index 42770f6..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/string_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -""
                -"foo bar"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"foo bar\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/erlang/variable_feature.test b/node_modules/prismjs/tests/languages/erlang/variable_feature.test
                deleted file mode 100644
                index f7492e4..0000000
                --- a/node_modules/prismjs/tests/languages/erlang/variable_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -Foo
                -?Bar
                -_
                -Foo@_bar
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "Foo"],
                -	["variable", "?Bar"],
                -	["variable", "_"],
                -	["variable", "Foo@_bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran+pure/fortran_inclusion.test b/node_modules/prismjs/tests/languages/fortran+pure/fortran_inclusion.test
                deleted file mode 100644
                index 176cad9..0000000
                --- a/node_modules/prismjs/tests/languages/fortran+pure/fortran_inclusion.test
                +++ /dev/null
                @@ -1,18 +0,0 @@
                -%< -*- Fortran90 -*-
                -21_SHORT
                -%>
                -
                -----------------------------------------------------
                -
                -[
                -	["inline-lang-fortran", [
                -		["delimiter", "%< "],
                -		["lang", "-*- Fortran90 -*-"],
                -		["number", "21_SHORT"],
                -		["delimiter", "%>"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for Fortran in Pure.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran/boolean_feature.test b/node_modules/prismjs/tests/languages/fortran/boolean_feature.test
                deleted file mode 100644
                index 88bdb6b..0000000
                --- a/node_modules/prismjs/tests/languages/fortran/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -.TRUE.
                -.false.
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", ".TRUE."],
                -	["boolean", ".false."]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for boolean.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran/comment_feature.test b/node_modules/prismjs/tests/languages/fortran/comment_feature.test
                deleted file mode 100644
                index c1fe029..0000000
                --- a/node_modules/prismjs/tests/languages/fortran/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -!
                -! foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "!"],
                -	["comment", "! foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran/keyword_feature.test b/node_modules/prismjs/tests/languages/fortran/keyword_feature.test
                deleted file mode 100644
                index e3bb493..0000000
                --- a/node_modules/prismjs/tests/languages/fortran/keyword_feature.test
                +++ /dev/null
                @@ -1,199 +0,0 @@
                -INTEGER
                -REAL
                -DOUBLE PRECISION
                -DOUBLEPRECISION
                -COMPLEX
                -CHARACTER
                -LOGICAL
                -
                -ALLOCATABLE
                -ALLOCATE
                -BACKSPACE
                -CALL
                -CASE
                -CLOSE
                -COMMON
                -CONTAINS
                -CONTINUE
                -CYCLE
                -DATA
                -DEALLOCATE
                -DIMENSION
                -DO
                -END
                -EQUIVALENCE
                -EXIT
                -EXTERNAL
                -FORMAT
                -GO TO
                -GOTO
                -IMPLICIT
                -IMPLICIT NONE
                -INQUIRE
                -INTENT
                -INTRINSIC
                -MODULE PROCEDURE
                -NAMELIST
                -NULLIFY
                -OPEN
                -OPTIONAL
                -PARAMETER
                -POINTER
                -PRINT
                -PRIVATE
                -PUBLIC
                -READ
                -RETURN
                -REWIND
                -SAVE
                -SELECT
                -STOP
                -TARGET
                -WHILE
                -WRITE
                -
                -BLOCK DATA
                -BLOCKDATA
                -END BLOCK DATA
                -ENDBLOCKDATA
                -DO
                -ENDDO
                -FILE
                -FORALL
                -FUNCTION
                -IF
                -END IF
                -INTERFACE
                -MODULE
                -PROGRAM
                -SELECT
                -SUBROUTINE
                -TYPE
                -WHERE
                -
                -ASSIGNMENT
                -DEFAULT
                -ELEMENTAL
                -ELSE
                -ELSEWHERE
                -ELSEIF
                -ENTRY
                -IN
                -INCLUDE
                -INOUT
                -KIND
                -NULL
                -ONLY
                -OPERATOR
                -OUT
                -PURE
                -RECURSIVE
                -RESULT
                -SEQUENCE
                -STAT
                -THEN
                -USE
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "INTEGER"],
                -	["keyword", "REAL"],
                -	["keyword", "DOUBLE PRECISION"],
                -	["keyword", "DOUBLEPRECISION"],
                -	["keyword", "COMPLEX"],
                -	["keyword", "CHARACTER"],
                -	["keyword", "LOGICAL"],
                -
                -	["keyword", "ALLOCATABLE"],
                -	["keyword", "ALLOCATE"],
                -	["keyword", "BACKSPACE"],
                -	["keyword", "CALL"],
                -	["keyword", "CASE"],
                -	["keyword", "CLOSE"],
                -	["keyword", "COMMON"],
                -	["keyword", "CONTAINS"],
                -	["keyword", "CONTINUE"],
                -	["keyword", "CYCLE"],
                -	["keyword", "DATA"],
                -	["keyword", "DEALLOCATE"],
                -	["keyword", "DIMENSION"],
                -	["keyword", "DO"],
                -	["keyword", "END"],
                -	["keyword", "EQUIVALENCE"],
                -	["keyword", "EXIT"],
                -	["keyword", "EXTERNAL"],
                -	["keyword", "FORMAT"],
                -	["keyword", "GO TO"],
                -	["keyword", "GOTO"],
                -	["keyword", "IMPLICIT"],
                -	["keyword", "IMPLICIT NONE"],
                -	["keyword", "INQUIRE"],
                -	["keyword", "INTENT"],
                -	["keyword", "INTRINSIC"],
                -	["keyword", "MODULE PROCEDURE"],
                -	["keyword", "NAMELIST"],
                -	["keyword", "NULLIFY"],
                -	["keyword", "OPEN"],
                -	["keyword", "OPTIONAL"],
                -	["keyword", "PARAMETER"],
                -	["keyword", "POINTER"],
                -	["keyword", "PRINT"],
                -	["keyword", "PRIVATE"],
                -	["keyword", "PUBLIC"],
                -	["keyword", "READ"],
                -	["keyword", "RETURN"],
                -	["keyword", "REWIND"],
                -	["keyword", "SAVE"],
                -	["keyword", "SELECT"],
                -	["keyword", "STOP"],
                -	["keyword", "TARGET"],
                -	["keyword", "WHILE"],
                -	["keyword", "WRITE"],
                -
                -	["keyword", "BLOCK DATA"],
                -	["keyword", "BLOCKDATA"],
                -	["keyword", "END BLOCK DATA"],
                -	["keyword", "ENDBLOCKDATA"],
                -	["keyword", "DO"],
                -	["keyword", "ENDDO"],
                -	["keyword", "FILE"],
                -	["keyword", "FORALL"],
                -	["keyword", "FUNCTION"],
                -	["keyword", "IF"],
                -	["keyword", "END IF"],
                -	["keyword", "INTERFACE"],
                -	["keyword", "MODULE"],
                -	["keyword", "PROGRAM"],
                -	["keyword", "SELECT"],
                -	["keyword", "SUBROUTINE"],
                -	["keyword", "TYPE"],
                -	["keyword", "WHERE"],
                -
                -	["keyword", "ASSIGNMENT"],
                -	["keyword", "DEFAULT"],
                -	["keyword", "ELEMENTAL"],
                -	["keyword", "ELSE"],
                -	["keyword", "ELSEWHERE"],
                -	["keyword", "ELSEIF"],
                -	["keyword", "ENTRY"],
                -	["keyword", "IN"],
                -	["keyword", "INCLUDE"],
                -	["keyword", "INOUT"],
                -	["keyword", "KIND"],
                -	["keyword", "NULL"],
                -	["keyword", "ONLY"],
                -	["keyword", "OPERATOR"],
                -	["keyword", "OUT"],
                -	["keyword", "PURE"],
                -	["keyword", "RECURSIVE"],
                -	["keyword", "RESULT"],
                -	["keyword", "SEQUENCE"],
                -	["keyword", "STAT"],
                -	["keyword", "THEN"],
                -	["keyword", "USE"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran/number_feature.test b/node_modules/prismjs/tests/languages/fortran/number_feature.test
                deleted file mode 100644
                index c7b4a4c..0000000
                --- a/node_modules/prismjs/tests/languages/fortran/number_feature.test
                +++ /dev/null
                @@ -1,37 +0,0 @@
                -473
                -21_2
                -21_SHORT
                -1976354279568241_8
                -1.6E3
                -0.45E-4
                -10.93E7_QUAD
                -3E4
                -B'01110'
                -B"010"
                -O'047'
                -O"642"
                -Z'F41A'
                -Z"00BC"
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "473"],
                -	["number", "21_2"],
                -	["number", "21_SHORT"],
                -	["number", "1976354279568241_8"],
                -	["number", "1.6E3"],
                -	["number", "0.45E-4"],
                -	["number", "10.93E7_QUAD"],
                -	["number", "3E4"],
                -	["quoted-number", "B'01110'"],
                -    ["quoted-number", "B\"010\""],
                -    ["quoted-number", "O'047'"],
                -    ["quoted-number", "O\"642\""],
                -    ["quoted-number", "Z'F41A'"],
                -    ["quoted-number", "Z\"00BC\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers and quoted numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran/operator_feature.test b/node_modules/prismjs/tests/languages/fortran/operator_feature.test
                deleted file mode 100644
                index d2d3003..0000000
                --- a/node_modules/prismjs/tests/languages/fortran/operator_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -** // =>
                -== /= ::
                -< <= > >=
                -+ - * / = %
                -.EQ. .NE. .LT. .LE.
                -.GT. .GE. .NOT. .AND.
                -.OR. .EQV. .NEQV.
                -.foobar.
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "**"], ["operator", "//"], ["operator", "=>"],
                -	["operator", "=="], ["operator", "/="], ["operator", "::"],
                -	["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="],
                -	["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"], ["operator", "="], ["operator", "%"],
                -	["operator", ".EQ."], ["operator", ".NE."], ["operator", ".LT."], ["operator", ".LE."],
                -	["operator", ".GT."], ["operator", ".GE."], ["operator", ".NOT."], ["operator", ".AND."],
                -	["operator", ".OR."], ["operator", ".EQV."], ["operator", ".NEQV."],
                -	["operator", ".foobar."]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fortran/string_feature.test b/node_modules/prismjs/tests/languages/fortran/string_feature.test
                deleted file mode 100644
                index 3fa6f74..0000000
                --- a/node_modules/prismjs/tests/languages/fortran/string_feature.test
                +++ /dev/null
                @@ -1,31 +0,0 @@
                -""
                -''
                -"foo ""bar"" baz"
                -'foo ''bar'' baz'
                -ITALICS_'foobar'
                -"foo &
                -	&bar"
                -"foo &
                -	! Comment
                -	&bar"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", ["\"\""]],
                -	["string", ["''"]],
                -	["string", ["\"foo \"\"bar\"\" baz\""]],
                -	["string", ["'foo ''bar'' baz'"]],
                -	["string", ["ITALICS_'foobar'"]],
                -	["string", ["\"foo &\r\n\t&bar\""]],
                -	["string", [
                -		"\"foo &\r\n\t",
                -		["comment", "! Comment"],
                -		"\r\n\t&bar\""
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings and line continuation.
                -Also checks for comments inside strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fsharp/comment_feature.test b/node_modules/prismjs/tests/languages/fsharp/comment_feature.test
                deleted file mode 100644
                index ff9170b..0000000
                --- a/node_modules/prismjs/tests/languages/fsharp/comment_feature.test
                +++ /dev/null
                @@ -1,16 +0,0 @@
                -// foobar
                -(**)
                -(* foo
                -bar *)
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "// foobar"],
                -	["comment", "(**)"],
                -	["comment", "(* foo\r\nbar *)"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line and multi-line comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fsharp/keyword_feature.test b/node_modules/prismjs/tests/languages/fsharp/keyword_feature.test
                deleted file mode 100644
                index d2ef996..0000000
                --- a/node_modules/prismjs/tests/languages/fsharp/keyword_feature.test
                +++ /dev/null
                @@ -1,71 +0,0 @@
                -abstract and as assert
                -base begin
                -class;
                -default
                -delegate do done downcast
                -downto elif else end
                -exception extern false finally
                -for fun function global
                -if in inherit inline
                -interface;
                -internal lazy let
                -let! match member module
                -mutable namespace
                -new;
                -not
                -null of open or override
                -private public rec return
                -return! select static struct
                -then to true try type
                -upcast use use! val void
                -when while with yield
                -yield! asr land lor lsl
                -lsr lxor mod sig atomic
                -break checked component
                -const constraint constructor
                -continue eager event external
                -fixed functor include method
                -mixin object parallel process
                -protected pure sealed tailcall
                -trait;
                -virtual volatile
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "abstract"], ["keyword", "and"], ["keyword", "as"], ["keyword", "assert"],
                -	["keyword", "base"], ["keyword", "begin"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "default"],
                -	["keyword", "delegate"], ["keyword", "do"], ["keyword", "done"], ["keyword", "downcast"],
                -	["keyword", "downto"], ["keyword", "elif"], ["keyword", "else"], ["keyword", "end"],
                -	["keyword", "exception"], ["keyword", "extern"], ["keyword", "false"], ["keyword", "finally"],
                -	["keyword", "for"], ["keyword", "fun"], ["keyword", "function"], ["keyword", "global"],
                -	["keyword", "if"], ["keyword", "in"], ["keyword", "inherit"], ["keyword", "inline"],
                -	["keyword", "interface"], ["punctuation", ";"],
                -	["keyword", "internal"], ["keyword", "lazy"], ["keyword", "let"],
                -	["keyword", "let!"], ["keyword", "match"], ["keyword", "member"], ["keyword", "module"],
                -	["keyword", "mutable"], ["keyword", "namespace"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "not"],
                -	["keyword", "null"], ["keyword", "of"], ["keyword", "open"], ["keyword", "or"], ["keyword", "override"],
                -	["keyword", "private"], ["keyword", "public"], ["keyword", "rec"], ["keyword", "return"],
                -	["keyword", "return!"], ["keyword", "select"], ["keyword", "static"], ["keyword", "struct"],
                -	["keyword", "then"], ["keyword", "to"], ["keyword", "true"], ["keyword", "try"], ["keyword", "type"],
                -	["keyword", "upcast"], ["keyword", "use"], ["keyword", "use!"], ["keyword", "val"], ["keyword", "void"],
                -	["keyword", "when"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"],
                -	["keyword", "yield!"], ["keyword", "asr"], ["keyword", "land"], ["keyword", "lor"], ["keyword", "lsl"],
                -	["keyword", "lsr"], ["keyword", "lxor"], ["keyword", "mod"], ["keyword", "sig"], ["keyword", "atomic"],
                -	["keyword", "break"], ["keyword", "checked"], ["keyword", "component"],
                -	["keyword", "const"], ["keyword", "constraint"], ["keyword", "constructor"],
                -	["keyword", "continue"], ["keyword", "eager"], ["keyword", "event"], ["keyword", "external"],
                -	["keyword", "fixed"], ["keyword", "functor"], ["keyword", "include"], ["keyword", "method"],
                -	["keyword", "mixin"], ["keyword", "object"], ["keyword", "parallel"], ["keyword", "process"],
                -	["keyword", "protected"], ["keyword", "pure"], ["keyword", "sealed"], ["keyword", "tailcall"],
                -	["keyword", "trait"], ["punctuation", ";"],
                -	["keyword", "virtual"], ["keyword", "volatile"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fsharp/number_feature.test b/node_modules/prismjs/tests/languages/fsharp/number_feature.test
                deleted file mode 100644
                index f2f86ed..0000000
                --- a/node_modules/prismjs/tests/languages/fsharp/number_feature.test
                +++ /dev/null
                @@ -1,65 +0,0 @@
                -0xbabe
                -0xBABEun
                -0xflf
                -0xfLF
                -
                -0b1001
                -0b1001y
                -0b1001uy
                -
                -42
                -1.5
                -2.3E+32
                -2.3e-32
                -4.14F
                -4.14f
                -0.7833M
                -0.7833m
                -
                -86y
                -86uy
                -86s
                -86us
                -86l
                -86u
                -86ul
                -86L
                -86UL
                -9999999999999999999999999999I
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0xbabe"],
                -	["number", "0xBABEun"],
                -	["number", "0xflf"],
                -	["number", "0xfLF"],
                -
                -	["number", "0b1001"],
                -	["number", "0b1001y"],
                -	["number", "0b1001uy"],
                -
                -	["number", "42"],
                -	["number", "1.5"],
                -	["number", "2.3E+32"],
                -	["number", "2.3e-32"],
                -	["number", "4.14F"],
                -	["number", "4.14f"],
                -	["number", "0.7833M"],
                -	["number", "0.7833m"],
                -
                -	["number", "86y"],
                -	["number", "86uy"],
                -	["number", "86s"],
                -	["number", "86us"],
                -	["number", "86l"],
                -	["number", "86u"],
                -	["number", "86ul"],
                -	["number", "86L"],
                -	["number", "86UL"],
                -	["number", "9999999999999999999999999999I"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for decimal, hexadecimal and binary numbers, with all possible suffixes.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fsharp/preprocessor_feature.test b/node_modules/prismjs/tests/languages/fsharp/preprocessor_feature.test
                deleted file mode 100644
                index 4ee0639..0000000
                --- a/node_modules/prismjs/tests/languages/fsharp/preprocessor_feature.test
                +++ /dev/null
                @@ -1,22 +0,0 @@
                -#if foo
                -#else
                -#endif
                -
                -#light
                -#line
                -#nowarn
                -
                -----------------------------------------------------
                -
                -[
                -	["preprocessor", ["#", ["directive", "if"], " foo"]],
                -	["preprocessor", ["#", ["directive", "else"]]],
                -	["preprocessor", ["#", ["directive", "endif"]]],
                -	["preprocessor", ["#", ["directive", "light"]]],
                -	["preprocessor", ["#", ["directive", "line"]]],
                -	["preprocessor", ["#", ["directive", "nowarn"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for preprocessor directives.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/fsharp/string_feature.test b/node_modules/prismjs/tests/languages/fsharp/string_feature.test
                deleted file mode 100644
                index 89412ac..0000000
                --- a/node_modules/prismjs/tests/languages/fsharp/string_feature.test
                +++ /dev/null
                @@ -1,45 +0,0 @@
                -""
                -"fo\"o"
                -"foo\
                -bar"
                -"foo"B
                -
                -@""
                -@"foo"
                -@"fo""o"
                -@"foo"B
                -
                -""""""
                -"""fo""o"
                -bar"""
                -"""foo"""B
                -
                -'a'
                -'\''
                -'\\'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"fo\\\"o\""],
                -	["string", "\"foo\\\r\nbar\""],
                -	["string", "\"foo\"B"],
                -
                -	["string", "@\"\""],
                -	["string", "@\"foo\""],
                -	["string", "@\"fo\"\"o\""],
                -	["string", "@\"foo\"B"],
                -
                -	["string", "\"\"\"\"\"\""],
                -	["string", "\"\"\"fo\"\"o\"\r\nbar\"\"\""],
                -	["string", "\"\"\"foo\"\"\"B"],
                -
                -	["string", "'a'"],
                -	["string", "'\\''"],
                -	["string", "'\\\\'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for normal strings, verbatim strings, triple-quoted strings and character literals.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/atrule_feature.test b/node_modules/prismjs/tests/languages/gherkin/atrule_feature.test
                deleted file mode 100644
                index 23bc540..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/atrule_feature.test
                +++ /dev/null
                @@ -1,1211 +0,0 @@
                -Scenario: foo
                -	'ach foobar
                -	'a foobar
                -	'ej foobar
                -	7 foobar
                -	a foobar
                -	A také foobar
                -	A taktiež foobar
                -	A tiež foobar
                -	A zároveň foobar
                -	Aber foobar
                -	Ac foobar
                -	Adott foobar
                -	Akkor foobar
                -	Ak foobar
                -	Aleshores foobar
                -	Ale foobar
                -	Ali foobar
                -	Allora foobar
                -	Alors foobar
                -	Als foobar
                -	Ama foobar
                -	Amennyiben foobar
                -	Amikor foobar
                -	Ampak foobar
                -	an foobar
                -	AN foobar
                -	Ananging foobar
                -	And y'all foobar
                -	And foobar
                -	Angenommen foobar
                -	Anrhegedig a foobar
                -	An foobar
                -	Apabila foobar
                -	Atès foobar
                -	Atesa foobar
                -	Atunci foobar
                -	Avast! foobar
                -	Aye foobar
                -	A foobar
                -	awer foobar
                -	Bagi foobar
                -	Banjur foobar
                -	Bet foobar
                -	Biết foobar
                -	Blimey! foobar
                -	Buh foobar
                -	But at the end of the day I reckon foobar
                -	But y'all foobar
                -	But foobar
                -	BUT foobar
                -	Cal foobar
                -	Când foobar
                -	Cando foobar
                -	Cand foobar
                -	Ce foobar
                -	Cuando foobar
                -	Če foobar
                -	Ða ðe foobar
                -	Ða foobar
                -	Dadas foobar
                -	Dada foobar
                -	Dados foobar
                -	Dado foobar
                -	DaH ghu' bejlu' foobar
                -	dann foobar
                -	Dann foobar
                -	Dano foobar
                -	Dan foobar
                -	Dar foobar
                -	Dat fiind foobar
                -	Data foobar
                -	Date fiind foobar
                -	Date foobar
                -	Dati fiind foobar
                -	Dati foobar
                -	Daţi fiind foobar
                -	Dați fiind foobar
                -	Dato foobar
                -	DEN foobar
                -	Den youse gotta foobar
                -	Dengan foobar
                -	De foobar
                -	Diberi foobar
                -	Diyelim ki foobar
                -	Donada foobar
                -	Donat foobar
                -	Donitaĵo foobar
                -	Do foobar
                -	Dun foobar
                -	Duota foobar
                -	Ðurh foobar
                -	Eeldades foobar
                -	Ef foobar
                -	Eğer ki foobar
                -	Entao foobar
                -	Então foobar
                -	Entón foobar
                -	Entonces foobar
                -	En foobar
                -	Epi foobar
                -	E foobar
                -	És foobar
                -	Etant donnée foobar
                -	Etant donné foobar
                -	Et foobar
                -	Étant données foobar
                -	Étant donnée foobar
                -	Étant donné foobar
                -	Etant données foobar
                -	Etant donnés foobar
                -	Étant donnés foobar
                -	Fakat foobar
                -	Gangway! foobar
                -	Gdy foobar
                -	Gegeben seien foobar
                -	Gegeben sei foobar
                -	Gegeven foobar
                -	Gegewe foobar
                -	ghu' noblu' foobar
                -	Gitt foobar
                -	Given y'all foobar
                -	Given foobar
                -	Givet foobar
                -	Givun foobar
                -	Ha foobar
                -	Cho foobar
                -	I CAN HAZ foobar
                -	In foobar
                -	Ir foobar
                -	It's just unbelievable foobar
                -	I foobar
                -	Ja foobar
                -	Jeśli foobar
                -	Jeżeli foobar
                -	Kadar foobar
                -	Kada foobar
                -	Kad foobar
                -	Kai foobar
                -	Kaj foobar
                -	Když foobar
                -	Keď foobar
                -	Kemudian foobar
                -	Ketika foobar
                -	Khi foobar
                -	Kiedy foobar
                -	Ko foobar
                -	Kuid foobar
                -	Kui foobar
                -	Kun foobar
                -	Lan foobar
                -	latlh foobar
                -	Le sa a foobar
                -	Let go and haul foobar
                -	Le foobar
                -	Lè sa a foobar
                -	Lè foobar
                -	Logo foobar
                -	Lorsqu'< foobar
                -	Lorsque foobar
                -	mä foobar
                -	Maar foobar
                -	Mais foobar
                -	Mając foobar
                -	Majd foobar
                -	Maka foobar
                -	Manawa foobar
                -	Mas foobar
                -	Ma foobar
                -	Menawa foobar
                -	Men foobar
                -	Mutta foobar
                -	Nalikaning foobar
                -	Nalika foobar
                -	Nanging foobar
                -	Når foobar
                -	När foobar
                -	Nato foobar
                -	Nhưng foobar
                -	Niin foobar
                -	Njuk foobar
                -	O zaman foobar
                -	Og foobar
                -	Och foobar
                -	Oletetaan foobar
                -	Onda foobar
                -	Ond foobar
                -	Oraz foobar
                -	Pak foobar
                -	Pero foobar
                -	Però foobar
                -	Podano foobar
                -	Pokiaľ foobar
                -	Pokud foobar
                -	Potem foobar
                -	Potom foobar
                -	Privzeto foobar
                -	Pryd foobar
                -	qaSDI' foobar
                -	Quando foobar
                -	Quand foobar
                -	Quan foobar
                -	Så foobar
                -	Sed foobar
                -	Se foobar
                -	Siis foobar
                -	Sipoze ke foobar
                -	Sipoze Ke foobar
                -	Sipoze foobar
                -	Si foobar
                -	Şi foobar
                -	Și foobar
                -	Soit foobar
                -	Stel foobar
                -	Tada foobar
                -	Tad foobar
                -	Takrat foobar
                -	Tak foobar
                -	Tapi foobar
                -	Ter foobar
                -	Tetapi foobar
                -	Tha the foobar
                -	Tha foobar
                -	Then y'all foobar
                -	Then foobar
                -	Thì foobar
                -	Thurh foobar
                -	Toda foobar
                -	Too right foobar
                -	ugeholl foobar
                -	Und foobar
                -	Un foobar
                -	Và foobar
                -	vaj foobar
                -	Vendar foobar
                -	Ve foobar
                -	wann foobar
                -	Wanneer foobar
                -	WEN foobar
                -	Wenn foobar
                -	When y'all foobar
                -	When foobar
                -	Wtedy foobar
                -	Wun foobar
                -	Y'know foobar
                -	Yeah nah foobar
                -	Yna foobar
                -	Youse know like when foobar
                -	Youse know when youse got foobar
                -	Y foobar
                -	Za predpokladu foobar
                -	Za předpokladu foobar
                -	Zadani foobar
                -	Zadano foobar
                -	Zadan foobar
                -	Zadate foobar
                -	Zadato foobar
                -	Zakładając foobar
                -	Zaradi foobar
                -	Zatati foobar
                -	Þa foobar
                -	Þá foobar
                -	Þa þe foobar
                -	Þegar foobar
                -	Þurh foobar
                -	Αλλά foobar
                -	Δεδομένου foobar
                -	Και foobar
                -	Όταν foobar
                -	Τότε foobar
                -	А також foobar
                -	Агар foobar
                -	Але foobar
                -	Али foobar
                -	Аммо foobar
                -	А foobar
                -	Әгәр foobar
                -	Әйтик foobar
                -	Әмма foobar
                -	Бирок foobar
                -	Ва foobar
                -	Вә foobar
                -	Дадено foobar
                -	Дано foobar
                -	Допустим foobar
                -	Если foobar
                -	Задате foobar
                -	Задати foobar
                -	Задато foobar
                -	И foobar
                -	І foobar
                -	К тому же foobar
                -	Када foobar
                -	Кад foobar
                -	Когато foobar
                -	Когда foobar
                -	Коли foobar
                -	Ләкин foobar
                -	Лекин foobar
                -	Нәтиҗәдә foobar
                -	Нехай foobar
                -	Но foobar
                -	Онда foobar
                -	Припустимо, що foobar
                -	Припустимо foobar
                -	Пусть foobar
                -	Также foobar
                -	Та foobar
                -	Тогда foobar
                -	Тоді foobar
                -	То foobar
                -	Унда foobar
                -	Һәм foobar
                -	Якщо foobar
                -	אבל foobar
                -	אזי foobar
                -	אז foobar
                -	בהינתן foobar
                -	וגם foobar
                -	כאשר foobar
                -	آنگاه foobar
                -	اذاً foobar
                -	اگر foobar
                -	اما foobar
                -	اور foobar
                -	با فرض foobar
                -	بالفرض foobar
                -	بفرض foobar
                -	پھر foobar
                -	تب foobar
                -	ثم foobar
                -	جب foobar
                -	عندما foobar
                -	فرض کیا foobar
                -	لكن foobar
                -	لیکن foobar
                -	متى foobar
                -	هنگامی foobar
                -	و foobar
                -	अगर foobar
                -	और foobar
                -	कदा foobar
                -	किन्तु foobar
                -	चूंकि foobar
                -	जब foobar
                -	तथा foobar
                -	तदा foobar
                -	तब foobar
                -	परन्तु foobar
                -	पर foobar
                -	यदि foobar
                -	ਅਤੇ foobar
                -	ਜਦੋਂ foobar
                -	ਜਿਵੇਂ ਕਿ foobar
                -	ਜੇਕਰ foobar
                -	ਤਦ foobar
                -	ਪਰ foobar
                -	అప్పుడు foobar
                -	ఈ పరిస్థితిలో foobar
                -	కాని foobar
                -	చెప్పబడినది foobar
                -	మరియు foobar
                -	ಆದರೆ foobar
                -	ನಂತರ foobar
                -	ನೀಡಿದ foobar
                -	ಮತ್ತು foobar
                -	ಸ್ಥಿತಿಯನ್ನು foobar
                -	กำหนดให้ foobar
                -	ดังนั้น foobar
                -	แต่ foobar
                -	เมื่อ foobar
                -	และ foobar
                -	그러면< foobar
                -	그리고< foobar
                -	단< foobar
                -	만약< foobar
                -	만일< foobar
                -	먼저< foobar
                -	조건< foobar
                -	하지만< foobar
                -	かつ< foobar
                -	しかし< foobar
                -	ただし< foobar
                -	ならば< foobar
                -	もし< foobar
                -	並且< foobar
                -	但し< foobar
                -	但是< foobar
                -	假如< foobar
                -	假定< foobar
                -	假設< foobar
                -	假设< foobar
                -	前提< foobar
                -	同时< foobar
                -	同時< foobar
                -	并且< foobar
                -	当< foobar
                -	當< foobar
                -	而且< foobar
                -	那么< foobar
                -	那麼< foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["scenario", [["keyword", "Scenario:"], ["important", " foo"]]],
                -	["atrule", "'ach"],
                -	" foobar\r\n\t",
                -	["atrule", "'a"],
                -	" foobar\r\n\t",
                -	["atrule", "'ej"],
                -	" foobar\r\n\t",
                -	["atrule", "7"],
                -	" foobar\r\n\t",
                -	["atrule", "a"],
                -	" foobar\r\n\t",
                -	["atrule", "A také"],
                -	" foobar\r\n\t",
                -	["atrule", "A taktiež"],
                -	" foobar\r\n\t",
                -	["atrule", "A tiež"],
                -	" foobar\r\n\t",
                -	["atrule", "A zároveň"],
                -	" foobar\r\n\t",
                -	["atrule", "Aber"],
                -	" foobar\r\n\t",
                -	["atrule", "Ac"],
                -	" foobar\r\n\t",
                -	["atrule", "Adott"],
                -	" foobar\r\n\t",
                -	["atrule", "Akkor"],
                -	" foobar\r\n\t",
                -	["atrule", "Ak"],
                -	" foobar\r\n\t",
                -	["atrule", "Aleshores"],
                -	" foobar\r\n\t",
                -	["atrule", "Ale"],
                -	" foobar\r\n\t",
                -	["atrule", "Ali"],
                -	" foobar\r\n\t",
                -	["atrule", "Allora"],
                -	" foobar\r\n\t",
                -	["atrule", "Alors"],
                -	" foobar\r\n\t",
                -	["atrule", "Als"],
                -	" foobar\r\n\t",
                -	["atrule", "Ama"],
                -	" foobar\r\n\t",
                -	["atrule", "Amennyiben"],
                -	" foobar\r\n\t",
                -	["atrule", "Amikor"],
                -	" foobar\r\n\t",
                -	["atrule", "Ampak"],
                -	" foobar\r\n\t",
                -	["atrule", "an"],
                -	" foobar\r\n\t",
                -	["atrule", "AN"],
                -	" foobar\r\n\t",
                -	["atrule", "Ananging"],
                -	" foobar\r\n\t",
                -	["atrule", "And y'all"],
                -	" foobar\r\n\t",
                -	["atrule", "And"],
                -	" foobar\r\n\t",
                -	["atrule", "Angenommen"],
                -	" foobar\r\n\t",
                -	["atrule", "Anrhegedig a"],
                -	" foobar\r\n\t",
                -	["atrule", "An"],
                -	" foobar\r\n\t",
                -	["atrule", "Apabila"],
                -	" foobar\r\n\t",
                -	["atrule", "Atès"],
                -	" foobar\r\n\t",
                -	["atrule", "Atesa"],
                -	" foobar\r\n\t",
                -	["atrule", "Atunci"],
                -	" foobar\r\n\t",
                -	["atrule", "Avast!"],
                -	" foobar\r\n\t",
                -	["atrule", "Aye"],
                -	" foobar\r\n\t",
                -	["atrule", "A"],
                -	" foobar\r\n\t",
                -	["atrule", "awer"],
                -	" foobar\r\n\t",
                -	["atrule", "Bagi"],
                -	" foobar\r\n\t",
                -	["atrule", "Banjur"],
                -	" foobar\r\n\t",
                -	["atrule", "Bet"],
                -	" foobar\r\n\t",
                -	["atrule", "Biết"],
                -	" foobar\r\n\t",
                -	["atrule", "Blimey!"],
                -	" foobar\r\n\t",
                -	["atrule", "Buh"],
                -	" foobar\r\n\t",
                -	["atrule", "But at the end of the day I reckon"],
                -	" foobar\r\n\t",
                -	["atrule", "But y'all"],
                -	" foobar\r\n\t",
                -	["atrule", "But"],
                -	" foobar\r\n\t",
                -	["atrule", "BUT"],
                -	" foobar\r\n\t",
                -	["atrule", "Cal"],
                -	" foobar\r\n\t",
                -	["atrule", "Când"],
                -	" foobar\r\n\t",
                -	["atrule", "Cando"],
                -	" foobar\r\n\t",
                -	["atrule", "Cand"],
                -	" foobar\r\n\t",
                -	["atrule", "Ce"],
                -	" foobar\r\n\t",
                -	["atrule", "Cuando"],
                -	" foobar\r\n\t",
                -	["atrule", "Če"],
                -	" foobar\r\n\t",
                -	["atrule", "Ða ðe"],
                -	" foobar\r\n\t",
                -	["atrule", "Ða"],
                -	" foobar\r\n\t",
                -	["atrule", "Dadas"],
                -	" foobar\r\n\t",
                -	["atrule", "Dada"],
                -	" foobar\r\n\t",
                -	["atrule", "Dados"],
                -	" foobar\r\n\t",
                -	["atrule", "Dado"],
                -	" foobar\r\n\t",
                -	["atrule", "DaH ghu' bejlu'"],
                -	" foobar\r\n\t",
                -	["atrule", "dann"],
                -	" foobar\r\n\t",
                -	["atrule", "Dann"],
                -	" foobar\r\n\t",
                -	["atrule", "Dano"],
                -	" foobar\r\n\t",
                -	["atrule", "Dan"],
                -	" foobar\r\n\t",
                -	["atrule", "Dar"],
                -	" foobar\r\n\t",
                -	["atrule", "Dat fiind"],
                -	" foobar\r\n\t",
                -	["atrule", "Data"],
                -	" foobar\r\n\t",
                -	["atrule", "Date fiind"],
                -	" foobar\r\n\t",
                -	["atrule", "Date"],
                -	" foobar\r\n\t",
                -	["atrule", "Dati fiind"],
                -	" foobar\r\n\t",
                -	["atrule", "Dati"],
                -	" foobar\r\n\t",
                -	["atrule", "Daţi fiind"],
                -	" foobar\r\n\t",
                -	["atrule", "Dați fiind"],
                -	" foobar\r\n\t",
                -	["atrule", "Dato"],
                -	" foobar\r\n\t",
                -	["atrule", "DEN"],
                -	" foobar\r\n\t",
                -	["atrule", "Den youse gotta"],
                -	" foobar\r\n\t",
                -	["atrule", "Dengan"],
                -	" foobar\r\n\t",
                -	["atrule", "De"],
                -	" foobar\r\n\t",
                -	["atrule", "Diberi"],
                -	" foobar\r\n\t",
                -	["atrule", "Diyelim ki"],
                -	" foobar\r\n\t",
                -	["atrule", "Donada"],
                -	" foobar\r\n\t",
                -	["atrule", "Donat"],
                -	" foobar\r\n\t",
                -	["atrule", "Donitaĵo"],
                -	" foobar\r\n\t",
                -	["atrule", "Do"],
                -	" foobar\r\n\t",
                -	["atrule", "Dun"],
                -	" foobar\r\n\t",
                -	["atrule", "Duota"],
                -	" foobar\r\n\t",
                -	["atrule", "Ðurh"],
                -	" foobar\r\n\t",
                -	["atrule", "Eeldades"],
                -	" foobar\r\n\t",
                -	["atrule", "Ef"],
                -	" foobar\r\n\t",
                -	["atrule", "Eğer ki"],
                -	" foobar\r\n\t",
                -	["atrule", "Entao"],
                -	" foobar\r\n\t",
                -	["atrule", "Então"],
                -	" foobar\r\n\t",
                -	["atrule", "Entón"],
                -	" foobar\r\n\t",
                -	["atrule", "Entonces"],
                -	" foobar\r\n\t",
                -	["atrule", "En"],
                -	" foobar\r\n\t",
                -	["atrule", "Epi"],
                -	" foobar\r\n\t",
                -	["atrule", "E"],
                -	" foobar\r\n\t",
                -	["atrule", "És"],
                -	" foobar\r\n\t",
                -	["atrule", "Etant donnée"],
                -	" foobar\r\n\t",
                -	["atrule", "Etant donné"],
                -	" foobar\r\n\t",
                -	["atrule", "Et"],
                -	" foobar\r\n\t",
                -	["atrule", "Étant données"],
                -	" foobar\r\n\t",
                -	["atrule", "Étant donnée"],
                -	" foobar\r\n\t",
                -	["atrule", "Étant donné"],
                -	" foobar\r\n\t",
                -	["atrule", "Etant données"],
                -	" foobar\r\n\t",
                -	["atrule", "Etant donnés"],
                -	" foobar\r\n\t",
                -	["atrule", "Étant donnés"],
                -	" foobar\r\n\t",
                -	["atrule", "Fakat"],
                -	" foobar\r\n\t",
                -	["atrule", "Gangway!"],
                -	" foobar\r\n\t",
                -	["atrule", "Gdy"],
                -	" foobar\r\n\t",
                -	["atrule", "Gegeben seien"],
                -	" foobar\r\n\t",
                -	["atrule", "Gegeben sei"],
                -	" foobar\r\n\t",
                -	["atrule", "Gegeven"],
                -	" foobar\r\n\t",
                -	["atrule", "Gegewe"],
                -	" foobar\r\n\t",
                -	["atrule", "ghu' noblu'"],
                -	" foobar\r\n\t",
                -	["atrule", "Gitt"],
                -	" foobar\r\n\t",
                -	["atrule", "Given y'all"],
                -	" foobar\r\n\t",
                -	["atrule", "Given"],
                -	" foobar\r\n\t",
                -	["atrule", "Givet"],
                -	" foobar\r\n\t",
                -	["atrule", "Givun"],
                -	" foobar\r\n\t",
                -	["atrule", "Ha"],
                -	" foobar\r\n\t",
                -	["atrule", "Cho"],
                -	" foobar\r\n\t",
                -	["atrule", "I CAN HAZ"],
                -	" foobar\r\n\t",
                -	["atrule", "In"],
                -	" foobar\r\n\t",
                -	["atrule", "Ir"],
                -	" foobar\r\n\t",
                -	["atrule", "It's just unbelievable"],
                -	" foobar\r\n\t",
                -	["atrule", "I"],
                -	" foobar\r\n\t",
                -	["atrule", "Ja"],
                -	" foobar\r\n\t",
                -	["atrule", "Jeśli"],
                -	" foobar\r\n\t",
                -	["atrule", "Jeżeli"],
                -	" foobar\r\n\t",
                -	["atrule", "Kadar"],
                -	" foobar\r\n\t",
                -	["atrule", "Kada"],
                -	" foobar\r\n\t",
                -	["atrule", "Kad"],
                -	" foobar\r\n\t",
                -	["atrule", "Kai"],
                -	" foobar\r\n\t",
                -	["atrule", "Kaj"],
                -	" foobar\r\n\t",
                -	["atrule", "Když"],
                -	" foobar\r\n\t",
                -	["atrule", "Keď"],
                -	" foobar\r\n\t",
                -	["atrule", "Kemudian"],
                -	" foobar\r\n\t",
                -	["atrule", "Ketika"],
                -	" foobar\r\n\t",
                -	["atrule", "Khi"],
                -	" foobar\r\n\t",
                -	["atrule", "Kiedy"],
                -	" foobar\r\n\t",
                -	["atrule", "Ko"],
                -	" foobar\r\n\t",
                -	["atrule", "Kuid"],
                -	" foobar\r\n\t",
                -	["atrule", "Kui"],
                -	" foobar\r\n\t",
                -	["atrule", "Kun"],
                -	" foobar\r\n\t",
                -	["atrule", "Lan"],
                -	" foobar\r\n\t",
                -	["atrule", "latlh"],
                -	" foobar\r\n\t",
                -	["atrule", "Le sa a"],
                -	" foobar\r\n\t",
                -	["atrule", "Let go and haul"],
                -	" foobar\r\n\t",
                -	["atrule", "Le"],
                -	" foobar\r\n\t",
                -	["atrule", "Lè sa a"],
                -	" foobar\r\n\t",
                -	["atrule", "Lè"],
                -	" foobar\r\n\t",
                -	["atrule", "Logo"],
                -	" foobar\r\n\t",
                -	["atrule", "Lorsqu'<"],
                -	" foobar\r\n\t",
                -	["atrule", "Lorsque"],
                -	" foobar\r\n\t",
                -	["atrule", "mä"],
                -	" foobar\r\n\t",
                -	["atrule", "Maar"],
                -	" foobar\r\n\t",
                -	["atrule", "Mais"],
                -	" foobar\r\n\t",
                -	["atrule", "Mając"],
                -	" foobar\r\n\t",
                -	["atrule", "Majd"],
                -	" foobar\r\n\t",
                -	["atrule", "Maka"],
                -	" foobar\r\n\t",
                -	["atrule", "Manawa"],
                -	" foobar\r\n\t",
                -	["atrule", "Mas"],
                -	" foobar\r\n\t",
                -	["atrule", "Ma"],
                -	" foobar\r\n\t",
                -	["atrule", "Menawa"],
                -	" foobar\r\n\t",
                -	["atrule", "Men"],
                -	" foobar\r\n\t",
                -	["atrule", "Mutta"],
                -	" foobar\r\n\t",
                -	["atrule", "Nalikaning"],
                -	" foobar\r\n\t",
                -	["atrule", "Nalika"],
                -	" foobar\r\n\t",
                -	["atrule", "Nanging"],
                -	" foobar\r\n\t",
                -	["atrule", "Når"],
                -	" foobar\r\n\t",
                -	["atrule", "När"],
                -	" foobar\r\n\t",
                -	["atrule", "Nato"],
                -	" foobar\r\n\t",
                -	["atrule", "Nhưng"],
                -	" foobar\r\n\t",
                -	["atrule", "Niin"],
                -	" foobar\r\n\t",
                -	["atrule", "Njuk"],
                -	" foobar\r\n\t",
                -	["atrule", "O zaman"],
                -	" foobar\r\n\t",
                -	["atrule", "Og"],
                -	" foobar\r\n\t",
                -	["atrule", "Och"],
                -	" foobar\r\n\t",
                -	["atrule", "Oletetaan"],
                -	" foobar\r\n\t",
                -	["atrule", "Onda"],
                -	" foobar\r\n\t",
                -	["atrule", "Ond"],
                -	" foobar\r\n\t",
                -	["atrule", "Oraz"],
                -	" foobar\r\n\t",
                -	["atrule", "Pak"],
                -	" foobar\r\n\t",
                -	["atrule", "Pero"],
                -	" foobar\r\n\t",
                -	["atrule", "Però"],
                -	" foobar\r\n\t",
                -	["atrule", "Podano"],
                -	" foobar\r\n\t",
                -	["atrule", "Pokiaľ"],
                -	" foobar\r\n\t",
                -	["atrule", "Pokud"],
                -	" foobar\r\n\t",
                -	["atrule", "Potem"],
                -	" foobar\r\n\t",
                -	["atrule", "Potom"],
                -	" foobar\r\n\t",
                -	["atrule", "Privzeto"],
                -	" foobar\r\n\t",
                -	["atrule", "Pryd"],
                -	" foobar\r\n\t",
                -	["atrule", "qaSDI'"],
                -	" foobar\r\n\t",
                -	["atrule", "Quando"],
                -	" foobar\r\n\t",
                -	["atrule", "Quand"],
                -	" foobar\r\n\t",
                -	["atrule", "Quan"],
                -	" foobar\r\n\t",
                -	["atrule", "Så"],
                -	" foobar\r\n\t",
                -	["atrule", "Sed"],
                -	" foobar\r\n\t",
                -	["atrule", "Se"],
                -	" foobar\r\n\t",
                -	["atrule", "Siis"],
                -	" foobar\r\n\t",
                -	["atrule", "Sipoze ke"],
                -	" foobar\r\n\t",
                -	["atrule", "Sipoze Ke"],
                -	" foobar\r\n\t",
                -	["atrule", "Sipoze"],
                -	" foobar\r\n\t",
                -	["atrule", "Si"],
                -	" foobar\r\n\t",
                -	["atrule", "Şi"],
                -	" foobar\r\n\t",
                -	["atrule", "Și"],
                -	" foobar\r\n\t",
                -	["atrule", "Soit"],
                -	" foobar\r\n\t",
                -	["atrule", "Stel"],
                -	" foobar\r\n\t",
                -	["atrule", "Tada"],
                -	" foobar\r\n\t",
                -	["atrule", "Tad"],
                -	" foobar\r\n\t",
                -	["atrule", "Takrat"],
                -	" foobar\r\n\t",
                -	["atrule", "Tak"],
                -	" foobar\r\n\t",
                -	["atrule", "Tapi"],
                -	" foobar\r\n\t",
                -	["atrule", "Ter"],
                -	" foobar\r\n\t",
                -	["atrule", "Tetapi"],
                -	" foobar\r\n\t",
                -	["atrule", "Tha the"],
                -	" foobar\r\n\t",
                -	["atrule", "Tha"],
                -	" foobar\r\n\t",
                -	["atrule", "Then y'all"],
                -	" foobar\r\n\t",
                -	["atrule", "Then"],
                -	" foobar\r\n\t",
                -	["atrule", "Thì"],
                -	" foobar\r\n\t",
                -	["atrule", "Thurh"],
                -	" foobar\r\n\t",
                -	["atrule", "Toda"],
                -	" foobar\r\n\t",
                -	["atrule", "Too right"],
                -	" foobar\r\n\t",
                -	["atrule", "ugeholl"],
                -	" foobar\r\n\t",
                -	["atrule", "Und"],
                -	" foobar\r\n\t",
                -	["atrule", "Un"],
                -	" foobar\r\n\t",
                -	["atrule", "Và"],
                -	" foobar\r\n\t",
                -	["atrule", "vaj"],
                -	" foobar\r\n\t",
                -	["atrule", "Vendar"],
                -	" foobar\r\n\t",
                -	["atrule", "Ve"],
                -	" foobar\r\n\t",
                -	["atrule", "wann"],
                -	" foobar\r\n\t",
                -	["atrule", "Wanneer"],
                -	" foobar\r\n\t",
                -	["atrule", "WEN"],
                -	" foobar\r\n\t",
                -	["atrule", "Wenn"],
                -	" foobar\r\n\t",
                -	["atrule", "When y'all"],
                -	" foobar\r\n\t",
                -	["atrule", "When"],
                -	" foobar\r\n\t",
                -	["atrule", "Wtedy"],
                -	" foobar\r\n\t",
                -	["atrule", "Wun"],
                -	" foobar\r\n\t",
                -	["atrule", "Y'know"],
                -	" foobar\r\n\t",
                -	["atrule", "Yeah nah"],
                -	" foobar\r\n\t",
                -	["atrule", "Yna"],
                -	" foobar\r\n\t",
                -	["atrule", "Youse know like when"],
                -	" foobar\r\n\t",
                -	["atrule", "Youse know when youse got"],
                -	" foobar\r\n\t",
                -	["atrule", "Y"],
                -	" foobar\r\n\t",
                -	["atrule", "Za predpokladu"],
                -	" foobar\r\n\t",
                -	["atrule", "Za předpokladu"],
                -	" foobar\r\n\t",
                -	["atrule", "Zadani"],
                -	" foobar\r\n\t",
                -	["atrule", "Zadano"],
                -	" foobar\r\n\t",
                -	["atrule", "Zadan"],
                -	" foobar\r\n\t",
                -	["atrule", "Zadate"],
                -	" foobar\r\n\t",
                -	["atrule", "Zadato"],
                -	" foobar\r\n\t",
                -	["atrule", "Zakładając"],
                -	" foobar\r\n\t",
                -	["atrule", "Zaradi"],
                -	" foobar\r\n\t",
                -	["atrule", "Zatati"],
                -	" foobar\r\n\t",
                -	["atrule", "Þa"],
                -	" foobar\r\n\t",
                -	["atrule", "Þá"],
                -	" foobar\r\n\t",
                -	["atrule", "Þa þe"],
                -	" foobar\r\n\t",
                -	["atrule", "Þegar"],
                -	" foobar\r\n\t",
                -	["atrule", "Þurh"],
                -	" foobar\r\n\t",
                -	["atrule", "Αλλά"],
                -	" foobar\r\n\t",
                -	["atrule", "Δεδομένου"],
                -	" foobar\r\n\t",
                -	["atrule", "Και"],
                -	" foobar\r\n\t",
                -	["atrule", "Όταν"],
                -	" foobar\r\n\t",
                -	["atrule", "Τότε"],
                -	" foobar\r\n\t",
                -	["atrule", "А також"],
                -	" foobar\r\n\t",
                -	["atrule", "Агар"],
                -	" foobar\r\n\t",
                -	["atrule", "Але"],
                -	" foobar\r\n\t",
                -	["atrule", "Али"],
                -	" foobar\r\n\t",
                -	["atrule", "Аммо"],
                -	" foobar\r\n\t",
                -	["atrule", "А"],
                -	" foobar\r\n\t",
                -	["atrule", "Әгәр"],
                -	" foobar\r\n\t",
                -	["atrule", "Әйтик"],
                -	" foobar\r\n\t",
                -	["atrule", "Әмма"],
                -	" foobar\r\n\t",
                -	["atrule", "Бирок"],
                -	" foobar\r\n\t",
                -	["atrule", "Ва"],
                -	" foobar\r\n\t",
                -	["atrule", "Вә"],
                -	" foobar\r\n\t",
                -	["atrule", "Дадено"],
                -	" foobar\r\n\t",
                -	["atrule", "Дано"],
                -	" foobar\r\n\t",
                -	["atrule", "Допустим"],
                -	" foobar\r\n\t",
                -	["atrule", "Если"],
                -	" foobar\r\n\t",
                -	["atrule", "Задате"],
                -	" foobar\r\n\t",
                -	["atrule", "Задати"],
                -	" foobar\r\n\t",
                -	["atrule", "Задато"],
                -	" foobar\r\n\t",
                -	["atrule", "И"],
                -	" foobar\r\n\t",
                -	["atrule", "І"],
                -	" foobar\r\n\t",
                -	["atrule", "К тому же"],
                -	" foobar\r\n\t",
                -	["atrule", "Када"],
                -	" foobar\r\n\t",
                -	["atrule", "Кад"],
                -	" foobar\r\n\t",
                -	["atrule", "Когато"],
                -	" foobar\r\n\t",
                -	["atrule", "Когда"],
                -	" foobar\r\n\t",
                -	["atrule", "Коли"],
                -	" foobar\r\n\t",
                -	["atrule", "Ләкин"],
                -	" foobar\r\n\t",
                -	["atrule", "Лекин"],
                -	" foobar\r\n\t",
                -	["atrule", "Нәтиҗәдә"],
                -	" foobar\r\n\t",
                -	["atrule", "Нехай"],
                -	" foobar\r\n\t",
                -	["atrule", "Но"],
                -	" foobar\r\n\t",
                -	["atrule", "Онда"],
                -	" foobar\r\n\t",
                -	["atrule", "Припустимо, що"],
                -	" foobar\r\n\t",
                -	["atrule", "Припустимо"],
                -	" foobar\r\n\t",
                -	["atrule", "Пусть"],
                -	" foobar\r\n\t",
                -	["atrule", "Также"],
                -	" foobar\r\n\t",
                -	["atrule", "Та"],
                -	" foobar\r\n\t",
                -	["atrule", "Тогда"],
                -	" foobar\r\n\t",
                -	["atrule", "Тоді"],
                -	" foobar\r\n\t",
                -	["atrule", "То"],
                -	" foobar\r\n\t",
                -	["atrule", "Унда"],
                -	" foobar\r\n\t",
                -	["atrule", "Һәм"],
                -	" foobar\r\n\t",
                -	["atrule", "Якщо"],
                -	" foobar\r\n\t",
                -	["atrule", "אבל"],
                -	" foobar\r\n\t",
                -	["atrule", "אזי"],
                -	" foobar\r\n\t",
                -	["atrule", "אז"],
                -	" foobar\r\n\t",
                -	["atrule", "בהינתן"],
                -	" foobar\r\n\t",
                -	["atrule", "וגם"],
                -	" foobar\r\n\t",
                -	["atrule", "כאשר"],
                -	" foobar\r\n\t",
                -	["atrule", "آنگاه"],
                -	" foobar\r\n\t",
                -	["atrule", "اذاً"],
                -	" foobar\r\n\t",
                -	["atrule", "اگر"],
                -	" foobar\r\n\t",
                -	["atrule", "اما"],
                -	" foobar\r\n\t",
                -	["atrule", "اور"],
                -	" foobar\r\n\t",
                -	["atrule", "با فرض"],
                -	" foobar\r\n\t",
                -	["atrule", "بالفرض"],
                -	" foobar\r\n\t",
                -	["atrule", "بفرض"],
                -	" foobar\r\n\t",
                -	["atrule", "پھر"],
                -	" foobar\r\n\t",
                -	["atrule", "تب"],
                -	" foobar\r\n\t",
                -	["atrule", "ثم"],
                -	" foobar\r\n\t",
                -	["atrule", "جب"],
                -	" foobar\r\n\t",
                -	["atrule", "عندما"],
                -	" foobar\r\n\t",
                -	["atrule", "فرض کیا"],
                -	" foobar\r\n\t",
                -	["atrule", "لكن"],
                -	" foobar\r\n\t",
                -	["atrule", "لیکن"],
                -	" foobar\r\n\t",
                -	["atrule", "متى"],
                -	" foobar\r\n\t",
                -	["atrule", "هنگامی"],
                -	" foobar\r\n\t",
                -	["atrule", "و"],
                -	" foobar\r\n\t",
                -	["atrule", "अगर"],
                -	" foobar\r\n\t",
                -	["atrule", "और"],
                -	" foobar\r\n\t",
                -	["atrule", "कदा"],
                -	" foobar\r\n\t",
                -	["atrule", "किन्तु"],
                -	" foobar\r\n\t",
                -	["atrule", "चूंकि"],
                -	" foobar\r\n\t",
                -	["atrule", "जब"],
                -	" foobar\r\n\t",
                -	["atrule", "तथा"],
                -	" foobar\r\n\t",
                -	["atrule", "तदा"],
                -	" foobar\r\n\t",
                -	["atrule", "तब"],
                -	" foobar\r\n\t",
                -	["atrule", "परन्तु"],
                -	" foobar\r\n\t",
                -	["atrule", "पर"],
                -	" foobar\r\n\t",
                -	["atrule", "यदि"],
                -	" foobar\r\n\t",
                -	["atrule", "ਅਤੇ"],
                -	" foobar\r\n\t",
                -	["atrule", "ਜਦੋਂ"],
                -	" foobar\r\n\t",
                -	["atrule", "ਜਿਵੇਂ ਕਿ"],
                -	" foobar\r\n\t",
                -	["atrule", "ਜੇਕਰ"],
                -	" foobar\r\n\t",
                -	["atrule", "ਤਦ"],
                -	" foobar\r\n\t",
                -	["atrule", "ਪਰ"],
                -	" foobar\r\n\t",
                -	["atrule", "అప్పుడు"],
                -	" foobar\r\n\t",
                -	["atrule", "ఈ పరిస్థితిలో"],
                -	" foobar\r\n\t",
                -	["atrule", "కాని"],
                -	" foobar\r\n\t",
                -	["atrule", "చెప్పబడినది"],
                -	" foobar\r\n\t",
                -	["atrule", "మరియు"],
                -	" foobar\r\n\t",
                -	["atrule", "ಆದರೆ"],
                -	" foobar\r\n\t",
                -	["atrule", "ನಂತರ"],
                -	" foobar\r\n\t",
                -	["atrule", "ನೀಡಿದ"],
                -	" foobar\r\n\t",
                -	["atrule", "ಮತ್ತು"],
                -	" foobar\r\n\t",
                -	["atrule", "ಸ್ಥಿತಿಯನ್ನು"],
                -	" foobar\r\n\t",
                -	["atrule", "กำหนดให้"],
                -	" foobar\r\n\t",
                -	["atrule", "ดังนั้น"],
                -	" foobar\r\n\t",
                -	["atrule", "แต่"],
                -	" foobar\r\n\t",
                -	["atrule", "เมื่อ"],
                -	" foobar\r\n\t",
                -	["atrule", "และ"],
                -	" foobar\r\n\t",
                -	["atrule", "그러면<"],
                -	" foobar\r\n\t",
                -	["atrule", "그리고<"],
                -	" foobar\r\n\t",
                -	["atrule", "단<"],
                -	" foobar\r\n\t",
                -	["atrule", "만약<"],
                -	" foobar\r\n\t",
                -	["atrule", "만일<"],
                -	" foobar\r\n\t",
                -	["atrule", "먼저<"],
                -	" foobar\r\n\t",
                -	["atrule", "조건<"],
                -	" foobar\r\n\t",
                -	["atrule", "하지만<"],
                -	" foobar\r\n\t",
                -	["atrule", "かつ<"],
                -	" foobar\r\n\t",
                -	["atrule", "しかし<"],
                -	" foobar\r\n\t",
                -	["atrule", "ただし<"],
                -	" foobar\r\n\t",
                -	["atrule", "ならば<"],
                -	" foobar\r\n\t",
                -	["atrule", "もし<"],
                -	" foobar\r\n\t",
                -	["atrule", "並且<"],
                -	" foobar\r\n\t",
                -	["atrule", "但し<"],
                -	" foobar\r\n\t",
                -	["atrule", "但是<"],
                -	" foobar\r\n\t",
                -	["atrule", "假如<"],
                -	" foobar\r\n\t",
                -	["atrule", "假定<"],
                -	" foobar\r\n\t",
                -	["atrule", "假設<"],
                -	" foobar\r\n\t",
                -	["atrule", "假设<"],
                -	" foobar\r\n\t",
                -	["atrule", "前提<"],
                -	" foobar\r\n\t",
                -	["atrule", "同时<"],
                -	" foobar\r\n\t",
                -	["atrule", "同時<"],
                -	" foobar\r\n\t",
                -	["atrule", "并且<"],
                -	" foobar\r\n\t",
                -	["atrule", "当<"],
                -	" foobar\r\n\t",
                -	["atrule", "當<"],
                -	" foobar\r\n\t",
                -	["atrule", "而且<"],
                -	" foobar\r\n\t",
                -	["atrule", "那么<"],
                -	" foobar\r\n\t",
                -	["atrule", "那麼<"],
                -	" foobar"
                -]
                -
                -----------------------------------------------------
                -
                -Checks for at-rules in all languages.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/comment_feature.test b/node_modules/prismjs/tests/languages/gherkin/comment_feature.test
                deleted file mode 100644
                index ce88cc9..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/comment_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -#
                -# foo bar
                -	# foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#"],
                -	["comment", "# foo bar"],
                -	["comment", "# foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/feature_feature.test b/node_modules/prismjs/tests/languages/gherkin/feature_feature.test
                deleted file mode 100644
                index 774dd36..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/feature_feature.test
                +++ /dev/null
                @@ -1,196 +0,0 @@
                -Ability: foobar
                -baz
                -Ahoy matey!:
                -Arwedd: foobar
                -Aspekt: foobar
                -Besigheid Behoefte: foobar
                -Business Need: foobar
                -Caracteristica: foobar
                -Característica: foobar
                -Egenskab: foobar
                -Egenskap: foobar
                -Eiginleiki: foobar
                -Feature: foobar
                -Fīča: foobar
                -Fitur: foobar
                -Fonctionnalité: foobar
                -Fonksyonalite: foobar
                -Funcionalidade: foobar
                -Funcionalitat: foobar
                -Functionalitate: foobar
                -Funcţionalitate: foobar
                -Funcționalitate: foobar
                -Functionaliteit: foobar
                -Fungsi: foobar
                -Funkcia: foobar
                -Funkcija: foobar
                -Funkcionalitāte: foobar
                -Funkcionalnost: foobar
                -Funkcja: foobar
                -Funksie: foobar
                -Funktionalität: foobar
                -Funktionalitéit: foobar
                -Funzionalità: foobar
                -Hwaet: foobar
                -Hwæt: foobar
                -Jellemző: foobar
                -Karakteristik: foobar
                -laH: foobar
                -Lastnost: foobar
                -Mak: foobar
                -Mogucnost: foobar
                -Mogućnost: foobar
                -Moznosti: foobar
                -Možnosti: foobar
                -OH HAI: foobar
                -Omadus: foobar
                -Ominaisuus: foobar
                -Osobina: foobar
                -Özellik: foobar
                -perbogh: foobar
                -poQbogh malja': foobar
                -Potrzeba biznesowa: foobar
                -Požadavek: foobar
                -Požiadavka: foobar
                -Pretty much: foobar
                -Qap: foobar
                -Qu'meH 'ut: foobar
                -Savybė: foobar
                -Tính năng: foobar
                -Trajto: foobar
                -Vermoë: foobar
                -Vlastnosť: foobar
                -Właściwość: foobar
                -Značilnost: foobar
                -Δυνατότητα: foobar
                -Λειτουργία: foobar
                -Могућност: foobar
                -Мөмкинлек: foobar
                -Особина: foobar
                -Свойство: foobar
                -Үзенчәлеклелек: foobar
                -Функционал: foobar
                -Функционалност: foobar
                -Функция: foobar
                -Функціонал: foobar
                -תכונה: foobar
                -خاصية: foobar
                -خصوصیت: foobar
                -صلاحیت: foobar
                -کاروبار کی ضرورت: foobar
                -وِیژگی: foobar
                -रूप लेख: foobar
                -ਖਾਸੀਅਤ: foobar
                -ਨਕਸ਼ ਨੁਹਾਰ: foobar
                -ਮੁਹਾਂਦਰਾ: foobar
                -గుణము: foobar
                -ಹೆಚ್ಚಳ: foobar
                -ความต้องการทางธุรกิจ: foobar
                -ความสามารถ: foobar
                -โครงหลัก: foobar
                -기능: foobar
                -フィーチャ: foobar
                -功能: foobar
                -機能: foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["feature", [["keyword", "Ability:"], ["important", " foobar"], "\r\nbaz\r\n"]],
                -	["feature", [["keyword", "Ahoy matey!:"]]],
                -	["feature", [["keyword", "Arwedd:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Aspekt:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Besigheid Behoefte:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Business Need:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Caracteristica:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Característica:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Egenskab:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Egenskap:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Eiginleiki:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Feature:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Fīča:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Fitur:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Fonctionnalité:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Fonksyonalite:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funcionalidade:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funcionalitat:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Functionalitate:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funcţionalitate:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funcționalitate:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Functionaliteit:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Fungsi:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funkcia:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funkcija:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funkcionalitāte:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funkcionalnost:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funkcja:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funksie:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funktionalität:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funktionalitéit:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Funzionalità:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Hwaet:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Hwæt:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Jellemző:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Karakteristik:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "laH:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Lastnost:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Mak:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Mogucnost:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Mogućnost:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Moznosti:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Možnosti:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "OH HAI:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Omadus:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Ominaisuus:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Osobina:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Özellik:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "perbogh:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "poQbogh malja':"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Potrzeba biznesowa:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Požadavek:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Požiadavka:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Pretty much:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Qap:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Qu'meH 'ut:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Savybė:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Tính năng:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Trajto:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Vermoë:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Vlastnosť:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Właściwość:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Značilnost:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Δυνατότητα:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Λειτουργία:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Могућност:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Мөмкинлек:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Особина:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Свойство:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Үзенчәлеклелек:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Функционал:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Функционалност:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Функция:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "Функціонал:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "תכונה:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "خاصية:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "خصوصیت:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "صلاحیت:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "کاروبار کی ضرورت:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "وِیژگی:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "रूप लेख:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "ਖਾਸੀਅਤ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "ਨਕਸ਼ ਨੁਹਾਰ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "ਮੁਹਾਂਦਰਾ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "గుణము:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "ಹೆಚ್ಚಳ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "ความต้องการทางธุรกิจ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "ความสามารถ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "โครงหลัก:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "기능:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "フィーチャ:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "功能:"], ["important", " foobar"]]],
                -	["feature", [["keyword", "機能:"], ["important", " foobar"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for features in all languages.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/outline_feature.test b/node_modules/prismjs/tests/languages/gherkin/outline_feature.test
                deleted file mode 100644
                index 19fc54f..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/outline_feature.test
                +++ /dev/null
                @@ -1,11 +0,0 @@
                -
                -
                -----------------------------------------------------
                -
                -[
                -	["outline", ""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single outlines.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/pystring_feature.test b/node_modules/prismjs/tests/languages/gherkin/pystring_feature.test
                deleted file mode 100644
                index 17fd2b4..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/pystring_feature.test
                +++ /dev/null
                @@ -1,20 +0,0 @@
                -"""
                -foo
                -bar
                -"""
                -
                -'''
                -foo
                -bar
                -'''
                -
                -----------------------------------------------------
                -
                -[
                -	["pystring", "\"\"\"\r\nfoo\r\nbar\r\n\"\"\""],
                -	["pystring", "'''\r\nfoo\r\nbar\r\n'''"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for pystrings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/scenario_feature.test b/node_modules/prismjs/tests/languages/gherkin/scenario_feature.test
                deleted file mode 100644
                index 0979c69..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/scenario_feature.test
                +++ /dev/null
                @@ -1,581 +0,0 @@
                -Abstract Scenario: foobar
                -Abstrakt Scenario: foobar
                -Achtergrond: foobar
                -Aer: foobar
                -Ær: foobar
                -Agtergrond: foobar
                -All y'all: foobar
                -Antecedentes: foobar
                -Antecedents: foobar
                -Atburðarás: foobar
                -Atburðarásir: foobar
                -Awww, look mate: foobar
                -B4: foobar
                -Background: foobar
                -Baggrund: foobar
                -Bakgrund: foobar
                -Bakgrunn: foobar
                -Bakgrunnur: foobar
                -Beispiele: foobar
                -Beispiller: foobar
                -Bối cảnh: foobar
                -Cefndir: foobar
                -Cenario: foobar
                -Cenário: foobar
                -Cenario de Fundo: foobar
                -Cenário de Fundo: foobar
                -Cenarios: foobar
                -Cenários: foobar
                -Contesto: foobar
                -Context: foobar
                -Contexte: foobar
                -Contexto: foobar
                -Conto: foobar
                -Contoh: foobar
                -Contone: foobar
                -Dæmi: foobar
                -Dasar: foobar
                -Dead men tell no tales: foobar
                -Delineacao do Cenario: foobar
                -Delineação do Cenário: foobar
                -Dis is what went down: foobar
                -Dữ liệu: foobar
                -Dyagram senaryo: foobar
                -Dyagram Senaryo: foobar
                -Egzanp: foobar
                -Ejemplos: foobar
                -Eksempler: foobar
                -Ekzemploj: foobar
                -Enghreifftiau: foobar
                -Esbozo do escenario: foobar
                -Escenari: foobar
                -Escenario: foobar
                -Esempi: foobar
                -Esquema de l'escenari: foobar
                -Esquema del escenario: foobar
                -Esquema do Cenario: foobar
                -Esquema do Cenário: foobar
                -Examples: foobar
                -EXAMPLZ: foobar
                -Exempel: foobar
                -Exemple: foobar
                -Exemples: foobar
                -Exemplos: foobar
                -First off: foobar
                -Fono: foobar
                -Forgatókönyv: foobar
                -Forgatókönyv vázlat: foobar
                -Fundo: foobar
                -Geçmiş: foobar
                -ghantoH: foobar
                -Grundlage: foobar
                -Hannergrond: foobar
                -Háttér: foobar
                -Heave to: foobar
                -Istorik: foobar
                -Juhtumid: foobar
                -Keadaan: foobar
                -Khung kịch bản: foobar
                -Khung tình huống: foobar
                -Kịch bản: foobar
                -Koncept: foobar
                -Konsep skenario: foobar
                -Kontèks: foobar
                -Kontekst: foobar
                -Kontekstas: foobar
                -Konteksts: foobar
                -Kontext: foobar
                -Konturo de la scenaro: foobar
                -Latar Belakang: foobar
                -lut: foobar
                -lut chovnatlh: foobar
                -lutmey: foobar
                -Lýsing Atburðarásar: foobar
                -Lýsing Dæma: foobar
                -Menggariskan Senario: foobar
                -MISHUN: foobar
                -MISHUN SRSLY: foobar
                -mo': foobar
                -Náčrt Scenára: foobar
                -Náčrt Scénáře: foobar
                -Náčrt Scenáru: foobar
                -Oris scenarija: foobar
                -Örnekler: foobar
                -Osnova: foobar
                -Osnova Scenára: foobar
                -Osnova scénáře: foobar
                -Osnutek: foobar
                -Ozadje: foobar
                -Paraugs: foobar
                -Pavyzdžiai: foobar
                -Példák: foobar
                -Piemēri: foobar
                -Plan du scénario: foobar
                -Plan du Scénario: foobar
                -Plan senaryo: foobar
                -Plan Senaryo: foobar
                -Plang vum Szenario: foobar
                -Pozadí: foobar
                -Pozadie: foobar
                -Pozadina: foobar
                -Príklady: foobar
                -Příklady: foobar
                -Primer: foobar
                -Primeri: foobar
                -Primjeri: foobar
                -Przykłady: foobar
                -Raamstsenaarium: foobar
                -Reckon it's like: foobar
                -Rerefons: foobar
                -Scenár: foobar
                -Scénář: foobar
                -Scenarie: foobar
                -Scenarij: foobar
                -Scenarijai: foobar
                -Scenarijaus šablonas: foobar
                -Scenariji: foobar
                -Scenārijs: foobar
                -Scenārijs pēc parauga: foobar
                -Scenarijus: foobar
                -Scenario: foobar
                -Scénario: foobar
                -Scenario Amlinellol: foobar
                -Scenario Outline: foobar
                -Scenario Template: foobar
                -Scenariomal: foobar
                -Scenariomall: foobar
                -Scenarios: foobar
                -Scenariu: foobar
                -Scenariusz: foobar
                -Scenaro: foobar
                -Schema dello scenario: foobar
                -Se ðe: foobar
                -Se the: foobar
                -Se þe: foobar
                -Senario: foobar
                -Senaryo: foobar
                -Senaryo deskripsyon: foobar
                -Senaryo Deskripsyon: foobar
                -Senaryo taslağı: foobar
                -Shiver me timbers: foobar
                -Situācija: foobar
                -Situai: foobar
                -Situasie: foobar
                -Situasie Uiteensetting: foobar
                -Skenario: foobar
                -Skenario konsep: foobar
                -Skica: foobar
                -Structura scenariu: foobar
                -Structură scenariu: foobar
                -Struktura scenarija: foobar
                -Stsenaarium: foobar
                -Swa: foobar
                -Swa hwaer swa: foobar
                -Swa hwær swa: foobar
                -Szablon scenariusza: foobar
                -Szenario: foobar
                -Szenariogrundriss: foobar
                -Tapaukset: foobar
                -Tapaus: foobar
                -Tapausaihio: foobar
                -Taust: foobar
                -Tausta: foobar
                -Template Keadaan: foobar
                -Template Senario: foobar
                -Template Situai: foobar
                -The thing of it is: foobar
                -Tình huống: foobar
                -Variantai: foobar
                -Voorbeelde: foobar
                -Voorbeelden: foobar
                -Wharrimean is: foobar
                -Yo-ho-ho: foobar
                -You'll wanna: foobar
                -Założenia: foobar
                -Παραδείγματα: foobar
                -Περιγραφή Σεναρίου: foobar
                -Σενάρια: foobar
                -Σενάριο: foobar
                -Υπόβαθρο: foobar
                -Кереш: foobar
                -Контекст: foobar
                -Концепт: foobar
                -Мисаллар: foobar
                -Мисоллар: foobar
                -Основа: foobar
                -Передумова: foobar
                -Позадина: foobar
                -Предистория: foobar
                -Предыстория: foobar
                -Приклади: foobar
                -Пример: foobar
                -Примери: foobar
                -Примеры: foobar
                -Рамка на сценарий: foobar
                -Скица: foobar
                -Структура сценарија: foobar
                -Структура сценария: foobar
                -Структура сценарію: foobar
                -Сценарий: foobar
                -Сценарий структураси: foobar
                -Сценарийның төзелеше: foobar
                -Сценарији: foobar
                -Сценарио: foobar
                -Сценарій: foobar
                -Тарих: foobar
                -Үрнәкләр: foobar
                -דוגמאות: foobar
                -רקע: foobar
                -תבנית תרחיש: foobar
                -תרחיש: foobar
                -الخلفية: foobar
                -الگوی سناریو: foobar
                -امثلة: foobar
                -پس منظر: foobar
                -زمینه: foobar
                -سناریو: foobar
                -سيناريو: foobar
                -سيناريو مخطط: foobar
                -مثالیں: foobar
                -منظر نامے کا خاکہ: foobar
                -منظرنامہ: foobar
                -نمونه ها: foobar
                -उदाहरण: foobar
                -परिदृश्य: foobar
                -परिदृश्य रूपरेखा: foobar
                -पृष्ठभूमि: foobar
                -ਉਦਾਹਰਨਾਂ: foobar
                -ਪਟਕਥਾ: foobar
                -ਪਟਕਥਾ ਢਾਂਚਾ: foobar
                -ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ: foobar
                -ਪਿਛੋਕੜ: foobar
                -ఉదాహరణలు: foobar
                -కథనం: foobar
                -నేపథ్యం: foobar
                -సన్నివేశం: foobar
                -ಉದಾಹರಣೆಗಳು: foobar
                -ಕಥಾಸಾರಾಂಶ: foobar
                -ವಿವರಣೆ: foobar
                -ಹಿನ್ನೆಲೆ: foobar
                -โครงสร้างของเหตุการณ์: foobar
                -ชุดของตัวอย่าง: foobar
                -ชุดของเหตุการณ์: foobar
                -แนวคิด: foobar
                -สรุปเหตุการณ์: foobar
                -เหตุการณ์: foobar
                -배경: foobar
                -시나리오: foobar
                -시나리오 개요: foobar
                -예: foobar
                -サンプル: foobar
                -シナリオ: foobar
                -シナリオアウトライン: foobar
                -シナリオテンプレ: foobar
                -シナリオテンプレート: foobar
                -テンプレ: foobar
                -例: foobar
                -例子: foobar
                -剧本: foobar
                -剧本大纲: foobar
                -劇本: foobar
                -劇本大綱: foobar
                -场景: foobar
                -场景大纲: foobar
                -場景: foobar
                -場景大綱: foobar
                -背景: foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["scenario", [["keyword", "Abstract Scenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Abstrakt Scenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Achtergrond:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Aer:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Ær:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Agtergrond:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "All y'all:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Antecedentes:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Antecedents:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Atburðarás:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Atburðarásir:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Awww, look mate:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "B4:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Background:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Baggrund:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Bakgrund:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Bakgrunn:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Bakgrunnur:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Beispiele:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Beispiller:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Bối cảnh:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cefndir:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cenário:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cenario de Fundo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cenário de Fundo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cenarios:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Cenários:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Contesto:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Context:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Contexte:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Contexto:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Conto:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Contoh:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Contone:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dæmi:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dasar:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dead men tell no tales:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Delineacao do Cenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Delineação do Cenário:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dis is what went down:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dữ liệu:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dyagram senaryo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Dyagram Senaryo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Egzanp:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Ejemplos:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Eksempler:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Ekzemploj:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Enghreifftiau:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Esbozo do escenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Escenari:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Escenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Esempi:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Esquema de l'escenari:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Esquema del escenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Esquema do Cenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Esquema do Cenário:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Examples:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "EXAMPLZ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Exempel:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Exemple:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Exemples:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Exemplos:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "First off:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Fono:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Forgatókönyv:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Forgatókönyv vázlat:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Fundo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Geçmiş:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ghantoH:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Grundlage:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Hannergrond:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Háttér:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Heave to:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Istorik:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Juhtumid:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Keadaan:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Khung kịch bản:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Khung tình huống:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Kịch bản:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Koncept:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Konsep skenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Kontèks:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Kontekst:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Kontekstas:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Konteksts:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Kontext:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Konturo de la scenaro:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Latar Belakang:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "lut:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "lut chovnatlh:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "lutmey:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Lýsing Atburðarásar:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Lýsing Dæma:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Menggariskan Senario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "MISHUN:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "MISHUN SRSLY:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "mo':"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Náčrt Scenára:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Náčrt Scénáře:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Náčrt Scenáru:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Oris scenarija:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Örnekler:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Osnova:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Osnova Scenára:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Osnova scénáře:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Osnutek:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Ozadje:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Paraugs:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Pavyzdžiai:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Példák:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Piemēri:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Plan du scénario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Plan du Scénario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Plan senaryo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Plan Senaryo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Plang vum Szenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Pozadí:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Pozadie:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Pozadina:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Príklady:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Příklady:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Primer:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Primeri:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Primjeri:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Przykłady:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Raamstsenaarium:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Reckon it's like:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Rerefons:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenár:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scénář:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenarie:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenarij:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenarijai:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenarijaus šablonas:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenariji:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenārijs:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenārijs pēc parauga:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenarijus:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scénario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenario Amlinellol:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenario Outline:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenario Template:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenariomal:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenariomall:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenarios:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenariu:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenariusz:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Scenaro:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Schema dello scenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Se ðe:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Se the:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Se þe:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Senario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Senaryo:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Senaryo deskripsyon:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Senaryo Deskripsyon:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Senaryo taslağı:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Shiver me timbers:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Situācija:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Situai:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Situasie:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Situasie Uiteensetting:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Skenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Skenario konsep:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Skica:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Structura scenariu:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Structură scenariu:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Struktura scenarija:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Stsenaarium:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Swa:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Swa hwaer swa:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Swa hwær swa:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Szablon scenariusza:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Szenario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Szenariogrundriss:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Tapaukset:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Tapaus:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Tapausaihio:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Taust:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Tausta:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Template Keadaan:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Template Senario:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Template Situai:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "The thing of it is:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Tình huống:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Variantai:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Voorbeelde:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Voorbeelden:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Wharrimean is:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Yo-ho-ho:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "You'll wanna:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Założenia:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Παραδείγματα:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Περιγραφή Σεναρίου:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Σενάρια:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Σενάριο:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Υπόβαθρο:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Кереш:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Контекст:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Концепт:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Мисаллар:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Мисоллар:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Основа:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Передумова:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Позадина:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Предистория:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Предыстория:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Приклади:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Пример:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Примери:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Примеры:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Рамка на сценарий:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Скица:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Структура сценарија:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Структура сценария:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Структура сценарію:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Сценарий:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Сценарий структураси:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Сценарийның төзелеше:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Сценарији:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Сценарио:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Сценарій:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Тарих:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "Үрнәкләр:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "דוגמאות:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "רקע:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "תבנית תרחיש:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "תרחיש:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "الخلفية:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "الگوی سناریو:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "امثلة:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "پس منظر:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "زمینه:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "سناریو:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "سيناريو:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "سيناريو مخطط:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "مثالیں:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "منظر نامے کا خاکہ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "منظرنامہ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "نمونه ها:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "उदाहरण:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "परिदृश्य:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "परिदृश्य रूपरेखा:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "पृष्ठभूमि:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ਉਦਾਹਰਨਾਂ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ਪਟਕਥਾ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ਪਟਕਥਾ ਢਾਂਚਾ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ਪਿਛੋਕੜ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ఉదాహరణలు:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "కథనం:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "నేపథ్యం:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "సన్నివేశం:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ಉದಾಹರಣೆಗಳು:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ಕಥಾಸಾರಾಂಶ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ವಿವರಣೆ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ಹಿನ್ನೆಲೆ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "โครงสร้างของเหตุการณ์:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ชุดของตัวอย่าง:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "ชุดของเหตุการณ์:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "แนวคิด:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "สรุปเหตุการณ์:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "เหตุการณ์:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "배경:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "시나리오:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "시나리오 개요:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "예:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "サンプル:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "シナリオ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "シナリオアウトライン:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "シナリオテンプレ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "シナリオテンプレート:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "テンプレ:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "例:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "例子:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "剧本:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "剧本大纲:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "劇本:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "劇本大綱:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "场景:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "场景大纲:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "場景:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "場景大綱:"], ["important", " foobar"]]],
                -	["scenario", [["keyword", "背景:"], ["important", " foobar"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for scenarios in all languages.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/string_feature.test b/node_modules/prismjs/tests/languages/gherkin/string_feature.test
                deleted file mode 100644
                index bcb152f..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/string_feature.test
                +++ /dev/null
                @@ -1,29 +0,0 @@
                -""
                -"foobar"
                -"foobaz"
                -''
                -'foobar'
                -'foobaz'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", ["\"\""]],
                -	["string", ["\"foobar\""]],
                -	["string", [
                -		"\"foo",
                -		["outline", ""],
                -		"baz\""
                -	]],
                -	["string", ["''"]],
                -	["string", ["'foobar'"]],
                -	["string", [
                -        "'foo",
                -        ["outline", ""],
                -        "baz'"
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for double-quoted and single-quoted strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/table_feature.test b/node_modules/prismjs/tests/languages/gherkin/table_feature.test
                deleted file mode 100644
                index 00eaef8..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/table_feature.test
                +++ /dev/null
                @@ -1,40 +0,0 @@
                -Examples: foo
                -| start  | eat | left |
                -|   |  5  |  7   |
                -	|  20    |  5  |  15  |
                -
                -----------------------------------------------------
                -
                -[
                -	["scenario", [["keyword", "Examples:"], ["important", " foo"]]],
                -	["table-head", [
                -		["punctuation", "|"],
                -		["th", " start  "],
                -		["punctuation", "|"],
                -        ["th", " eat "],
                -        ["punctuation", "|"],
                -        ["th", " left "],
                -        ["punctuation", "|"]
                -    ]],
                -    ["table-body", [
                -		["punctuation", "|"],
                -		["outline", ""],
                -		["punctuation", "|"],
                -		["td", "  5  "],
                -		["punctuation", "|"],
                -        ["td", "  7   "],
                -        ["punctuation", "|"],
                -
                -        ["punctuation", "|"],
                -        ["td", "  20    "],
                -        ["punctuation", "|"],
                -        ["td", "  5  "],
                -        ["punctuation", "|"],
                -        ["td", "  15  "],
                -        ["punctuation", "|"]
                -    ]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for table heads and table bodies.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/gherkin/tag_feature.test b/node_modules/prismjs/tests/languages/gherkin/tag_feature.test
                deleted file mode 100644
                index 51026ea..0000000
                --- a/node_modules/prismjs/tests/languages/gherkin/tag_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -@important
                -@billing @bicker @annoy
                -	@foo
                -
                -----------------------------------------------------
                -
                -[
                -	["tag", "@important"],
                -	["tag", "@billing"],
                -	["tag", "@bicker"],
                -	["tag", "@annoy"],
                -	["tag", "@foo"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for tags.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/git/command_feature.test b/node_modules/prismjs/tests/languages/git/command_feature.test
                deleted file mode 100644
                index 488f0be..0000000
                --- a/node_modules/prismjs/tests/languages/git/command_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -$ git add file.txt
                -foo@foobar ~ $ git diff --cached
                -$ git log -p -i
                -
                -----------------------------------------------------
                -
                -[
                -	["command", ["$ git add file.txt"]],
                -	["command", ["foo@foobar ~ $ git diff", ["parameter", " --cached"]]],
                -	["command", ["$ git log", ["parameter", " -p"], ["parameter", " -i"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for git commands, with and without parameters.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/git/comment_feature.test b/node_modules/prismjs/tests/languages/git/comment_feature.test
                deleted file mode 100644
                index c3d0358..0000000
                --- a/node_modules/prismjs/tests/languages/git/comment_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -# On branch gh-pages
                -# Changes to be committed:
                -#   (use "git reset HEAD ..." to unstage)
                -#
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "# On branch gh-pages"],
                -	["comment", "# Changes to be committed:"],
                -	["comment", "#   (use \"git reset HEAD ...\" to unstage)"],
                -	["comment", "#"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/git/commit_sha1_feature.test b/node_modules/prismjs/tests/languages/git/commit_sha1_feature.test
                deleted file mode 100644
                index fbc58ed..0000000
                --- a/node_modules/prismjs/tests/languages/git/commit_sha1_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09
                -commit 87edc4ad8c71b95f6e46f736eb98b742859abd95
                -commit 3102416a90c431400d2e2a14e707fb7fd6d9e06d
                -
                -----------------------------------------------------
                -
                -[
                -	["commit_sha1", "commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09"],
                -	["commit_sha1", "commit 87edc4ad8c71b95f6e46f736eb98b742859abd95"],
                -	["commit_sha1", "commit 3102416a90c431400d2e2a14e707fb7fd6d9e06d"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for commit SHA1.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/git/coord_feature.test b/node_modules/prismjs/tests/languages/git/coord_feature.test
                deleted file mode 100644
                index 8d8c5e2..0000000
                --- a/node_modules/prismjs/tests/languages/git/coord_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -@@ -1 +1,2 @@
                -@@@ -98,20 -98,12 +98,20 @@@
                -
                -----------------------------------------------------
                -
                -[
                -	["coord", "@@ -1 +1,2 @@"],
                -	["coord", "@@@ -98,20 -98,12 +98,20 @@@"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for coords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/git/diff_feature.test b/node_modules/prismjs/tests/languages/git/diff_feature.test
                deleted file mode 100644
                index b93fb18..0000000
                --- a/node_modules/prismjs/tests/languages/git/diff_feature.test
                +++ /dev/null
                @@ -1,31 +0,0 @@
                --Here's my tetx file
                -+Here's my text file
                -+And this is the second line
                -
                -––– a/web/js/lazy.js
                -+++ b/web/js/lazy.js
                -
                --      if (url !== null && url !== '' && typeof url !== 'undefined') {
                -+      if (url === null || url === '' || typeof url === 'undefined') {
                -+        return;
                -+      }
                -+
                -
                -----------------------------------------------------
                -
                -[
                -	["deleted", "-Here's my tetx file"],
                -	["inserted", "+Here's my text file"],
                -	["inserted", "+And this is the second line"],
                -	["deleted", "––– a/web/js/lazy.js"],
                -	["inserted", "+++ b/web/js/lazy.js"],
                -	["deleted", "-      if (url !== null && url !== '' && typeof url !== 'undefined') {"],
                -	["inserted", "+      if (url === null || url === '' || typeof url === 'undefined') {"],
                -	["inserted", "+        return;"],
                -	["inserted", "+      }"],
                -	["inserted", "+"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for inserted and deleted lines in git diff output.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/git/string_feature.test b/node_modules/prismjs/tests/languages/git/string_feature.test
                deleted file mode 100644
                index ebff3bf..0000000
                --- a/node_modules/prismjs/tests/languages/git/string_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -""
                -"foo"
                -''
                -'bar'
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"foo\""],
                -	["string", "''"],
                -	["string", "'bar'"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for double-quoted and single-quoted strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/glsl/comment_feature.test b/node_modules/prismjs/tests/languages/glsl/comment_feature.test
                deleted file mode 100644
                index b45a6bd..0000000
                --- a/node_modules/prismjs/tests/languages/glsl/comment_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -/**/
                -/* foo
                -bar */
                -//
                -// foo
                -// foo\
                -bar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "/**/"],
                -	["comment", "/* foo\r\nbar */"],
                -	["comment", "//"],
                -	["comment", "// foo"],
                -	["comment", "// foo\\\r\nbar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/glsl/keyword_feature.test b/node_modules/prismjs/tests/languages/glsl/keyword_feature.test
                deleted file mode 100644
                index e07768c..0000000
                --- a/node_modules/prismjs/tests/languages/glsl/keyword_feature.test
                +++ /dev/null
                @@ -1,263 +0,0 @@
                -attribute
                -const
                -uniform
                -varying
                -buffer
                -shared
                -coherent
                -volatile
                -restrict
                -readonly
                -writeonly
                -atomic_uint
                -layout
                -centroid
                -flat
                -smooth
                -noperspective
                -patch
                -sample
                -break
                -continue
                -do
                -for
                -while
                -switch
                -case
                -default
                -if
                -else
                -subroutine
                -in
                -out
                -inout
                -float
                -double
                -int
                -void
                -bool
                -true
                -false
                -invariant
                -precise
                -discard
                -return
                -mat2 mat3 mat4
                -mat2x2 mat2x3 mat2x4
                -mat3x2 mat3x3 mat3x4
                -mat4x2 mat4x3 mat4x4
                -dmat2 dmat3 dmat4
                -dmat2x2 dmat2x3 dmat2x4
                -dmat3x2 dmat3x3 dmat3x4
                -dmat4x2 dmat4x3 dmat4x4
                -vec2 vec3 vec4
                -ivec2 ivec3 ivec4
                -bvec2 bvec3 bvec4
                -dvec2 dvec3 dvec4
                -uvec2 uvec3 uvec4
                -uint
                -lowp
                -mediump
                -highp
                -precision
                -sampler1D sampler2D sampler3D
                -isampler1D isampler2D isampler3D
                -usampler1D usampler2D usampler3D
                -samplerCube isamplerCube usamplerCube
                -sampler1DShadow sampler2DShadow
                -samplerCubeShadow
                -sampler1DArray sampler2DArray
                -isampler1DArray isampler2DArray
                -usampler1DArray usampler2DArray
                -sampler1DArrayShadow sampler2DArrayShadow
                -sampler2DRect isampler2DRect usampler2DRect
                -sampler2DRectShadow
                -samplerBuffer isamplerBuffer usamplerBuffer
                -sampler2DMS isampler2DMS usampler2DMS
                -sampler2DMSArray isampler2DMSArray usampler2DMSArray
                -samplerCubeArray isamplerCubeArray usamplerCubeArray
                -samplerCubeArrayShadow
                -image1D image2D image3D
                -iimage1D iimage2D iimage3D
                -uimage1D uimage2D uimage3D
                -image2DRect iimage2DRect uimage2DRect
                -imageCube iimageCube uimageCube
                -imageBuffer iimageBuffer uimageBuffer
                -image1DArray image2DArray
                -iimage1DArray iimage2DArray
                -uimage1DArray uimage2DArray
                -imageCubeArray iimageCubeArray uimageCubeArray
                -image2DMS iimage2DMS uimage2DMS
                -image2DMSArray iimage2DMSArray uimage2DMSArray
                -struct
                -common
                -partition
                -active
                -asm
                -class;
                -union
                -enum
                -typedef
                -template
                -this
                -resource
                -goto
                -inline
                -noinline
                -public
                -static
                -extern
                -external
                -interface;
                -long
                -short
                -half
                -fixed
                -unsigned
                -superp
                -input
                -output
                -hvec2 hvec3 hvec4
                -fvec2 fvec3 fvec4
                -sampler3DRect
                -filter
                -sizeof
                -cast
                -namespace
                -using
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "attribute"],
                -	["keyword", "const"],
                -	["keyword", "uniform"],
                -	["keyword", "varying"],
                -	["keyword", "buffer"],
                -	["keyword", "shared"],
                -	["keyword", "coherent"],
                -	["keyword", "volatile"],
                -	["keyword", "restrict"],
                -	["keyword", "readonly"],
                -	["keyword", "writeonly"],
                -	["keyword", "atomic_uint"],
                -	["keyword", "layout"],
                -	["keyword", "centroid"],
                -	["keyword", "flat"],
                -	["keyword", "smooth"],
                -	["keyword", "noperspective"],
                -	["keyword", "patch"],
                -	["keyword", "sample"],
                -	["keyword", "break"],
                -	["keyword", "continue"],
                -	["keyword", "do"],
                -	["keyword", "for"],
                -	["keyword", "while"],
                -	["keyword", "switch"],
                -	["keyword", "case"],
                -	["keyword", "default"],
                -	["keyword", "if"],
                -	["keyword", "else"],
                -	["keyword", "subroutine"],
                -	["keyword", "in"],
                -	["keyword", "out"],
                -	["keyword", "inout"],
                -	["keyword", "float"],
                -	["keyword", "double"],
                -	["keyword", "int"],
                -	["keyword", "void"],
                -	["keyword", "bool"],
                -	["keyword", "true"],
                -	["keyword", "false"],
                -	["keyword", "invariant"],
                -	["keyword", "precise"],
                -	["keyword", "discard"],
                -	["keyword", "return"],
                -	["keyword", "mat2"], ["keyword", "mat3"], ["keyword", "mat4"],
                -	["keyword", "mat2x2"], ["keyword", "mat2x3"], ["keyword", "mat2x4"],
                -	["keyword", "mat3x2"], ["keyword", "mat3x3"], ["keyword", "mat3x4"],
                -	["keyword", "mat4x2"], ["keyword", "mat4x3"], ["keyword", "mat4x4"],
                -	["keyword", "dmat2"], ["keyword", "dmat3"], ["keyword", "dmat4"],
                -	["keyword", "dmat2x2"], ["keyword", "dmat2x3"], ["keyword", "dmat2x4"],
                -	["keyword", "dmat3x2"], ["keyword", "dmat3x3"], ["keyword", "dmat3x4"],
                -	["keyword", "dmat4x2"], ["keyword", "dmat4x3"], ["keyword", "dmat4x4"],
                -	["keyword", "vec2"], ["keyword", "vec3"], ["keyword", "vec4"],
                -	["keyword", "ivec2"], ["keyword", "ivec3"], ["keyword", "ivec4"],
                -	["keyword", "bvec2"], ["keyword", "bvec3"], ["keyword", "bvec4"],
                -	["keyword", "dvec2"], ["keyword", "dvec3"], ["keyword", "dvec4"],
                -	["keyword", "uvec2"], ["keyword", "uvec3"], ["keyword", "uvec4"],
                -	["keyword", "uint"],
                -	["keyword", "lowp"],
                -	["keyword", "mediump"],
                -	["keyword", "highp"],
                -	["keyword", "precision"],
                -	["keyword", "sampler1D"], ["keyword", "sampler2D"], ["keyword", "sampler3D"],
                -	["keyword", "isampler1D"], ["keyword", "isampler2D"], ["keyword", "isampler3D"],
                -	["keyword", "usampler1D"], ["keyword", "usampler2D"], ["keyword", "usampler3D"],
                -	["keyword", "samplerCube"], ["keyword", "isamplerCube"], ["keyword", "usamplerCube"],
                -	["keyword", "sampler1DShadow"], ["keyword", "sampler2DShadow"],
                -	["keyword", "samplerCubeShadow"],
                -	["keyword", "sampler1DArray"], ["keyword", "sampler2DArray"],
                -	["keyword", "isampler1DArray"], ["keyword", "isampler2DArray"],
                -	["keyword", "usampler1DArray"], ["keyword", "usampler2DArray"],
                -	["keyword", "sampler1DArrayShadow"], ["keyword", "sampler2DArrayShadow"],
                -	["keyword", "sampler2DRect"], ["keyword", "isampler2DRect"], ["keyword", "usampler2DRect"],
                -	["keyword", "sampler2DRectShadow"],
                -	["keyword", "samplerBuffer"], ["keyword", "isamplerBuffer"], ["keyword", "usamplerBuffer"],
                -	["keyword", "sampler2DMS"], ["keyword", "isampler2DMS"], ["keyword", "usampler2DMS"],
                -	["keyword", "sampler2DMSArray"], ["keyword", "isampler2DMSArray"], ["keyword", "usampler2DMSArray"],
                -	["keyword", "samplerCubeArray"], ["keyword", "isamplerCubeArray"], ["keyword", "usamplerCubeArray"],
                -	["keyword", "samplerCubeArrayShadow"],
                -	["keyword", "image1D"], ["keyword", "image2D"], ["keyword", "image3D"],
                -	["keyword", "iimage1D"], ["keyword", "iimage2D"], ["keyword", "iimage3D"],
                -	["keyword", "uimage1D"], ["keyword", "uimage2D"], ["keyword", "uimage3D"],
                -	["keyword", "image2DRect"], ["keyword", "iimage2DRect"], ["keyword", "uimage2DRect"],
                -	["keyword", "imageCube"], ["keyword", "iimageCube"], ["keyword", "uimageCube"],
                -	["keyword", "imageBuffer"], ["keyword", "iimageBuffer"], ["keyword", "uimageBuffer"],
                -	["keyword", "image1DArray"], ["keyword", "image2DArray"],
                -	["keyword", "iimage1DArray"], ["keyword", "iimage2DArray"],
                -	["keyword", "uimage1DArray"], ["keyword", "uimage2DArray"],
                -	["keyword", "imageCubeArray"], ["keyword", "iimageCubeArray"], ["keyword", "uimageCubeArray"],
                -	["keyword", "image2DMS"], ["keyword", "iimage2DMS"], ["keyword", "uimage2DMS"],
                -	["keyword", "image2DMSArray"], ["keyword", "iimage2DMSArray"], ["keyword", "uimage2DMSArray"],
                -	["keyword", "struct"],
                -	["keyword", "common"],
                -	["keyword", "partition"],
                -	["keyword", "active"],
                -	["keyword", "asm"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "union"],
                -	["keyword", "enum"],
                -	["keyword", "typedef"],
                -	["keyword", "template"],
                -	["keyword", "this"],
                -	["keyword", "resource"],
                -	["keyword", "goto"],
                -	["keyword", "inline"],
                -	["keyword", "noinline"],
                -	["keyword", "public"],
                -	["keyword", "static"],
                -	["keyword", "extern"],
                -	["keyword", "external"],
                -	["keyword", "interface"], ["punctuation", ";"],
                -	["keyword", "long"],
                -	["keyword", "short"],
                -	["keyword", "half"],
                -	["keyword", "fixed"],
                -	["keyword", "unsigned"],
                -	["keyword", "superp"],
                -	["keyword", "input"],
                -	["keyword", "output"],
                -	["keyword", "hvec2"], ["keyword", "hvec3"], ["keyword", "hvec4"],
                -	["keyword", "fvec2"], ["keyword", "fvec3"], ["keyword", "fvec4"],
                -	["keyword", "sampler3DRect"],
                -	["keyword", "filter"],
                -	["keyword", "sizeof"],
                -	["keyword", "cast"],
                -	["keyword", "namespace"],
                -	["keyword", "using"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/glsl/number_feature.test b/node_modules/prismjs/tests/languages/glsl/number_feature.test
                deleted file mode 100644
                index 20ac4d1..0000000
                --- a/node_modules/prismjs/tests/languages/glsl/number_feature.test
                +++ /dev/null
                @@ -1,31 +0,0 @@
                -0xBadFace
                -42
                -3.14159
                -3e8
                -3.6e-7
                -4.7E+12
                -4u
                -42U
                -3.1l
                -42f
                -2.0LF
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0xBadFace"],
                -	["number", "42"],
                -	["number", "3.14159"],
                -	["number", "3e8"],
                -	["number", "3.6e-7"],
                -	["number", "4.7E+12"],
                -	["number", "4u"],
                -	["number", "42U"],
                -	["number", "3.1l"],
                -	["number", "42f"],
                -	["number", "2.0LF"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/glsl/preprocessor_feature.test b/node_modules/prismjs/tests/languages/glsl/preprocessor_feature.test
                deleted file mode 100644
                index a720d35..0000000
                --- a/node_modules/prismjs/tests/languages/glsl/preprocessor_feature.test
                +++ /dev/null
                @@ -1,35 +0,0 @@
                -#define
                -#undef
                -#if
                -#ifdef
                -#ifndef
                -#else
                -#elif
                -#endif
                -#error
                -#pragma
                -#extension
                -#version
                -#line
                -
                -----------------------------------------------------
                -
                -[
                -	["preprocessor", "#define"],
                -	["preprocessor", "#undef"],
                -	["preprocessor", "#if"],
                -	["preprocessor", "#ifdef"],
                -	["preprocessor", "#ifndef"],
                -	["preprocessor", "#else"],
                -	["preprocessor", "#elif"],
                -	["preprocessor", "#endif"],
                -	["preprocessor", "#error"],
                -	["preprocessor", "#pragma"],
                -	["preprocessor", "#extension"],
                -	["preprocessor", "#version"],
                -	["preprocessor", "#line"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for preprocessor instructions.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/go/boolean_feature.test b/node_modules/prismjs/tests/languages/go/boolean_feature.test
                deleted file mode 100644
                index 1ee1192..0000000
                --- a/node_modules/prismjs/tests/languages/go/boolean_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -_
                -iota
                -nil
                -true
                -false
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "_"],
                -	["boolean", "iota"],
                -	["boolean", "nil"],
                -	["boolean", "true"],
                -	["boolean", "false"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all boolean values.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/go/builtin_feature.test b/node_modules/prismjs/tests/languages/go/builtin_feature.test
                deleted file mode 100644
                index 414018f..0000000
                --- a/node_modules/prismjs/tests/languages/go/builtin_feature.test
                +++ /dev/null
                @@ -1,79 +0,0 @@
                -bool
                -byte
                -complex64
                -complex128
                -error
                -float32
                -float64
                -rune
                -string
                -int
                -int8
                -int16
                -int32
                -int64
                -uint
                -uint8
                -uint16
                -uint32
                -uint64
                -uintptr
                -append
                -cap
                -close
                -complex
                -copy
                -delete
                -imag
                -len
                -make
                -new
                -panic
                -print
                -println
                -real
                -recover
                -
                -----------------------------------------------------
                -
                -[
                -	["builtin", "bool"],
                -	["builtin", "byte"],
                -	["builtin", "complex64"],
                -	["builtin", "complex128"],
                -	["builtin", "error"],
                -	["builtin", "float32"],
                -	["builtin", "float64"],
                -	["builtin", "rune"],
                -	["builtin", "string"],
                -	["builtin", "int"],
                -	["builtin", "int8"],
                -	["builtin", "int16"],
                -	["builtin", "int32"],
                -	["builtin", "int64"],
                -	["builtin", "uint"],
                -	["builtin", "uint8"],
                -	["builtin", "uint16"],
                -	["builtin", "uint32"],
                -	["builtin", "uint64"],
                -	["builtin", "uintptr"],
                -	["builtin", "append"],
                -	["builtin", "cap"],
                -	["builtin", "close"],
                -	["builtin", "complex"],
                -	["builtin", "copy"],
                -	["builtin", "delete"],
                -	["builtin", "imag"],
                -	["builtin", "len"],
                -	["builtin", "make"],
                -	["builtin", "new"],
                -	["builtin", "panic"],
                -	["builtin", "print"],
                -	["builtin", "println"],
                -	["builtin", "real"],
                -	["builtin", "recover"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all builtins.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/go/keyword_feature.test b/node_modules/prismjs/tests/languages/go/keyword_feature.test
                deleted file mode 100644
                index a2799f7..0000000
                --- a/node_modules/prismjs/tests/languages/go/keyword_feature.test
                +++ /dev/null
                @@ -1,59 +0,0 @@
                -break
                -case
                -chan
                -const
                -continue
                -default
                -defer
                -else
                -fallthrough
                -for
                -func
                -go
                -goto
                -if
                -import
                -interface
                -map
                -package
                -range
                -return
                -select
                -struct
                -switch
                -type
                -var
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "break"],
                -	["keyword", "case"],
                -	["keyword", "chan"],
                -	["keyword", "const"],
                -	["keyword", "continue"],
                -	["keyword", "default"],
                -	["keyword", "defer"],
                -	["keyword", "else"],
                -	["keyword", "fallthrough"],
                -	["keyword", "for"],
                -	["keyword", "func"],
                -	["keyword", "go"],
                -	["keyword", "goto"],
                -	["keyword", "if"],
                -	["keyword", "import"],
                -	["keyword", "interface"],
                -	["keyword", "map"],
                -	["keyword", "package"],
                -	["keyword", "range"],
                -	["keyword", "return"],
                -	["keyword", "select"],
                -	["keyword", "struct"],
                -	["keyword", "switch"],
                -	["keyword", "type"],
                -	["keyword", "var"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/go/number_feature.test b/node_modules/prismjs/tests/languages/go/number_feature.test
                deleted file mode 100644
                index f21b3e8..0000000
                --- a/node_modules/prismjs/tests/languages/go/number_feature.test
                +++ /dev/null
                @@ -1,43 +0,0 @@
                -42
                -0600
                -0xBadFace
                -170141183460469231731687303715884105727
                -72.40
                -072.40
                -2.71828
                -1.e+0
                -6.67428e-11
                -1E6
                -0i
                -011i
                -0.i
                -2.71828i
                -1.e+0i
                -6.67428e-11i
                -1E6i
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "42"],
                -	["number", "0600"],
                -	["number", "0xBadFace"],
                -	["number", "170141183460469231731687303715884105727"],
                -	["number", "72.40"],
                -	["number", "072.40"],
                -	["number", "2.71828"],
                -	["number", "1.e+0"],
                -	["number", "6.67428e-11"],
                -	["number", "1E6"],
                -	["number", "0i"],
                -	["number", "011i"],
                -	["number", "0.i"],
                -	["number", "2.71828i"],
                -	["number", "1.e+0i"],
                -	["number", "6.67428e-11i"],
                -	["number", "1E6i"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for integers, floats and imaginary numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/go/operator_feature.test b/node_modules/prismjs/tests/languages/go/operator_feature.test
                deleted file mode 100644
                index cda5386..0000000
                --- a/node_modules/prismjs/tests/languages/go/operator_feature.test
                +++ /dev/null
                @@ -1,27 +0,0 @@
                -* / % ^ ! =
                -*= /= %= ^= != ==
                -+ += ++
                -- -= --
                -| |= ||
                -& &= && &^ &^=
                -> >> >>= >=
                -< << <<= <= <-
                -:= ...
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "*"], ["operator", "/"], ["operator", "%"], ["operator", "^"], ["operator", "!"], ["operator", "="],
                -	["operator", "*="], ["operator", "/="], ["operator", "%="], ["operator", "^="], ["operator", "!="], ["operator", "=="],
                -	["operator", "+"], ["operator", "+="], ["operator", "++"],
                -	["operator", "-"], ["operator", "-="], ["operator", "--"],
                -	["operator", "|"], ["operator", "|="], ["operator", "||"],
                -	["operator", "&"], ["operator", "&="], ["operator", "&&"], ["operator", "&^"], ["operator", "&^="],
                -	["operator", ">"], ["operator", ">>"], ["operator", ">>="], ["operator", ">="],
                -	["operator", "<"], ["operator", "<<"], ["operator", "<<="], ["operator", "<="], ["operator", "<-"],
                -	["operator", ":="], ["operator", "..."]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/go/string_feature.test b/node_modules/prismjs/tests/languages/go/string_feature.test
                deleted file mode 100644
                index 97e3960..0000000
                --- a/node_modules/prismjs/tests/languages/go/string_feature.test
                +++ /dev/null
                @@ -1,37 +0,0 @@
                -'a'
                -'ä'
                -'本'
                -'\t'
                -'\xff'
                -'\u12e4'
                -
                -`abc`
                -`\n
                -\n`
                -"\n"
                -"\""
                -"Hello, world!\n"
                -"日本語"
                -"\xff\u00FF"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "'a'"],
                -	["string", "'ä'"],
                -	["string", "'本'"],
                -	["string", "'\\t'"],
                -	["string", "'\\xff'"],
                -	["string", "'\\u12e4'"],
                -	["string", "`abc`"],
                -	["string", "`\\n\r\n\\n`"],
                -	["string", "\"\\n\""],
                -	["string", "\"\\\"\""],
                -	["string", "\"Hello, world!\\n\""],
                -	["string", "\"日本語\""],
                -	["string", "\"\\xff\\u00FF\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for runes and strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/attr-name_feature.test b/node_modules/prismjs/tests/languages/graphql/attr-name_feature.test
                deleted file mode 100644
                index 7f976e6..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/attr-name_feature.test
                +++ /dev/null
                @@ -1,27 +0,0 @@
                -{
                -	zuck: user(id: 4) {
                -		name
                -	}
                -}
                -
                -----------------------------------------------------
                -
                -[
                -	["punctuation", "{"],
                -	["attr-name", "zuck"],
                -	["punctuation", ":"],
                -	" user",
                -	["punctuation", "("],
                -	["attr-name", "id"],
                -	["punctuation", ":"],
                -	["number", "4"],
                -	["punctuation", ")"],
                -	["punctuation", "{"],
                -	"\r\n\t\tname\r\n\t",
                -	["punctuation", "}"],
                -	["punctuation", "}"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for aliases, parameter names, etc.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/boolean_feature.test b/node_modules/prismjs/tests/languages/graphql/boolean_feature.test
                deleted file mode 100644
                index 4019c44..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/boolean_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -true
                -false
                -
                -----------------------------------------------------
                -
                -[
                -	["boolean", "true"],
                -	["boolean", "false"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/comment_feature.test b/node_modules/prismjs/tests/languages/graphql/comment_feature.test
                deleted file mode 100644
                index 054d602..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/comment_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -#
                -# foobar
                -
                -----------------------------------------------------
                -
                -[
                -	["comment", "#"],
                -	["comment", "# foobar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/directive_feature.test b/node_modules/prismjs/tests/languages/graphql/directive_feature.test
                deleted file mode 100644
                index ca9b700..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/directive_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -@skip
                -@include
                -
                -----------------------------------------------------
                -
                -[
                -	["directive", "@skip"],
                -	["directive", "@include"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for directives
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/keyword_feature.test b/node_modules/prismjs/tests/languages/graphql/keyword_feature.test
                deleted file mode 100644
                index 06d16f2..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/keyword_feature.test
                +++ /dev/null
                @@ -1,24 +0,0 @@
                -query
                -fragment
                -mutation
                -fragment foo on Bar
                -... on Foo
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "query"],
                -	["keyword", "fragment"],
                -	["keyword", "mutation"],
                -	["keyword", "fragment"],
                -	" foo ",
                -	["keyword", "on"],
                -	" Bar\r\n",
                -	["operator", "..."],
                -	["keyword", "on"],
                -	" Foo"
                -]
                -
                -----------------------------------------------------
                -
                -Checks for keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/number_feature.test b/node_modules/prismjs/tests/languages/graphql/number_feature.test
                deleted file mode 100644
                index c58cc24..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/number_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -0
                -42
                --5
                -3.14159
                -5e4
                -6E-78
                -0.3e+1
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0"],
                -	["number", "42"],
                -	["number", "-5"],
                -	["number", "3.14159"],
                -	["number", "5e4"],
                -	["number", "6E-78"],
                -	["number", "0.3e+1"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/string_feature.test b/node_modules/prismjs/tests/languages/graphql/string_feature.test
                deleted file mode 100644
                index a3d26be..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/string_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -""
                -"foo bar"
                -"foo\"bar\\baz"
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\""],
                -	["string", "\"foo bar\""],
                -	["string", "\"foo\\\"bar\\\\baz\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/graphql/variable_feature.test b/node_modules/prismjs/tests/languages/graphql/variable_feature.test
                deleted file mode 100644
                index 642d173..0000000
                --- a/node_modules/prismjs/tests/languages/graphql/variable_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -$foo
                -$Foo_bar42
                -
                -----------------------------------------------------
                -
                -[
                -	["variable", "$foo"],
                -	["variable", "$Foo_bar42"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for variables.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/annotation_feature.test b/node_modules/prismjs/tests/languages/groovy/annotation_feature.test
                deleted file mode 100644
                index f956c52..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/annotation_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -@BaseScript MyBaseClass baseScript
                -@DelegatesTo(EmailSpec)
                -
                -----------------------------------------------------
                -
                -[
                -	["annotation", "@BaseScript"],
                -	" MyBaseClass baseScript\r\n",
                -	["annotation", "@DelegatesTo"],
                -	["punctuation", "("],
                -	"EmailSpec",
                -	["punctuation", ")"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for annotations.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/issue1049.js b/node_modules/prismjs/tests/languages/groovy/issue1049.js
                deleted file mode 100644
                index 2ce8153..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/issue1049.js
                +++ /dev/null
                @@ -1,8 +0,0 @@
                -module.exports = {
                -	'"&"': '"&amp;"',
                -	'"&&"': '"&amp;&amp;"',
                -	'"<"': '"&lt;"',
                -	'"<<"': '"&lt;&lt;"',
                -	'"&lt;"': '"&amp;lt;"',
                -	'">"': '"&gt;"',
                -};
                diff --git a/node_modules/prismjs/tests/languages/groovy/keyword_feature.test b/node_modules/prismjs/tests/languages/groovy/keyword_feature.test
                deleted file mode 100644
                index 57b7e16..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/keyword_feature.test
                +++ /dev/null
                @@ -1,61 +0,0 @@
                -as def in abstract
                -assert boolean break
                -byte case catch char
                -class;
                -const continue
                -default do double else
                -enum
                -extends;
                -final
                -finally float for goto
                -if
                -implements;
                -import
                -instanceof;
                -int
                -interface;
                -long native
                -new;
                -package private protected
                -public return short
                -static strictfp super
                -switch synchronized this
                -throw throws
                -trait;
                -transient
                -try void volatile while
                -
                -----------------------------------------------------
                -
                -[
                -	["keyword", "as"], ["keyword", "def"], ["keyword", "in"], ["keyword", "abstract"],
                -	["keyword", "assert"], ["keyword", "boolean"], ["keyword", "break"],
                -	["keyword", "byte"], ["keyword", "case"], ["keyword", "catch"], ["keyword", "char"],
                -	["keyword", "class"], ["punctuation", ";"],
                -	["keyword", "const"], ["keyword", "continue"],
                -	["keyword", "default"], ["keyword", "do"], ["keyword", "double"], ["keyword", "else"],
                -	["keyword", "enum"],
                -	["keyword", "extends"], ["punctuation", ";"],
                -	["keyword", "final"],
                -	["keyword", "finally"], ["keyword", "float"], ["keyword", "for"], ["keyword", "goto"],
                -	["keyword", "if"],
                -	["keyword", "implements"], ["punctuation", ";"],
                -	["keyword", "import"],
                -	["keyword", "instanceof"], ["punctuation", ";"],
                -	["keyword", "int"],
                -	["keyword", "interface"], ["punctuation", ";"],
                -	["keyword", "long"], ["keyword", "native"],
                -	["keyword", "new"], ["punctuation", ";"],
                -	["keyword", "package"], ["keyword", "private"], ["keyword", "protected"],
                -	["keyword", "public"], ["keyword", "return"], ["keyword", "short"],
                -	["keyword", "static"], ["keyword", "strictfp"], ["keyword", "super"],
                -	["keyword", "switch"], ["keyword", "synchronized"], ["keyword", "this"],
                -	["keyword", "throw"], ["keyword", "throws"],
                -	["keyword", "trait"], ["punctuation", ";"],
                -	["keyword", "transient"],
                -	["keyword", "try"], ["keyword", "void"], ["keyword", "volatile"], ["keyword", "while"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all keywords.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/number_feature.test b/node_modules/prismjs/tests/languages/groovy/number_feature.test
                deleted file mode 100644
                index bd12ff9..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/number_feature.test
                +++ /dev/null
                @@ -1,43 +0,0 @@
                -0b0110
                -0b0110_1111_0000
                -0b01G 0b01L 0b01I
                -0b01D 0b01F
                -
                -0xBABE
                -0xBad_Face
                -0x1.8p1
                -0xa.fp-2
                -
                -42_000
                -3.14_15_9
                -1.2e3
                -3E+1
                -4E-2
                -42g 42l 42i
                -42d 42f
                -
                -----------------------------------------------------
                -
                -[
                -	["number", "0b0110"],
                -	["number", "0b0110_1111_0000"],
                -	["number", "0b01G"], ["number", "0b01L"], ["number", "0b01I"],
                -	["number", "0b01D"], ["number", "0b01F"],
                -
                -	["number", "0xBABE"],
                -	["number", "0xBad_Face"],
                -	["number", "0x1.8p1"],
                -	["number", "0xa.fp-2"],
                -
                -	["number", "42_000"],
                -	["number", "3.14_15_9"],
                -	["number", "1.2e3"],
                -	["number", "3E+1"],
                -	["number", "4E-2"],
                -	["number", "42g"], ["number", "42l"], ["number", "42i"],
                -	["number", "42d"], ["number", "42f"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for binary, hexadecimal and decimal numbers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/operator_feature.test b/node_modules/prismjs/tests/languages/groovy/operator_feature.test
                deleted file mode 100644
                index cce07a9..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/operator_feature.test
                +++ /dev/null
                @@ -1,45 +0,0 @@
                -~
                -= == =~ ==~
                -? ?. ?:
                -* ** *. *= **=
                -. .@ .&
                -5..8
                -5..<8
                -- -- -= ->
                -+ ++ +=
                -! !=
                -< << <<= <= <=>
                -> >> >>> >>= >>>= >=
                -& && &=
                -| || |=
                -/
                -/=
                -^ ^=
                -% %=
                -
                -----------------------------------------------------
                -
                -[
                -	["operator", "~"],
                -	["operator", "="], ["operator", "=="], ["operator", "=~"], ["operator", "==~"],
                -	["operator", "?"], ["operator", "?."], ["operator", "?:"],
                -	["operator", "*"], ["operator", "**"], ["operator", "*."], ["operator", "*="], ["operator", "**="],
                -	["operator", "."], ["operator", ".@"], ["operator", ".&"],
                -	["number", "5"], ["operator", ".."], ["number", "8"],
                -	["number", "5"], ["operator", "..<"], ["number", "8"],
                -	["operator", "-"], ["operator", "--"], ["operator", "-="], ["operator", "->"],
                -	["operator", "+"], ["operator", "++"], ["operator", "+="],
                -	["operator", "!"], ["operator", "!="],
                -	["operator", "<"], ["operator", "<<"], ["operator", "<<="], ["operator", "<="], ["operator", "<=>"],
                -	["operator", ">"], ["operator", ">>"], ["operator", ">>>"], ["operator", ">>="], ["operator", ">>>="], ["operator", ">="],
                -	["operator", "&"], ["operator", "&&"], ["operator", "&="],
                -	["operator", "|"], ["operator", "||"], ["operator", "|="],
                -	["operator", "/"],
                -	["operator", "/="],
                -	["operator", "^"], ["operator", "^="],
                -	["operator", "%"], ["operator", "%="]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all operators.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/shebang_feature.test b/node_modules/prismjs/tests/languages/groovy/shebang_feature.test
                deleted file mode 100644
                index c5806eb..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/shebang_feature.test
                +++ /dev/null
                @@ -1,13 +0,0 @@
                -#!foobar
                -#!/usr/bin/env groovy
                -
                -----------------------------------------------------
                -
                -[
                -	["shebang", "#!foobar"],
                -	["shebang", "#!/usr/bin/env groovy"]
                -]
                -
                -----------------------------------------------------
                -
                -Check for shebang comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/spock-block_feature.test b/node_modules/prismjs/tests/languages/groovy/spock-block_feature.test
                deleted file mode 100644
                index 5cc72fe..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/spock-block_feature.test
                +++ /dev/null
                @@ -1,25 +0,0 @@
                -setup:
                -given:
                -when:
                -then:
                -and:
                -cleanup:
                -expect:
                -where:
                -
                -----------------------------------------------------
                -
                -[
                -	["spock-block", "setup:"],
                -	["spock-block", "given:"],
                -	["spock-block", "when:"],
                -	["spock-block", "then:"],
                -	["spock-block", "and:"],
                -	["spock-block", "cleanup:"],
                -	["spock-block", "expect:"],
                -	["spock-block", "where:"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all spock blocks.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/string-interpolation_feature.js b/node_modules/prismjs/tests/languages/groovy/string-interpolation_feature.js
                deleted file mode 100644
                index ddecdfd..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/string-interpolation_feature.js
                +++ /dev/null
                @@ -1,28 +0,0 @@
                -module.exports = {
                -	// Double quoted: interpolation
                -	'"$foo"': '"$foo"',
                -	'"${42}"': '"${42}"',
                -	// Triple double quoted: interpolation
                -	'"""$foo"""': '"""$foo"""',
                -	'"""${42}"""': '"""${42}"""',
                -	// Slashy string: interpolation
                -	'/$foo/': '/$foo/',
                -	'/${42}/': '/${42}/',
                -	// Dollar slashy string: interpolation
                -	'$/$foo/$': '$/$foo/$',
                -	'$/${42}/$': '$/${42}/$',
                -
                -	// Double quoted: no interpolation (escaped)
                -	'"\\$foo \\${42}"': '"\\$foo \\${42}"',
                -	// Triple double quoted: no interpolation (escaped)
                -	'"""\\$foo \\${42}"""': '"""\\$foo \\${42}"""',
                -	// Slashy string: no interpolation (escaped)
                -	'/\\$foo \\${42}/': '/\\$foo \\${42}/',
                -	// Dollar slashy string: no interpolation (escaped)
                -	'$/$$foo $${42}/$': '$/$$foo $${42}/$',
                -
                -	// Single quoted string: no interpolation
                -	'\'$foo ${42}\'': '\'$foo ${42}\'',
                -	// Triple single quoted string: no interpolation
                -	'\'\'\'$foo ${42}\'\'\'': '\'\'\'$foo ${42}\'\'\''
                -};
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/groovy/string_feature.test b/node_modules/prismjs/tests/languages/groovy/string_feature.test
                deleted file mode 100644
                index 639db82..0000000
                --- a/node_modules/prismjs/tests/languages/groovy/string_feature.test
                +++ /dev/null
                @@ -1,60 +0,0 @@
                -""""""
                -"""foo"""
                -"""foo
                -bar"""
                -
                -''''''
                -'''foo'''
                -'''foo
                -bar'''
                -
                -""
                -"fo\"o"
                -''
                -'fo\'o'
                -
                -/foo/
                -/fo\/o/
                -
                -$/fo$/$o/$
                -$/foo
                -bar/$
                -"foo /* comment */ bar"
                -'foo // bar'
                -'''foo
                -/* comment */
                -bar'''
                -"""foo
                -// comment
                -bar"""
                -
                -----------------------------------------------------
                -
                -[
                -	["string", "\"\"\"\"\"\""],
                -	["string", "\"\"\"foo\"\"\""],
                -	["string", "\"\"\"foo\r\nbar\"\"\""],
                -	["string", "''''''"],
                -	["string", "'''foo'''"],
                -	["string", "'''foo\r\nbar'''"],
                -
                -	["string", "\"\""],
                -	["string", "\"fo\\\"o\""],
                -	["string", "''"],
                -	["string", "'fo\\'o'"],
                -
                -	["string", "/foo/"],
                -	["string", "/fo\\/o/"],
                -
                -	["string", "$/fo$/$o/$"],
                -	["string", "$/foo\r\nbar/$"],
                -	["string", "\"foo /* comment */ bar\""],
                -	["string", "'foo // bar'"],
                -	["string", "'''foo\r\n/* comment */\r\nbar'''"],
                -	["string", "\"\"\"foo\r\n// comment\r\nbar\"\"\""]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single quoted, triple single quoted, double quoted,
                -triple double quoted, slashy and dollar slashy strings.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/haml/code_feature.test b/node_modules/prismjs/tests/languages/haml/code_feature.test
                deleted file mode 100644
                index 51315e6..0000000
                --- a/node_modules/prismjs/tests/languages/haml/code_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -~ 42
                -- 42
                -= 42
                -&= 42
                -!= 42
                -
                -----------------------------------------------------
                -
                -[
                -	["punctuation", "~"], ["code", [["number", "42"]]],
                -	["punctuation", "-"], ["code", [["number", "42"]]],
                -	["punctuation", "="], ["code", [["number", "42"]]],
                -	["punctuation", "&="], ["code", [["number", "42"]]],
                -	["punctuation", "!="], ["code", [["number", "42"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for single-line code.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/haml/doctype_feature.test b/node_modules/prismjs/tests/languages/haml/doctype_feature.test
                deleted file mode 100644
                index 5f5a731..0000000
                --- a/node_modules/prismjs/tests/languages/haml/doctype_feature.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -!!!
                -!!! 5
                -!!! Strict
                -
                -----------------------------------------------------
                -
                -[
                -	["doctype", "!!!"],
                -	["doctype", "!!! 5"],
                -	["doctype", "!!! Strict"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for doctypes.
                diff --git a/node_modules/prismjs/tests/languages/haml/interpolation_feature.test b/node_modules/prismjs/tests/languages/haml/interpolation_feature.test
                deleted file mode 100644
                index ed13c87..0000000
                --- a/node_modules/prismjs/tests/languages/haml/interpolation_feature.test
                +++ /dev/null
                @@ -1,21 +0,0 @@
                -#{ 42 }
                -#{ "foobar" }
                -
                -----------------------------------------------------
                -
                -[
                -	["interpolation", [
                -		["delimiter", "#{"],
                -		["number", "42"],
                -		["delimiter", "}"]
                -	]],
                -	["interpolation", [
                -		["delimiter", "#{"],
                -		["string", ["\"foobar\""]],
                -		["delimiter", "}"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for interpolation in plain text.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/haml/multiline-code_feature.test b/node_modules/prismjs/tests/languages/haml/multiline-code_feature.test
                deleted file mode 100644
                index 06cb2b4..0000000
                --- a/node_modules/prismjs/tests/languages/haml/multiline-code_feature.test
                +++ /dev/null
                @@ -1,58 +0,0 @@
                -	~ 1,
                -	  1,
                -	  1
                -~ 2 |
                -  2 |
                -  2 |
                -
                -- 3,
                -  3,
                -  3
                -	- 4 |
                -	  4 |
                -	  4 |
                -
                -  = 5,
                -    5,
                -    5
                -= 6 |
                -  6 |
                -  6 |
                -
                -&= 7,
                -   7,
                -   7
                -  &= 8 |
                -     8 |
                -     8 |
                -
                -!= 9,
                -   9,
                -   9
                -!= 10 |
                -   10 |
                -   10 |
                -
                -----------------------------------------------------
                -
                -[
                -	["punctuation", "~"], ["multiline-code", [["number", "1"], ["punctuation", ","], ["number", "1"], ["punctuation", ","], ["number", "1"]]],
                -	["punctuation", "~"], ["multiline-code", [["number", "2"], ["operator", "|"], ["number", "2"], ["operator", "|"], ["number", "2"], ["operator", "|"]]],
                -    
                -	["punctuation", "-"], ["multiline-code", [["number", "3"], ["punctuation", ","], ["number", "3"], ["punctuation", ","], ["number", "3"]]],
                -    ["punctuation", "-"], ["multiline-code", [["number", "4"], ["operator", "|"], ["number", "4"], ["operator", "|"], ["number", "4"], ["operator", "|"]]],
                -    
                -    ["punctuation", "="], ["multiline-code", [["number", "5"], ["punctuation", ","], ["number", "5"], ["punctuation", ","], ["number", "5"]]],
                -	["punctuation", "="], ["multiline-code", [["number", "6"], ["operator", "|"], ["number", "6"], ["operator", "|"], ["number", "6"], ["operator", "|"]]],
                -	
                -	["punctuation", "&="], ["multiline-code", [["number", "7"], ["punctuation", ","], ["number", "7"], ["punctuation", ","], ["number", "7"]]],
                -	["punctuation", "&="], ["multiline-code", [["number", "8"], ["operator", "|"], ["number", "8"], ["operator", "|"], ["number", "8"], ["operator", "|"]]],
                -	
                -	["punctuation", "!="], ["multiline-code", [["number", "9"], ["punctuation", ","], ["number", "9"], ["punctuation", ","], ["number", "9"]]],
                -	["punctuation", "!="], ["multiline-code", [["number", "10"], ["operator", "|"], ["number", "10"], ["operator", "|"], ["number", "10"], ["operator", "|"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for inline code, with all possible prefixes, some not indented, some
                -indented with two spaces, some indented with one tab.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/haml/multiline-comment_feature.test b/node_modules/prismjs/tests/languages/haml/multiline-comment_feature.test
                deleted file mode 100644
                index 809aaff..0000000
                --- a/node_modules/prismjs/tests/languages/haml/multiline-comment_feature.test
                +++ /dev/null
                @@ -1,46 +0,0 @@
                -/
                -
                -/ foo
                -
                -/foo
                - bar
                -
                -  /foo
                -   bar
                -
                -	/foo
                -	 bar
                -
                --#
                -
                --# foo
                -
                --#foo
                - bar
                -
                -  -#foo
                -   bar
                -
                -	-#foo
                -	 bar
                -
                -----------------------------------------------------
                -
                -[
                -	["multiline-comment", "/"],
                -	["multiline-comment", "/ foo"],
                -	["multiline-comment", "/foo\r\n bar"],
                -	["multiline-comment", "/foo\r\n   bar"],
                -	["multiline-comment", "/foo\r\n\t bar"],
                -
                -	["multiline-comment", "-#"],
                -    ["multiline-comment", "-# foo"],
                -    ["multiline-comment", "-#foo\r\n bar"],
                -    ["multiline-comment", "-#foo\r\n   bar"],
                -    ["multiline-comment", "-#foo\r\n\t bar"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for multi-line comments, not indented, indented with two spaces and
                -indented with one tab.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/haml/tag_feature.test b/node_modules/prismjs/tests/languages/haml/tag_feature.test
                deleted file mode 100644
                index e5927d0..0000000
                --- a/node_modules/prismjs/tests/languages/haml/tag_feature.test
                +++ /dev/null
                @@ -1,161 +0,0 @@
                -%one
                -	%two
                -
                -%div#things
                -%div.articles
                -%div.article.title
                -
                -%script{:type => "text/javascript",
                -        :src  => "javascripts/script_#{42}"}
                -
                -%div{:id => [@item.type, @item.number]}
                -
                -%a(title=@title href=href)
                -%input(selected)
                -
                -%html{html_attrs('fr-fr')}
                -
                -%div[@user, :greeting]
                -	%bar[290]/
                -
                -%div#Article.article.entry{:id => @article.number}
                -
                -#collection
                -	.item
                -
                -%br/
                -%blockquote<
                -%img>
                -
                -----------------------------------------------------
                -
                -[
                -	["tag", ["%one"]],
                -	["tag", ["%two"]],
                -
                -	["tag", ["%div#things"]],
                -	["tag", ["%div.articles"]],
                -	["tag", ["%div.article.title"]],
                -
                -	["tag", [
                -		"%script",
                -		["attributes", [
                -			["punctuation", "{"],
                -			["symbol", ":type"],
                -			["operator", "="], ["operator", ">"],
                -			["string", ["\"text/javascript\""]],
                -			["punctuation", ","],
                -			["symbol", ":src"],
                -			["operator", "="], ["operator", ">"],
                -			["string", [
                -				"\"javascripts/script_",
                -				["interpolation", [
                -					["delimiter", "#{"],
                -					["number", "42"],
                -					["delimiter", "}"]
                -				]],
                -				"\""
                -			]],
                -			["punctuation", "}"]
                -		]]
                -	]],
                -
                -	["tag", [
                -		"%div",
                -		["attributes", [
                -			["punctuation", "{"],
                -			["symbol", ":id"],
                -			["operator", "="], ["operator", ">"],
                -			["punctuation", "["],
                -			["variable", "@item"],
                -			["punctuation", "."],
                -			"type",
                -			["punctuation", ","],
                -			["variable", "@item"],
                -			["punctuation", "."],
                -			"number",
                -			["punctuation", "]"],
                -			["punctuation", "}"]
                -		]]
                -	]],
                -
                -	["tag", [
                -		"%a",
                -		["attributes", [
                -			["punctuation", "("],
                -			["attr-name", "title"],
                -			["punctuation", "="],
                -			["attr-value", "@title"],
                -			["attr-name", "href"],
                -			["punctuation", "="],
                -            ["attr-value", "href"],
                -            ["punctuation", ")"]
                -		]]
                -	]],
                -	["tag", [
                -		"%input",
                -		["attributes", [
                -			["punctuation", "("],
                -			["attr-name", "selected"],
                -			["punctuation", ")"]
                -		]]
                -	]],
                -
                -	["tag", [
                -		"%html",
                -		["attributes", [
                -			["punctuation", "{"],
                -			["function", "html_attrs"],
                -			["punctuation", "("],
                -			["string", ["'fr-fr'"]],
                -			["punctuation", ")"],
                -			["punctuation", "}"]
                -		]]
                -	]],
                -
                -	["tag", [
                -		"%div",
                -		["attributes", [
                -			["punctuation", "["],
                -			["variable", "@user"],
                -			["punctuation", ","],
                -			["symbol", ":greeting"],
                -			["punctuation", "]"]
                -		]]
                -	]],
                -	["tag", [
                -		"%bar",
                -		["attributes", [
                -			["punctuation", "["],
                -			["number", "290"],
                -			["punctuation", "]"]
                -		]],
                -		"/"
                -	]],
                -
                -	["tag", [
                -		"%div#Article.article.entry",
                -		["attributes", [
                -			["punctuation", "{"],
                -			["symbol", ":id"],
                -			["operator", "="], ["operator", ">"],
                -			["variable", "@article"],
                -			["punctuation", "."],
                -			"number",
                -			["punctuation", "}"]
                -		]]
                -	]],
                -
                -	["tag", ["#collection"]],
                -	["tag", [".item"]],
                -
                -	["tag", ["%br/"]],
                -	["tag", ["%blockquote", ["punctuation", "<"]]],
                -	["tag", ["%img", ["punctuation", ">"]]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for tags: basic element names, attributes, html-style attributes,
                -attribute methods, boolean attributes, class and id shortcuts,
                -implicit div elements, empty tags and whitespace removal.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/handlebars+jade/handlebars_inclusion.test b/node_modules/prismjs/tests/languages/handlebars+jade/handlebars_inclusion.test
                deleted file mode 100644
                index f95ba77..0000000
                --- a/node_modules/prismjs/tests/languages/handlebars+jade/handlebars_inclusion.test
                +++ /dev/null
                @@ -1,15 +0,0 @@
                -:handlebars
                -	{{!comment}}
                -
                -----------------------------------------------------
                -
                -[
                -	["filter-handlebars", [
                -		["filter-name", ":handlebars"],
                -		["handlebars-comment", "{{!comment}}"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for handlebars filter in Jade.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/handlebars/block_feature.test b/node_modules/prismjs/tests/languages/handlebars/block_feature.test
                deleted file mode 100644
                index dd2c74e..0000000
                --- a/node_modules/prismjs/tests/languages/handlebars/block_feature.test
                +++ /dev/null
                @@ -1,23 +0,0 @@
                -{{#each comments}}{{/each}}
                -{{~#if isActive~}}{{~/if~}}
                -
                -----------------------------------------------------
                -
                -[
                -	["handlebars", [
                -		["delimiter", "{{"], ["block", "#each"], ["variable", "comments"], ["delimiter", "}}"]
                -	]],
                -	["handlebars", [
                -		["delimiter", "{{"], ["block", "/each"], ["delimiter", "}}"]
                -	]],
                -	["handlebars", [
                -		["delimiter", "{{"], ["punctuation", "~"], ["block", "#if"], ["variable", "isActive"], ["punctuation", "~"], ["delimiter", "}}"]
                -	]],
                -	["handlebars", [
                -		["delimiter", "{{"], ["punctuation", "~"], ["block", "/if"], ["punctuation", "~"], ["delimiter", "}}"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for block helpers.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/handlebars/boolean_feature.test b/node_modules/prismjs/tests/languages/handlebars/boolean_feature.test
                deleted file mode 100644
                index 1f252a1..0000000
                --- a/node_modules/prismjs/tests/languages/handlebars/boolean_feature.test
                +++ /dev/null
                @@ -1,17 +0,0 @@
                -{{ true }}
                -{{{ false }}}
                -
                -----------------------------------------------------
                -
                -[
                -	["handlebars", [
                -		["delimiter", "{{"], ["boolean", "true"], ["delimiter", "}}"]
                -	]],
                -	["handlebars", [
                -		["delimiter", "{{{"], ["boolean", "false"], ["delimiter", "}}}"]
                -	]]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for all booleans.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/handlebars/comment_feature.test b/node_modules/prismjs/tests/languages/handlebars/comment_feature.test
                deleted file mode 100644
                index 813f978..0000000
                --- a/node_modules/prismjs/tests/languages/handlebars/comment_feature.test
                +++ /dev/null
                @@ -1,19 +0,0 @@
                -{{! foobar}}
                -{{!-- foo bar baz --}}
                -{{! foo
                -bar }}
                -{{!-- foo
                -bar --}}
                -
                -----------------------------------------------------
                -
                -[
                -	["handlebars-comment", "{{! foobar}}"],
                -	["handlebars-comment", "{{!-- foo bar baz --}}"],
                -	["handlebars-comment", "{{! foo\r\nbar }}"],
                -	["handlebars-comment", "{{!-- foo\r\nbar --}}"]
                -]
                -
                -----------------------------------------------------
                -
                -Checks for comments.
                \ No newline at end of file
                diff --git a/node_modules/prismjs/tests/languages/handlebars/handlebars_in_markup_feature.js b/node_modules/prismjs/tests/languages/handlebars/handlebars_in_markup_feature.js
                deleted file mode 100644
                index 13f51db..0000000
                --- a/node_modules/prismjs/tests/languages/handlebars/handlebars_in_markup_feature.js
                +++ /dev/null
                @@ -1,4 +0,0 @@
                -module.exports = {
                -	'
                {{{intro}}}
                ': '<div>{{{intro}}}</div>', - '
                ': '<div class="{{foo}}">' -}; \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/handlebars/number_feature.test b/node_modules/prismjs/tests/languages/handlebars/number_feature.test deleted file mode 100644 index aa894ec..0000000 --- a/node_modules/prismjs/tests/languages/handlebars/number_feature.test +++ /dev/null @@ -1,29 +0,0 @@ -{{ 0xBadFace }} -{{{ 42 }}} -{{{ 4e2 }}} -{{ 3.5e+1 }} -{{ 0.15e-9 }} - ----------------------------------------------------- - -[ - ["handlebars", [ - ["delimiter", "{{"], ["number", "0xBadFace"], ["delimiter", "}}"] - ]], - ["handlebars", [ - ["delimiter", "{{{"], ["number", "42"], ["delimiter", "}}}"] - ]], - ["handlebars", [ - ["delimiter", "{{{"], ["number", "4e2"], ["delimiter", "}}}"] - ]], - ["handlebars", [ - ["delimiter", "{{"], ["number", "3.5e+1"], ["delimiter", "}}"] - ]], - ["handlebars", [ - ["delimiter", "{{"], ["number", "0.15e-9"], ["delimiter", "}}"] - ]] -] - ----------------------------------------------------- - -Checks for decimal and hexadecimal numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/handlebars/string_feature.test b/node_modules/prismjs/tests/languages/handlebars/string_feature.test deleted file mode 100644 index f9f9d70..0000000 --- a/node_modules/prismjs/tests/languages/handlebars/string_feature.test +++ /dev/null @@ -1,25 +0,0 @@ -{{ "" }} -{{{''}}} -{{{"foobar"}}} -{{ 'foobar' }} - ----------------------------------------------------- - -[ - ["handlebars", [ - ["delimiter", "{{"], ["string", "\"\""], ["delimiter", "}}"] - ]], - ["handlebars", [ - ["delimiter", "{{{"], ["string", "''"], ["delimiter", "}}}"] - ]], - ["handlebars", [ - ["delimiter", "{{{"], ["string", "\"foobar\""], ["delimiter", "}}}"] - ]], - ["handlebars", [ - ["delimiter", "{{"], ["string", "'foobar'"], ["delimiter", "}}"] - ]] -] - ----------------------------------------------------- - -Checks for strings \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/builtin_feature.test b/node_modules/prismjs/tests/languages/haskell/builtin_feature.test deleted file mode 100644 index c50ca40..0000000 --- a/node_modules/prismjs/tests/languages/haskell/builtin_feature.test +++ /dev/null @@ -1,137 +0,0 @@ -abs acos acosh all and -any appendFile approxRational -asTypeOf asin asinh atan -atan2 atanh basicIORun break -catch ceiling chr compare -concat concatMap const -cos cosh curry cycle -decodeFloat denominator -digitToInt div divMod -drop dropWhile either -elem encodeFloat enumFrom -enumFromThen enumFromThenTo -enumFromTo error even exp -exponent fail filter flip -floatDigits floatRadix -floatRange floor fmap -foldl foldl1 foldr foldr1 -fromDouble fromEnum fromInt -fromInteger fromIntegral -fromRational fst gcd -getChar getContents getLine -group head id inRange index -init intToDigit interact -ioError isAlpha isAlphaNum -isAscii isControl isDenormalized -isDigit isHexDigit isIEEE -isInfinite isLower isNaN -isNegativeZero isOctDigit -isPrint isSpace isUpper iterate -last lcm length lex -lexDigits lexLitChar lines -log logBase lookup map -mapM mapM_ max maxBound -maximum maybe min minBound -minimum mod negate not -notElem null numerator odd -or ord otherwise pack pi -pred primExitWith print -product properFraction -putChar putStr putStrLn quot -quotRem range rangeSize read -readDec readFile readFloat readHex -readIO readInt readList -readLitChar readLn readOct -readParen readSigned reads -readsPrec realToFrac recip -rem repeat replicate return -reverse round scaleFloat -scanl scanl1 scanr scanr1 -seq sequence sequence_ show -showChar showInt showList -showLitChar showParen showSigned -showString shows showsPrec -significand signum sin sinh -snd sort span splitAt sqrt -subtract succ sum tail take -takeWhile tan tanh threadToIOResult -toEnum toInt toInteger -toLower toRational toUpper -truncate uncurry undefined -unlines until unwords -unzip unzip3 userError words -writeFile zip zip3 zipWith -zipWith3 - ----------------------------------------------------- - -[ - ["builtin", "abs"], ["builtin", "acos"], ["builtin", "acosh"], ["builtin", "all"], ["builtin", "and"], - ["builtin", "any"], ["builtin", "appendFile"], ["builtin", "approxRational"], - ["builtin", "asTypeOf"], ["builtin", "asin"], ["builtin", "asinh"], ["builtin", "atan"], - ["builtin", "atan2"], ["builtin", "atanh"], ["builtin", "basicIORun"], ["builtin", "break"], - ["builtin", "catch"], ["builtin", "ceiling"], ["builtin", "chr"], ["builtin", "compare"], - ["builtin", "concat"], ["builtin", "concatMap"], ["builtin", "const"], - ["builtin", "cos"], ["builtin", "cosh"], ["builtin", "curry"], ["builtin", "cycle"], - ["builtin", "decodeFloat"], ["builtin", "denominator"], - ["builtin", "digitToInt"], ["builtin", "div"], ["builtin", "divMod"], - ["builtin", "drop"], ["builtin", "dropWhile"], ["builtin", "either"], - ["builtin", "elem"], ["builtin", "encodeFloat"], ["builtin", "enumFrom"], - ["builtin", "enumFromThen"], ["builtin", "enumFromThenTo"], - ["builtin", "enumFromTo"], ["builtin", "error"], ["builtin", "even"], ["builtin", "exp"], - ["builtin", "exponent"], ["builtin", "fail"], ["builtin", "filter"], ["builtin", "flip"], - ["builtin", "floatDigits"], ["builtin", "floatRadix"], - ["builtin", "floatRange"], ["builtin", "floor"], ["builtin", "fmap"], - ["builtin", "foldl"], ["builtin", "foldl1"], ["builtin", "foldr"], ["builtin", "foldr1"], - ["builtin", "fromDouble"], ["builtin", "fromEnum"], ["builtin", "fromInt"], - ["builtin", "fromInteger"], ["builtin", "fromIntegral"], - ["builtin", "fromRational"], ["builtin", "fst"], ["builtin", "gcd"], - ["builtin", "getChar"], ["builtin", "getContents"], ["builtin", "getLine"], - ["builtin", "group"], ["builtin", "head"], ["builtin", "id"], ["builtin", "inRange"], ["builtin", "index"], - ["builtin", "init"], ["builtin", "intToDigit"], ["builtin", "interact"], - ["builtin", "ioError"], ["builtin", "isAlpha"], ["builtin", "isAlphaNum"], - ["builtin", "isAscii"], ["builtin", "isControl"], ["builtin", "isDenormalized"], - ["builtin", "isDigit"], ["builtin", "isHexDigit"], ["builtin", "isIEEE"], - ["builtin", "isInfinite"], ["builtin", "isLower"], ["builtin", "isNaN"], - ["builtin", "isNegativeZero"], ["builtin", "isOctDigit"], - ["builtin", "isPrint"], ["builtin", "isSpace"], ["builtin", "isUpper"], ["builtin", "iterate"], - ["builtin", "last"], ["builtin", "lcm"], ["builtin", "length"], ["builtin", "lex"], - ["builtin", "lexDigits"], ["builtin", "lexLitChar"], ["builtin", "lines"], - ["builtin", "log"], ["builtin", "logBase"], ["builtin", "lookup"], ["builtin", "map"], - ["builtin", "mapM"], ["builtin", "mapM_"], ["builtin", "max"], ["builtin", "maxBound"], - ["builtin", "maximum"], ["builtin", "maybe"], ["builtin", "min"], ["builtin", "minBound"], - ["builtin", "minimum"], ["builtin", "mod"], ["builtin", "negate"], ["builtin", "not"], - ["builtin", "notElem"], ["builtin", "null"], ["builtin", "numerator"], ["builtin", "odd"], - ["builtin", "or"], ["builtin", "ord"], ["builtin", "otherwise"], ["builtin", "pack"], ["builtin", "pi"], - ["builtin", "pred"], ["builtin", "primExitWith"], ["builtin", "print"], - ["builtin", "product"], ["builtin", "properFraction"], - ["builtin", "putChar"], ["builtin", "putStr"], ["builtin", "putStrLn"], ["builtin", "quot"], - ["builtin", "quotRem"], ["builtin", "range"], ["builtin", "rangeSize"], ["builtin", "read"], - ["builtin", "readDec"], ["builtin", "readFile"], ["builtin", "readFloat"], ["builtin", "readHex"], - ["builtin", "readIO"], ["builtin", "readInt"], ["builtin", "readList"], - ["builtin", "readLitChar"], ["builtin", "readLn"], ["builtin", "readOct"], - ["builtin", "readParen"], ["builtin", "readSigned"], ["builtin", "reads"], - ["builtin", "readsPrec"], ["builtin", "realToFrac"], ["builtin", "recip"], - ["builtin", "rem"], ["builtin", "repeat"], ["builtin", "replicate"], ["builtin", "return"], - ["builtin", "reverse"], ["builtin", "round"], ["builtin", "scaleFloat"], - ["builtin", "scanl"], ["builtin", "scanl1"], ["builtin", "scanr"], ["builtin", "scanr1"], - ["builtin", "seq"], ["builtin", "sequence"], ["builtin", "sequence_"], ["builtin", "show"], - ["builtin", "showChar"], ["builtin", "showInt"], ["builtin", "showList"], - ["builtin", "showLitChar"], ["builtin", "showParen"], ["builtin", "showSigned"], - ["builtin", "showString"], ["builtin", "shows"], ["builtin", "showsPrec"], - ["builtin", "significand"], ["builtin", "signum"], ["builtin", "sin"], ["builtin", "sinh"], - ["builtin", "snd"], ["builtin", "sort"], ["builtin", "span"], ["builtin", "splitAt"], ["builtin", "sqrt"], - ["builtin", "subtract"], ["builtin", "succ"], ["builtin", "sum"], ["builtin", "tail"], ["builtin", "take"], - ["builtin", "takeWhile"], ["builtin", "tan"], ["builtin", "tanh"], ["builtin", "threadToIOResult"], - ["builtin", "toEnum"], ["builtin", "toInt"], ["builtin", "toInteger"], - ["builtin", "toLower"], ["builtin", "toRational"], ["builtin", "toUpper"], - ["builtin", "truncate"], ["builtin", "uncurry"], ["builtin", "undefined"], - ["builtin", "unlines"], ["builtin", "until"], ["builtin", "unwords"], - ["builtin", "unzip"], ["builtin", "unzip3"], ["builtin", "userError"], ["builtin", "words"], - ["builtin", "writeFile"], ["builtin", "zip"], ["builtin", "zip3"], ["builtin", "zipWith"], - ["builtin", "zipWith3"] -] - ----------------------------------------------------- - -Checks for all builtin. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/char_feature.test b/node_modules/prismjs/tests/languages/haskell/char_feature.test deleted file mode 100644 index e4dedc4..0000000 --- a/node_modules/prismjs/tests/languages/haskell/char_feature.test +++ /dev/null @@ -1,17 +0,0 @@ -'a' -'\n' -'\23' -'\xFE' - ----------------------------------------------------- - -[ - ["char", "'a'"], - ["char", "'\\n'"], - ["char", "'\\23'"], - ["char", "'\\xFE'"] -] - ----------------------------------------------------- - -Checks for chars. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/comment_feature.test b/node_modules/prismjs/tests/languages/haskell/comment_feature.test deleted file mode 100644 index d8c8cdd..0000000 --- a/node_modules/prismjs/tests/languages/haskell/comment_feature.test +++ /dev/null @@ -1,14 +0,0 @@ --- foo -{- foo -bar -} - ----------------------------------------------------- - -[ - ["comment", "-- foo"], - ["comment", "{- foo\r\nbar -}"] -] - ----------------------------------------------------- - -Checks for single-line and multi-line comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/constant_feature.test b/node_modules/prismjs/tests/languages/haskell/constant_feature.test deleted file mode 100644 index 06f25f1..0000000 --- a/node_modules/prismjs/tests/languages/haskell/constant_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -Foo -Foo.Bar -Baz.Foobar_42 - ----------------------------------------------------- - -[ - ["constant", "Foo"], - ["constant", "Foo.Bar"], - ["constant", "Baz.Foobar_42"] -] - ----------------------------------------------------- - -Checks for constants. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/hvariable_feature.test b/node_modules/prismjs/tests/languages/haskell/hvariable_feature.test deleted file mode 100644 index defa3ba..0000000 --- a/node_modules/prismjs/tests/languages/haskell/hvariable_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -foo -Foo.bar -Baz.foobar_42 - ----------------------------------------------------- - -[ - ["hvariable", "foo"], - ["hvariable", "Foo.bar"], - ["hvariable", "Baz.foobar_42"] -] - ----------------------------------------------------- - -Checks for hvariables. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/import_statement_feature.test b/node_modules/prismjs/tests/languages/haskell/import_statement_feature.test deleted file mode 100644 index 120fbe7..0000000 --- a/node_modules/prismjs/tests/languages/haskell/import_statement_feature.test +++ /dev/null @@ -1,35 +0,0 @@ -import Foo -import qualified Foobar -import Foo_42.Bar as Foobar -import Foo.Bar as Foo.Baz hiding - ----------------------------------------------------- - -[ - ["import_statement", [ - ["keyword", "import"], - " Foo" - ]], - ["import_statement", [ - ["keyword", "import"], - ["keyword", "qualified"], - " Foobar" - ]], - ["import_statement", [ - ["keyword", "import"], - " Foo_42.Bar ", - ["keyword", "as"], - " Foobar" - ]], - ["import_statement", [ - ["keyword", "import"], - " Foo.Bar ", - ["keyword", "as"], - " Foo.Baz ", - ["keyword", "hiding"] - ]] -] - ----------------------------------------------------- - -Checks for import statement. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/keyword_feature.test b/node_modules/prismjs/tests/languages/haskell/keyword_feature.test deleted file mode 100644 index 0fb3657..0000000 --- a/node_modules/prismjs/tests/languages/haskell/keyword_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -case class data deriving -do else if in infixl -infixr instance let -module newtype of -primitive then type where - ----------------------------------------------------- - -[ - ["keyword", "case"], ["keyword", "class"], ["keyword", "data"], ["keyword", "deriving"], - ["keyword", "do"], ["keyword", "else"], ["keyword", "if"], ["keyword", "in"], ["keyword", "infixl"], - ["keyword", "infixr"], ["keyword", "instance"], ["keyword", "let"], - ["keyword", "module"], ["keyword", "newtype"], ["keyword", "of"], - ["keyword", "primitive"], ["keyword", "then"], ["keyword", "type"], ["keyword", "where"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/number_feature.test b/node_modules/prismjs/tests/languages/haskell/number_feature.test deleted file mode 100644 index f45a0f2..0000000 --- a/node_modules/prismjs/tests/languages/haskell/number_feature.test +++ /dev/null @@ -1,23 +0,0 @@ -42 -3.14159 -2E3 -1.2e-4 -0.9e+1 -0o47 -0xBadFace - ----------------------------------------------------- - -[ - ["number", "42"], - ["number", "3.14159"], - ["number", "2E3"], - ["number", "1.2e-4"], - ["number", "0.9e+1"], - ["number", "0o47"], - ["number", "0xBadFace"] -] - ----------------------------------------------------- - -Checks for decimal, octal and hexadecimal numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/operator_feature.test b/node_modules/prismjs/tests/languages/haskell/operator_feature.test deleted file mode 100644 index 9cd8339..0000000 --- a/node_modules/prismjs/tests/languages/haskell/operator_feature.test +++ /dev/null @@ -1,37 +0,0 @@ -.. -reverse . sort -`foo` -`Foo.bar` -+ - * / -^ ^^ ** -&& || -< <= == /= ->= > \ | -++ : !! -\\ <- -> -= :: => ->> >>= >@> -~ ! @ - ----------------------------------------------------- - -[ - ["operator", ".."], - ["builtin", "reverse"], ["operator", " . "], ["builtin", "sort"], - ["operator", "`foo`"], - ["operator", "`Foo.bar`"], - ["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"], - ["operator", "^"], ["operator", "^^"], ["operator", "**"], - ["operator", "&&"], ["operator", "||"], - ["operator", "<"], ["operator", "<="], ["operator", "=="], ["operator", "/="], - ["operator", ">="], ["operator", ">"], ["operator", "\\"], ["operator", "|"], - ["operator", "++"], ["operator", ":"], ["operator", "!!"], - ["operator", "\\\\"], ["operator", "<-"], ["operator", "->"], - ["operator", "="], ["operator", "::"], ["operator", "=>"], - ["operator", ">>"], ["operator", ">>="], ["operator", ">@>"], - ["operator", "~"], ["operator", "!"], ["operator", "@"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haskell/string_feature.test b/node_modules/prismjs/tests/languages/haskell/string_feature.test deleted file mode 100644 index 49c2cfb..0000000 --- a/node_modules/prismjs/tests/languages/haskell/string_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -"" -"fo\"o" -"foo \ - \ bar" -"foo -- comment \ - \ bar" - ----------------------------------------------------- - -[ - ["string", "\"\""], - ["string", "\"fo\\\"o\""], - ["string", "\"foo \\\r\n \\ bar\""], - ["string", "\"foo -- comment \\\r\n \\ bar\""] -] - ----------------------------------------------------- - -Checks for strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/keyword_feature.test b/node_modules/prismjs/tests/languages/haxe/keyword_feature.test deleted file mode 100644 index 6a26bd0..0000000 --- a/node_modules/prismjs/tests/languages/haxe/keyword_feature.test +++ /dev/null @@ -1,93 +0,0 @@ -this -abstract -as -break -case -cast -catch -class -continue -default -do -dynamic -else -enum -extends -extern -from -for -function -if -implements -import -in -inline -interface -macro -new -null -override -public -private -return -static -super -switch -throw -to -try -typedef -using -var -while - ----------------------------------------------------- - -[ - ["keyword", "this"], - ["keyword", "abstract"], - ["keyword", "as"], - ["keyword", "break"], - ["keyword", "case"], - ["keyword", "cast"], - ["keyword", "catch"], - ["keyword", "class"], - ["keyword", "continue"], - ["keyword", "default"], - ["keyword", "do"], - ["keyword", "dynamic"], - ["keyword", "else"], - ["keyword", "enum"], - ["keyword", "extends"], - ["keyword", "extern"], - ["keyword", "from"], - ["keyword", "for"], - ["keyword", "function"], - ["keyword", "if"], - ["keyword", "implements"], - ["keyword", "import"], - ["keyword", "in"], - ["keyword", "inline"], - ["keyword", "interface"], - ["keyword", "macro"], - ["keyword", "new"], - ["keyword", "null"], - ["keyword", "override"], - ["keyword", "public"], - ["keyword", "private"], - ["keyword", "return"], - ["keyword", "static"], - ["keyword", "super"], - ["keyword", "switch"], - ["keyword", "throw"], - ["keyword", "to"], - ["keyword", "try"], - ["keyword", "typedef"], - ["keyword", "using"], - ["keyword", "var"], - ["keyword", "while"] -] - ----------------------------------------------------- - -Checks for keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/metadata_feature.test b/node_modules/prismjs/tests/languages/haxe/metadata_feature.test deleted file mode 100644 index 312114d..0000000 --- a/node_modules/prismjs/tests/languages/haxe/metadata_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -@author("Nicolas") -@debug -@:noCompletion - ----------------------------------------------------- - -[ - ["metadata", "@author"], ["punctuation", "("], ["string", ["\"Nicolas\""]], ["punctuation", ")"], - ["metadata", "@debug"], - ["metadata", "@:noCompletion"] -] - ----------------------------------------------------- - -Checks for metadata. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/operator_feature.test b/node_modules/prismjs/tests/languages/haxe/operator_feature.test deleted file mode 100644 index 6963f80..0000000 --- a/node_modules/prismjs/tests/languages/haxe/operator_feature.test +++ /dev/null @@ -1,29 +0,0 @@ -... -+ ++ -- -- -> -= == -! != -& && -| || -< <= << -> >= >> -* / % ~ ^ - ----------------------------------------------------- - -[ - ["operator", "..."], - ["operator", "+"], ["operator", "++"], - ["operator", "-"], ["operator", "--"], ["operator", "->"], - ["operator", "="], ["operator", "=="], - ["operator", "!"], ["operator", "!="], - ["operator", "&"], ["operator", "&&"], - ["operator", "|"], ["operator", "||"], - ["operator", "<"], ["operator", "<="], ["operator", "<<"], - ["operator", ">"], ["operator", ">="], ["operator", ">>"], - ["operator", "*"], ["operator", "/"], ["operator", "%"], ["operator", "~"], ["operator", "^"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/preprocessor_feature.test b/node_modules/prismjs/tests/languages/haxe/preprocessor_feature.test deleted file mode 100644 index 3cadacf..0000000 --- a/node_modules/prismjs/tests/languages/haxe/preprocessor_feature.test +++ /dev/null @@ -1,17 +0,0 @@ -#if -#elseif -#else -#end - ----------------------------------------------------- - -[ - ["preprocessor", "#if"], - ["preprocessor", "#elseif"], - ["preprocessor", "#else"], - ["preprocessor", "#end"] -] - ----------------------------------------------------- - -Checks for preprocessor directives. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/regex_feature.test b/node_modules/prismjs/tests/languages/haxe/regex_feature.test deleted file mode 100644 index 577cab7..0000000 --- a/node_modules/prismjs/tests/languages/haxe/regex_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -~/ha\/xe/i -~/[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z][A-Z][A-Z]?/i -~/(dog|fox)/igmsu - ----------------------------------------------------- - -[ - ["regex", "~/ha\\/xe/i"], - ["regex", "~/[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z][A-Z][A-Z]?/i"], - ["regex", "~/(dog|fox)/igmsu"] -] - ----------------------------------------------------- - -Checks for regexes. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/reification_feature.test b/node_modules/prismjs/tests/languages/haxe/reification_feature.test deleted file mode 100644 index 6d382b7..0000000 --- a/node_modules/prismjs/tests/languages/haxe/reification_feature.test +++ /dev/null @@ -1,16 +0,0 @@ -$e -${4+2} - ----------------------------------------------------- - -[ - ["reification", "$e"], - ["reification", "$"], - ["punctuation", "{"], - ["number", "4"], ["operator", "+"], ["number", "2"], - ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for reification. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/haxe/string_feature.test b/node_modules/prismjs/tests/languages/haxe/string_feature.test deleted file mode 100644 index 61f1985..0000000 --- a/node_modules/prismjs/tests/languages/haxe/string_feature.test +++ /dev/null @@ -1,37 +0,0 @@ -"" -"Foo -\"bar\" -baz" -"$bar ${4+2}" -'' -'Foo -\'bar\' -baz' - ----------------------------------------------------- - -[ - ["string", ["\"\""]], - ["string", ["\"Foo\r\n\\\"bar\\\"\r\nbaz\""]], - ["string", [ - "\"", - ["interpolation", [ - ["interpolation", "$bar"] - ]], - ["interpolation", [ - ["interpolation", "$"], - ["punctuation", "{"], - ["number", "4"], - ["operator", "+"], - ["number", "2"], - ["punctuation", "}"] - ]], - "\"" - ]], - ["string", ["''"]], - ["string", ["'Foo\r\n\\'bar\\'\r\nbaz'"]] -] - ----------------------------------------------------- - -Checks for strings and string interpolation. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/http/header-name_feature.test b/node_modules/prismjs/tests/languages/http/header-name_feature.test deleted file mode 100644 index cd2612f..0000000 --- a/node_modules/prismjs/tests/languages/http/header-name_feature.test +++ /dev/null @@ -1,24 +0,0 @@ -Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 -Accept-Encoding: gzip, deflate -Server: GitHub.com -Date: Mon, 22 Dec 2014 18:25:30 GMT -Content-Type: text/html; charset=utf-8 - ----------------------------------------------------- - -[ - ["header-name", "Accept-Language:"], - " fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\r\n", - ["header-name", "Accept-Encoding:"], - " gzip, deflate\r\n", - ["header-name", "Server:"], - " GitHub.com\r\n", - ["header-name", "Date:"], - " Mon, 22 Dec 2014 18:25:30 GMT\r\n", - ["header-name", "Content-Type:"], - " text/html; charset=utf-8" -] - ----------------------------------------------------- - -Checks for header names. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/http/request-line_feature.test b/node_modules/prismjs/tests/languages/http/request-line_feature.test deleted file mode 100644 index e234374..0000000 --- a/node_modules/prismjs/tests/languages/http/request-line_feature.test +++ /dev/null @@ -1,51 +0,0 @@ -POST http://example.com HTTP/1.0 -GET http://localhost:9999/foo.html HTTP/1.1 -PUT http://www.example.com HTTP/2.0 -DELETE https://example.com HTTP/1.1 -OPTIONS https://www.example.com HTTP/1.1 -PATCH http://example.com HTTP/1.0 -TRACE http://example.com HTTP/1.0 -CONNECT http://example.com HTTP/1.0 - ----------------------------------------------------- - -[ - ["request-line", [ - ["property", "POST"], - " http://example.com HTTP/1.0" - ]], - ["request-line", [ - ["property", "GET"], - " http://localhost", - ["attr-name", ":9999"], - "/foo.html HTTP/1.1" - ]], - ["request-line", [ - ["property", "PUT"], - " http://www.example.com HTTP/2.0" - ]], - ["request-line", [ - ["property", "DELETE"], - " https://example.com HTTP/1.1" - ]], - ["request-line", [ - ["property", "OPTIONS"], - " https://www.example.com HTTP/1.1" - ]], - ["request-line", [ - ["property", "PATCH"], - " http://example.com HTTP/1.0" - ]], - ["request-line", [ - ["property", "TRACE"], - " http://example.com HTTP/1.0" - ]], - ["request-line", [ - ["property", "CONNECT"], - " http://example.com HTTP/1.0" - ]] -] - ----------------------------------------------------- - -Checks for request lines. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/http/response-status_feature.test b/node_modules/prismjs/tests/languages/http/response-status_feature.test deleted file mode 100644 index 7384ff2..0000000 --- a/node_modules/prismjs/tests/languages/http/response-status_feature.test +++ /dev/null @@ -1,29 +0,0 @@ -HTTP/1.0 200 OK -HTTP/1.1 403 Forbidden -HTTP/1.1 404 Not Found -HTTP/1.0 418 I'm a teapot - ----------------------------------------------------- - -[ - ["response-status", [ - "HTTP/1.0 ", - ["property", "200 OK"] - ]], - ["response-status", [ - "HTTP/1.1 ", - ["property", "403 Forbidden"] - ]], - ["response-status", [ - "HTTP/1.1 ", - ["property", "404 Not Found"] - ]], - ["response-status", [ - "HTTP/1.0 ", - ["property", "418 I'm a teapot"] - ]] -] - ----------------------------------------------------- - -Checks for response statuses. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/builtin-keyword_feature.test b/node_modules/prismjs/tests/languages/icon/builtin-keyword_feature.test deleted file mode 100644 index 1d25764..0000000 --- a/node_modules/prismjs/tests/languages/icon/builtin-keyword_feature.test +++ /dev/null @@ -1,91 +0,0 @@ -&allocated -&ascii -&clock -&collections -&cset -¤t -&date -&dateline -&digits -&dump -&e -&error -&errornumber -&errortext -&errorvalue -&errout -&fail -&features -&file -&host -&input -&lcase -&letters -&level -&line -&main -&null -&output -&phi -&pi -&pos -&progname -&random -®ions -&source -&storage -&subject -&time -&trace -&ucase -&version - ----------------------------------------------------- - -[ - ["builtin-keyword", "&allocated"], - ["builtin-keyword", "&ascii"], - ["builtin-keyword", "&clock"], - ["builtin-keyword", "&collections"], - ["builtin-keyword", "&cset"], - ["builtin-keyword", "¤t"], - ["builtin-keyword", "&date"], - ["builtin-keyword", "&dateline"], - ["builtin-keyword", "&digits"], - ["builtin-keyword", "&dump"], - ["builtin-keyword", "&e"], - ["builtin-keyword", "&error"], - ["builtin-keyword", "&errornumber"], - ["builtin-keyword", "&errortext"], - ["builtin-keyword", "&errorvalue"], - ["builtin-keyword", "&errout"], - ["builtin-keyword", "&fail"], - ["builtin-keyword", "&features"], - ["builtin-keyword", "&file"], - ["builtin-keyword", "&host"], - ["builtin-keyword", "&input"], - ["builtin-keyword", "&lcase"], - ["builtin-keyword", "&letters"], - ["builtin-keyword", "&level"], - ["builtin-keyword", "&line"], - ["builtin-keyword", "&main"], - ["builtin-keyword", "&null"], - ["builtin-keyword", "&output"], - ["builtin-keyword", "&phi"], - ["builtin-keyword", "&pi"], - ["builtin-keyword", "&pos"], - ["builtin-keyword", "&progname"], - ["builtin-keyword", "&random"], - ["builtin-keyword", "®ions"], - ["builtin-keyword", "&source"], - ["builtin-keyword", "&storage"], - ["builtin-keyword", "&subject"], - ["builtin-keyword", "&time"], - ["builtin-keyword", "&trace"], - ["builtin-keyword", "&ucase"], - ["builtin-keyword", "&version"] -] - ----------------------------------------------------- - -Checks for builtin keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/comment_feature.test b/node_modules/prismjs/tests/languages/icon/comment_feature.test deleted file mode 100644 index 09493ab..0000000 --- a/node_modules/prismjs/tests/languages/icon/comment_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -# -# Foobar - ----------------------------------------------------- - -[ - ["comment", "#"], - ["comment", "# Foobar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/directive_feature.test b/node_modules/prismjs/tests/languages/icon/directive_feature.test deleted file mode 100644 index ede5ebc..0000000 --- a/node_modules/prismjs/tests/languages/icon/directive_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -$include -$line -$define -$undef -$ifdef -$ifndef - ----------------------------------------------------- - -[ - ["directive", "$include"], - ["directive", "$line"], - ["directive", "$define"], - ["directive", "$undef"], - ["directive", "$ifdef"], - ["directive", "$ifndef"] -] - ----------------------------------------------------- - -Checks for preprocessor directives. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/function_feature.test b/node_modules/prismjs/tests/languages/icon/function_feature.test deleted file mode 100644 index 715452f..0000000 --- a/node_modules/prismjs/tests/languages/icon/function_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -foo() -Foobar_42{} -Foo_Bar ! [] - ----------------------------------------------------- - -[ - ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], - ["function", "Foobar_42"], ["punctuation", "{"], ["punctuation", "}"], - ["function", "Foo_Bar"], ["operator", "!"], ["punctuation", "["], ["punctuation", "]"] -] - ----------------------------------------------------- - -Checks for functions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/keyword_feature.test b/node_modules/prismjs/tests/languages/icon/keyword_feature.test deleted file mode 100644 index 0816911..0000000 --- a/node_modules/prismjs/tests/languages/icon/keyword_feature.test +++ /dev/null @@ -1,67 +0,0 @@ -break -by -case -create -default -do -else -end -every -fail -global -if -initial -invocable -link -local -next -not -of -procedure -record -repeat -return -static -suspend -then -to -until -while - ----------------------------------------------------- - -[ - ["keyword", "break"], - ["keyword", "by"], - ["keyword", "case"], - ["keyword", "create"], - ["keyword", "default"], - ["keyword", "do"], - ["keyword", "else"], - ["keyword", "end"], - ["keyword", "every"], - ["keyword", "fail"], - ["keyword", "global"], - ["keyword", "if"], - ["keyword", "initial"], - ["keyword", "invocable"], - ["keyword", "link"], - ["keyword", "local"], - ["keyword", "next"], - ["keyword", "not"], - ["keyword", "of"], - ["keyword", "procedure"], - ["keyword", "record"], - ["keyword", "repeat"], - ["keyword", "return"], - ["keyword", "static"], - ["keyword", "suspend"], - ["keyword", "then"], - ["keyword", "to"], - ["keyword", "until"], - ["keyword", "while"] -] - ----------------------------------------------------- - -Checks for keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/number_feature.test b/node_modules/prismjs/tests/languages/icon/number_feature.test deleted file mode 100644 index fc8efc8..0000000 --- a/node_modules/prismjs/tests/languages/icon/number_feature.test +++ /dev/null @@ -1,33 +0,0 @@ -0 -.42 -42 -3.14159 -2e8 -3.2E-7 -47E+19 - -2r11 -8R751 -16rbadface -36razerty - ----------------------------------------------------- - -[ - ["number", "0"], - ["number", ".42"], - ["number", "42"], - ["number", "3.14159"], - ["number", "2e8"], - ["number", "3.2E-7"], - ["number", "47E+19"], - - ["number", "2r11"], - ["number", "8R751"], - ["number", "16rbadface"], - ["number", "36razerty"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/operator_feature.test b/node_modules/prismjs/tests/languages/icon/operator_feature.test deleted file mode 100644 index a2e29ff..0000000 --- a/node_modules/prismjs/tests/languages/icon/operator_feature.test +++ /dev/null @@ -1,69 +0,0 @@ -! -% %:= -& &:= -* *:= ** **:= -+ ++ +:= ++:= -- -:= -- --:= -. -/ /:= -:= :=: -< <- <-> <:= -<< <<:= -<<= <<=:= -<= <=:= -= =:= -== ==:= -=== ===:= -> >:= ->= >=:= ->> >>:= ->>= >>=:= -? ?:= -@ @:= -\ -^ ^:= -| || ||:= -||| |||:= -~ ~= ~=:= -~== ~==:= -~=== ~===:= -: +: -: - ----------------------------------------------------- - -[ - ["operator", "!"], - ["operator", "%"], ["operator", "%:="], - ["operator", "&"], ["operator", "&:="], - ["operator", "*"], ["operator", "*:="], ["operator", "**"], ["operator", "**:="], - ["operator", "+"], ["operator", "++"], ["operator", "+:="], ["operator", "++:="], - ["operator", "-"], ["operator", "-:="], ["operator", "--"], ["operator", "--:="], - ["operator", "."], - ["operator", "/"], ["operator", "/:="], - ["operator", ":="], ["operator", ":=:"], - ["operator", "<"], ["operator", "<-"], ["operator", "<->"], ["operator", "<:="], - ["operator", "<<"], ["operator", "<<:="], - ["operator", "<<="], ["operator", "<<=:="], - ["operator", "<="], ["operator", "<=:="], - ["operator", "="], ["operator", "=:="], - ["operator", "=="], ["operator", "==:="], - ["operator", "==="], ["operator", "===:="], - ["operator", ">"], ["operator", ">:="], - ["operator", ">="], ["operator", ">=:="], - ["operator", ">>"], ["operator", ">>:="], - ["operator", ">>="], ["operator", ">>=:="], - ["operator", "?"], ["operator", "?:="], - ["operator", "@"], ["operator", "@:="], - ["operator", "\\"], - ["operator", "^"], ["operator", "^:="], - ["operator", "|"], ["operator", "||"], ["operator", "||:="], - ["operator", "|||"], ["operator", "|||:="], - ["operator", "~"], ["operator", "~="], ["operator", "~=:="], - ["operator", "~=="], ["operator", "~==:="], - ["operator", "~==="], ["operator", "~===:="], - ["operator", ":"], ["operator", "+:"], ["operator", "-:"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/icon/string_feature.test b/node_modules/prismjs/tests/languages/icon/string_feature.test deleted file mode 100644 index 78bc034..0000000 --- a/node_modules/prismjs/tests/languages/icon/string_feature.test +++ /dev/null @@ -1,22 +0,0 @@ -"" -"Fo\"obar" -"Foo_ -bar_ -baz" - -'' -'a\'zerty' - ----------------------------------------------------- - -[ - ["string", "\"\""], - ["string", "\"Fo\\\"obar\""], - ["string", "\"Foo_\r\nbar_\r\nbaz\""], - ["string", "''"], - ["string", "'a\\'zerty'"] -] - ----------------------------------------------------- - -Checks for strings and csets. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/comment_feature.test b/node_modules/prismjs/tests/languages/inform7/comment_feature.test deleted file mode 100644 index f0aedfe..0000000 --- a/node_modules/prismjs/tests/languages/inform7/comment_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -[Foobar] -[Foo -bar -baz] - ----------------------------------------------------- - -[ - ["comment", "[Foobar]"], - ["comment", "[Foo\r\nbar\r\nbaz]"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/keyword_feature.test b/node_modules/prismjs/tests/languages/inform7/keyword_feature.test deleted file mode 100644 index b2497b4..0000000 --- a/node_modules/prismjs/tests/languages/inform7/keyword_feature.test +++ /dev/null @@ -1,85 +0,0 @@ -after -before -carry out -check -continue the action -definition : -do nothing -else -end if -end unless -end the story -every turn -if -include -instead -instead of -let -move -no -now -otherwise -repeat -report -resume the story -rule for -running through -say -saying -stop the action -test -try -trying -understand -unless -use -when -while -yes - ----------------------------------------------------- - -[ - ["keyword", "after"], - ["keyword", "before"], - ["keyword", "carry out"], - ["keyword", "check"], - ["keyword", "continue the action"], - ["keyword", "definition"], ["punctuation", ":"], - ["keyword", "do nothing"], - ["keyword", "else"], - ["keyword", "end if"], - ["keyword", "end unless"], - ["keyword", "end the story"], - ["keyword", "every turn"], - ["keyword", "if"], - ["keyword", "include"], - ["keyword", "instead"], - ["keyword", "instead of"], - ["keyword", "let"], - ["keyword", "move"], - ["keyword", "no"], - ["keyword", "now"], - ["keyword", "otherwise"], - ["keyword", "repeat"], - ["keyword", "report"], - ["keyword", "resume the story"], - ["keyword", "rule for"], - ["keyword", "running through"], - ["keyword", "say"], - ["keyword", "saying"], - ["keyword", "stop the action"], - ["keyword", "test"], - ["keyword", "try"], - ["keyword", "trying"], - ["keyword", "understand"], - ["keyword", "unless"], - ["keyword", "use"], - ["keyword", "when"], - ["keyword", "while"], - ["keyword", "yes"] -] - ----------------------------------------------------- - -Checks for keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/number_feature.test b/node_modules/prismjs/tests/languages/inform7/number_feature.test deleted file mode 100644 index cb5ca7f..0000000 --- a/node_modules/prismjs/tests/languages/inform7/number_feature.test +++ /dev/null @@ -1,25 +0,0 @@ -42 -3.14159 -50kg -100m -one two three -four five six -seven eight nine -ten eleven twelve - ----------------------------------------------------- - -[ - ["number", "42"], - ["number", "3.14159"], - ["number", "50kg"], - ["number", "100m"], - ["number", "one"], ["number", "two"], ["number", "three"], - ["number", "four"], ["number", "five"], ["number", "six"], - ["number", "seven"], ["number", "eight"], ["number", "nine"], - ["number", "ten"], ["number", "eleven"], ["number", "twelve"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/position_feature.test b/node_modules/prismjs/tests/languages/inform7/position_feature.test deleted file mode 100644 index a298217..0000000 --- a/node_modules/prismjs/tests/languages/inform7/position_feature.test +++ /dev/null @@ -1,73 +0,0 @@ -above -adjacent to -back side of -below -between -down -east -everywhere -front side -here -in -inside -inside from -north -northeast -northwest -nowhere -on -on top of -other side -outside -outside from -part of -parts of -regionally in -south -southeast -southwest -through -up -west -within - ----------------------------------------------------- - -[ - ["position", "above"], - ["position", "adjacent to"], - ["position", "back side of"], - ["position", "below"], - ["position", "between"], - ["position", "down"], - ["position", "east"], - ["position", "everywhere"], - ["position", "front side"], - ["position", "here"], - ["position", "in"], - ["position", "inside"], - ["position", "inside from"], - ["position", "north"], - ["position", "northeast"], - ["position", "northwest"], - ["position", "nowhere"], - ["position", "on"], - ["position", "on top of"], - ["position", "other side"], - ["position", "outside"], - ["position", "outside from"], - ["position", "part of"], - ["position", "parts of"], - ["position", "regionally in"], - ["position", "south"], - ["position", "southeast"], - ["position", "southwest"], - ["position", "through"], - ["position", "up"], - ["position", "west"], - ["position", "within"] -] - ----------------------------------------------------- - -Checks for positions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/property_feature.test b/node_modules/prismjs/tests/languages/inform7/property_feature.test deleted file mode 100644 index 4954b9e..0000000 --- a/node_modules/prismjs/tests/languages/inform7/property_feature.test +++ /dev/null @@ -1,157 +0,0 @@ -adjacent -carried -closed -concealed -contained -dark -described -edible -empty -enclosed -enterable -even -female -fixed in place -full -handled -held -improper-named -incorporated -inedible -invisible -lighted -lit -lockable -locked -male -marked for listing -mentioned -negative -neuter -non-empty -non-full -non-recurring -odd -opaque -open -openable -plural-named -portable -positive -privately-named -proper-named -provided -publically-named -pushable between rooms -recurring -related -rubbing -scenery -seen -singular-named -supported -swinging -switchable -switched -switched on -switched off -touchable -touched -transparent -unconcealed -undescribed -unlit -unlocked -unmarked for listing -unmentioned -unopenable -untouchable -unvisited -variable -visible -visited -wearable -worn - ----------------------------------------------------- - -[ - ["property", "adjacent"], - ["property", "carried"], - ["property", "closed"], - ["property", "concealed"], - ["property", "contained"], - ["property", "dark"], - ["property", "described"], - ["property", "edible"], - ["property", "empty"], - ["property", "enclosed"], - ["property", "enterable"], - ["property", "even"], - ["property", "female"], - ["property", "fixed in place"], - ["property", "full"], - ["property", "handled"], - ["property", "held"], - ["property", "improper-named"], - ["property", "incorporated"], - ["property", "inedible"], - ["property", "invisible"], - ["property", "lighted"], - ["property", "lit"], - ["property", "lockable"], - ["property", "locked"], - ["property", "male"], - ["property", "marked for listing"], - ["property", "mentioned"], - ["property", "negative"], - ["property", "neuter"], - ["property", "non-empty"], - ["property", "non-full"], - ["property", "non-recurring"], - ["property", "odd"], - ["property", "opaque"], - ["property", "open"], - ["property", "openable"], - ["property", "plural-named"], - ["property", "portable"], - ["property", "positive"], - ["property", "privately-named"], - ["property", "proper-named"], - ["property", "provided"], - ["property", "publically-named"], - ["property", "pushable between rooms"], - ["property", "recurring"], - ["property", "related"], - ["property", "rubbing"], - ["property", "scenery"], - ["property", "seen"], - ["property", "singular-named"], - ["property", "supported"], - ["property", "swinging"], - ["property", "switchable"], - ["property", "switched"], - ["property", "switched on"], - ["property", "switched off"], - ["property", "touchable"], - ["property", "touched"], - ["property", "transparent"], - ["property", "unconcealed"], - ["property", "undescribed"], - ["property", "unlit"], - ["property", "unlocked"], - ["property", "unmarked for listing"], - ["property", "unmentioned"], - ["property", "unopenable"], - ["property", "untouchable"], - ["property", "unvisited"], - ["property", "variable"], - ["property", "visible"], - ["property", "visited"], - ["property", "wearable"], - ["property", "worn"] -] - ----------------------------------------------------- - -Checks for properties. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/string_feature.test b/node_modules/prismjs/tests/languages/inform7/string_feature.test deleted file mode 100644 index 56a880e..0000000 --- a/node_modules/prismjs/tests/languages/inform7/string_feature.test +++ /dev/null @@ -1,49 +0,0 @@ -"" -"foo" -"foo -bar" -"[if the player is in Center Ring]A magician's booth stands in the corner, painted dark blue with glittering gold stars.[otherwise if the magician's booth is closed]A crack of light indicates the way back out to the center ring.[otherwise]The door stands open to the outside.[end if]" - ----------------------------------------------------- - -[ - ["string", ["\"\""]], - ["string", ["\"foo\""]], - ["string", ["\"foo\r\nbar\""]], - ["string", [ - "\"", - ["substitution", [ - ["delimiter", "["], - ["keyword", "if"], ["text", "the"], - ["type", "player"], ["verb", "is"], - ["position", "in"], ["text", "Center Ring"], - ["delimiter", "]"] - ]], - "A magician's booth stands in the corner, painted dark blue with glittering gold stars.", - ["substitution", [ - ["delimiter", "["], - ["keyword", "otherwise"], ["keyword", "if"], - ["text", "the magician's booth"], - ["verb", "is"], - ["property", "closed"], - ["delimiter", "]"] - ]], - "A crack of light indicates the way back out to the center ring.", - ["substitution", [ - ["delimiter", "["], - ["keyword", "otherwise"], - ["delimiter", "]"] - ]], - "The door stands open to the outside.", - ["substitution", [ - ["delimiter", "["], - ["keyword", "end if"], - ["delimiter", "]"] - ]], - "\"" - ]] -] - ----------------------------------------------------- - -Checks for strings and text substitution. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/title_feature.test b/node_modules/prismjs/tests/languages/inform7/title_feature.test deleted file mode 100644 index ec3cdbf..0000000 --- a/node_modules/prismjs/tests/languages/inform7/title_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -Volume 1 - Foobar -Book 2 - Foobar -Part 3 - Foobar -Chapter 4 - Foobar -Section 5 - Foobar -Table 6 - Foobar - ----------------------------------------------------- - -[ - ["title", "Volume 1 - Foobar"], - ["title", "Book 2 - Foobar"], - ["title", "Part 3 - Foobar"], - ["title", "Chapter 4 - Foobar"], - ["title", "Section 5 - Foobar"], - ["title", "Table 6 - Foobar"] -] - ----------------------------------------------------- - -Checks for titles. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/variable_feature.test b/node_modules/prismjs/tests/languages/inform7/variable_feature.test deleted file mode 100644 index 25c2f74..0000000 --- a/node_modules/prismjs/tests/languages/inform7/variable_feature.test +++ /dev/null @@ -1,141 +0,0 @@ -action -actions -activity -activities -actor -actors -animal -animals -backdrop -backdrops -container -containers -device -devices -direction -directions -door -doors -holder -holders -kind -kinds -list -lists -man -men -nobody -nothing -noun -nouns -number -numbers -object -objects -people -person -persons -player -player's holdall -region -regions -relation -relations -room -rooms -rule -rules -rulebook -rulebooks -scene -scenes -someone -something -supporter -supporters -table -tables -text -texts -thing -things -time -vehicle -vehicles -woman -women - ----------------------------------------------------- - -[ - ["type", "action"], - ["type", "actions"], - ["type", "activity"], - ["type", "activities"], - ["type", "actor"], - ["type", "actors"], - ["type", "animal"], - ["type", "animals"], - ["type", "backdrop"], - ["type", "backdrops"], - ["type", "container"], - ["type", "containers"], - ["type", "device"], - ["type", "devices"], - ["type", "direction"], - ["type", "directions"], - ["type", "door"], - ["type", "doors"], - ["type", "holder"], - ["type", "holders"], - ["type", "kind"], - ["type", "kinds"], - ["type", "list"], - ["type", "lists"], - ["type", "man"], - ["type", "men"], - ["type", "nobody"], - ["type", "nothing"], - ["type", "noun"], - ["type", "nouns"], - ["type", "number"], - ["type", "numbers"], - ["type", "object"], - ["type", "objects"], - ["type", "people"], - ["type", "person"], - ["type", "persons"], - ["type", "player"], - ["type", "player's holdall"], - ["type", "region"], - ["type", "regions"], - ["type", "relation"], - ["type", "relations"], - ["type", "room"], - ["type", "rooms"], - ["type", "rule"], - ["type", "rules"], - ["type", "rulebook"], - ["type", "rulebooks"], - ["type", "scene"], - ["type", "scenes"], - ["type", "someone"], - ["type", "something"], - ["type", "supporter"], - ["type", "supporters"], - ["type", "table"], - ["type", "tables"], - ["type", "text"], - ["type", "texts"], - ["type", "thing"], - ["type", "things"], - ["type", "time"], - ["type", "vehicle"], - ["type", "vehicles"], - ["type", "woman"], - ["type", "women"] -] - ----------------------------------------------------- - -Checks for variables. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/inform7/verb_feature.test b/node_modules/prismjs/tests/languages/inform7/verb_feature.test deleted file mode 100644 index 3da285d..0000000 --- a/node_modules/prismjs/tests/languages/inform7/verb_feature.test +++ /dev/null @@ -1,213 +0,0 @@ -applying to -are -attacking -answering -asking -be -being -burning -buying -called -carries -carry -carrying -climbing -closing -conceal -conceals -concealing -consulting -contain -contains -containing -cutting -drinking -dropping -eating -enclose -encloses -enclosing -entering -examining -exiting -getting -giving -going -have -has -having -hold -holds -holding -imply -implies -incorporate -incorporates -incorporating -inserting -is -jumping -kissing -listening -locking -looking -mean -means -meaning -opening -provide -provides -providing -pulling -pushing -putting -relate -relates -relating -removing -searching -see -sees -seeing -setting -showing -singing -sleeping -smelling -squeezing -switching -support -supports -supporting -swearing -taking -tasting -telling -thinking -throwing -touching -turning -tying -unlock -unlocks -unlocking -vary -varies -varying -waiting -waking -waving -wear -wears -wearing - ----------------------------------------------------- - -[ - ["verb", "applying to"], - ["verb", "are"], - ["verb", "attacking"], - ["verb", "answering"], - ["verb", "asking"], - ["verb", "be"], - ["verb", "being"], - ["verb", "burning"], - ["verb", "buying"], - ["verb", "called"], - ["verb", "carries"], - ["verb", "carry"], - ["verb", "carrying"], - ["verb", "climbing"], - ["verb", "closing"], - ["verb", "conceal"], - ["verb", "conceals"], - ["verb", "concealing"], - ["verb", "consulting"], - ["verb", "contain"], - ["verb", "contains"], - ["verb", "containing"], - ["verb", "cutting"], - ["verb", "drinking"], - ["verb", "dropping"], - ["verb", "eating"], - ["verb", "enclose"], - ["verb", "encloses"], - ["verb", "enclosing"], - ["verb", "entering"], - ["verb", "examining"], - ["verb", "exiting"], - ["verb", "getting"], - ["verb", "giving"], - ["verb", "going"], - ["verb", "have"], - ["verb", "has"], - ["verb", "having"], - ["verb", "hold"], - ["verb", "holds"], - ["verb", "holding"], - ["verb", "imply"], - ["verb", "implies"], - ["verb", "incorporate"], - ["verb", "incorporates"], - ["verb", "incorporating"], - ["verb", "inserting"], - ["verb", "is"], - ["verb", "jumping"], - ["verb", "kissing"], - ["verb", "listening"], - ["verb", "locking"], - ["verb", "looking"], - ["verb", "mean"], - ["verb", "means"], - ["verb", "meaning"], - ["verb", "opening"], - ["verb", "provide"], - ["verb", "provides"], - ["verb", "providing"], - ["verb", "pulling"], - ["verb", "pushing"], - ["verb", "putting"], - ["verb", "relate"], - ["verb", "relates"], - ["verb", "relating"], - ["verb", "removing"], - ["verb", "searching"], - ["verb", "see"], - ["verb", "sees"], - ["verb", "seeing"], - ["verb", "setting"], - ["verb", "showing"], - ["verb", "singing"], - ["verb", "sleeping"], - ["verb", "smelling"], - ["verb", "squeezing"], - ["verb", "switching"], - ["verb", "support"], - ["verb", "supports"], - ["verb", "supporting"], - ["verb", "swearing"], - ["verb", "taking"], - ["verb", "tasting"], - ["verb", "telling"], - ["verb", "thinking"], - ["verb", "throwing"], - ["verb", "touching"], - ["verb", "turning"], - ["verb", "tying"], - ["verb", "unlock"], - ["verb", "unlocks"], - ["verb", "unlocking"], - ["verb", "vary"], - ["verb", "varies"], - ["verb", "varying"], - ["verb", "waiting"], - ["verb", "waking"], - ["verb", "waving"], - ["verb", "wear"], - ["verb", "wears"], - ["verb", "wearing"] -] - ----------------------------------------------------- - -Checks for verbs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/ini/comment_feature.test b/node_modules/prismjs/tests/languages/ini/comment_feature.test deleted file mode 100644 index 85faefe..0000000 --- a/node_modules/prismjs/tests/languages/ini/comment_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -; -; foobar - ----------------------------------------------------- - -[ - ["comment", ";"], - ["comment", "; foobar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/ini/key_value_feature.test b/node_modules/prismjs/tests/languages/ini/key_value_feature.test deleted file mode 100644 index 5d25d9d..0000000 --- a/node_modules/prismjs/tests/languages/ini/key_value_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -foo=Bar Baz -foobar=42 - ----------------------------------------------------- - -[ - ["constant", "foo"], - ["attr-value", [ - ["punctuation", "="], - "Bar Baz" - ]], - ["constant", "foobar"], - ["attr-value", [ - ["punctuation", "="], - "42" - ]] -] - ----------------------------------------------------- - -Checks for key/value pairs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/ini/selector_feature.test b/node_modules/prismjs/tests/languages/ini/selector_feature.test deleted file mode 100644 index 3158a66..0000000 --- a/node_modules/prismjs/tests/languages/ini/selector_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -[owner] -[foobar] - ----------------------------------------------------- - -[ - ["selector", "[owner]"], - ["selector", "[foobar]"] -] - ----------------------------------------------------- - -Checks for section titles. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/adverb_feature.test b/node_modules/prismjs/tests/languages/j/adverb_feature.test deleted file mode 100644 index 2374d72..0000000 --- a/node_modules/prismjs/tests/languages/j/adverb_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -~ } -/ /. -\ \. -b. f. M. -t. t: - ----------------------------------------------------- - -[ - ["adverb", "~"], ["adverb", "}"], - ["adverb", "/"], ["adverb", "/."], - ["adverb", "\\"], ["adverb", "\\."], - ["adverb", "b."], ["adverb", "f."], ["adverb", "M."], - ["adverb", "t."], ["adverb", "t:"] -] - ----------------------------------------------------- - -Checks for adverbs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/comment_feature.test b/node_modules/prismjs/tests/languages/j/comment_feature.test deleted file mode 100644 index c816bf1..0000000 --- a/node_modules/prismjs/tests/languages/j/comment_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -NB. -NB. Foo bar - ----------------------------------------------------- - -[ - ["comment", "NB."], - ["comment", "NB. Foo bar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/conjunction_feature.test b/node_modules/prismjs/tests/languages/j/conjunction_feature.test deleted file mode 100644 index 0fcc2e8..0000000 --- a/node_modules/prismjs/tests/languages/j/conjunction_feature.test +++ /dev/null @@ -1,41 +0,0 @@ -& &. &.: &: - -. .. .: -: :. :: -@ @. @: - -!. !: -D. D: - -;. d. H. T. - -` `: - -^: L: S: - -" - ----------------------------------------------------- - -[ - ["conjunction", "&"], ["conjunction", "&."], ["conjunction", "&.:"], ["conjunction", "&:"], - - ["conjunction", "."], ["conjunction", ".."], ["conjunction", ".:"], - ["conjunction", ":"], ["conjunction", ":."], ["conjunction", "::"], - ["conjunction", "@"], ["conjunction", "@."], ["conjunction", "@:"], - - ["conjunction", "!."], ["conjunction", "!:"], - ["conjunction", "D."], ["conjunction", "D:"], - - ["conjunction", ";."], ["conjunction", "d."], ["conjunction", "H."], ["conjunction", "T."], - - ["conjunction", "`"], ["conjunction", "`:"], - - ["conjunction", "^:"], ["conjunction", "L:"], ["conjunction", "S:"], - - ["conjunction", "\""] -] - ----------------------------------------------------- - -Checks for conjunctions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/keyword_feature.test b/node_modules/prismjs/tests/languages/j/keyword_feature.test deleted file mode 100644 index 38f982d..0000000 --- a/node_modules/prismjs/tests/languages/j/keyword_feature.test +++ /dev/null @@ -1,77 +0,0 @@ -adverb -conjunction -CR -def -define -dyad -LF -monad -noun -verb - -assert. -break. -case. -catch. -catchd. -catcht. -continue. -do. -else. -elseif. -end. -fcase. -for. -for_foobar. -goto_foobar. -if. -label_foobar. -return. -select. -throw. -try. -while. -whilst. - ----------------------------------------------------- - -[ - ["keyword", "adverb"], - ["keyword", "conjunction"], - ["keyword", "CR"], - ["keyword", "def"], - ["keyword", "define"], - ["keyword", "dyad"], - ["keyword", "LF"], - ["keyword", "monad"], - ["keyword", "noun"], - ["keyword", "verb"], - - ["keyword", "assert."], - ["keyword", "break."], - ["keyword", "case."], - ["keyword", "catch."], - ["keyword", "catchd."], - ["keyword", "catcht."], - ["keyword", "continue."], - ["keyword", "do."], - ["keyword", "else."], - ["keyword", "elseif."], - ["keyword", "end."], - ["keyword", "fcase."], - ["keyword", "for."], - ["keyword", "for_foobar."], - ["keyword", "goto_foobar."], - ["keyword", "if."], - ["keyword", "label_foobar."], - ["keyword", "return."], - ["keyword", "select."], - ["keyword", "throw."], - ["keyword", "try."], - ["keyword", "while."], - ["keyword", "whilst."] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/number_feature.test b/node_modules/prismjs/tests/languages/j/number_feature.test deleted file mode 100644 index ecd2dc2..0000000 --- a/node_modules/prismjs/tests/languages/j/number_feature.test +++ /dev/null @@ -1,41 +0,0 @@ -2.3e2 2.3e_2 2j3 -230 0.023 2j3 - -2p1 1p_1 -6.28319 0.31831 - -1x2 2x1 1x_1 -7.38906 5.43656 0.367879 - -2e2j_2e2 2e2j2p1 2ad45 2ar0.785398 -200j_200 628.319j6.28319 1.41421j1.41421 1.41421j1.41421 - -16b1f 10b23 _10b23 1e2b23 2b111.111 -31 23 _17 203 7.875 - -_ __ - ----------------------------------------------------- - -[ - ["number", "2.3e2"], ["number", "2.3e_2"], ["number", "2j3"], - ["number", "230"], ["number", "0.023"], ["number", "2j3"], - - ["number", "2p1"], ["number", "1p_1"], - ["number", "6.28319"], ["number", "0.31831"], - - ["number", "1x2"], ["number", "2x1"], ["number", "1x_1"], - ["number", "7.38906"], ["number", "5.43656"], ["number", "0.367879"], - - ["number", "2e2j_2e2"], ["number", "2e2j2p1"], ["number", "2ad45"], ["number", "2ar0.785398"], - ["number", "200j_200"], ["number", "628.319j6.28319"], ["number", "1.41421j1.41421"], ["number", "1.41421j1.41421"], - - ["number", "16b1f"], ["number", "10b23"], ["number", "_10b23"], ["number", "1e2b23"], ["number", "2b111.111"], - ["number", "31"], ["number", "23"], ["number", "_17"], ["number", "203"], ["number", "7.875"], - - ["number", "_"], ["number", "__"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/string_feature.test b/node_modules/prismjs/tests/languages/j/string_feature.test deleted file mode 100644 index 8cfa97f..0000000 --- a/node_modules/prismjs/tests/languages/j/string_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -'' -'fo''obar' - ----------------------------------------------------- - -[ - ["string", "''"], - ["string", "'fo''obar'"] -] - ----------------------------------------------------- - -Checks for strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/j/verb_feature.test b/node_modules/prismjs/tests/languages/j/verb_feature.test deleted file mode 100644 index 55f9086..0000000 --- a/node_modules/prismjs/tests/languages/j/verb_feature.test +++ /dev/null @@ -1,93 +0,0 @@ -{ {. {: {:: - -p. p.. p: - -= -! -] - -< <. <: -> >. >: -+ +. +: -* *. *: -- -. -: -% %. %: -$ $. $: -| |. |: -, ,. ,: -# #. #: - -^ ^. -? ?. - -; ;: -[ [: - -~. ~: -}. }: -". ": -i. i: - -A. C. e. -E. I. j. -L. o. r. - -_: /: \: -q: s: u: x: -_9: _8: _7: -_6: _5: _4: -_3: _2: _1: -1: 2: 3: -4: 5: 6: -7: 8: 9: - ----------------------------------------------------- - -[ - ["verb", "{"], ["verb", "{."], ["verb", "{:"], ["verb", "{::"], - - ["verb", "p."], ["verb", "p.."], ["verb", "p:"], - - ["verb", "="], - ["verb", "!"], - ["verb", "]"], - - ["verb", "<"], ["verb", "<."], ["verb", "<:"], - ["verb", ">"], ["verb", ">."], ["verb", ">:"], - ["verb", "+"], ["verb", "+."], ["verb", "+:"], - ["verb", "*"], ["verb", "*."], ["verb", "*:"], - ["verb", "-"], ["verb", "-."], ["verb", "-:"], - ["verb", "%"], ["verb", "%."], ["verb", "%:"], - ["verb", "$"], ["verb", "$."], ["verb", "$:"], - ["verb", "|"], ["verb", "|."], ["verb", "|:"], - ["verb", ","], ["verb", ",."], ["verb", ",:"], - ["verb", "#"], ["verb", "#."], ["verb", "#:"], - - ["verb", "^"], ["verb", "^."], - ["verb", "?"], ["verb", "?."], - - ["verb", ";"], ["verb", ";:"], - ["verb", "["], ["verb", "[:"], - - ["verb", "~."], ["verb", "~:"], - ["verb", "}."], ["verb", "}:"], - ["verb", "\"."], ["verb", "\":"], - ["verb", "i."], ["verb", "i:"], - - ["verb", "A."], ["verb", "C."], ["verb", "e."], - ["verb", "E."], ["verb", "I."], ["verb", "j."], - ["verb", "L."], ["verb", "o."], ["verb", "r."], - - ["verb", "_:"], ["verb", "/:"], ["verb", "\\:"], - ["verb", "q:"], ["verb", "s:"], ["verb", "u:"], ["verb", "x:"], - ["verb", "_9:"], ["verb", "_8:"], ["verb", "_7:"], - ["verb", "_6:"], ["verb", "_5:"], ["verb", "_4:"], - ["verb", "_3:"], ["verb", "_2:"], ["verb", "_1:"], - ["verb", "1:"], ["verb", "2:"], ["verb", "3:"], - ["verb", "4:"], ["verb", "5:"], ["verb", "6:"], - ["verb", "7:"], ["verb", "8:"], ["verb", "9:"] -] - ----------------------------------------------------- - -Checks for verbs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/code_feature.test b/node_modules/prismjs/tests/languages/jade/code_feature.test deleted file mode 100644 index 6bb436b..0000000 --- a/node_modules/prismjs/tests/languages/jade/code_feature.test +++ /dev/null @@ -1,36 +0,0 @@ -- if(foo) - -p= 'This code is' + ' !' - -span - != 'Not escaped' - ----------------------------------------------------- - -[ - ["punctuation", "-"], - ["code", [ - ["keyword", "if"], - ["punctuation", "("], - "foo", - ["punctuation", ")"] - ]], - - ["tag", ["p"]], - ["punctuation", "="], - ["code", [ - ["string", "'This code is'"], - ["operator", "+"], - ["string", "' !'"] - ]], - - ["tag", ["span"]], - ["punctuation", "!="], - ["code", [ - ["string", "'Not escaped'"] - ]] -] - ----------------------------------------------------- - -Checks for inline code. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/comment_feature.test b/node_modules/prismjs/tests/languages/jade/comment_feature.test deleted file mode 100644 index 1ca737a..0000000 --- a/node_modules/prismjs/tests/languages/jade/comment_feature.test +++ /dev/null @@ -1,22 +0,0 @@ -// foo - bar - - // foo - bar baz - -// foo - - // bar - ----------------------------------------------------- - -[ - ["comment", "// foo\r\n bar"], - ["comment", "// foo\r\n\t\tbar baz"], - ["comment", "// foo"], - ["comment", "// bar"] -] - ----------------------------------------------------- - -Checks for single-line comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/doctype_feature.test b/node_modules/prismjs/tests/languages/jade/doctype_feature.test deleted file mode 100644 index 7c13b12..0000000 --- a/node_modules/prismjs/tests/languages/jade/doctype_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -doctype html -doctype 1.1 -doctype html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" - ----------------------------------------------------- - -[ - ["doctype", "doctype html"], - ["doctype", "doctype 1.1"], - ["doctype", "doctype html PUBLIC \"-//W3C//DTD XHTML Basic 1.1//EN\""] -] - ----------------------------------------------------- - -Checks for doctypes. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/flow-control_feature.test b/node_modules/prismjs/tests/languages/jade/flow-control_feature.test deleted file mode 100644 index 2b68ddf..0000000 --- a/node_modules/prismjs/tests/languages/jade/flow-control_feature.test +++ /dev/null @@ -1,75 +0,0 @@ -each val, index in [1,2,3] - -if foo -else if bar -else - -unless foo - -while n < 4 - -case foo - when "bar" - default - ----------------------------------------------------- - -[ - ["flow-control", [ - ["each", [ - ["keyword", "each"], - " val", - ["punctuation", ","], - " index ", - ["keyword", "in"] - ]], - ["punctuation", "["], - ["number", "1"], - ["punctuation", ","], - ["number", "2"], - ["punctuation", ","], - ["number", "3"], - ["punctuation", "]"] - ]], - - ["flow-control", [ - ["branch", "if"], - " foo" - ]], - ["flow-control", [ - ["branch", "else"], - ["keyword", "if"], - " bar" - ]], - ["flow-control", [ - ["branch", "else"] - ]], - - ["flow-control", [ - ["branch", "unless"], - " foo" - ]], - - ["flow-control", [ - ["branch", "while"], - " n ", - ["operator", "<"], - ["number", "4"] - ]], - - ["flow-control", [ - ["branch", "case"], - " foo" - ]], - ["flow-control", [ - ["branch", "when"], - ["string", "\"bar\""] - ]], - ["flow-control", [ - ["branch", "default"] - ]] -] - ----------------------------------------------------- - -Checks for all flow-control structures. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/keyword_feature.test b/node_modules/prismjs/tests/languages/jade/keyword_feature.test deleted file mode 100644 index 21a5383..0000000 --- a/node_modules/prismjs/tests/languages/jade/keyword_feature.test +++ /dev/null @@ -1,27 +0,0 @@ -block title - - extends ./foo.jade - -include ./bar.jade - -block append foo -append bar - -block prepend foo -prepend bar - ----------------------------------------------------- - -[ - ["keyword", "block title"], - ["keyword", "extends ./foo.jade"], - ["keyword", "include ./bar.jade"], - ["keyword", "block append foo"], - ["keyword", "append bar"], - ["keyword", "block prepend foo"], - ["keyword", "prepend bar"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/mixin_feature.test b/node_modules/prismjs/tests/languages/jade/mixin_feature.test deleted file mode 100644 index ef515b3..0000000 --- a/node_modules/prismjs/tests/languages/jade/mixin_feature.test +++ /dev/null @@ -1,35 +0,0 @@ -mixin foo -mixin pet(name) - -+foo -+pet('cat') - ----------------------------------------------------- - -[ - ["mixin", [ - ["keyword", "mixin"], - ["function", "foo"] - ]], - ["mixin", [ - ["keyword", "mixin"], - ["function", "pet"], - ["punctuation", "("], - "name", - ["punctuation", ")"] - ]], - - ["mixin", [ - ["name", "+foo"] - ]], - ["mixin", [ - ["name", "+pet"], - ["punctuation", "("], - ["string", "'cat'"], - ["punctuation", ")"] - ]] -] - ----------------------------------------------------- - -Checks for mixins declaration and usage. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/multiline-plain-text_feature.test b/node_modules/prismjs/tests/languages/jade/multiline-plain-text_feature.test deleted file mode 100644 index fc14a71..0000000 --- a/node_modules/prismjs/tests/languages/jade/multiline-plain-text_feature.test +++ /dev/null @@ -1,30 +0,0 @@ -div. - foobar - - baz -. - div. - foobar - baz - ----------------------------------------------------- - -[ - ["tag", [ - "div" - ]], - ["punctuation", "."], - ["multiline-plain-text", "\r\n foobar\r\n\r\n baz"], - - ["punctuation", "."], - - ["tag", [ - "div" - ]], - ["punctuation", "."], - ["multiline-plain-text", "\r\n\t\tfoobar\r\n\t\tbaz"] -] - ----------------------------------------------------- - -Checks for multi-line plain text. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/multiline-script_feature.test b/node_modules/prismjs/tests/languages/jade/multiline-script_feature.test deleted file mode 100644 index 5648bf3..0000000 --- a/node_modules/prismjs/tests/languages/jade/multiline-script_feature.test +++ /dev/null @@ -1,58 +0,0 @@ -script. - alert(42); - -. - script(type='text/javascript'). - - if(foo) { - bar(1 + 5); - } - ----------------------------------------------------- - -[ - ["tag", [ - "script" - ]], - ["punctuation", "."], - ["multiline-script", [ - ["function", "alert"], - ["punctuation", "("], - ["number", "42"], - ["punctuation", ")"], - ["punctuation", ";"] - ]], - - ["punctuation", "."], - - ["tag", [ - "script", - ["attributes", [ - ["punctuation", "("], - ["attr-name", "type"], - ["punctuation", "="], - ["attr-value", [["string", "'text/javascript'"]]], - ["punctuation", ")"] - ]] - ]], - ["punctuation", "."], - ["multiline-script", [ - ["keyword", "if"], - ["punctuation", "("], - "foo", - ["punctuation", ")"], - ["punctuation", "{"], - ["function", "bar"], - ["punctuation", "("], - ["number", "1"], - ["operator", "+"], - ["number", "5"], - ["punctuation", ")"], - ["punctuation", ";"], - ["punctuation", "}"] - ]] -] - ----------------------------------------------------- - -Checks for multi-line scripts. The alone dot serves as a separator. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/plain-text_feature.test b/node_modules/prismjs/tests/languages/jade/plain-text_feature.test deleted file mode 100644 index 5e97fb0..0000000 --- a/node_modules/prismjs/tests/languages/jade/plain-text_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -div foo - span foo bar - ----------------------------------------------------- - -[ - ["tag", [ - "div" - ]], - ["plain-text", "foo"], - ["tag", [ - "span" - ]], - ["plain-text", "foo bar"] -] - ----------------------------------------------------- - -Checks for single-line plain text. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/script_feature.test b/node_modules/prismjs/tests/languages/jade/script_feature.test deleted file mode 100644 index 649fbf3..0000000 --- a/node_modules/prismjs/tests/languages/jade/script_feature.test +++ /dev/null @@ -1,38 +0,0 @@ -script alert(42); - script(type='text/javascript') alert(42); - ----------------------------------------------------- - -[ - ["tag", [ - "script" - ]], - ["script", [ - ["function", "alert"], - ["punctuation", "("], - ["number", "42"], - ["punctuation", ")"], - ["punctuation", ";"] - ]], - ["tag", [ - "script", - ["attributes", [ - ["punctuation", "("], - ["attr-name", "type"], - ["punctuation", "="], - ["attr-value", [["string", "'text/javascript'"]]], - ["punctuation", ")"] - ]] - ]], - ["script", [ - ["function", "alert"], - ["punctuation", "("], - ["number", "42"], - ["punctuation", ")"], - ["punctuation", ";"] - ]] -] - ----------------------------------------------------- - -Checks for single-line scripts. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jade/tag_feature.test b/node_modules/prismjs/tests/languages/jade/tag_feature.test deleted file mode 100644 index 415f8bd..0000000 --- a/node_modules/prismjs/tests/languages/jade/tag_feature.test +++ /dev/null @@ -1,97 +0,0 @@ -div - span&attributes({'data-foo': 'bar'}) - -input(data-bar="foo", type='checkbox', checked) - -a(style={color: 'red', background: 'green'}) - -div(unescaped!="") - -a.button -.content - -a#main-link -#content - -a: span - ----------------------------------------------------- - -[ - ["tag", ["div"]], - ["tag", [ - "span", - ["attributes", [ - ["operator", "&"], - ["function", "attributes"], - ["punctuation", "("], - ["punctuation", "{"], - ["string", "'data-foo'"], - ["punctuation", ":"], - ["string", "'bar'"], - ["punctuation", "}"], - ["punctuation", ")"] - ]] - ]], - - ["tag", [ - "input", - ["attributes", [ - ["punctuation", "("], - ["attr-name", "data-bar"], - ["punctuation", "="], - ["attr-value", [["string", "\"foo\""]]], - ["punctuation", ","], - ["attr-name", "type"], - ["punctuation", "="], - ["attr-value", [["string", "'checkbox'"]]], - ["punctuation", ","], - ["attr-name", "checked"], - ["punctuation", ")"] - ]] - ]], - - ["tag", [ - "a", - ["attributes", [ - ["punctuation", "("], - ["attr-name", "style"], - ["punctuation", "="], - ["attr-value", [ - ["punctuation", "{"], - "color", - ["punctuation", ":"], - ["string", "'red'"], - ["punctuation", ","], - " background", - ["punctuation", ":"], - ["string", "'green'"], - ["punctuation", "}"] - ]], - ["punctuation", ")"] - ]] - ]], - - ["tag", [ - "div", - ["attributes", [ - ["punctuation", "("], - ["attr-name", "unescaped"], - ["punctuation", "!="], - ["attr-value", [["string", "\"\""]]], - ["punctuation", ")"] - ]] - ]], - - ["tag", ["a.button"]], - ["tag", [".content"]], - ["tag", ["a#main-link"]], - ["tag", ["#content"]], - - ["tag", ["a", ["punctuation", ":"]]], - ["tag", ["span"]] -] - ----------------------------------------------------- - -Checks for tags and attributes. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/java/keyword_feature.test b/node_modules/prismjs/tests/languages/java/keyword_feature.test deleted file mode 100644 index 4a6613c..0000000 --- a/node_modules/prismjs/tests/languages/java/keyword_feature.test +++ /dev/null @@ -1,51 +0,0 @@ -abstract continue for -new ; -switch assert default -goto package synchronized -boolean do if private -this break double -implements ; -protected throw byte else -import public throws case -enum -instanceof ; -return transient catch -extends ; -int short try char -final -interface ; -static void -class ; -finally long -strictfp volatile const -float native super while - ----------------------------------------------------- - -[ - ["keyword", "abstract"], ["keyword", "continue"], ["keyword", "for"], - ["keyword", "new"], ["punctuation", ";"], - ["keyword", "switch"], ["keyword", "assert"], ["keyword", "default"], - ["keyword", "goto"], ["keyword", "package"], ["keyword", "synchronized"], - ["keyword", "boolean"], ["keyword", "do"], ["keyword", "if"], ["keyword", "private"], - ["keyword", "this"], ["keyword", "break"], ["keyword", "double"], - ["keyword", "implements"], ["punctuation", ";"], - ["keyword", "protected"], ["keyword", "throw"], ["keyword", "byte"], ["keyword", "else"], - ["keyword", "import"], ["keyword", "public"], ["keyword", "throws"], ["keyword", "case"], - ["keyword", "enum"], - ["keyword", "instanceof"], ["punctuation", ";"], - ["keyword", "return"], ["keyword", "transient"], ["keyword", "catch"], - ["keyword", "extends"], ["punctuation", ";"], - ["keyword", "int"], ["keyword", "short"], ["keyword", "try"], ["keyword", "char"], - ["keyword", "final"], - ["keyword", "interface"], ["punctuation", ";"], - ["keyword", "static"], ["keyword", "void"], - ["keyword", "class"], ["punctuation", ";"], - ["keyword", "finally"], ["keyword", "long"], - ["keyword", "strictfp"], ["keyword", "volatile"], ["keyword", "const"], - ["keyword", "float"], ["keyword", "native"], ["keyword", "super"], ["keyword", "while"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/java/number_feature.test b/node_modules/prismjs/tests/languages/java/number_feature.test deleted file mode 100644 index b88f082..0000000 --- a/node_modules/prismjs/tests/languages/java/number_feature.test +++ /dev/null @@ -1,27 +0,0 @@ -0b11110000 -0xBadFace -0x1.8p1 -0xa.fp-2 -42 -42d -1.2e3f -0.1E-4f -0.2e+1f - ----------------------------------------------------- - -[ - ["number", "0b11110000"], - ["number", "0xBadFace"], - ["number", "0x1.8p1"], - ["number", "0xa.fp-2"], - ["number", "42"], - ["number", "42d"], - ["number", "1.2e3f"], - ["number", "0.1E-4f"], - ["number", "0.2e+1f"] -] - ----------------------------------------------------- - -Checks for binary, hexadecimal and decimal numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/java/operator_feature.test b/node_modules/prismjs/tests/languages/java/operator_feature.test deleted file mode 100644 index 87f4906..0000000 --- a/node_modules/prismjs/tests/languages/java/operator_feature.test +++ /dev/null @@ -1,33 +0,0 @@ -+ ++ += -- -- -= -! != -< << <= <<= -> >> >>> >= >>= >>>= -= == -& && &= -| || |= -? : ~ -* *= -/ /= -% %= - ----------------------------------------------------- - -[ - ["operator", "+"], ["operator", "++"], ["operator", "+="], - ["operator", "-"], ["operator", "--"], ["operator", "-="], - ["operator", "!"], ["operator", "!="], - ["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", "<<="], - ["operator", ">"], ["operator", ">>"], ["operator", ">>>"], ["operator", ">="], ["operator", ">>="], ["operator", ">>>="], - ["operator", "="], ["operator", "=="], - ["operator", "&"], ["operator", "&&"], ["operator", "&="], - ["operator", "|"], ["operator", "||"], ["operator", "|="], - ["operator", "?"], ["operator", ":"], ["operator", "~"], - ["operator", "*"], ["operator", "*="], - ["operator", "/"], ["operator", "/="], - ["operator", "%"], ["operator", "%="] -] - ----------------------------------------------------- - -Checks for all operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript+haml/javascript_inclusion.test b/node_modules/prismjs/tests/languages/javascript+haml/javascript_inclusion.test deleted file mode 100644 index 2420e60..0000000 --- a/node_modules/prismjs/tests/languages/javascript+haml/javascript_inclusion.test +++ /dev/null @@ -1,24 +0,0 @@ -:javascript - 0xBadFace - -~ - :javascript - 0xBadFace - ----------------------------------------------------- - -[ - ["filter-javascript", [ - ["filter-name", ":javascript"], - ["number", "0xBadFace"] - ]], - ["punctuation", "~"], - ["filter-javascript", [ - ["filter-name", ":javascript"], - ["number", "0xBadFace"] - ]] -] - ----------------------------------------------------- - -Checks for JavaScript filter in Haml. The tilde serves only as a separator. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript+http/javascript_inclusion.test b/node_modules/prismjs/tests/languages/javascript+http/javascript_inclusion.test deleted file mode 100644 index 825fea4..0000000 --- a/node_modules/prismjs/tests/languages/javascript+http/javascript_inclusion.test +++ /dev/null @@ -1,21 +0,0 @@ -Content-type: application/json - -{"foo":"bar"} - ----------------------------------------------------- - -[ - ["header-name", "Content-type:"], - " application/json", - ["application/json", [ - ["punctuation", "{"], - ["string", "\"foo\""], - ["punctuation", ":"], - ["string", "\"bar\""], - ["punctuation", "}"] - ]] -] - ----------------------------------------------------- - -Checks for JSON content in HTTP. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript/boolean_feature.test b/node_modules/prismjs/tests/languages/javascript/boolean_feature.test deleted file mode 100644 index 4019c44..0000000 --- a/node_modules/prismjs/tests/languages/javascript/boolean_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -true -false - ----------------------------------------------------- - -[ - ["boolean", "true"], - ["boolean", "false"] -] - ----------------------------------------------------- - -Checks for booleans. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript/function_feature.test b/node_modules/prismjs/tests/languages/javascript/function_feature.test deleted file mode 100644 index e805e87..0000000 --- a/node_modules/prismjs/tests/languages/javascript/function_feature.test +++ /dev/null @@ -1,23 +0,0 @@ -foo() -foo_bar() -f42() -_() -$() -ಠ_ಠ() -Ƞȡ_҇() - ----------------------------------------------------- - -[ - ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], - ["function", "foo_bar"], ["punctuation", "("], ["punctuation", ")"], - ["function", "f42"], ["punctuation", "("], ["punctuation", ")"], - ["function", "_"], ["punctuation", "("], ["punctuation", ")"], - ["function", "$"], ["punctuation", "("], ["punctuation", ")"], - ["function", "ಠ_ಠ"], ["punctuation", "("], ["punctuation", ")"], - ["function", "Ƞȡ_҇"], ["punctuation", "("], ["punctuation", ")"] -] - ----------------------------------------------------- - -Checks for functions. Also checks for unicode characters in identifiers. diff --git a/node_modules/prismjs/tests/languages/javascript/keyword_feature.test b/node_modules/prismjs/tests/languages/javascript/keyword_feature.test deleted file mode 100644 index 13b8887..0000000 --- a/node_modules/prismjs/tests/languages/javascript/keyword_feature.test +++ /dev/null @@ -1,70 +0,0 @@ -as; async; await; break; case; -catch; class; const; continue; debugger; -default; delete; do; else; enum; -export; extends; finally; for; -from; function; get; if; implements; -import; in; instanceof; interface; let; -new; null; of; package; private; -protected; public; return; set; static; -super; switch; this; throw; -try; typeof; var; void; while; -with; yield; - ----------------------------------------------------- - -[ - ["keyword", "as"], ["punctuation", ";"], - ["keyword", "async"], ["punctuation", ";"], - ["keyword", "await"], ["punctuation", ";"], - ["keyword", "break"], ["punctuation", ";"], - ["keyword", "case"], ["punctuation", ";"], - ["keyword", "catch"], ["punctuation", ";"], - ["keyword", "class"], ["punctuation", ";"], - ["keyword", "const"], ["punctuation", ";"], - ["keyword", "continue"], ["punctuation", ";"], - ["keyword", "debugger"], ["punctuation", ";"], - ["keyword", "default"], ["punctuation", ";"], - ["keyword", "delete"], ["punctuation", ";"], - ["keyword", "do"], ["punctuation", ";"], - ["keyword", "else"], ["punctuation", ";"], - ["keyword", "enum"], ["punctuation", ";"], - ["keyword", "export"], ["punctuation", ";"], - ["keyword", "extends"], ["punctuation", ";"], - ["keyword", "finally"], ["punctuation", ";"], - ["keyword", "for"], ["punctuation", ";"], - ["keyword", "from"], ["punctuation", ";"], - ["keyword", "function"], ["punctuation", ";"], - ["keyword", "get"], ["punctuation", ";"], - ["keyword", "if"], ["punctuation", ";"], - ["keyword", "implements"], ["punctuation", ";"], - ["keyword", "import"], ["punctuation", ";"], - ["keyword", "in"], ["punctuation", ";"], - ["keyword", "instanceof"], ["punctuation", ";"], - ["keyword", "interface"], ["punctuation", ";"], - ["keyword", "let"], ["punctuation", ";"], - ["keyword", "new"], ["punctuation", ";"], - ["keyword", "null"], ["punctuation", ";"], - ["keyword", "of"], ["punctuation", ";"], - ["keyword", "package"], ["punctuation", ";"], - ["keyword", "private"], ["punctuation", ";"], - ["keyword", "protected"], ["punctuation", ";"], - ["keyword", "public"], ["punctuation", ";"], - ["keyword", "return"], ["punctuation", ";"], - ["keyword", "set"], ["punctuation", ";"], - ["keyword", "static"], ["punctuation", ";"], - ["keyword", "super"], ["punctuation", ";"], - ["keyword", "switch"], ["punctuation", ";"], - ["keyword", "this"], ["punctuation", ";"], - ["keyword", "throw"], ["punctuation", ";"], - ["keyword", "try"], ["punctuation", ";"], - ["keyword", "typeof"], ["punctuation", ";"], - ["keyword", "var"], ["punctuation", ";"], - ["keyword", "void"], ["punctuation", ";"], - ["keyword", "while"], ["punctuation", ";"], - ["keyword", "with"], ["punctuation", ";"], - ["keyword", "yield"], ["punctuation", ";"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript/number_feature.test b/node_modules/prismjs/tests/languages/javascript/number_feature.test deleted file mode 100644 index b832787..0000000 --- a/node_modules/prismjs/tests/languages/javascript/number_feature.test +++ /dev/null @@ -1,32 +0,0 @@ -42 -3.14159 -4e10 -3.2E+6 -2.1e-10 -0b1101 -0o571 -0xbabe -0xBABE -NaN -Infinity - ----------------------------------------------------- - -[ - ["number", "42"], - ["number", "3.14159"], - ["number", "4e10"], - ["number", "3.2E+6"], - ["number", "2.1e-10"], - ["number", "0b1101"], - ["number", "0o571"], - ["number", "0xbabe"], - ["number", "0xBABE"], - ["number", "NaN"], - ["number", "Infinity"] -] - ----------------------------------------------------- - -Checks for decimal numbers, binary numbers, octal numbers, hexadecimal numbers. -Also checks for keywords representing numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript/operator_feature.test b/node_modules/prismjs/tests/languages/javascript/operator_feature.test deleted file mode 100644 index 53a7637..0000000 --- a/node_modules/prismjs/tests/languages/javascript/operator_feature.test +++ /dev/null @@ -1,25 +0,0 @@ -- + -- ++ -< <= > >= -= == === -! != !== -& && | || -* ** -? / ~ ^ % -... - ----------------------------------------------------- - -[ - ["operator", "-"], ["operator", "+"], ["operator", "--"], ["operator", "++"], - ["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="], - ["operator", "="], ["operator", "=="], ["operator", "==="], - ["operator", "!"], ["operator", "!="], ["operator", "!=="], - ["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"], - ["operator", "*"], ["operator", "**"], - ["operator", "?"], ["operator", "/"], ["operator", "~"], ["operator", "^"], ["operator", "%"], - ["operator", "..."] -] - ----------------------------------------------------- - -Checks for all operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript/regex_feature.test b/node_modules/prismjs/tests/languages/javascript/regex_feature.test deleted file mode 100644 index c79397e..0000000 --- a/node_modules/prismjs/tests/languages/javascript/regex_feature.test +++ /dev/null @@ -1,23 +0,0 @@ -/foo bar/ -/foo/gimyu, -/[\[\]]{2,4}(?:foo)*/; -/foo"test"bar/ -/foo\// -1 / 4 + "/, not a regex"; -/ '1' '2' '3' '4' '5' / - ----------------------------------------------------- - -[ - ["regex", "/foo bar/"], - ["regex", "/foo/gimyu"], ["punctuation", ","], - ["regex", "/[\\[\\]]{2,4}(?:foo)*/"], ["punctuation", ";"], - ["regex", "/foo\"test\"bar/"], - ["regex", "/foo\\//"], - ["number", "1"], ["operator", "/"], ["number", "4"], ["operator", "+"], ["string", "\"/, not a regex\""], ["punctuation", ";"], - ["regex", "/ '1' '2' '3' '4' '5' /"] -] - ----------------------------------------------------- - -Checks for regex. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/javascript/template-string_feature.test b/node_modules/prismjs/tests/languages/javascript/template-string_feature.test deleted file mode 100644 index 33de8b3..0000000 --- a/node_modules/prismjs/tests/languages/javascript/template-string_feature.test +++ /dev/null @@ -1,44 +0,0 @@ -`foo bar` -`foo -bar` -`40+2=${40+2}` -`${foo()}` -"foo `a` `b` `c` `d` bar" - ----------------------------------------------------- - -[ - ["template-string", [ - ["string", "`foo bar`"] - ]], - ["template-string", [ - ["string", "`foo\r\nbar`"] - ]], - ["template-string", [ - ["string", "`40+2="], - ["interpolation", [ - ["interpolation-punctuation", "${"], - ["number", "40"], - ["operator", "+"], - ["number", "2"], - ["interpolation-punctuation", "}"] - ]], - ["string", "`"] - ]], - ["template-string", [ - ["string", "`"], - ["interpolation", [ - ["interpolation-punctuation", "${"], - ["function", "foo"], - ["punctuation", "("], - ["punctuation", ")"], - ["interpolation-punctuation", "}"] - ]], - ["string", "`"] - ]], - ["string", "\"foo `a` `b` `c` `d` bar\""] -] - ----------------------------------------------------- - -Checks for single-line and multi-line template strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jolie/deployment_features.test b/node_modules/prismjs/tests/languages/jolie/deployment_features.test deleted file mode 100644 index ebcd86a..0000000 --- a/node_modules/prismjs/tests/languages/jolie/deployment_features.test +++ /dev/null @@ -1,43 +0,0 @@ -Aggregates: First, Second with Third -Redirects: First => Second, Third => Fourth -Jolie: "logger.ol" in LoggerService -log@LoggerService( new )(); -println @ Console( "none" )() ----------------------------------------------------- - [ - [ "keyword", "Aggregates" ], - [ "operator", ":" ], - [ "aggregates", [ - [ "function", "First" ], [ "punctuation", ","], - [ "function", "Second" ], - [ "withExtension", [ - [ "keyword", "with" ], " Third" ] - ] - ] - ], - [ "keyword", "Redirects" ], - [ "operator", ":" ], - [ "redirects", - [ - [ "function", "First" ], - [ "symbol", "=>" ], - [ "function", "Second" ], [ "punctuation", ","], - [ "function", "Third" ], - [ "symbol", "=>" ], - [ "function", "Fourth" ] - ] - ], - [ "keyword", "Jolie" ], - [ "operator", ":" ], - [ "string", "\"logger.ol\"" ], - [ "keyword", "in" ], - [ "function", "LoggerService" ], - "\nlog", [ "symbol", "@" ], [ "function", "LoggerService" ], - "( ", [ "keyword", "new" ], " )()", [ "symbol", ";" ], - "\nprintln ", [ "symbol", "@" ], [ "function", "Console" ], - "( ", [ "string", "\"none\"" ], " )()" -] - ----------------------------------------------------- - -Checks for outputPorts and Aggregates and Redirect constructs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jolie/keyword_feature.test b/node_modules/prismjs/tests/languages/jolie/keyword_feature.test deleted file mode 100644 index 55a95ca..0000000 --- a/node_modules/prismjs/tests/languages/jolie/keyword_feature.test +++ /dev/null @@ -1,129 +0,0 @@ -include -define -is_defined -undef -main -init -outputPort ; -inputPort ; -Location -Protocol -Interfaces -RequestResponse -OneWay -type -interface -extender -throws -cset -csets -forward -courier ; -Aggregates -Redirects -embedded -extender -execution -sequential -concurrent -single -scope -install -throw -comp -cH -default -global -linkIn -linkOut -synchronized -this -new -for -if -else -while -in ; -Jolie -Java -Javascript -nullProcess -spawn -constants -with -provide -until -exit -foreach -instanceof -over -service - ----------------------------------------------------- -[ - ["keyword", "include" ], - ["keyword", "define" ], - ["keyword", "is_defined" ], - ["keyword", "undef" ], - ["keyword", "main" ], - ["keyword", "init" ], - ["keyword", "outputPort" ], [ "symbol", ";" ], - ["keyword", "inputPort" ], [ "symbol", ";" ], - ["keyword", "Location" ], - ["keyword", "Protocol" ], - ["keyword", "Interfaces" ], - ["keyword", "RequestResponse" ], - ["keyword", "OneWay" ], - ["keyword", "type" ], - ["keyword", "interface" ], - ["keyword", "extender" ], - ["keyword", "throws" ], - ["keyword", "cset" ], - ["keyword", "csets" ], - ["keyword", "forward" ], - ["keyword", "courier" ], [ "symbol", ";" ], - ["keyword", "Aggregates" ], - ["keyword", "Redirects" ], - ["keyword", "embedded" ], - ["keyword", "extender" ], - ["keyword", "execution" ], - ["keyword", "sequential" ], - ["keyword", "concurrent" ], - ["keyword", "single" ], - ["keyword", "scope" ], - ["keyword", "install" ], - ["keyword", "throw" ], - ["keyword", "comp" ], - ["keyword", "cH" ], - ["keyword", "default" ], - ["keyword", "global" ], - ["keyword", "linkIn" ], - ["keyword", "linkOut" ], - ["keyword", "synchronized" ], - ["keyword", "this" ], - ["keyword", "new" ], - ["keyword", "for" ], - ["keyword", "if" ], - ["keyword", "else" ], - ["keyword", "while" ], - ["keyword", "in" ], [ "symbol", ";" ], - ["keyword", "Jolie" ], - ["keyword", "Java" ], - ["keyword", "Javascript" ], - ["keyword", "nullProcess" ], - ["keyword", "spawn" ], - ["keyword", "constants" ], - ["keyword", "with" ], - ["keyword", "provide" ], - ["keyword", "until" ], - ["keyword", "exit" ], - ["keyword", "foreach" ], - ["keyword", "instanceof" ], - ["keyword", "over" ], - ["keyword", "service" ] - -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jolie/number_feature.test b/node_modules/prismjs/tests/languages/jolie/number_feature.test deleted file mode 100644 index 90d5c96..0000000 --- a/node_modules/prismjs/tests/languages/jolie/number_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -42 -42L -1.2e3 -0.1E-4 -0.2e+1 - ----------------------------------------------------- - -[ - ["number", "42" ], - ["number", "42L" ], - ["number", "1.2e3" ], - ["number", "0.1E-4" ], - ["number", "0.2e+1" ] -] - ----------------------------------------------------- - -Checks for decimal numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jolie/operator_feature.test b/node_modules/prismjs/tests/languages/jolie/operator_feature.test deleted file mode 100644 index 963acc2..0000000 --- a/node_modules/prismjs/tests/languages/jolie/operator_feature.test +++ /dev/null @@ -1,42 +0,0 @@ -+ ++ += -- -- -= -! != -< <= > >= -> << -= == -&& -? * / % ; : | @ - ----------------------------------------------------- - -[ - ["operator", "+"], - ["operator", "++"], - ["operator", "+="], - ["operator", "-"], - ["operator", "--"], - ["operator", "-="], - ["operator", "!"], - ["operator", "!="], - ["operator", "<" ], - ["operator", "<=" ], - ["operator", ">" ], - ["operator", ">=" ], - ["operator", "->" ], - ["operator", "<<" ], - ["operator", "=" ], - ["operator", "==" ], - ["operator", "&&" ], - [ "operator", "?" ], - [ "operator", "*" ], - [ "operator", "/" ], - [ "operator", "%" ], - [ "symbol", ";" ], - [ "operator", ":" ], - [ "symbol", "|" ], - [ "symbol", "@" ] - -] - ----------------------------------------------------- - -Checks for all operators and symbols. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/json/boolean_feature.test b/node_modules/prismjs/tests/languages/json/boolean_feature.test deleted file mode 100644 index 4019c44..0000000 --- a/node_modules/prismjs/tests/languages/json/boolean_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -true -false - ----------------------------------------------------- - -[ - ["boolean", "true"], - ["boolean", "false"] -] - ----------------------------------------------------- - -Checks for booleans. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/json/null_feature.test b/node_modules/prismjs/tests/languages/json/null_feature.test deleted file mode 100644 index 1283944..0000000 --- a/node_modules/prismjs/tests/languages/json/null_feature.test +++ /dev/null @@ -1,11 +0,0 @@ -null - ----------------------------------------------------- - -[ - ["null", "null"] -] - ----------------------------------------------------- - -Checks for null. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/json/number_feature.test b/node_modules/prismjs/tests/languages/json/number_feature.test deleted file mode 100644 index ba045ec..0000000 --- a/node_modules/prismjs/tests/languages/json/number_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -0 -123 -3.14159 -5.0e8 -0.2E+2 -47e-5 - ----------------------------------------------------- - -[ - ["number", "0"], - ["number", "123"], - ["number", "3.14159"], - ["number", "5.0e8"], - ["number", "0.2E+2"], - ["number", "47e-5"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/json/property_feature.test b/node_modules/prismjs/tests/languages/json/property_feature.test deleted file mode 100644 index 3880ad7..0000000 --- a/node_modules/prismjs/tests/languages/json/property_feature.test +++ /dev/null @@ -1,33 +0,0 @@ -{"foo\"bar\"baz":1,"foo":2} -{ - "foo": 1, - "b\"ar": 2 -} - ----------------------------------------------------- - -[ - ["punctuation", "{"], - ["property", "\"foo\\\"bar\\\"baz\""], - ["operator", ":"], - ["number", "1"], - ["punctuation", ","], - ["property", "\"foo\""], - ["operator", ":"], - ["number", "2"], - ["punctuation", "}"], - - ["punctuation", "{"], - ["property", "\"foo\""], - ["operator", ":"], - ["number", "1"], - ["punctuation", ","], - ["property", "\"b\\\"ar\""], - ["operator", ":"], - ["number", "2"], - ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for features. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/json/string_feature.test b/node_modules/prismjs/tests/languages/json/string_feature.test deleted file mode 100644 index 08ac8c0..0000000 --- a/node_modules/prismjs/tests/languages/json/string_feature.test +++ /dev/null @@ -1,27 +0,0 @@ -"" -"foo" -"foo\"bar\"baz" -"\u2642\\ " -{"foo":"bar","baz":"\""} - ----------------------------------------------------- - -[ - ["string", "\"\""], - ["string", "\"foo\""], - ["string", "\"foo\\\"bar\\\"baz\""], - ["string", "\"\\u2642\\\\ \""], - ["punctuation", "{"], - ["property", "\"foo\""], - ["operator", ":"], - ["string", "\"bar\""], - ["punctuation", ","], - ["property", "\"baz\""], - ["operator", ":"], - ["string", "\"\\\"\""], - ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/jsx/tag_feature.test b/node_modules/prismjs/tests/languages/jsx/tag_feature.test deleted file mode 100644 index 6a4a8c5..0000000 --- a/node_modules/prismjs/tests/languages/jsx/tag_feature.test +++ /dev/null @@ -1,48 +0,0 @@ -var myDivElement =
                ; -var myElement = ; - ----------------------------------------------------- - -[ - ["keyword", "var"], - " myDivElement ", - ["operator", "="], - ["tag", [ - ["tag", [ - ["punctuation", "<"], - "div" - ]], - ["attr-name", ["className"]], - ["attr-value", [ - ["punctuation", "="], - ["punctuation", "\""], - "foo", - ["punctuation", "\""] - ]], - ["punctuation", "/>"] - ]], - ["punctuation", ";"], - - ["keyword", "var"], - " myElement ", - ["operator", "="], - ["tag", [ - ["tag", [ - ["punctuation", "<"], - "MyComponent" - ]], - ["attr-name", ["someProperty"]], - ["script", [ - ["punctuation", "="], - ["punctuation", "{"], - ["boolean", "true"], - ["punctuation", "}"] - ]], - ["punctuation", "/>"] - ]], - ["punctuation", ";"] -] - ----------------------------------------------------- - -Checks for JSX tags. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/julia/boolean_feature.test b/node_modules/prismjs/tests/languages/julia/boolean_feature.test deleted file mode 100644 index 4019c44..0000000 --- a/node_modules/prismjs/tests/languages/julia/boolean_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -true -false - ----------------------------------------------------- - -[ - ["boolean", "true"], - ["boolean", "false"] -] - ----------------------------------------------------- - -Checks for booleans. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/julia/comment_feature.test b/node_modules/prismjs/tests/languages/julia/comment_feature.test deleted file mode 100644 index 054d602..0000000 --- a/node_modules/prismjs/tests/languages/julia/comment_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -# -# foobar - ----------------------------------------------------- - -[ - ["comment", "#"], - ["comment", "# foobar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/julia/keyword_feature.test b/node_modules/prismjs/tests/languages/julia/keyword_feature.test deleted file mode 100644 index e2cfa8c..0000000 --- a/node_modules/prismjs/tests/languages/julia/keyword_feature.test +++ /dev/null @@ -1,31 +0,0 @@ -abstract baremodule begin -bitstype break catch -ccall const continue -do else elseif end -export finally for -function global if -immutable import importall -let local macro module -print println quote -return try type -typealias using while - ----------------------------------------------------- - -[ - ["keyword", "abstract"], ["keyword", "baremodule"], ["keyword", "begin"], - ["keyword", "bitstype"], ["keyword", "break"], ["keyword", "catch"], - ["keyword", "ccall"], ["keyword", "const"], ["keyword", "continue"], - ["keyword", "do"], ["keyword", "else"], ["keyword", "elseif"], ["keyword", "end"], - ["keyword", "export"], ["keyword", "finally"], ["keyword", "for"], - ["keyword", "function"], ["keyword", "global"], ["keyword", "if"], - ["keyword", "immutable"], ["keyword", "import"], ["keyword", "importall"], - ["keyword", "let"], ["keyword", "local"], ["keyword", "macro"], ["keyword", "module"], - ["keyword", "print"], ["keyword", "println"], ["keyword", "quote"], - ["keyword", "return"], ["keyword", "try"], ["keyword", "type"], - ["keyword", "typealias"], ["keyword", "using"], ["keyword", "while"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/julia/number_feature.test b/node_modules/prismjs/tests/languages/julia/number_feature.test deleted file mode 100644 index 72fc7a4..0000000 --- a/node_modules/prismjs/tests/languages/julia/number_feature.test +++ /dev/null @@ -1,33 +0,0 @@ -0b0011 -0o274 -0xBadFace -42 -1.23 -1e10 -2.5e-4 -0.5f0 -2.5f-4 -0x1p0 -0x1.8p3 -0x.4p-1 - ----------------------------------------------------- - -[ - ["number", "0b0011"], - ["number", "0o274"], - ["number", "0xBadFace"], - ["number", "42"], - ["number", "1.23"], - ["number", "1e10"], - ["number", "2.5e-4"], - ["number", "0.5f0"], - ["number", "2.5f-4"], - ["number", "0x1p0"], - ["number", "0x1.8p3"], - ["number", "0x.4p-1"] -] - ----------------------------------------------------- - -Checks for binary, octal, hexadecimal and decimal numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/julia/operator_feature.test b/node_modules/prismjs/tests/languages/julia/operator_feature.test deleted file mode 100644 index 57f0d68..0000000 --- a/node_modules/prismjs/tests/languages/julia/operator_feature.test +++ /dev/null @@ -1,41 +0,0 @@ -+ += -- -= -* *= -/ /= // -\ \= -^ ^= -% %= -÷ ÷= -! != !== -& &= -| |= |> -$ $= -< <= <: << <<= -> >= >> >>= >>> >>>= -= == === -~ ≠ ≤ ≥ - ----------------------------------------------------- - -[ - ["operator", "+"], ["operator", "+="], - ["operator", "-"], ["operator", "-="], - ["operator", "*"], ["operator", "*="], - ["operator", "/"], ["operator", "/="], ["operator", "//"], - ["operator", "\\"], ["operator", "\\="], - ["operator", "^"], ["operator", "^="], - ["operator", "%"], ["operator", "%="], - ["operator", "÷"], ["operator", "÷="], - ["operator", "!"], ["operator", "!="], ["operator", "!=="], - ["operator", "&"], ["operator", "&="], - ["operator", "|"], ["operator", "|="], ["operator", "|>"], - ["operator", "$"], ["operator", "$="], - ["operator", "<"], ["operator", "<="], ["operator", "<:"], ["operator", "<<"], ["operator", "<<="], - ["operator", ">"], ["operator", ">="], ["operator", ">>"], ["operator", ">>="], ["operator", ">>>"], ["operator", ">>>="], - ["operator", "="], ["operator", "=="], ["operator", "==="], - ["operator", "~"], ["operator", "≠"], ["operator", "≤"], ["operator", "≥"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/julia/string_feature.test b/node_modules/prismjs/tests/languages/julia/string_feature.test deleted file mode 100644 index 207b3f4..0000000 --- a/node_modules/prismjs/tests/languages/julia/string_feature.test +++ /dev/null @@ -1,29 +0,0 @@ -"" -"fo\"o" -'x' -'\'' -'\u2200' -"""foo""" -"""fo"o -bar""" -'''foo''' -'''fo'o -bar''' - ----------------------------------------------------- - -[ - ["string", "\"\""], - ["string", "\"fo\\\"o\""], - ["string", "'x'"], - ["string", "'\\''"], - ["string", "'\\u2200'"], - ["string", "\"\"\"foo\"\"\""], - ["string", "\"\"\"fo\"o\r\nbar\"\"\""], - ["string", "'''foo'''"], - ["string", "'''fo'o\r\nbar'''"] -] - ----------------------------------------------------- - -Checks for strings and characters. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/atrule_feature.test b/node_modules/prismjs/tests/languages/keyman/atrule_feature.test deleted file mode 100644 index 1171caf..0000000 --- a/node_modules/prismjs/tests/languages/keyman/atrule_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -ansi begin unicode -group using keys -match nomatch - ----------------------------------------------------- - -[ - ["atrule", "ansi"], ["atrule", "begin"], ["atrule", "unicode"], - ["atrule", "group"], ["atrule", "using keys"], - ["atrule", "match"], ["atrule", "nomatch"] -] - ----------------------------------------------------- - -Checks for all structural keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/bold_feature.test b/node_modules/prismjs/tests/languages/keyman/bold_feature.test deleted file mode 100644 index 58e731c..0000000 --- a/node_modules/prismjs/tests/languages/keyman/bold_feature.test +++ /dev/null @@ -1,59 +0,0 @@ -&baselayout &bitmap &capsononly -&capsalwaysoff &shiftfreescaps -©right ðnologuecode -&hotkey &includecodes -&keyboardversion &kmw_embedcss -&kmw_embedjs &kmw_helpfile -&kmw_helptext &kmw_rtl -&language &layer &layoutfile -&message &mnemoniclayout -&name &oldcharposmatching -&platform &targets &version -&visualkeyboard &windowslanguages - -bitmap -bitmaps -caps on only -caps always off -shift frees caps -copyright -hotkey -language -layout -message -name -version - ----------------------------------------------------- - -[ - ["bold", "&baselayout"], ["bold", "&bitmap"], ["bold", "&capsononly"], - ["bold", "&capsalwaysoff"], ["bold", "&shiftfreescaps"], - ["bold", "©right"], ["bold", "ðnologuecode"], - ["bold", "&hotkey"], ["bold", "&includecodes"], - ["bold", "&keyboardversion"], ["bold", "&kmw_embedcss"], - ["bold", "&kmw_embedjs"], ["bold", "&kmw_helpfile"], - ["bold", "&kmw_helptext"], ["bold", "&kmw_rtl"], - ["bold", "&language"], ["bold", "&layer"], ["bold", "&layoutfile"], - ["bold", "&message"], ["bold", "&mnemoniclayout"], - ["bold", "&name"], ["bold", "&oldcharposmatching"], - ["bold", "&platform"], ["bold", "&targets"], ["bold", "&version"], - ["bold", "&visualkeyboard"], ["bold", "&windowslanguages"], - - ["bold", "bitmap"], - ["bold", "bitmaps"], - ["bold", "caps on only"], - ["bold", "caps always off"], - ["bold", "shift frees caps"], - ["bold", "copyright"], - ["bold", "hotkey"], - ["bold", "language"], - ["bold", "layout"], - ["bold", "message"], - ["bold", "name"], - ["bold", "version"] -] - ----------------------------------------------------- - -Checks for header statements, system stores and variable system stores. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/comment_feature.test b/node_modules/prismjs/tests/languages/keyman/comment_feature.test deleted file mode 100644 index 3056bde..0000000 --- a/node_modules/prismjs/tests/languages/keyman/comment_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -c Foo - c Foobar - ----------------------------------------------------- - -[ - ["comment", "c Foo"], - ["comment", "c Foobar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/function_feature.test b/node_modules/prismjs/tests/languages/keyman/function_feature.test deleted file mode 100644 index 3852ade..0000000 --- a/node_modules/prismjs/tests/languages/keyman/function_feature.test +++ /dev/null @@ -1,39 +0,0 @@ -['c'] -["f"] -[K_SEL] -[K_KANJI?15] -[T_SCHWA] -[U_0259] -[CTRL 'a'] -[SHIFT "b"] -[ALT K_C] -[LCTRL T_D] -[RCTRL U_E259] -[LALT K_F] -[RALT K_G] -[CAPS K_H] -[NCAPS K_I] - ----------------------------------------------------- - -[ - ["function", "['c']"], - ["function", "[\"f\"]"], - ["function", "[K_SEL]"], - ["function", "[K_KANJI?15]"], - ["function", "[T_SCHWA]"], - ["function", "[U_0259]"], - ["function", "[CTRL 'a']"], - ["function", "[SHIFT \"b\"]"], - ["function", "[ALT K_C]"], - ["function", "[LCTRL T_D]"], - ["function", "[RCTRL U_E259]"], - ["function", "[LALT K_F]"], - ["function", "[RALT K_G]"], - ["function", "[CAPS K_H]"], - ["function", "[NCAPS K_I]"] -] - ----------------------------------------------------- - -Checks for keys, with all possible modifiers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/keyword_feature.test b/node_modules/prismjs/tests/languages/keyman/keyword_feature.test deleted file mode 100644 index 7bbd230..0000000 --- a/node_modules/prismjs/tests/languages/keyman/keyword_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -any baselayout beep -call context deadkey -dk if index layer -notany nul outs -platform return reset -save set store use - ----------------------------------------------------- - -[ - ["keyword", "any"], ["keyword", "baselayout"], ["keyword", "beep"], - ["keyword", "call"], ["keyword", "context"], ["keyword", "deadkey"], - ["keyword", "dk"], ["keyword", "if"], ["keyword", "index"], ["keyword", "layer"], - ["keyword", "notany"], ["keyword", "nul"], ["keyword", "outs"], - ["keyword", "platform"], ["keyword", "return"], ["keyword", "reset"], - ["keyword", "save"], ["keyword", "set"], ["keyword", "store"], ["keyword", "use"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/number_feature.test b/node_modules/prismjs/tests/languages/keyman/number_feature.test deleted file mode 100644 index c71eb6e..0000000 --- a/node_modules/prismjs/tests/languages/keyman/number_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -U+0041 -d67 -d1114111 -x20 -x10FFFF -4177777 - ----------------------------------------------------- - -[ - ["number", "U+0041"], - ["number", "d67"], - ["number", "d1114111"], - ["number", "x20"], - ["number", "x10FFFF"], - ["number", "4177777"] -] - ----------------------------------------------------- - -Checks for unicode, decimal, hexadecimal and octal character codes. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/operator_feature.test b/node_modules/prismjs/tests/languages/keyman/operator_feature.test deleted file mode 100644 index bc439e8..0000000 --- a/node_modules/prismjs/tests/languages/keyman/operator_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -+ > -\ , -( ) - ----------------------------------------------------- - -[ - ["operator", "+"], ["operator", ">"], - ["operator", "\\"], ["operator", ","], - ["operator", "("], ["operator", ")"] -] - ----------------------------------------------------- - -Checks for all operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/string_feature.test b/node_modules/prismjs/tests/languages/keyman/string_feature.test deleted file mode 100644 index ac457af..0000000 --- a/node_modules/prismjs/tests/languages/keyman/string_feature.test +++ /dev/null @@ -1,17 +0,0 @@ -'' -"" -'foo' -"bar" - ----------------------------------------------------- - -[ - ["string", "''"], - ["string", "\"\""], - ["string", "'foo'"], - ["string", "\"bar\""] -] - ----------------------------------------------------- - -Checks for single-quoted and double-quoted strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/keyman/tag_feature.test b/node_modules/prismjs/tests/languages/keyman/tag_feature.test deleted file mode 100644 index 2aa760a..0000000 --- a/node_modules/prismjs/tests/languages/keyman/tag_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -$keyman: -$kmfl: -$weaver: -$keymanweb: -$keymanonly: - ----------------------------------------------------- - -[ - ["tag", "$keyman:"], - ["tag", "$kmfl:"], - ["tag", "$weaver:"], - ["tag", "$keymanweb:"], - ["tag", "$keymanonly:"] -] - ----------------------------------------------------- - -Checks for all prefixes. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/annotation_feature.test b/node_modules/prismjs/tests/languages/kotlin/annotation_feature.test deleted file mode 100644 index 05c1385..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/annotation_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -@Deprecated(SUBSYSTEM_DEPRECATED) -@SetUp -@Suppress -@field:Ann -@file:JvmName -@set:[Inject VisibleForTesting] - ----------------------------------------------------- - -[ - ["annotation", "@Deprecated"], ["punctuation", "("], "SUBSYSTEM_DEPRECATED", ["punctuation", ")"], - ["annotation", "@SetUp"], - ["annotation", "@Suppress"], - ["annotation", "@field:Ann"], - ["annotation", "@file:JvmName"], - ["annotation", "@set:[Inject VisibleForTesting]"] -] - ----------------------------------------------------- - -Checks for annotations. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/function_feature.test b/node_modules/prismjs/tests/languages/kotlin/function_feature.test deleted file mode 100644 index 8bfd2b2..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/function_feature.test +++ /dev/null @@ -1,16 +0,0 @@ -foo() -foo_Bar_42() -list.filter {} - ----------------------------------------------------- - -[ - ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], - ["function", "foo_Bar_42"], ["punctuation", "("], ["punctuation", ")"], - "\r\nlist", ["punctuation", "."], - ["function", "filter"], ["punctuation", "{"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for functions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/interpolation_feature.test b/node_modules/prismjs/tests/languages/kotlin/interpolation_feature.test deleted file mode 100644 index 0ee8299..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/interpolation_feature.test +++ /dev/null @@ -1,46 +0,0 @@ -"$foo ${bar} ${'$'} ${foobar()}" -""" -$foo ${bar} -${'$'} ${foobar()} -""" - ----------------------------------------------------- - -[ - ["string", [ - "\"", - ["interpolation", "$foo"], - ["interpolation", [ - ["delimiter", "${"], "bar", ["delimiter", "}"] - ]], - ["interpolation", [ - ["delimiter", "${"], ["string", "'$'"], ["delimiter", "}"] - ]], - ["interpolation", [ - ["delimiter", "${"], - ["function", "foobar"], ["punctuation", "("], ["punctuation", ")"], - ["delimiter", "}"] - ]], - "\"" - ]], - ["raw-string", [ - "\"\"\"\r\n", - ["interpolation", "$foo"], - ["interpolation", [ - ["delimiter", "${"], "bar", ["delimiter", "}"] - ]], - ["interpolation", [ - ["delimiter", "${"], ["string", "'$'"], ["delimiter", "}"] - ]], - ["interpolation", [ - ["delimiter", "${"], - ["function", "foobar"], ["punctuation", "("], ["punctuation", ")"], - ["delimiter", "}"] - ]], - "\r\n\"\"\"" - ]] -] - ----------------------------------------------------- - -Checks for string interpolation. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/keyword_feature.test b/node_modules/prismjs/tests/languages/kotlin/keyword_feature.test deleted file mode 100644 index d8ace30..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/keyword_feature.test +++ /dev/null @@ -1,121 +0,0 @@ -abstract -annotation -as -break -by -catch -class -companion -const -constructor -continue -crossinline -data -do -else -enum -final -finally -for -fun -get -if -import -in -init -inline -inner -interface -internal -is -lateinit -noinline -null -object -open -out -override -package -private -protected -public -reified -return -sealed -set -super -tailrec -this -throw -to -try -val -var -when -where -while - ----------------------------------------------------- - -[ - ["keyword", "abstract"], - ["keyword", "annotation"], - ["keyword", "as"], - ["keyword", "break"], - ["keyword", "by"], - ["keyword", "catch"], - ["keyword", "class"], - ["keyword", "companion"], - ["keyword", "const"], - ["keyword", "constructor"], - ["keyword", "continue"], - ["keyword", "crossinline"], - ["keyword", "data"], - ["keyword", "do"], - ["keyword", "else"], - ["keyword", "enum"], - ["keyword", "final"], - ["keyword", "finally"], - ["keyword", "for"], - ["keyword", "fun"], - ["keyword", "get"], - ["keyword", "if"], - ["keyword", "import"], - ["keyword", "in"], - ["keyword", "init"], - ["keyword", "inline"], - ["keyword", "inner"], - ["keyword", "interface"], - ["keyword", "internal"], - ["keyword", "is"], - ["keyword", "lateinit"], - ["keyword", "noinline"], - ["keyword", "null"], - ["keyword", "object"], - ["keyword", "open"], - ["keyword", "out"], - ["keyword", "override"], - ["keyword", "package"], - ["keyword", "private"], - ["keyword", "protected"], - ["keyword", "public"], - ["keyword", "reified"], - ["keyword", "return"], - ["keyword", "sealed"], - ["keyword", "set"], - ["keyword", "super"], - ["keyword", "tailrec"], - ["keyword", "this"], - ["keyword", "throw"], - ["keyword", "to"], - ["keyword", "try"], - ["keyword", "val"], - ["keyword", "var"], - ["keyword", "when"], - ["keyword", "where"], - ["keyword", "while"] -] - ----------------------------------------------------- - -Checks for keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/label_feature.test b/node_modules/prismjs/tests/languages/kotlin/label_feature.test deleted file mode 100644 index fa62266..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/label_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -loop@ -break@loop -return@forEach - ----------------------------------------------------- - -[ - ["label", "loop@"], - ["keyword", "break"], ["label", "@loop"], - ["keyword", "return"], ["label", "@forEach"] -] - ----------------------------------------------------- - -Checks for labels. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/number_feature.test b/node_modules/prismjs/tests/languages/kotlin/number_feature.test deleted file mode 100644 index df21736..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/number_feature.test +++ /dev/null @@ -1,29 +0,0 @@ -123 -123L -0x0F -0b00001011 -123.5 -123.5e10 -123.5e-10 -123.5e+10 -123.5f -123.5F - ----------------------------------------------------- - -[ - ["number", "123"], - ["number", "123L"], - ["number", "0x0F"], - ["number", "0b00001011"], - ["number", "123.5"], - ["number", "123.5e10"], - ["number", "123.5e-10"], - ["number", "123.5e+10"], - ["number", "123.5f"], - ["number", "123.5F"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/operator_feature.test b/node_modules/prismjs/tests/languages/kotlin/operator_feature.test deleted file mode 100644 index 12f0cae..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/operator_feature.test +++ /dev/null @@ -1,31 +0,0 @@ -+ ++ += -- -- -= -> -= == === -! !! != !== -/ /= * *= -% %= -< <= > >= -? ?: : :: -.. && || -and inv or -shl shr ushr xor - ----------------------------------------------------- - -[ - ["operator", "+"], ["operator", "++"], ["operator", "+="], - ["operator", "-"], ["operator", "--"], ["operator", "-="], ["operator", "->"], - ["operator", "="], ["operator", "=="], ["operator", "==="], - ["operator", "!"], ["operator", "!!"], ["operator", "!="], ["operator", "!=="], - ["operator", "/"], ["operator", "/="], ["operator", "*"], ["operator", "*="], - ["operator", "%"], ["operator", "%="], - ["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="], - ["operator", "?"], ["operator", "?:"], ["operator", ":"], ["operator", "::"], - ["operator", ".."], ["operator", "&&"], ["operator", "||"], - ["operator", "and"], ["operator", "inv"], ["operator", "or"], - ["operator", "shl"], ["operator", "shr"], ["operator", "ushr"], ["operator", "xor"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/kotlin/raw-string_feature.test b/node_modules/prismjs/tests/languages/kotlin/raw-string_feature.test deleted file mode 100644 index 5a5ca33..0000000 --- a/node_modules/prismjs/tests/languages/kotlin/raw-string_feature.test +++ /dev/null @@ -1,18 +0,0 @@ -"""""" -"""Foo "bar"" baz""" -""" -"Foo" -bar -""" - ----------------------------------------------------- - -[ - ["raw-string", ["\"\"\"\"\"\""]], - ["raw-string", ["\"\"\"Foo \"bar\"\" baz\"\"\""]], - ["raw-string", ["\"\"\"\r\n\"Foo\"\r\nbar\r\n\"\"\""]] -] - ----------------------------------------------------- - -Checks for raw strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/latex/cdata_feature.test b/node_modules/prismjs/tests/languages/latex/cdata_feature.test deleted file mode 100644 index 0dfa98e..0000000 --- a/node_modules/prismjs/tests/languages/latex/cdata_feature.test +++ /dev/null @@ -1,28 +0,0 @@ -\begin{verbatim*} -Foo bar -\end{verbatim*} - -\begin{lstlisting} -Foo bar -baz -\end{lstlisting} - ----------------------------------------------------- - -[ - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "verbatim*"], ["punctuation", "}"], - ["cdata", "\r\nFoo bar\r\n"], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "verbatim*"], ["punctuation", "}"], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "lstlisting"], ["punctuation", "}"], - ["cdata", "\r\nFoo bar\r\nbaz\r\n"], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "lstlisting"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for verbatim environment. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/latex/comment_feature.test b/node_modules/prismjs/tests/languages/latex/comment_feature.test deleted file mode 100644 index 2f59d3c..0000000 --- a/node_modules/prismjs/tests/languages/latex/comment_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -% -% foobar - ----------------------------------------------------- - -[ - ["comment", "%"], - ["comment", "% foobar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/latex/equation_feature.test b/node_modules/prismjs/tests/languages/latex/equation_feature.test deleted file mode 100644 index 40caeeb..0000000 --- a/node_modules/prismjs/tests/languages/latex/equation_feature.test +++ /dev/null @@ -1,121 +0,0 @@ -$foo$ -$a \dots -b$ -\(foo\) -\(a \dots -b\) -\[foo\] -\[a \dots -b\] - -\begin{equation}foo\end{equation} -\begin{equation}a \dots -b\end{equation} -\begin{math}foo\end{math} -\begin{math}a \dots -b\end{math} -\begin{eqnarray}foo\end{eqnarray} -\begin{eqnarray}a \dots -b\end{eqnarray} -\begin{align}foo\end{align} -\begin{align*}a \dots -b\end{align*} -\begin{multline}foo\end{multline} -\begin{multline}a \dots -b\end{multline} -\begin{gather}foo\end{gather} -\begin{gather}a \dots -b\end{gather} - ----------------------------------------------------- - -[ - ["equation", ["$foo$"]], - ["equation", [ - "$a ", - ["equation-command", "\\dots"], - "\r\nb$" - ]], - ["equation", ["\\(foo\\)"]], - ["equation", [ - "\\(a ", - ["equation-command", "\\dots"], - "\r\nb\\)" - ]], - ["equation", ["\\[foo\\]"]], - ["equation", [ - "\\[a ", - ["equation-command", "\\dots"], - "\r\nb\\]" - ]], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "equation"], ["punctuation", "}"], - ["equation", ["foo"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "equation"], ["punctuation", "}"], - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "equation"], ["punctuation", "}"], - ["equation", ["a ", ["equation-command", "\\dots"], "\r\nb"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "equation"], ["punctuation", "}"], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "math"], ["punctuation", "}"], - ["equation", ["foo"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "math"], ["punctuation", "}"], - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "math"], ["punctuation", "}"], - ["equation", ["a ", ["equation-command", "\\dots"], "\r\nb"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "math"], ["punctuation", "}"], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "eqnarray"], ["punctuation", "}"], - ["equation", ["foo"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "eqnarray"], ["punctuation", "}"], - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "eqnarray"], ["punctuation", "}"], - ["equation", ["a ", ["equation-command", "\\dots"], "\r\nb"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "eqnarray"], ["punctuation", "}"], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "align"], ["punctuation", "}"], - ["equation", ["foo"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "align"], ["punctuation", "}"], - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "align*"], ["punctuation", "}"], - ["equation", ["a ", ["equation-command", "\\dots"], "\r\nb"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "align*"], ["punctuation", "}"], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "multline"], ["punctuation", "}"], - ["equation", ["foo"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "multline"], ["punctuation", "}"], - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "multline"], ["punctuation", "}"], - ["equation", ["a ", ["equation-command", "\\dots"], "\r\nb"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "multline"], ["punctuation", "}"], - - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "gather"], ["punctuation", "}"], - ["equation", ["foo"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "gather"], ["punctuation", "}"], - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "gather"], ["punctuation", "}"], - ["equation", ["a ", ["equation-command", "\\dots"], "\r\nb"]], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "gather"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for equations. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/latex/headline_feature.test b/node_modules/prismjs/tests/languages/latex/headline_feature.test deleted file mode 100644 index 17102ad..0000000 --- a/node_modules/prismjs/tests/languages/latex/headline_feature.test +++ /dev/null @@ -1,39 +0,0 @@ -\part{Foobar} -\chapter{Foobar} -\section{Foobar} -\subsection{Foobar} -\frametitle{Foobar} -\subsubsection{Foobar} -\paragraph{Foobar} -\subparagraph{Foobar} -\subsubparagraph{Foobar} -\subsubsubparagraph{Foobar} - ----------------------------------------------------- - -[ - ["function", "\\part"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\chapter"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\section"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\subsection"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\frametitle"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\subsubsection"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\paragraph"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\subparagraph"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\subsubparagraph"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"], - ["function", "\\subsubsubparagraph"], ["punctuation", "{"], - ["headline", "Foobar"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for headlines. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/latex/keyword_feature.test b/node_modules/prismjs/tests/languages/latex/keyword_feature.test deleted file mode 100644 index 7a1b86f..0000000 --- a/node_modules/prismjs/tests/languages/latex/keyword_feature.test +++ /dev/null @@ -1,32 +0,0 @@ -\begin{foobar} -\end{foobar} -\ref{foobar} -\cite{foobar} -\label{foobar} -\usepackage{foobar} -\documentclass[11px,twoside,a4paper]{foobar} - ----------------------------------------------------- - -[ - ["function", "\\begin"], ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"], - ["function", "\\end"], ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"], - ["function", "\\ref"], ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"], - ["function", "\\cite"], ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"], - ["function", "\\label"], ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"], - ["function", "\\usepackage"], ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"], - ["function", "\\documentclass"], - ["punctuation", "["], "11px,twoside,a4paper", ["punctuation", "]"], - ["punctuation", "{"], - ["keyword", "foobar"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/latex/url_feature.test b/node_modules/prismjs/tests/languages/latex/url_feature.test deleted file mode 100644 index 53e1c01..0000000 --- a/node_modules/prismjs/tests/languages/latex/url_feature.test +++ /dev/null @@ -1,12 +0,0 @@ -\url{http://prismjs.com} - ----------------------------------------------------- - -[ - ["function", "\\url"], ["punctuation", "{"], - ["url", "http://prismjs.com"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for URLs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less+haml/less_inclusion.test b/node_modules/prismjs/tests/languages/less+haml/less_inclusion.test deleted file mode 100644 index fffe2ca..0000000 --- a/node_modules/prismjs/tests/languages/less+haml/less_inclusion.test +++ /dev/null @@ -1,32 +0,0 @@ -:less - .foo { .bar; } - -~ - :less - .foo { .bar; } - ----------------------------------------------------- - -[ - ["filter-less", [ - ["filter-name", ":less"], - ["selector", [".foo"]], - ["punctuation", "{"], - ["mixin-usage", ".bar"], - ["punctuation", ";"], - ["punctuation", "}"] - ]], - ["punctuation", "~"], - ["filter-less", [ - ["filter-name", ":less"], - ["selector", [".foo"]], - ["punctuation", "{"], - ["mixin-usage", ".bar"], - ["punctuation", ";"], - ["punctuation", "}"] - ]] -] - ----------------------------------------------------- - -Checks for Less filter in Haml. The tilde serves only as a separator. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less+jade/less_inclusion.test b/node_modules/prismjs/tests/languages/less+jade/less_inclusion.test deleted file mode 100644 index 1cc8b35..0000000 --- a/node_modules/prismjs/tests/languages/less+jade/less_inclusion.test +++ /dev/null @@ -1,20 +0,0 @@ -:less - @foo: #123; - ----------------------------------------------------- - -[ - ["filter-less", [ - ["filter-name", ":less"], - ["variable", [ - "@foo", - ["punctuation", ":"] - ]], - " #123", - ["punctuation", ";"] - ]] -] - ----------------------------------------------------- - -Checks for less filter in Jade. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less/atrule_feature.test b/node_modules/prismjs/tests/languages/less/atrule_feature.test deleted file mode 100644 index 333d672..0000000 --- a/node_modules/prismjs/tests/languages/less/atrule_feature.test +++ /dev/null @@ -1,25 +0,0 @@ -@media {} -@media screen and (min-width: 320px) {} - ----------------------------------------------------- - -[ - ["atrule", [ - "@media" - ]], - ["punctuation", "{"], ["punctuation", "}"], - - ["atrule", [ - "@media screen and ", - ["punctuation", "("], - "min-width", - ["punctuation", ":"], - " 320px", - ["punctuation", ")"] - ]], - ["punctuation", "{"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for at-rules. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less/comment_feature.test b/node_modules/prismjs/tests/languages/less/comment_feature.test deleted file mode 100644 index c728423..0000000 --- a/node_modules/prismjs/tests/languages/less/comment_feature.test +++ /dev/null @@ -1,18 +0,0 @@ -// -// foobar -/**/ -/* foo -bar */ - ----------------------------------------------------- - -[ - ["comment", "//"], - ["comment", "// foobar"], - ["comment", "/**/"], - ["comment", "/* foo\r\nbar */"] -] - ----------------------------------------------------- - -Checks for single-line and multi-line comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less/operator_feature.test b/node_modules/prismjs/tests/languages/less/operator_feature.test deleted file mode 100644 index 7093994..0000000 --- a/node_modules/prismjs/tests/languages/less/operator_feature.test +++ /dev/null @@ -1,14 +0,0 @@ -+ - * / - ----------------------------------------------------- - -[ - ["operator", "+"], - ["operator", "-"], - ["operator", "*"], - ["operator", "/"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less/property_feature.test b/node_modules/prismjs/tests/languages/less/property_feature.test deleted file mode 100644 index 85288c4..0000000 --- a/node_modules/prismjs/tests/languages/less/property_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -font-weight: -@{foobar} : -background-@{foo}: -box-shadow+: -transform+_: - ----------------------------------------------------- - -[ - ["property", "font-weight"], ["punctuation", ":"], - ["property", "@{foobar}"], ["punctuation", ":"], - ["property", "background-@{foo}"], ["punctuation", ":"], - ["property", "box-shadow+"], ["punctuation", ":"], - ["property", "transform+_"], ["punctuation", ":"] -] - ----------------------------------------------------- - -Checks for properties. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/less/selector_feature.test b/node_modules/prismjs/tests/languages/less/selector_feature.test deleted file mode 100644 index ae82f14..0000000 --- a/node_modules/prismjs/tests/languages/less/selector_feature.test +++ /dev/null @@ -1,24 +0,0 @@ -.bordered {} -.@{foo} {} -.foo (@bg: #fff, @color: #000) {} - ----------------------------------------------------- - -[ - ["selector", [".bordered"]], - ["punctuation", "{"], ["punctuation", "}"], - ["selector", [".@{foo}"]], - ["punctuation", "{"], ["punctuation", "}"], - ["selector", [ - ".foo (", - ["variable", "@bg"], - ": #fff, ", - ["variable", "@color"], - ": #000)" - ]], - ["punctuation", "{"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for selectors and mixin declarations. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/argument_feature.test b/node_modules/prismjs/tests/languages/livescript/argument_feature.test deleted file mode 100644 index c195da9..0000000 --- a/node_modules/prismjs/tests/languages/livescript/argument_feature.test +++ /dev/null @@ -1,17 +0,0 @@ -& -&0 -&1 -&999 - ----------------------------------------------------- - -[ - ["argument", "&"], - ["argument", "&0"], - ["argument", "&1"], - ["argument", "&999"] -] - ----------------------------------------------------- - -Checks for arguments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/boolean_feature.test b/node_modules/prismjs/tests/languages/livescript/boolean_feature.test deleted file mode 100644 index 8fa6348..0000000 --- a/node_modules/prismjs/tests/languages/livescript/boolean_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -false -no -off -on -true -yes - ----------------------------------------------------- - -[ - ["boolean", "false"], - ["boolean", "no"], - ["boolean", "off"], - ["boolean", "on"], - ["boolean", "true"], - ["boolean", "yes"] -] - ----------------------------------------------------- - -Checks for all boolean aliases. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/comment_feature.test b/node_modules/prismjs/tests/languages/livescript/comment_feature.test deleted file mode 100644 index afb4276..0000000 --- a/node_modules/prismjs/tests/languages/livescript/comment_feature.test +++ /dev/null @@ -1,18 +0,0 @@ -/**/ -/* foo -bar */ -# -# foobar - ----------------------------------------------------- - -[ - ["comment", "/**/"], - ["comment", "/* foo\r\nbar */"], - ["comment", "#"], - ["comment", "# foobar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/identifier_feature.test b/node_modules/prismjs/tests/languages/livescript/identifier_feature.test deleted file mode 100644 index e0de5e8..0000000 --- a/node_modules/prismjs/tests/languages/livescript/identifier_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -foo -fooBar42 -foo-bar42-baz -yes-no -function-case -delete-by - ----------------------------------------------------- - -[ - ["identifier", "foo"], - ["identifier", "fooBar42"], - ["identifier", "foo-bar42-baz"], - ["identifier", "yes-no"], - ["identifier", "function-case"], - ["identifier", "delete-by"] -] - ----------------------------------------------------- - -Checks for identifiers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/interpolated-string.test b/node_modules/prismjs/tests/languages/livescript/interpolated-string.test deleted file mode 100644 index 015ae09..0000000 --- a/node_modules/prismjs/tests/languages/livescript/interpolated-string.test +++ /dev/null @@ -1,57 +0,0 @@ -"""""" -"""Foo\"""bar""" -"""Foo -bar""" -"""#foobar #{foo + 42}""" - -"" -"Foo\"bar" -"Foo -bar" -"#foo #{ if /test/ == 'test' then 3 else 4}" - ----------------------------------------------------- - -[ - ["interpolated-string", [["string", "\"\"\"\"\"\""]]], - ["interpolated-string", [["string", "\"\"\"Foo\\\"\"\"bar\"\"\""]]], - ["interpolated-string", [["string", "\"\"\"Foo\r\nbar\"\"\""]]], - ["interpolated-string", [ - ["string", "\"\"\""], - ["variable", "#foobar"], - ["string", " "], - ["interpolation", [ - ["interpolation-punctuation", "#{"], - ["identifier", "foo"], - ["operator", "+"], - ["number", "42"], - ["interpolation-punctuation", "}"] - ]], - ["string", "\"\"\""] - ]], - ["interpolated-string", [["string", "\"\""]]], - ["interpolated-string", [["string", "\"Foo\\\"bar\""]]], - ["interpolated-string", [["string", "\"Foo\r\nbar\""]]], - ["interpolated-string", [ - ["string", "\""], - ["variable", "#foo"], - ["string", " "], - ["interpolation", [ - ["interpolation-punctuation", "#{"], - ["keyword", "if"], - ["regex", "/test/"], - ["operator", "=="], - ["string", "'test'"], - ["keyword", "then"], - ["number", "3"], - ["keyword", "else"], - ["number", "4"], - ["interpolation-punctuation", "}"] - ]], - ["string", "\""] - ]] -] - ----------------------------------------------------- - -Checks for interpolated strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/keyword-operator_feature.test b/node_modules/prismjs/tests/languages/livescript/keyword-operator_feature.test deleted file mode 100644 index b6f3d90..0000000 --- a/node_modules/prismjs/tests/languages/livescript/keyword-operator_feature.test +++ /dev/null @@ -1,57 +0,0 @@ -delete! -require! -typeof! - -and -by -delete -export -from -import -import all -in -instanceof -is -isnt -is not -not -of -or -til -to -typeof -with -xor - ----------------------------------------------------- - -[ - ["keyword-operator", "delete!"], - ["keyword-operator", "require!"], - ["keyword-operator", "typeof!"], - - ["keyword-operator", "and"], - ["keyword-operator", "by"], - ["keyword-operator", "delete"], - ["keyword-operator", "export"], - ["keyword-operator", "from"], - ["keyword-operator", "import"], - ["keyword-operator", "import all"], - ["keyword-operator", "in"], - ["keyword-operator", "instanceof"], - ["keyword-operator", "is"], - ["keyword-operator", "isnt"], - ["keyword-operator", "is not"], - ["keyword-operator", "not"], - ["keyword-operator", "of"], - ["keyword-operator", "or"], - ["keyword-operator", "til"], - ["keyword-operator", "to"], - ["keyword-operator", "typeof"], - ["keyword-operator", "with"], - ["keyword-operator", "xor"] -] - ----------------------------------------------------- - -Checks for all keyword operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/keyword_feature.test b/node_modules/prismjs/tests/languages/livescript/keyword_feature.test deleted file mode 100644 index 123f37d..0000000 --- a/node_modules/prismjs/tests/languages/livescript/keyword_feature.test +++ /dev/null @@ -1,87 +0,0 @@ -break -case -catch -class -const -continue -default -do -else -extends -fallthrough -finally -for -for ever -function -if -implements -it -let -loop -new -null -otherwise -own -return -super -switch -that -then -this -throw -try -unless -until -var -void -when -while -yield - ----------------------------------------------------- - -[ - ["keyword", "break"], - ["keyword", "case"], - ["keyword", "catch"], - ["keyword", "class"], - ["keyword", "const"], - ["keyword", "continue"], - ["keyword", "default"], - ["keyword", "do"], - ["keyword", "else"], - ["keyword", "extends"], - ["keyword", "fallthrough"], - ["keyword", "finally"], - ["keyword", "for"], - ["keyword", "for ever"], - ["keyword", "function"], - ["keyword", "if"], - ["keyword", "implements"], - ["keyword", "it"], - ["keyword", "let"], - ["keyword", "loop"], - ["keyword", "new"], - ["keyword", "null"], - ["keyword", "otherwise"], - ["keyword", "own"], - ["keyword", "return"], - ["keyword", "super"], - ["keyword", "switch"], - ["keyword", "that"], - ["keyword", "then"], - ["keyword", "this"], - ["keyword", "throw"], - ["keyword", "try"], - ["keyword", "unless"], - ["keyword", "until"], - ["keyword", "var"], - ["keyword", "void"], - ["keyword", "when"], - ["keyword", "while"], - ["keyword", "yield"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/number_feature.test b/node_modules/prismjs/tests/languages/livescript/number_feature.test deleted file mode 100644 index 7375927..0000000 --- a/node_modules/prismjs/tests/languages/livescript/number_feature.test +++ /dev/null @@ -1,21 +0,0 @@ -42 42_ 42km 42km_2 -4.514 0.47foo_7 -4_8_7_4.2_4_7 -4~12 -16~badFaCE -36~azertyuiop0123456789 - ----------------------------------------------------- - -[ - ["number", "42"], ["number", "42_"], ["number", "42km"], ["number", "42km_2"], - ["number", "4.514"], ["number", "0.47foo_7"], - ["number", "4_8_7_4.2_4_7"], - ["number", "4~12"], - ["number", "16~badFaCE"], - ["number", "36~azertyuiop0123456789"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/operator_feature.test b/node_modules/prismjs/tests/languages/livescript/operator_feature.test deleted file mode 100644 index d9565b2..0000000 --- a/node_modules/prismjs/tests/languages/livescript/operator_feature.test +++ /dev/null @@ -1,55 +0,0 @@ -a . b -.= .~ .. ... -.&. .^. .<<. .>>. .>>>. -:= :: ::= -&& -|| |> -< << <<< <<<< -<- <-- <-! <--! -<~ <~~ <~! <~~! -<| <= >> >= >? -- -- -> --> -+ ++ -@ @@ -% %% -* ** -! != !~= -!~> !~~> -!-> !--> -~ ~> ~~> ~= -= == -^ ^^ -/ ? - ----------------------------------------------------- - -[ - ["identifier", "a"], ["operator", "."], ["identifier", "b"], - ["operator", ".="], ["operator", ".~"], ["operator", ".."], ["operator", "..."], - ["operator", ".&."], ["operator", ".^."], ["operator", ".<<."], ["operator", ".>>."], ["operator", ".>>>."], - ["operator", ":="], ["operator", "::"], ["operator", "::="], - ["operator", "&&"], - ["operator", "||"], ["operator", "|>"], - ["operator", "<"], ["operator", "<<"], ["operator", "<<<"], ["operator", "<<<<"], - ["operator", "<-"], ["operator", "<--"], ["operator", "<-!"], ["operator", "<--!"], - ["operator", "<~"], ["operator", "<~~"], ["operator", "<~!"], ["operator", "<~~!"], - ["operator", "<|"], ["operator", "<="], ["operator", ""], ["operator", ">>"], ["operator", ">="], ["operator", ">?"], - ["operator", "-"], ["operator", "--"], ["operator", "->"], ["operator", "-->"], - ["operator", "+"], ["operator", "++"], - ["operator", "@"], ["operator", "@@"], - ["operator", "%"], ["operator", "%%"], - ["operator", "*"], ["operator", "**"], - ["operator", "!"], ["operator", "!="], ["operator", "!~="], - ["operator", "!~>"], ["operator", "!~~>"], - ["operator", "!->"], ["operator", "!-->"], - ["operator", "~"], ["operator", "~>"], ["operator", "~~>"], ["operator", "~="], - ["operator", "="], ["operator", "=="], - ["operator", "^"], ["operator", "^^"], - ["operator", "/"], ["operator", "?"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/regex_feature.test b/node_modules/prismjs/tests/languages/livescript/regex_feature.test deleted file mode 100644 index 0369ddb..0000000 --- a/node_modules/prismjs/tests/languages/livescript/regex_feature.test +++ /dev/null @@ -1,27 +0,0 @@ -/foo[bar]/igm -// -foo | -[bar]* -//igmuy -// -foo #bar -[baz] # foo bar -// - ----------------------------------------------------- - -[ - ["regex", "/foo[bar]/igm"], - ["regex", ["//\r\nfoo |\r\n[bar]*\r\n//igmuy"]], - ["regex", [ - "//\r\nfoo ", - ["comment", "#bar"], - "\r\n[baz] ", - ["comment", "# foo bar"], - "\r\n//" - ]] -] - ----------------------------------------------------- - -Checks for regexps. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/livescript/string_feature.test b/node_modules/prismjs/tests/languages/livescript/string_feature.test deleted file mode 100644 index 313a131..0000000 --- a/node_modules/prismjs/tests/languages/livescript/string_feature.test +++ /dev/null @@ -1,32 +0,0 @@ -'''''' -'''Foo\'''bar''' -'''Foo -bar''' - -'' -'Foo\'bar' -'Foo -bar' - -<[ foo bar baz ]> - -\foo \bar \"({[-!@^+baz - ----------------------------------------------------- - -[ - ["string", "''''''"], - ["string", "'''Foo\\'''bar'''"], - ["string", "'''Foo\r\nbar'''"], - ["string", "''"], - ["string", "'Foo\\'bar'"], - ["string", "'Foo\r\nbar'"], - ["string", "<[ foo bar baz ]>"], - ["string", "\\foo"], - ["string", "\\bar"], - ["string", "\\\"({[-!@^+baz"] -] - ----------------------------------------------------- - -Checks for strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/boolean_feature.test b/node_modules/prismjs/tests/languages/lolcode/boolean_feature.test deleted file mode 100644 index 4409cfe..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/boolean_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -WIN -FAIL - ----------------------------------------------------- - -[ - ["boolean", "WIN"], - ["boolean", "FAIL"] -] - ----------------------------------------------------- - -Checks for booleans. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/comment_feature.test b/node_modules/prismjs/tests/languages/lolcode/comment_feature.test deleted file mode 100644 index 6031e27..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/comment_feature.test +++ /dev/null @@ -1,14 +0,0 @@ -OBTW foo -bar TLDR - BTW foobar - ----------------------------------------------------- - -[ - ["comment", "OBTW foo\r\nbar TLDR"], - ["comment", "BTW foobar"] -] - ----------------------------------------------------- - -Checks for single-line and multi-line comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/function_feature.test b/node_modules/prismjs/tests/languages/lolcode/function_feature.test deleted file mode 100644 index 0f3dc0d..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/function_feature.test +++ /dev/null @@ -1,18 +0,0 @@ -I IZ foobar - HOW IZ I foobar -IZ fooBAR - ----------------------------------------------------- - -[ - ["keyword", "I IZ"], - ["function", "foobar"], - ["keyword", "HOW IZ I"], - ["function", "foobar"], - ["keyword", "IZ"], - ["function", "fooBAR"] -] - ----------------------------------------------------- - -Checks for functions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/keyword_feature.test b/node_modules/prismjs/tests/languages/lolcode/keyword_feature.test deleted file mode 100644 index bb59d25..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/keyword_feature.test +++ /dev/null @@ -1,93 +0,0 @@ -O HAI IM -KTHX -HAI -KTHXBYE -I HAS A -ITZ -ITZ A -R -AN -MKAY -SMOOSH -MAEK -IS NOW -IS NOW A -VISIBLE -GIMMEH -O RLY? -YA RLY -NO WAI -OIC -MEBBE -WTF? -OMG -OMGWTF -GTFO -IM IN YR -IM OUTTA YR -FOUND YR -YR -TIL -WILE -UPPIN -NERFIN -I IZ -HOW IZ I foo -IF U SAY SO -SRS -HAS A -LIEK -LIEK A -IZ -foo'Z - ----------------------------------------------------- - -[ - ["keyword", "O HAI IM"], - ["keyword", "KTHX"], - ["keyword", "HAI"], - ["keyword", "KTHXBYE"], - ["keyword", "I HAS A"], - ["keyword", "ITZ"], - ["keyword", "ITZ A"], - ["keyword", "R"], - ["keyword", "AN"], - ["keyword", "MKAY"], - ["keyword", "SMOOSH"], - ["keyword", "MAEK"], - ["keyword", "IS NOW"], - ["keyword", "IS NOW A"], - ["keyword", "VISIBLE"], - ["keyword", "GIMMEH"], - ["keyword", "O RLY?"], - ["keyword", "YA RLY"], - ["keyword", "NO WAI"], - ["keyword", "OIC"], - ["keyword", "MEBBE"], - ["keyword", "WTF?"], - ["keyword", "OMG"], - ["keyword", "OMGWTF"], - ["keyword", "GTFO"], - ["keyword", "IM IN YR"], - ["keyword", "IM OUTTA YR"], - ["keyword", "FOUND YR"], - ["keyword", "YR"], - ["keyword", "TIL"], - ["keyword", "WILE"], - ["keyword", "UPPIN"], - ["keyword", "NERFIN"], - ["keyword", "I IZ"], - ["keyword", "HOW IZ I"], ["function", "foo"], - ["keyword", "IF U SAY SO"], - ["keyword", "SRS"], - ["keyword", "HAS A"], - ["keyword", "LIEK"], - ["keyword", "LIEK A"], - ["keyword", "IZ"], - "\r\nfoo", ["keyword", "'Z"] -] - ----------------------------------------------------- - -Checks for all keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/label_feature.test b/node_modules/prismjs/tests/languages/lolcode/label_feature.test deleted file mode 100644 index 7722d2a..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/label_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -IM IN YR foobar - IM OUTTA YR fooBAR - ----------------------------------------------------- - -[ - ["keyword", "IM IN YR"], - ["label", "foobar"], - ["keyword", "IM OUTTA YR"], - ["label", "fooBAR"] -] - ----------------------------------------------------- - -Checks for labels. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/number_feature.test b/node_modules/prismjs/tests/languages/lolcode/number_feature.test deleted file mode 100644 index 060d6d2..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/number_feature.test +++ /dev/null @@ -1,13 +0,0 @@ -42 -3.14159 - ----------------------------------------------------- - -[ - ["number", "42"], - ["number", "3.14159"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/operator_feature.test b/node_modules/prismjs/tests/languages/lolcode/operator_feature.test deleted file mode 100644 index c55dcc1..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/operator_feature.test +++ /dev/null @@ -1,39 +0,0 @@ -NOT -BOTH SAEM -DIFFRINT -SUM OF -DIFF OF -PRODUKT OF -QUOSHUNT OF -MOD OF -BIGGR OF -SMALLR OF -BOTH OF -EITHER OF -WON OF -ALL OF -ANY OF - ----------------------------------------------------- - -[ - ["operator", "NOT"], - ["operator", "BOTH SAEM"], - ["operator", "DIFFRINT"], - ["operator", "SUM OF"], - ["operator", "DIFF OF"], - ["operator", "PRODUKT OF"], - ["operator", "QUOSHUNT OF"], - ["operator", "MOD OF"], - ["operator", "BIGGR OF"], - ["operator", "SMALLR OF"], - ["operator", "BOTH OF"], - ["operator", "EITHER OF"], - ["operator", "WON OF"], - ["operator", "ALL OF"], - ["operator", "ANY OF"] -] - ----------------------------------------------------- - -Checks for all operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/string_feature.test b/node_modules/prismjs/tests/languages/lolcode/string_feature.test deleted file mode 100644 index 813228d..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/string_feature.test +++ /dev/null @@ -1,33 +0,0 @@ -"" -"foobar" -"fo:"o" -"foo:)bar:>baz" -"foo:{bar}baz" - ----------------------------------------------------- - -[ - ["string", ["\"\""]], - ["string", ["\"foobar\""]], - ["string", [ - "\"fo", - ["symbol", ":\""], - "o\"" - ]], - ["string", [ - "\"foo", - ["symbol", ":)"], - "bar", - ["symbol", ":>"], - "baz\"" - ]], - ["string", [ - "\"foo", - ["variable", ":{bar}"], - "baz\"" - ]] -] - ----------------------------------------------------- - -Checks for strings, with variables and symbols in them. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/symbol_feature.test b/node_modules/prismjs/tests/languages/lolcode/symbol_feature.test deleted file mode 100644 index 7f1534a..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/symbol_feature.test +++ /dev/null @@ -1,27 +0,0 @@ -YARN A YARN -NUMBR A NUMBR -NUMBAR A NUMBAR -TROOF A TROOF -BUKKIT A BUKKIT -NOOB A NOOB - ----------------------------------------------------- - -[ - ["symbol", ["YARN"]], - ["symbol", [["keyword", "A"], " YARN"]], - ["symbol", ["NUMBR"]], - ["symbol", [["keyword", "A"], " NUMBR"]], - ["symbol", ["NUMBAR"]], - ["symbol", [["keyword", "A"], " NUMBAR"]], - ["symbol", ["TROOF"]], - ["symbol", [["keyword", "A"], " TROOF"]], - ["symbol", ["BUKKIT"]], - ["symbol", [["keyword", "A"], " BUKKIT"]], - ["symbol", ["NOOB"]], - ["symbol", [["keyword", "A"], " NOOB"]] -] - ----------------------------------------------------- - -Checks for symbols, optionally prefixed by "A ". \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lolcode/variable_feature.test b/node_modules/prismjs/tests/languages/lolcode/variable_feature.test deleted file mode 100644 index 1066c33..0000000 --- a/node_modules/prismjs/tests/languages/lolcode/variable_feature.test +++ /dev/null @@ -1,11 +0,0 @@ -IT - ----------------------------------------------------- - -[ - ["variable", "IT"] -] - ----------------------------------------------------- - -Checks for variables. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lua/comment_feature.test b/node_modules/prismjs/tests/languages/lua/comment_feature.test deleted file mode 100644 index 3c639f7..0000000 --- a/node_modules/prismjs/tests/languages/lua/comment_feature.test +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/local/bin/lua --- --- Foobar ---[[Foo -bar]] ---[====[Foo -bar]=====] ]===] -baz]====] - ----------------------------------------------------- - -[ - ["comment", "#!/usr/local/bin/lua"], - ["comment", "--"], - ["comment", "-- Foobar"], - ["comment", "--[[Foo\r\nbar]]"], - ["comment", "--[====[Foo\r\nbar]=====] ]===]\r\nbaz]====]"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lua/function_feature.test b/node_modules/prismjs/tests/languages/lua/function_feature.test deleted file mode 100644 index 90e2383..0000000 --- a/node_modules/prismjs/tests/languages/lua/function_feature.test +++ /dev/null @@ -1,17 +0,0 @@ -foo () -Foo_bar_42() -foo {} -Foo_bar_42{} - ----------------------------------------------------- - -[ - ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], - ["function", "Foo_bar_42"], ["punctuation", "("], ["punctuation", ")"], - ["function", "foo"], ["punctuation", "{"], ["punctuation", "}"], - ["function", "Foo_bar_42"], ["punctuation", "{"], ["punctuation", "}"] -] - ----------------------------------------------------- - -Checks for functions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lua/keyword_feature.test b/node_modules/prismjs/tests/languages/lua/keyword_feature.test deleted file mode 100644 index 0020aca..0000000 --- a/node_modules/prismjs/tests/languages/lua/keyword_feature.test +++ /dev/null @@ -1,53 +0,0 @@ -and -break -do -else -elseif -end -false -for -function -goto -if -in -local -nil -not -or -repeat -return -then -true -until -while - ----------------------------------------------------- - -[ - ["keyword", "and"], - ["keyword", "break"], - ["keyword", "do"], - ["keyword", "else"], - ["keyword", "elseif"], - ["keyword", "end"], - ["keyword", "false"], - ["keyword", "for"], - ["keyword", "function"], - ["keyword", "goto"], - ["keyword", "if"], - ["keyword", "in"], - ["keyword", "local"], - ["keyword", "nil"], - ["keyword", "not"], - ["keyword", "or"], - ["keyword", "repeat"], - ["keyword", "return"], - ["keyword", "then"], - ["keyword", "true"], - ["keyword", "until"], - ["keyword", "while"] -] - ----------------------------------------------------- - -Checks for keywords. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lua/number_feature.test b/node_modules/prismjs/tests/languages/lua/number_feature.test deleted file mode 100644 index 913b5b8..0000000 --- a/node_modules/prismjs/tests/languages/lua/number_feature.test +++ /dev/null @@ -1,35 +0,0 @@ -0 -42 -3.14159 -3. -.42 -4e14 -3.14e+8 -.7E-1 -4.e12 -0xBadFace -0x0.1E -0xA23p-4 -0X1.921FB54442D18P+1 - ----------------------------------------------------- - -[ - ["number", "0"], - ["number", "42"], - ["number", "3.14159"], - ["number", "3."], - ["number", ".42"], - ["number", "4e14"], - ["number", "3.14e+8"], - ["number", ".7E-1"], - ["number", "4.e12"], - ["number", "0xBadFace"], - ["number", "0x0.1E"], - ["number", "0xA23p-4"], - ["number", "0X1.921FB54442D18P+1"] -] - ----------------------------------------------------- - -Checks for numbers. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lua/operator_feature.test b/node_modules/prismjs/tests/languages/lua/operator_feature.test deleted file mode 100644 index dec2836..0000000 --- a/node_modules/prismjs/tests/languages/lua/operator_feature.test +++ /dev/null @@ -1,25 +0,0 @@ -+ - * % -^ & | # -/ // -< << <= -> >> >= -= == -~ ~= -.. - ----------------------------------------------------- - -[ - ["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "%"], - ["operator", "^"], ["operator", "&"], ["operator", "|"], ["operator", "#"], - ["operator", "/"], ["operator", "//"], - ["operator", "<"], ["operator", "<<"], ["operator", "<="], - ["operator", ">"], ["operator", ">>"], ["operator", ">="], - ["operator", "="], ["operator", "=="], - ["operator", "~"], ["operator", "~="], - ["operator", ".."] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/lua/string_feature.test b/node_modules/prismjs/tests/languages/lua/string_feature.test deleted file mode 100644 index 137884c..0000000 --- a/node_modules/prismjs/tests/languages/lua/string_feature.test +++ /dev/null @@ -1,36 +0,0 @@ -"" -"Fo\"obar" -"Foo\ -bar\z -baz" -'' -'Fo\'obar' -'Foo\ -bar\z -baz' -[[Foo -bar]] -[====[Foo -bar]=====] ]===] -baz]====] -[====[Foo --- comment -baz]====] - ----------------------------------------------------- - -[ - ["string", "\"\""], - ["string", "\"Fo\\\"obar\""], - ["string", "\"Foo\\\r\nbar\\z\r\nbaz\""], - ["string", "''"], - ["string", "'Fo\\'obar'"], - ["string", "'Foo\\\r\nbar\\z\r\nbaz'"], - ["string", "[[Foo\r\nbar]]"], - ["string", "[====[Foo\r\nbar]=====] ]===]\r\nbaz]====]"], - ["string", "[====[Foo\r\n-- comment\r\nbaz]====]"] -] - ----------------------------------------------------- - -Checks for strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/builtin_feature.test b/node_modules/prismjs/tests/languages/makefile/builtin_feature.test deleted file mode 100644 index 6f6a1a3..0000000 --- a/node_modules/prismjs/tests/languages/makefile/builtin_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -.PHONY: -.DELETE_ON_ERROR: -.SECONDEXPANSION: - ----------------------------------------------------- - -[ - ["builtin", ".PHONY"], ["punctuation", ":"], - ["builtin", ".DELETE_ON_ERROR"], ["punctuation", ":"], - ["builtin", ".SECONDEXPANSION"], ["punctuation", ":"] -] - ----------------------------------------------------- - -Checks for built-in target names. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/comment_feature.test b/node_modules/prismjs/tests/languages/makefile/comment_feature.test deleted file mode 100644 index 0e0c6c4..0000000 --- a/node_modules/prismjs/tests/languages/makefile/comment_feature.test +++ /dev/null @@ -1,16 +0,0 @@ -# -# foobar -# foo \ -bar - ----------------------------------------------------- - -[ - ["comment", "#"], - ["comment", "# foobar"], - ["comment", "# foo \\\r\nbar"] -] - ----------------------------------------------------- - -Checks for comments. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/keyword_feature.test b/node_modules/prismjs/tests/languages/makefile/keyword_feature.test deleted file mode 100644 index dcbbcc8..0000000 --- a/node_modules/prismjs/tests/languages/makefile/keyword_feature.test +++ /dev/null @@ -1,73 +0,0 @@ -define else endef endif -export ifdef ifndef ifeq -ifneq -include include -override private sinclude -undefine unexport vpath - -(addsuffix foo) (abspath foo) -(and foo) (basename foo) -(call foo) (dir foo) (error foo) -(eval foo) (file foo) (filter foo) -(filter-out foo) (findstring foo) -(firstword foo) (flavor foo) -(foreach foo) (guile foo) -(if foo) (info foo) (join foo) -(lastword foo) (load foo) -(notdir foo) (or foo) (origin foo) -(patsubst foo) (realpath foo) -(shell foo) (sort foo) (strip foo) -(subst foo) (suffix foo) (value foo) -(warning foo) (wildcard foo) -(word foo) (words foo) (wordlist foo) - ----------------------------------------------------- - -[ - ["keyword", "define"], ["keyword", "else"], ["keyword", "endef"], ["keyword", "endif"], - ["keyword", "export"], ["keyword", "ifdef"], ["keyword", "ifndef"], ["keyword", "ifeq"], - ["keyword", "ifneq"], ["keyword", "-include"], ["keyword", "include"], - ["keyword", "override"], ["keyword", "private"], ["keyword", "sinclude"], - ["keyword", "undefine"], ["keyword", "unexport"], ["keyword", "vpath"], - - ["punctuation", "("], ["keyword", "addsuffix"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "abspath"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "and"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "basename"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "call"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "dir"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "error"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "eval"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "file"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "filter"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "filter-out"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "findstring"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "firstword"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "flavor"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "foreach"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "guile"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "if"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "info"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "join"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "lastword"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "load"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "notdir"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "or"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "origin"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "patsubst"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "realpath"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "shell"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "sort"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "strip"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "subst"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "suffix"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "value"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "warning"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "wildcard"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "word"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "words"], " foo", ["punctuation", ")"], - ["punctuation", "("], ["keyword", "wordlist"], " foo", ["punctuation", ")"] -] - ----------------------------------------------------- - -Checks for keywords and functions. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/operator_feature.test b/node_modules/prismjs/tests/languages/makefile/operator_feature.test deleted file mode 100644 index d0df60a..0000000 --- a/node_modules/prismjs/tests/languages/makefile/operator_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -= ::= ?= -:= += != -| @ - ----------------------------------------------------- - -[ - ["operator", "="], ["operator", "::="], ["operator", "?="], - ["operator", ":="], ["operator", "+="], ["operator", "!="], - ["operator", "|"], ["operator", "@"] -] - ----------------------------------------------------- - -Checks for operators. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/string_feature.test b/node_modules/prismjs/tests/languages/makefile/string_feature.test deleted file mode 100644 index ece27c8..0000000 --- a/node_modules/prismjs/tests/languages/makefile/string_feature.test +++ /dev/null @@ -1,23 +0,0 @@ -"" -'' -"fo\"o" -'fo\'o' -"foo\ -bar" -'foo\ -bar' - ----------------------------------------------------- - -[ - ["string", "\"\""], - ["string", "''"], - ["string", "\"fo\\\"o\""], - ["string", "'fo\\'o'"], - ["string", "\"foo\\\r\nbar\""], - ["string", "'foo\\\r\nbar'"] -] - ----------------------------------------------------- - -Checks for single-quoted and double-quoted strings. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/symbol_feature.test b/node_modules/prismjs/tests/languages/makefile/symbol_feature.test deleted file mode 100644 index d1fe40b..0000000 --- a/node_modules/prismjs/tests/languages/makefile/symbol_feature.test +++ /dev/null @@ -1,18 +0,0 @@ -edit : -%oo: -$(foo): - ----------------------------------------------------- - -[ - ["symbol", ["edit "]], ["punctuation", ":"], - ["symbol", ["%oo"]], ["punctuation", ":"], - ["symbol", [ - ["variable", "$"], - "(foo)" - ]], ["punctuation", ":"] -] - ----------------------------------------------------- - -Checks for targets, optionally containing interpolation. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/makefile/variable_feature.test b/node_modules/prismjs/tests/languages/makefile/variable_feature.test deleted file mode 100644 index 84431d0..0000000 --- a/node_modules/prismjs/tests/languages/makefile/variable_feature.test +++ /dev/null @@ -1,19 +0,0 @@ -$@ -$$< -$(@D) -$(foobar) -$(2) - ----------------------------------------------------- - -[ - ["variable", "$@"], - ["variable", "$$<"], - ["variable", "$(@D)"], - ["variable", "$"], ["punctuation", "("], "foobar", ["punctuation", ")"], - ["variable", "$"], ["punctuation", "("], "2", ["punctuation", ")"] -] - ----------------------------------------------------- - -Checks for variables. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown+haml/markdown_inclusion.test b/node_modules/prismjs/tests/languages/markdown+haml/markdown_inclusion.test deleted file mode 100644 index 4a75fa9..0000000 --- a/node_modules/prismjs/tests/languages/markdown+haml/markdown_inclusion.test +++ /dev/null @@ -1,32 +0,0 @@ -:markdown - # Title 1 - -~ - :markdown - # Title 1 - ----------------------------------------------------- - -[ - ["filter-markdown", [ - ["filter-name", ":markdown"], - ["title", [ - ["punctuation", "#"], - " Title 1" - ]] - ]], - ["punctuation", "~"], - ["filter-markdown", [ - ["filter-name", ":markdown"], - ["title", [ - ["punctuation", "#"], - " Title 1" - ]] - ]] -] - ----------------------------------------------------- - -Checks for Markdown filter in Haml. The tilde serves only as a separator. -Indentation is intentionally less than 1 tab, otherwise markdown is -interpreted as code. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown+jade/markdown_inclusion.test b/node_modules/prismjs/tests/languages/markdown+jade/markdown_inclusion.test deleted file mode 100644 index 01e6c3e..0000000 --- a/node_modules/prismjs/tests/languages/markdown+jade/markdown_inclusion.test +++ /dev/null @@ -1,18 +0,0 @@ -:markdown - # title - ----------------------------------------------------- - -[ - ["filter-markdown", [ - ["filter-name", ":markdown"], - ["title", [ - ["punctuation", "#"], - " title" - ]] - ]] -] - ----------------------------------------------------- - -Checks for markdown filter in Jade. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/blockquote_feature.test b/node_modules/prismjs/tests/languages/markdown/blockquote_feature.test deleted file mode 100644 index 3d0a4df..0000000 --- a/node_modules/prismjs/tests/languages/markdown/blockquote_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -> foo ->> foo -> > foo - ----------------------------------------------------- - -[ - ["blockquote", ">"], " foo\r\n", - ["blockquote", ">>"], " foo\r\n", - ["blockquote", "> >"], " foo" -] - ----------------------------------------------------- - -Checks for blockquotes. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/bold_feature.test b/node_modules/prismjs/tests/languages/markdown/bold_feature.test deleted file mode 100644 index 7d8e8ba..0000000 --- a/node_modules/prismjs/tests/languages/markdown/bold_feature.test +++ /dev/null @@ -1,70 +0,0 @@ -**foobar** -**foo -bar** -__foobar__ -__foo -bar__ - -__foo*bar*baz__ -__foo_bar_baz__ -__foo[bar](baz)__ - ----------------------------------------------------- - -[ - ["bold", [ - ["punctuation", "**"], - "foobar", - ["punctuation", "**"] - ]], - ["bold", [ - ["punctuation", "**"], - "foo\r\nbar", - ["punctuation", "**"] - ]], - ["bold", [ - ["punctuation", "__"], - "foobar", - ["punctuation", "__"] - ]], - ["bold", [ - ["punctuation", "__"], - "foo\r\nbar", - ["punctuation", "__"] - ]], - - ["bold", [ - ["punctuation", "__"], - "foo", - ["italic", [ - ["punctuation", "*"], - "bar", - ["punctuation", "*"] - ]], - "baz", - ["punctuation", "__"] - ]], - ["bold", [ - ["punctuation", "__"], - "foo", - ["italic", [ - ["punctuation", "_"], - "bar", - ["punctuation", "_"] - ]], - "baz", - ["punctuation", "__"] - ]], - ["bold", [ - ["punctuation", "__"], - "foo", - ["url", [ - "[bar](baz)" - ]], - ["punctuation", "__"] - ]] -] - ----------------------------------------------------- - -Checks for bold. Also tests for inclusion of italic and url. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/code_feature.test b/node_modules/prismjs/tests/languages/markdown/code_feature.test deleted file mode 100644 index 2696ca7..0000000 --- a/node_modules/prismjs/tests/languages/markdown/code_feature.test +++ /dev/null @@ -1,22 +0,0 @@ -`foo bar baz` -``foo `bar` baz`` - - foobar - - foobar - ----------------------------------------------------- - -[ - ["code", "`foo bar baz`"], - ["code", "``foo `bar` baz``"], - ["code", " foobar"], - ["code", "\tfoobar"] -] - ----------------------------------------------------- - -Checks for code blocks and inline code. The first code block is -indented with 4 spaces, the second one is indented with 1 tab. -The initial dot is necessary because of the first part being trimmed -by the test runner. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/hr_feature.test b/node_modules/prismjs/tests/languages/markdown/hr_feature.test deleted file mode 100644 index 4120226..0000000 --- a/node_modules/prismjs/tests/languages/markdown/hr_feature.test +++ /dev/null @@ -1,15 +0,0 @@ -*** ---- -* * * - ----------------------------------------------------- - -[ - ["hr", "***"], - ["hr", "---"], - ["hr", "* * *"] -] - ----------------------------------------------------- - -Checks for hr. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/italic_feature.test b/node_modules/prismjs/tests/languages/markdown/italic_feature.test deleted file mode 100644 index 02ced18..0000000 --- a/node_modules/prismjs/tests/languages/markdown/italic_feature.test +++ /dev/null @@ -1,46 +0,0 @@ -*foobar* -*foo -bar* -_foobar_ -_foo -bar_ - -_foo[bar](baz)_ - ----------------------------------------------------- - -[ - ["italic", [ - ["punctuation", "*"], - "foobar", - ["punctuation", "*"] - ]], - ["italic", [ - ["punctuation", "*"], - "foo\r\nbar", - ["punctuation", "*"] - ]], - ["italic", [ - ["punctuation", "_"], - "foobar", - ["punctuation", "_"] - ]], - ["italic", [ - ["punctuation", "_"], - "foo\r\nbar", - ["punctuation", "_"] - ]], - - ["italic", [ - ["punctuation", "_"], - "foo", - ["url", [ - "[bar](baz)" - ]], - ["punctuation", "_"] - ]] -] - ----------------------------------------------------- - -Checks for italic. Also tests for inclusion of url. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/list_feature.test b/node_modules/prismjs/tests/languages/markdown/list_feature.test deleted file mode 100644 index bfc9f8e..0000000 --- a/node_modules/prismjs/tests/languages/markdown/list_feature.test +++ /dev/null @@ -1,22 +0,0 @@ -* foo -+ bar -- baz - -1. foo - 2. bar -42. baz - ----------------------------------------------------- - -[ - ["list", "*"], " foo\r\n", - ["list", "+"], " bar\r\n", - ["list", "-"], " baz\r\n\r\n", - ["list", "1."], " foo\r\n ", - ["list", "2."], " bar\r\n", - ["list", "42."], " baz" -] - ----------------------------------------------------- - -Checks for list symbols. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/title_feature.test b/node_modules/prismjs/tests/languages/markdown/title_feature.test deleted file mode 100644 index e02e86f..0000000 --- a/node_modules/prismjs/tests/languages/markdown/title_feature.test +++ /dev/null @@ -1,34 +0,0 @@ -title 1 -== - -foobar -====== - -title 2 --- - -# title 1 -## title 2 -### title 3 -#### title 4 -##### title 5 -###### title 6 - ----------------------------------------------------- - -[ - ["title", ["title 1\r\n", ["punctuation", "=="]]], - ["title", ["foobar\r\n", ["punctuation", "======"]]], - ["title", ["title 2\r\n", ["punctuation", "--"]]], - - ["title", [["punctuation", "#"], " title 1"]], - ["title", [["punctuation", "##"], " title 2"]], - ["title", [["punctuation", "###"], " title 3"]], - ["title", [["punctuation", "####"], " title 4"]], - ["title", [["punctuation", "#####"], " title 5"]], - ["title", [["punctuation", "######"], " title 6"]] -] - ----------------------------------------------------- - -Checks for titles. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/url-reference_feature.test b/node_modules/prismjs/tests/languages/markdown/url-reference_feature.test deleted file mode 100644 index 4dc25ba..0000000 --- a/node_modules/prismjs/tests/languages/markdown/url-reference_feature.test +++ /dev/null @@ -1,56 +0,0 @@ -[foo]: http://prismjs.com -[foo]: http://prismjs.com "foo\"bar" -[foo]: http://prismjs.com 'foo\'bar' -![foo]: http://prismjs.com (foo (bar\) baz) -[foo]: "Prism" - ----------------------------------------------------- - -[ - ["url-reference", [ - ["punctuation", "["], - ["variable", "foo"], - ["punctuation", "]"], - ["punctuation", ":"], - " http://prismjs.com" - ]], - ["url-reference", [ - ["punctuation", "["], - ["variable", "foo"], - ["punctuation", "]"], - ["punctuation", ":"], - " http://prismjs.com ", - ["string", "\"foo\\\"bar\""] - ]], - ["url-reference", [ - ["punctuation", "["], - ["variable", "foo"], - ["punctuation", "]"], - ["punctuation", ":"], - " http://prismjs.com ", - ["string", "'foo\\'bar'"] - ]], - ["url-reference", [ - ["punctuation", "!"], - ["punctuation", "["], - ["variable", "foo"], - ["punctuation", "]"], - ["punctuation", ":"], - " http://prismjs.com ", - ["string", "(foo (bar\\) baz)"] - ]], - ["url-reference", [ - ["punctuation", "["], - ["variable", "foo"], - ["punctuation", "]"], - ["punctuation", ":"], - ["punctuation", "<"], - "http://prismjs.com", - ["punctuation", ">"], - ["string", "\"Prism\""] - ]] -] - ----------------------------------------------------- - -Checks for URL references. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markdown/url_feature.test b/node_modules/prismjs/tests/languages/markdown/url_feature.test deleted file mode 100644 index ca8b9cf..0000000 --- a/node_modules/prismjs/tests/languages/markdown/url_feature.test +++ /dev/null @@ -1,25 +0,0 @@ -[foo](http://prismjs.com) -![foo](http://prismjs.com "Foo\"bar") -[foo] [bar] - ----------------------------------------------------- - -[ - ["url", [ - "[foo](http://prismjs.com)" - ]], - ["url", [ - "![foo](http://prismjs.com ", - ["string", "\"Foo\\\"bar\""], - ")" - ]], - ["url", [ - "[foo] [", - ["variable", "bar"], - "]" - ]] -] - ----------------------------------------------------- - -Checks for URLs. \ No newline at end of file diff --git a/node_modules/prismjs/tests/languages/markup!+css/css_inclusion.test b/node_modules/prismjs/tests/languages/markup!+css/css_inclusion.test deleted file mode 100644 index 6296fce..0000000 --- a/node_modules/prismjs/tests/languages/markup!+css/css_inclusion.test +++ /dev/null @@ -1,71 +0,0 @@ - - - - ----------------------------------------------------- - -[ - ["tag", [ - ["tag", [ - ["punctuation", "<"], - "style" - ]], - ["attr-name", [ - "type" - ]], - ["attr-value", [ - ["punctuation", "="], - ["punctuation", "\""], - "text/css", - ["punctuation", "\""] - ]], - ["punctuation", ">"] - ]], - ["style", [ - ["selector", "foo"], - ["punctuation", "{"], - ["property", "bar"], - ["punctuation", ":"], - " baz", - ["punctuation", ";"], - ["punctuation", "}"] - ]], - ["tag", [ - ["tag", [ - ["punctuation", ""] - ]], - - ["tag", [ - ["tag", [ - ["punctuation", "<"], - "foo" - ]], - ["style-attr", [ - ["attr-name", [ - ["attr-name", [ - "style" - ]] - ]], - ["punctuation", "=\""], - ["attr-value", [ - ["property", "bar"], - ["punctuation", ":"], - "baz", - ["punctuation", ";"] - ]], - ["punctuation", "\""] - ]], - ["punctuation", ">"] - ]] -] - ----------------------------------------------------- - -Checks for CSS usage inside Markup, using